Machine Learning Melodies – Telegram
Machine Learning Melodies
215 subscribers
28 photos
3 files
5 links
توی این کانال، من تجربیات و علایق شخصی‌ام رو در زمینه ماشین لرنینگ، موسیقی و چند چیز دیگه به اشتراک می‌گذارم
Download Telegram
Dariush Cheshme Man [BibakMusic.com]
Dariush [BibakMusic.com]
تنهایی ژرف انسان در برابر سرنوشت!
داریوش ما رو به تاملی عمیق در ماهیت وجود و معنای رنج فرا می‌خونه
💯1
تصمیم گرفتم ابتدا به مبانی ماشین لرنینگ بپردازم. شروع از ابتدا به ما اجازه میده تا با دیدی تازه و بدون پیش‌ فرض به موضوع نگاه کنیم. بازگشت به اصول اولیه میتونه منجر به کشف بینش‌های جدید و ارزشمندی بشه که ممکنه در گذشته از اونها غافل شده باشیم
1
Cross Validation
در یادگیری ماشین، توسعه مدلی که به خوبی به داده‌های جدید و نادیده تعمیم پیدا کنه بسیار مهمه. Overfitting (جایی که یک مدل نویز رو در داده‌های ترین یاد می‌گیره) و underfitting (که در آن مدل برای ثبت الگوهای اساسی بسیار ساده هست) مشکلات رایج هستن. برای اطمینان از استحکام یک مدل باید به درستی ارزیابی بشه و Cross Validation یک تکنیک کلیدی برای این منظور هست.
💯1
Types of Cross Validation

1. Holdout Method
ساده ترین شکل Cross Validation.
داده ها به دو مجموعه تقسیم میشن: آموزش و آزمایش.
مدل بر روی مجموعه آموزشی آموزش داده شده و در مجموعه تست ارزیابی می شه.

2. K-Fold Cross Validation
مجموعه داده‌ها به Kتا فولد با سایز یکسان تقسیم میشن.
این مدل K بار آموزش داده میشه هر بار از فولدهای K-1 برای آموزش و فولدهای باقی مانده برای آزمایش استفاده میشه.
معیار عملکرد در طول K اجرا به طور میانگین محاسبه میشه.
تخمین مطمین تری از عملکرد مدل ارایه می ده.

3. Stratified K-Fold Cross Validation
تغییری از K-Fold که تضمین می‌کنه هر فولد نماینده توزیع کلی داده‌هاست.
به ویژه برای مجموعه داده های نامتعادل مفیده.

4. Leave-One-Out Cross Validation (LOOCV)
یک مورد خاص از K-Fold که در اون K برابر با تعداد نقاط داده هست.
هر نقطه داده به عنوان یک مجموعه تست استفاده میشه در حالی که نقاط باقی مانده مجموعه آموزشی رو تشکیل میدن.
از نظر محاسباتی گرونه اما میتونه برای مجموعه داده های بسیار کوچک مفید باشه.

