Article 16: Support Vector Machines (SVM) – Maximum Gap Classification 🛡⚖️
SVM වල මූලික අරමුණ වෙන්නේ කාණ්ඩ දෙකක් වෙන් කරන කොට ඒ දෙක අතර තියෙන හිස් අවකාශය එහෙමත් නැත්නම් Margin එක උපරිම වන විදිහට මායිම් රේඛාව අදින එක. මුලින්ම මෙකේ Intuition එක මොකද්ද කියලා සරලව තේරුම් ගමු. හිතන්න පාරක දෙපැත්තේ කඩවල් තියෙනවා කියලා. අපිට ඕනේ පාර මැදින් ඉරක් අඳින්න. හැබැයි ඒ ඉර දෙපැත්තේම තියෙන කඩවල් වලට ගෑවෙන්නේ නැති වෙන්න පුළුවන් තරම් ලොකු පරතරයක් තියෙන විදිහට. අන්න ඒ පරතරය තමයි Margin එක. ඒ පරතරය තීරණය කරන්න උදව් වෙන පාරට කිට්ටුවෙන්ම තියෙන කඩවල් වලට අපි කියනවා Support Vectors කියලා.
01. The Mathematical Part 🧬🔢
දැන් අපි බලමු SVM වලින් ඇත්තටම මේ පරතරය උපරිම කරන්නේ කොහොමද කියලා.
I. The Hyperplane Equation 📍
අපි වෙන් කරන මායිම (Hyperplane) මෙහෙම ලියන්න පුළුවන්,
wᵀx + b = 0
මේකේ w කියන්නේ Weight vector එකක්. b කියන්නේ Bias එක. අපේ Margin එක වෙන්නේ 2/
II. Hard Margin vs Soft Margin (C Parameter) 🚦
Hard Margin - දත්ත අතර කිසිම වැරදීමකට ඉඩ දෙන්නේ නැ. හැබැයි ප්රායෝගික ලෝකයේදී දත්ත මිශ්ර වෙලා තියෙන්න පුළුවන්.
Soft Margin - මෙතැනදී අපි Slack Variables පාවිච්චි කරනවා. මෙතැනදී C parameter එක හරිම වැදගත්. High C වැරදි වලට ඉඩ දෙන්නේ නැහැ (Overfitting වෙන්න පුළුවන්). Low C ලොකු පරතරයක් ගන්න උත්සාහ කරනවා (Generalization හොඳයි).
02. The Kernel Trick 🪄🌀
සමහර වෙලාවට දත්ත සරල රේඛාවකින් (Linear) වෙන් කරන්න බැහැ. උදාහරණයක් විදිහට රවුමක් ඇතුලේ තියෙන දත්ත සහ ඒ වටේ තියෙන දත්ත වෙන් කරන්න බැහැ. මෙන්න මෙතැනදී SVM එක කරන්නේ ඒ දත්ත 2D තලයක ඉදලා 3D හෝ ඊට වඩා වැඩි මානයකට (Higher Dimension) ගෙන යන එක. එතකොට අපිට පුළුවන් ඒවා මැදින් තලයක් (Plane) දාලා වෙන් කරන්න.
● Polynomial Kernel - දත්ත වල බලයන් (Squares/Cubes) පාවිච්චි කරලා වෙන් කරනවා.
● RBF (Radial Basis Function) - මේකෙන් දත්ත අනන්ත මානයකට (Infinite Dimensions) මැප් කරනවා. මේකේ තියෙන Gamma අගය මගින් එක් දත්ත ලක්ෂ්යයක බලපෑම කොච්චර දුරකට තියෙනවද කියලා තීරණය කරනවා.
Support Vector Machines (SVM) කියන්නේ හුදෙක් data category දෙකක් මැදින් ඉරක් ඇඳලා වෙන් කරනවාට වඩා ඒ category දෙක අතර තියෙන වෙනස Maximize කරන්න උත්සාහ කරන ඉතාමත් බුද්ධිමත් algorithm එකක්. මේකේ මූලිකම සිද්ධාන්තය වෙන්නේ Maximum Margin Classifier ලෙස ක්රියා කරන එක. ඒ කියන්නේ data category දෙක වෙන් කරන ප්රධාන රේඛාව හෙවත් Hyperplane එක අදිද්දී ඒ රේඛාවට දෙපැත්තෙන් තියෙන data points අතර පවතින Margin එක උපරිම අගයක තබා ගන්න එක තමා මේකේ අරමුණ. 🎯✅
ඊළඟ ආටිකල් එකෙන් (Article 17) අපි කතා කරන්නේ අපේ Supervised Learning පියවරේ තවත් වැදගත්ම කොටසක් වන Regression වල තියෙන දියුණු මට්ටම් (Polynomial, Lasso, Ridge) ගැන. 📈⏭️ 🙊😁
✍️ @TheInfinityAI
Telegram
Infinity CS
❤3
Article 17: Advanced Regression – The Mathematics of Curves and Penalties 📈⚙️
සාමාන්ය Linear Regression එකෙන් කරන්නේ දත්ත අතර තියෙන සරල රේඛීය සම්බන්ධතාවය හොයන එක වුණාට ප්රායෝගික ලෝකයේ දත්ත මීට වඩා හුඟක් සංකීර්ණයි. ඒ නිසා අද අපි Polynomial Regression සහ මොඩල් එකක් ඕනෑවට වඩා සංකීර්ණ වීම පාලනය කරන Regularization (Lasso, Ridge, ElasticNet) ගැන කතා කරමු.
1. Polynomial Regression - Beyond the straight line 🎢
සමහර දත්ත අතර තියෙන සම්බන්ධය සරල රේඛාවකින් පෙන්වන්න බැහැ 🚫. උදාහරණයක් විදිහට ශාකයක වර්ධනය මුල් කාලයේ වේගවත් වෙලා පස්සේ ස්ථාවර වෙනවා. මෙන්න මේ වගේ Curves පෙන්වන්න අපි දත්ත වල ඇති features වල බලයන් (Squares, Cubes) පාවිච්චි කරනවා. මෙහිදී අපි කරන්නේ අපේ x අගය x²,x³,…,xⁿ ලෙස ඉහළ බලයන්ට පරිවර්තනය කරන එක.
y = β₀ + β₁x + β₂x² + … + βₙxⁿ + ϵ
මේකේ n අගය (Degree) වැඩි වෙන්න වැඩි වෙන්න රේඛාව ඕනෑම සංකීර්ණ හැඩයක් ගැනීමට සමත් වෙනවා. හැබැයි මෙතැනදී ඇති වන ලොකුම ප්රශ්නය තමයි Overfitting. ඒ කියන්නේ රේඛාව දත්තවල තියෙන හැම Noise එකක්ම අල්ලන්න ගිහින් අන්තිමට model predictions වැරදි යාම. ⚠️
2. The Bias-Variance Tradeoff ⚖️🎯
Advanced ML වලදී අපි නිතරම කතා කරන සංකල්පයක් තමයි මේක.Bias => Underfitting සහ Variance => Overfitting. අපේ ඉලක්කය වෙන්නේ මේ දෙකම අවම වන Sweet Spot එක සොයා ගැනීම. ඒකට තමයි අපි Regularization පාවිච්චි කරන්නේ.
3. Regularization 🛡🔧
Regularization වලින් කරන්නේ අපේ Cost Function එකට අමතර Penalty term එකතු කරන එක. මේකෙන් කරන්නේ අපේ Weights ඕනෑවට වඩා විශාල වීම පාලනය කරන එක.
I. Ridge Regression (L2 Regularization) ⭕️
මේකෙදි අපි Weights වල වර්ගයන්ගේ එකතුව Penalty term එකක් විදියට එකතු කරනවා.
Cost = MSE + λ∑ⱼᷮ₌₁βⱼ² (සමීකරණේ පැහැදිලි නැත්නම් මෙතනින් බලන්න)
මේකෙදි අපි λ වලින් Weights වල බලපෑම අඩු කරනවා, නමුත් බින්දුවටම අඩු කරන්නේ නෑ. දත්ත අතර ඉහළ සම්බන්ධතාවයක් එහෙමත් නැත්තන් Multicollinearity එකක් තියෙන අවස්තා වලදි මේක පාවිච්චි වෙනවා.
II. Lasso Regression (L1 Regularization) 💎
මේකෙදි අපි Weights වල Absolute values වල එකතුව Penalty term එකක් විදියට එකතු කරනවා.
Cost = MSE + λ∑ⱼᷮ₌₁∣βⱼ∣ (සමීකරණේ පැහැදිලි නැත්නම් මෙතනින් බලන්න)
මේකෙදි අපි සමහර අනවශ්ය features වල weights හරියටම බින්දුව (0) බවට පත් කරනවා. ඒ නිසා මෙක Feature Selection සඳහා ඉතාමත් වැදගත්.
III. ElasticNet Regression 🧬🤝
Lasso (L1) සහ Ridge (L2) යන දෙකෙහිම ගුණාංග මිශ්ර කරලා හදපු ක්රමයක්. දත්ත පද්ධතියක features විශාල ප්රමාණයක් ඇති විට සහ ඒවා එකිනෙකට තදින් සම්බන්ධ වී ඇති විට ElasticNet මගින් වඩාත් ස්ථාවර ප්රතිඵල ලබා ගත හැකියි.
Advanced Regression කියන්නේ දත්තවල පවතින සරල නොවන වක්ර සම්බන්ධතාවයන් හඳුනා ගැනීමටත් එම ක්රියාවලියේදී සිදුවිය හැකි Overfitting දෝෂය ගණිතමය වශයෙන් පාලනය කිරීමටත් යොදා ගන්නා උසස් ක්රමවේදයක්. Polynomial Regression හරහා දත්තවල හැඩය නිරූපණය කරන අතර Lasso සහ Ridge වැනි Regularization තාක්ෂණයන් මගින් මොඩල් එකේ weights පාලනය කරමින් වඩාත් Generalized මොඩල් එකක් ගොඩනැගීමට මේක උපකාරී වෙනවා. ✅ ✨
ඊළඟ ආටිකල් එකෙන් (Article 18) අපි යන්නෙ Phase 7: Unsupervised Learning වලට. එතැනදී අපි Labels නැති දත්ත කාණ්ඩ කරන Clustering ගැන කතා කරමු. 🧠⏭️ 🙊😁
✍️ @TheInfinityAI
Telegram
Infinity CS
❤3🎉1
Article 18: Clustering – Let's group hidden patterns in the data 🧩🔍
මුලින්ම අපි බලමු මොකද්ද Clustering කියන්නේ කියලා. Clustering හෙවත් කාණ්ඩ කිරීම කියන්නේ දත්තවල තියෙන ලක්ෂණ අනුව සමාන දත්ත එකම කාණ්ඩයකට (Cluster) ගොනු කිරීම. මෙතැනදී අපි මොඩල් එකට Labelled dataset එකක් දෙන්නේ නැහැ. මොඩල් එක කරන්නේ දත්ත අතර තියෙන සමානකම් සහ රටාවන් තනියම හොයාගෙන ඒවා කාණ්ඩ කරන එක.
දැන් අපි එමු මාතෘකාවට, K-Means කියන්නේ Unsupervised Learning ලෝකයේ තියෙන ජනප්රියම Centroid-based algorithm එක. මේකේ මූලික ඉලක්කය වෙන්නේ දත්ත කාණ්ඩ K ප්රමාණයකට බෙදලා ඒ ඒ කාණ්ඩයේ දත්ත සහ එහි කේන්ද්රය (Centroid) අතර ඇති දුර අවම කිරීම.
01. The Core Logic: Lloyd’s Algorithm 🔄⚙️
K-Means ක්රියා කරන්නේ පියවර තුනක චක්රයක් විදිහට.
i. Initialization - randomly කේන්ද්රස්ථාන K ප්රමාණයක් තෝරා ගැනීම.
ii. Assignment - හැම data point එකක්ම තමන්ට ලඟම කේන්ද්රයට අයිති කිරීම.
iii. Update - අලුතින් හැදුන කාණ්ඩයේ සාමාන්ය අගය ගණනය කර කේන්ද්රය අලුත් තැනකට ගෙන යාම.
මෙ ක්රියාවලිය කේන්ද්රයන් තවදුරටත් වෙනස් නොවන තෙක් (Convergence) දිගටම සිද්ධ වෙනවා.
02. Math: The Objective Function 📐🔢
K-Means ඇත්තටම කරන්නේ Within Cluster Sum of Squares (WCSS) හෙවත් Inertia අගය අවම කරන එක.
J = ∑ⱼᴷ₌₁∑_₍ᵢ∈Cⱼ₎xᵢ − μⱼ² (සමීකරණේ පැහැදිලි නැත්නම් මෙතනින් බලන්න)
K = කාණ්ඩ ගණන.
Cⱼ = j වන කාණ්ඩයට අයිති data point.
μⱼ = j වන කාණ්ඩයේ මධ්යන්යය (Centroid).
මේක ඇත්තටම Expectation-Maximization (EM) algorithm එකේ සරල අවස්ථාවක්.
03. Advanced Optimization: K-Means++ 🚀✨
සාමාන්ය K-Means වල තියෙන ලොකුම ප්රශ්නය තමයි Initial centroids අහඹු ලෙස තෝරා ගැනීම. මේවා වැරදි තැන්වලින් තේරුණොත් මොඩල් එක වැරදි ප්රතිඵල දෙන්න පුළුවන්. ⚠️ මේකට විසඳුම තමයි K-Means++. මෙහිදී, පළමු කේන්ද්රය අහඹු ලෙස තෝරා ගන්නවා. ඊට පස්සේ ඊළඟ කේන්ද්රය තෝරා ගන්නේ දැනට තියෙන කේන්ද්රයට වැඩිම දුරකින් ඇති දත්ත ලක්ෂ්යයකින් වීමේ වැඩි සම්භාවිතාවක් ඇති ආකාරයට. මෙය හරහා වඩාත් වේගවත් සහ නිවැරදි Convergence එකක් ලබාගන්න පුලුවන්.
04. Technical Limitations & Mathematical Assumptions 🚧🛑
K-Means පාවිච්චි කරන්න කලින් මේ සීමාවන් ගැන අනිවාර්යයෙන්ම දැනගන්න ඕනේ,
● Spherical Clusters - K-Means උපකල්පනය කරන්නේ හැම කාණ්ඩයක්ම රවුම් (Spherical) හැඩයක් ගන්නා බව. ඒ නිසා දිගැටි හෝ වක්ර හැඩැති දත්ත වලට මෙය අසාර්ථකයි.
● Sensitivity to Scaling - මේක Euclidean distance එක මනින නිසා data Scale (Standardize) කරලා නොතිබුණොත් වැරදි ප්රතිඵල ලැබෙනවා.
● Sensitivity to Outliers - එක Outlier එකක් නිසා මුළු කේන්ද්රයම විශාල ලෙස වෙනස් වෙන්න පුළුවන්.
05. Advanced Evaluation: Silhouette Analysis 📊📉
අපි K අගය තෝරන්න පාවිච්චි කරන Elbow Method එක නිතරම පැහැදිලි නැ. ඒ නිසා අපි පාවිච්චි කරන වඩාත් දියුණු ක්රමය තමයි Silhouette Score. හැම data point එකක් සඳහාම Silhouette Coefficient (s) ගණනය කරන්නේ මෙහෙම,
s(i) = ((b(i) − a(i)) / (max{a(i),b(i)})) (සමීකරණේ පැහැදිලි නැත්නම් මෙතනින් බලන්න)
● a(i) - තමන්ගේම කාණ්ඩයේ අනෙක් දත්ත වලට ඇති සාමාන්ය දුර.
● b(i) - ලගම ඇති ඊලග කාණ්ඩයේ දත්ත වලට ඇති සාමාන්ය දුර.
මේකෙදි s(i) අගය +1 ට කිට්ටු නම් දත්තය නිවැරදි කාණ්ඩයේ සහ -1 නම් එය වැරදි කාණ්ඩයක තියෙනවා. 🧐✅
දත්ත මිලියන ගණනක් තියෙද්දී සාමාන්ය K-Means ගොඩක් ප්රමාදයි. මෙහිදී අපි මුළු දත්ත පද්ධතියම වෙනුවට කුඩා කොටස් (Mini-batches) ලෙස අරන් කේන්ද්රයන් යාවත්කාලීන කරනවා. මෙය O(n) වල සිට ඉතා අඩු සංකීර්ණතාවයකට ගෙන එනවා. ඊලග ආටිකල් එකෙන් (Article 19) අපි කතා කරන්නේ ඝනත්වය පදනම් කරගත්ව ඩාත් සංකීර්ණ DBSCAN algorithm එක ගැන. 🧠⏭️ 🙊😁
✍️ @TheInfinityAI
Telegram
Infinity CS
❤4
Codeless Data Structures and Algorithms.pdf
2.7 MB
Codeless Data Structures and Algorithms. Learn DSA Without Writing a Single Line of Code. 📘🧠
Struggling with Data Structures & Algorithms due to coding complexity? This book explains core DSA concepts clearly and visually without coding.
👨💻 Author: Armstrong Subero
🏢 Publisher: Apress
📌 Credit Notice:
📖 Happy learning & keep growing! 💡
✍️ @TheInfinityAI
Struggling with Data Structures & Algorithms due to coding complexity? This book explains core DSA concepts clearly and visually without coding.
👨💻 Author: Armstrong Subero
🏢 Publisher: Apress
📌 Credit Notice:
All rights belong to the author and publisher. This PDF is shared strictly for educational purposes. If you find this resource valuable, please support the author by purchasing the official copy.
📖 Happy learning & keep growing! 💡
✍️ @TheInfinityAI
❤4