5. Leave-P-Out Cross Validation
تعمیم LOOCV که در اون نقاط داده P برای آزمایش کنار گذاشته میشن و نقاط باقی مونده برای آموزش استفاده میشن.
💯1
Bebakhsh
Siavash Ghomayshi
گاهی بخشیدن خود سخت‌تر از بخشیدن دیگرانه
💯1
Confusion Matrix
یه confusion matrix یه نمایش جدولی هست که برای توصیف عملکرد یک الگوریتم طبقه بندی استفاده میشه. این مقادیر واقعی هدف رو با مقادیر پیش‌بینی‌شده توسط مدل مقایسه میکنه و تفکیک دقیقی از پیش‌بینی‌های درست و نادرست ارایه می‌ده.
یه confusion matrix معمولا یک ماتریس مربع با ابعاد برابر با تعداد کلاس های هدف هست. برای یک مسیله طبقه بندی باینری، ماتریس دارای ساختار 2x2 هست. فرض کنید یک کلاس مثبت و یک کلاس منفی داشته باشیم. در اینصورت
اجزای ماتریس سردرگمی:
مثبت واقعی (TP): اینها مواردی هستن که مدل به درستی کلاس مثبت رو پیش بینی میکنه.
منفی های واقعی (TN): این موارد مواردی هستن که مدل به درستی کلاس منفی رو پیش بینی میکنه.
موارد مثبت کاذب (FP): اینها مواردی هستن که مدل کلاس مثبت رو به اشتباه پیش بینی میکنه.
منفی های کاذب (FN): این موارد مواردی هستن که مدل به اشتباه کلاس منفی رو پیش بینی میکنه.
💯1
اما از همین confusion matrix میتونیم متریک‌های مفید دیگه ای رو هم محاسبه کنیم. در ادامه بهش میپردازم
💯1
اینجا توی تابلوی من. Sensitivity یا Recall بما میگه چند درصد از بیماران قلبی به درستی پیشبینی شدن.
همچنین Specificity بما میگه چند درصد از افرادی که بیماری قلبی نداشتن بدرستی پیشبینی شدن.
💯1
اما اگر confusion matrixی با بیش از 2 سطر/ستون داشته باشیم Sensitivity و Specificity چطور محاسبه میشن؟
در اینصورت هیچ مقدار واحدی از متریک مد نظر برای کل ماتریس وجود نداره. یعنی چی؟ یعنی ما برای هر کتگوری Sensitivityها و Specificityهای مختلفی رو محاسبه میکنیم. مثلا فرض کنید 3 کلاس داره دیتاست ما. در اینصورت برای هر کلاس باید بصورت جداگانه Sensitivity و Specificity محاسبه بشن.
💯1
Machine Learning Melodies
اما اگر confusion matrixی با بیش از 2 سطر/ستون داشته باشیم Sensitivity و Specificity چطور محاسبه میشن؟ در اینصورت هیچ مقدار واحدی از متریک مد نظر برای کل ماتریس وجود نداره. یعنی چی؟ یعنی ما برای هر کتگوری Sensitivityها و Specificityهای مختلفی رو محاسبه میکنیم.…
تصور کنید معلمی هستید با سه نوع دانش آموز: A، B و C. میخوایید بدونید که چقدر میتونید هر نوع دانش آموز رو به درستی شناسایی کنید
Sensitivity
حساسیت برای نوع A مثل بررسی اینه که چند دانش آموز نوع A رو به درستی از بین همه دانش آموزان نوع A واقعی شناسایی کردید.
Specificity
و Specificity در مورد اینه که چقدر در شناسایی دانش آموزانی که از نوع خاصی نیستن مهارت دارید
بیایید روی دانش‌آموزان نوع A تمرکز کنیم. Specificity برای کلاس نوع A مثل بررسی اینه که از بین همه دانش آموزانی که واقعاً از نوع A نیستن، چند دانش آموز رو به درستی به عنوان غیر نوع A شناسایی کردید.
به عنوان مثال اگر 30 دانش آموز وجود داشته باشن که نوع A نیستن (اونها یا نوع B یا نوع C هستن) و شما 25 نفر از اونها رو غیر از نوع A شناسایی کردید Specificity شما برای نوع A میشه تقریبا 83 درصد.
🤩1
حالا دو متریک دیگه.
در مثال بالا Precision در مورد اینه که شما چقدر دقیق هستید وقتی میگید یه دانش آموز از نوع خاصی هست.
بیایید بازم روی دانش آموزهای نوع A تمرکز کنیم.
خب Precision برای نوع A مثل بررسی اینه که چه تعداد از دانش آموزانی که به عنوان نوع A شناسایی کردید در واقعیت هم نوع A هستن.
متریک F1 Score هم راهی برای بالانس کردن Precision و Sensitivity هست.
💯1
THE LONELIEST
M
Sometimes, the silence within us speaks louder than any words. This song reminds us that even in our darkest moments, we're still breathing, still feeling, still human. It's a haunting reflection on the gaps in our lives that we can never quite fill...
💯1
Bias and Variance
بزارید اول اینو بگم.
وقتی مدل خیلی ساده‌ میشه ما Bias زیاد و Variance کم داریم (underfitting)
وقتی مدل خیلی پیچیده میشه ما Bias کم و Variance زیاد داریم (overfitting)
ما توی ماشین لرنینگ زمانی یه مدل خوب داریم که trade off خوبی بین Bias و Variance داشته باشیم. یافتن تعادل بین Bias و Variance. مدلی که نه خیلی پیچیده و نه خیلی ساده باشه.

حالا! تصور کنید که یه مدل خطی ساده (یه خط مستقیم) دارید که سعی می کنه قیمت خونه رو بر اساس اندازه خونه پیش بینی کنه. اگه رابطه بین اندازه خونه و قیمت در واقع پیچیده‌تر باشه (مثلاً یک منحنی)، مدل خطی شما این پیچیدگی رو نشون نمیده و منجر به Bias زیاد میشه. در واقع در Bias زیاد مدل ما خیلی ساده ست. خطا هم روی دیتای ترین و هم تست زیاده.

بازم تصور کنید مدلی دارید که منحنی بسیار پیچیده ای هست و پیچ و خم های زیادی داره و سعی می کنه قیمت خونه رو پیش بینی کنه. این مدل کاملا با داده‌های ترینینگ از جمله نویزهای کوچک و نقاط پرت مطابقت داره. با این حال وقتی سعی میکنید قیمت‌های خونه‌های جدید رو پیش‌بینی کنید، مدل خوب عمل نمیکنه چون داده‌های ترینینگ رو بیش از حد برازش داده. در این حالت میگن Variance زیاده. پس در Variance بالا مدل خیلی پیچیده ست. با داده های ترینینگ از جمله نویز خیلی فیته.خطای ترینینگ کمه اما خطای تست زیاده.

حالا. تکنیک‌هایی برای بالانس کردن Bias و Variance
1. Cross Validation
به اطمینان از تعمیم مدل کمک میکنه
2. Regularization
این overfitting رو کاهش میده و از پیچیده تر شدن مدل جلوگیری میکنه.
3. Ensemble Methods
ترکیب چندین مدل (مثل Random Forests یا Gradient Boosting) میتونه واریانس رو کاهش بده و پیش‌بینی‌ها رو بهبود ببخشه.
4. Hyperparameter Tuning
هایپرپارامترهای مدل خودتون رو با دقت تنظیم کنید (مثل depth توی decision tree) تا بهترین عملکرد رو پیدا کنید.
11
ROC Curve (Receiver Operating Characteristic Curve) and AUC
فرض کن که یه کیسه پر از سیب و پرتقال داریم و تسک تو اینه که سیب‌ها رو از پرتقال‌ها جدا کنی. و یک مدل ماشین لرنینگ داری که این کار رو انجام میده اما این مدل همیشه درست عمل نمیکنه. مدل تو ممکنه بعضی از سیب‌ها رو به اشتباه پرتقال تشخیص بده (False Positive) و بعضی از پرتقال‌ها رو به اشتباه سیب تشخیص بده (False Negative).
حالا. نسبت سیب‌هایی که درست تشخیص داده شدن به تعداد کل سیب‌ها رو میگن True Positive Rate (TPR). بهش Sensitivity یا Recall هم میگن.
و نسبت پرتقال‌هایی که به اشتباه سیب تشخیص داده شدن به تعداد کل پرتقال‌ها رو میگن False Positive Rate (FPR). این 1منهای Specificity هست.
مدل تو برای تصمیم‌گیری از یه مقدار آستانه‌ای (Threshold) استفاده می‌کنه. اگر احتمال اینکه یه میوه سیب باشه بیشتر از Threshold باشه، اونو سیب در نظر می‌گیره و اگر کمتر باشه، اونو پرتقال در نظر می‌گیره.
حالا ROC Curve یه نموداره که نشون میده چطور TPR و FPR با تغییر Threshold تغییر میکنن.
توی این نمودار، محور y نشون‌دهنده‌ی TPR و محور x نشون‌دهنده‌ی FPR هست.
در مورد AUC هم AUC مقدار مساحت زیر نموداره و نشون می‌ده که مدل تو چقدر خوب کار می‌کنه.
مقدار AUC بین 0 و 1 هست. هرچه AUC به 1 نزدیک‌تر باشه، مدل بهتره.
در واقع AUC به تو کمک میکنه بفهمی که مدل تو چقدر خوب میتونه بین سیب‌ها و پرتقال‌ها تمایز قایل بشه.
اگر AUC برابر 0.5 باشه یعنی مدل تو هیچ تفاوتی با حدس زدن تصادفی نداره.
گر AUC برابر 1 باشه یعنی مدل تو به طور کامل و بدون خطا تمام سیب‌ها و پرتقال‌ها رو درست تشخیص میده.
1
👍31
Entropy
آنتروپی یه مفهوم اساسی توی ماشین لرنینگ هست به ویژه در decision trees. این عدم قطعیت یا randomness رو اندازه گیری میکنه. میتونید بهش به عنوان راهی برای اندازه گیری میکس یا خالص بودن یه دیتاست هم فکر کنید.
تصور کنید یه جعبه پر از توپ های رنگی دارید. اگه همه توپ ها یه رنگ باشن، جعبه بسیار مرتبه و وقتی یه توپ رو بیرون میارید جای تعجب نیست. این نشون دهنده آنتروپی کمه.
اگر جعبه ترکیبی از توپ‌های رنگی مختلف داشته باشه، مطمین نیستید که بعدا چه توپ رنگی رو بیرون میارید. این نشون دهنده آنتروپی بالاست.
توی decision trees، آنتروپی به تصمیم گیری کمک میکنه که داده ها رو به زیر مجموعه ها تقسیم کنه. هدف ایجاد زیرمجموعه هایی هست که تا حد امکان خالص باشن (یعنی عمدتا شامل یک نوع نتیجه باشن).
آنتروپی کمتر به معنای خلوص بالاتره که هدف ما هنگام تقسیم داده ها هست.

تصور کنید یه شیشه با دو نوع آب نبات دارید: قرمز و آبی. اگه شیشه دارای تعداد مساوی آب نبات قرمز و آبی باشه، پیش بینی رنگ بعدی که انتخاب می کنید دشوارتره. این وضعیت آنتروپی بالاست.
اگه شیشه عمدتا آب نبات قرمز و فقط چند عدد آبی داره، پیش بینی اینکه احتمالا یه آب نبات قرمز انتخاب می کنید آسون تره. این وضعیت آنتروپی پایینه.
آنتروپی با استفاده از احتمالات محاسبه میشه. اگه احتمال برداشتن هر نوع آب نبات رو میدونید میتونید آنتروپی رو محاسبه بکنید.
فرمول آنتروپی شامل ضرب احتمال هر نوع نتیجه توی لگاریتم اون احتمال و سپس جمع کردن این مقادیره.
اگر 4 آب نبات قرمز و 6 آب نبات آبی وجود داشته باشه احتمال انتخاب یه آب نبات قرمز (P_red) 4 از 10 (4/10) و احتمال انتخاب یه آب نبات آبی (P_blue) 6 از 10 هست (6). /10).
Entropy = - (P_red * log2(P_red) + P_blue * log2(P_blue))
Entropy = - (0.4 * log2(0.4) + 0.6 * log2(0.6))
شما هر احتمال رو میگیرید، اون رو در log 2 اون احتمال ضرب می کنید و سپس نتایج رو جمع می کنید. علامت منفی نشون میده که مقدار آنتروپی مثبته.

در مورد لگاریتم (log2): تصور کنید در انتهای یه نردبان هستید و هر قدمی که برمیدارید قد شما رو دو برابر میکنه. بعد از یک قدم، شما 2 متر ارتفاع دارید. بعد از دو قدم، شما 4 متر ارتفاع دارید. بعد از سه قدم، شما 8 متر ارتفاع دارید.
اگه کسی به شما بگه که 8 متر ارتفاع دارد و میخوایید بدونید که چند قدم برداشته از log2 استفاده می کنید. Log2(8) = 3
کامپیوترها از سیستم باینری استفاده میکنن که بر اساس توانهای 2 هست. در باینری، همه چیز به صورت 0 و 1 نمایش داده میشه. با Log2 توی این سیستم میشه اندازه گیری کرد که چند بیت برای نمایش یک عدد مورد نیازه. بیت کوچکترین واحد داده در یه کامپیوتر هست و میتونه 0 یا 1 باشه.
و Log2 در این فرمول برای اندازه گیری اطلاعات استفاده میشه. آنتروپی کمتر به معنای عدم قطعیت کمتر و بیت های کمتر مورد نیازه. آنتروپی بالاتر به معنای عدم قطعیت بیشتر و بیت های بیشتر مورد نیازه.
4👍1💯1
Information Gain
حالا. Information Gain اندازه گیری میکنه که یه فیچر چقدر اطلاعات در مورد متغیر هدف به ما میده. یا به عبارت دیگه به ما میگه که چقدر با استفاده از یه فیچر خاص برای تقسیم داده های خود آشوب (آنتروپی) رو کاهش میدیم. این به ما کمک میکنه تصمیم بگیریم از کدوم فیچر برای تقسیم داده ها توی هر مرحله در ساخت decision tree استفاده کنیم. Information Gain عدم قطعیت توی پیش‌بینی متغیر هدف رو با انتخاب ویژگی‌ای که داده‌ها رو به بهترین شکل جدا میکنه کاهش میده.
تصور کنید یه دیتاست دارید و میخوایید یه متغیر هدف رو پیش بینی کنید، مثلا فردا باران خواهد بارید یا خیر. ابتدا شما کمی عدم اطمینان دارید چون هیچ اطلاعات اضافی ندارید. بهش میگن Initial Uncertainty.
برای کاهش این عدم قطعیت به فیچرهای مختلف (به عنوان مثال، رطوبت، دما، سرعت باد) نگاه میکنید و ارزیابی میکنید که هر فیچر چقدر توی پیش‌بینی متغیر هدف کمک میکنه. (Choosing a Feature)
برای هر فیچر محاسبه میکنید که چقدر به کاهش عدم اطمینان در مورد متغیر هدف کمک می کنه. فیچری که بیشترین کاهش uncertainty رو فراهم میکنه بالاترین Information Gain رو داره. (Calculating Information Gain)
شما فیچری با بالاترین Information Gain رو برای تقسیم داده ها انتخاب میکنید. این فرایند در هر مرحله با استفاده از اطلاعات بدست اومده برای ساخت درخت تصمیم ادامه پیدا میکنه (Splitting the Data)

فرض کنید یه کلاس 10 دانش آموزه دارید. 6 نفر توی امتحان قبول و 4 نفر مردود میشن.
ابتدا آنتروپی رو محاسبه میکنیم:
H=−(0.6log2​0.6+0.4log2​0.4)
حالا باید بریم سراغ محاسبه آنتروپی بعد از تقسیم داده ها:
فرض کنید داده ها رو بر اساس اینکه دانش آموزها بیش از 2 ساعت مطالعه کرده باشن یا نه تقسیم میکنیم. (فیچر بیش از 2 ساعت مطالعه داشتن)
گروه 1: دانش آموزهایی که بیش از 2 ساعت درس خوندن (8 دانش آموز، 6 نفر قبولی، 2 نفر مردود میشن).
گروه 2: دانش آموزهایی که 2 ساعت یا کمتر درس خوندن (2 دانش آموز، 0 قبولی، 2 نفر مردود میشن).
آنتروپی رو برای هر گروه محاسبه میکنیم
H1​=−(0.75log2​0.75+0.25log2​0.25)
H2​=−(0log2​0+1log2​1)=0

حالا Weighted Average آنتروپی رو محاسبه میکنیم:
H split​= 8/10H1 + 2/10H2
در نهایت Information Gain میشه:
IG=H−H split
👍3💯1