Machine Learning Melodies – Telegram
Machine Learning Melodies
215 subscribers
28 photos
3 files
5 links
توی این کانال، من تجربیات و علایق شخصی‌ام رو در زمینه ماشین لرنینگ، موسیقی و چند چیز دیگه به اشتراک می‌گذارم
Download Telegram
Audio
💯1
Probability vs Likelihood
ممکنه این دو به یک معنا به نظر برسن. اما توی آمار، اونها متفاوت هستن و به روش های متمایز استفاده میشن. Probability در مورد آنچه ممکنه در آینده بر اساس برخی شرایط یا مدل های شناخته شده اتفاق بیفته صحبت میکنه. اما در Likelihood صحبت در مورد یافتن بهترین توضیح برای چیزیه که قبلا اتفاق افتاده. Probability در مورد اینه که احتمال وقوع چیزی رو قبل از وقوع اون مشخص کنیم. Likelihood در مورد اینه که بفهمید کدوم توضیح یا مدل به بهترین وجه با آنچه قبلا مشاهده کرده اید مطابقت داره. برای مثال دوست شما یک سکه رو سه بار پرتاب میکنه و HTH دریافت می کنه.
حالا میخوایید بدونید که آیا سکه منصفانه هست یا نیست. شما با این فرضیه شروع میکنید که سکه منصفانه هست (به معنی که p=0.5 برای شیر و p=0.5 برای روباه). اگه سکه منصفانه باشه، احتمال دریافت HTH رو محاسبه می‌کنید: بررسی کنید که احتمالات دیگه چقدر با دریافت HTH مطابقت دارن. این کمک می کنه تصمیم بگیرید که آیا حدس اولیه شما (منصفانه بودن سکه) منطقی هست یا توضیح دیگه ای بهتره.
💯1
Odds, Log(Odds), Odds Ratios, and Log(Odds Ratios)
شانس نسبت احتمال (probability) وقوع یک رویداد به احتمال رخ ندادن اونه.
Odds = P(event)​/1−P(event)
برای مثال اگر احتمال موفقیت 0.8 باشه شانسش میشه
0.8/ 1-0.8 = 4
اینطور معنی میده که احتمال وقوع اون رویداد 4 برابر بیشتر از عدم وقوع هست.
حالا log(odds) لگاریتم طبیعی(Ln) شانس هست. بعنوان logit function هم شناخته میشه. برای مثال بالا log(odds) میشه Log(Odds) = ln(4) ≈1.3
و odds ratio نسبت شانس وقوع یک رویداد رو در یک گروه با شانس وقوع رویداد در گروه دیگه مقایسه میکنه. برای مثال اگر شانس ابتلا به یه بیماری در گروه درمان 3 و در گروه کنترل 1.5 باشه odds ratio میشه 3/1.5=2
و log(odds ratio) که لگاریتم طبیعی odds ratio هست. این بیشتر توی مدل های رگرسیون لجستیک برای سهولت در تفسیر استفاده میشه.
💯1
Logistic Regression
رگرسیون لجستیک یه روش آماریه که برای طبقه بندی باینری استفاده میشه. به این معنی که برای پیش بینی یکی از دو نتیجه ممکن استفاده میشه. برخلاف نامش رگرسیون لجستیک برای مسایل طبقه بندی استفاده میشه نه مشکلات رگرسیون. این یه نوع تحلیل رگرسیونی هست که در اون متغیر وابسته کتگوریکال هست.
این مدل توی نام خودش کلمه لجستیک رو داره چون از تابع لجستیک (sigmoid) برای تبدیل ترکیب خطی فیچرهای ورودی به احتمالات استفاده میکنه. همچنین کلمه رگرسیون رو توی نام خودش داره چون خروجی اون یک مقدار پیوسته بین 0 و 1 هست.
رگرسیون لجستیک یه probabilistic classifier هست که مسایل binary classification رو هندل میکنه. یک سمپل رو میگیره و خروجی میده probability p رو که احتمال اینکه سمپل به کلاس مثبت تعلق داشته باشه رو میگه. اگه این احتمال بالاتر از مقدار آستانه باشه (معمولاً 0.5) سمپل به کلاس 1 طبقه بندی میشه در غیر این صورت به کلاس 0 طبقه بندی میشه.
اما مدل چطور احتمال p رو تخمین میزنه؟ فرض اساسی توی رگرسیون لجستیک اینه که log(odds) رویدادی که نمونه به کلاس مثبت تعلق داره ترکیبی خطی از فیچر های اونه. Log(odds) که logit هم شناخته میشه لگاریتم odds ratio هست که بالا دیدیم. که نسبت بین احتمال تعلق نمونه به کلاس مثبت و احتمال تعلق همون به کلاس منفی هست.
logit (p) = p/ 1-p
ما اینجا فرض می کنیم که پایه لگاریتم e (یعنی لگاریتم طبیعی) هست اگرچه میشه از پایه های دیگه ای هم استفاده کرد.
پس logit function احتمالات بین 0 و 1 رو به اعداد در بازه (-∞, +∞) تبدیل میکنه.
همچنین گفتیم که در رگرسیون لجستیک ما فرض می کنیم که log odds ترکیبی خطی از فیچر هاست به عنوان مثال:
logit (p) = p/ 1-p = w0 + w1x1 + ... + wmxm = wᵗx
اینجا w = (w₀, …, wₘ) پارامترهای مدل هستن و w0 همون بایاس هست.
نقاطی که p = 0.5 (یعنی log odds صفر دارن) ابرصفحه (hyperplane) جداکننده بین دو کلاس رو تعریف می میکنن. که معادله اون
wᵗx = 0
هست. بردار وزن w متعامد به این ابر صفحه هست. هر سمپل بالای هایپرپلان (wᵗx > 0) به عنوان یه سمپل مثبت طبقه بندی میشه در حالی که هر سمپل زیر هایپرپلان (wᵗx < 0) به عنوان سمپل منفی طبقه بندی میشه
این رگرسیون لجستیک رو به یه کلاسیفایر خطی تبدیل می‌کنه چون فرض میکنه که مرز بین کلاس‌ها یه سطح خطی هست.
میتونیم معادله logit (p) = p/ 1-p = wᵗx رو توسعه بدیم:
ابتدا دو طرف معادله رو به توان e میبریم تا ln سمت چپ حذف بشه.
p/ 1-p = e** (wᵗx)
p = (1-p) e** (wᵗx)
p*(1+e** (wᵗx)) = e** (wᵗx)
p = e** (wᵗx) / (1+e** (wᵗx)) = 1 / (1+e** (-wᵗx)) = σ(wᵗx) = sigmoid function یا logistic function (wᵗx)
تابع سیگموید برای تبدیل (wᵗx) یا log odds به احتمالات استفاده میشه. این تابع اعداد توی رنج (-∞، +∞) رو به احتمالات توی رنج (0، 1) نگاشت میکنه.
هدف ما پیدا کردن پارامترهای w هست که پیش‌بینی‌های مدل p = σ(wᵗx) رو تا حد امکان به لیبلهای واقعی y نزدیک میکنه. برای این منظور باید یه loss function تعریف کنیم که میزان فاصله پیش‌بینی‌های مدل ما از برچسب‌های واقعی رو اندازه‌گیری کنه. میشه اونو با استفاده از تکنیک هایی مثل gradient descent بهینه کرد. loss function ی که توی رگرسیون لجستیک استفاده میشه log loss (logistic loss) هست.
L_log(y, p) = -(y log (p) + (1 - y) log (1 - p))
چطور به این تابع رسیدیم؟ این تابع بر اساس اصل maximum likelihood بدست اومده. بطور خلاصه به حداکثر رسوندن log likelihood معادل مینیمم کردن log loss هست.
👍1💯1
مجتبی شکوری - نافرمانی راهی برای رشد
📻@podchi
رشد اغلب به شجاعتِ به چالش کشیدن قراردادها و پذیرش ناراحتی‌هایِ کاوش فکری نیاز داره.
💯1
💯1
نشستم براتون یکم کد زدم. این بهترین سیستم طراحی داخلی هست که میتونید با اون فضای زندگی خودتون رو از نو تصور کنید. با چند سلول کد میشه چنین سیستمی ساخت. میتونید توی colab ران کنید. همچنین پیشنهاد میکنم متناسب با کاری که میخوایید انجام بدید از یه مدل lora برای بهتر شدن نتایج استفاده کنید.
مدلی که اینجا استفاده کردم stable-diffusion-xl-1.0-inpainting-0.1 هست. این بهترین مدل اوپن سورس ممکنه. بنابراین اگر جایی نتایج بهتری دیدید یا فیکه یا خودشون ترین کردن.
کدش رو زیر قرار میدم
2
Ridge, Lasso, and Elastic-Net Regression
رگولاریزیشن تکنیکی هست که برای جلوگیری از برازش بیش از حد (اورفیتینگ) با اضافه کردن یه پنالتی به پیچیدگی مدل استفاده میشه. هدف ساده نگه داشتن مدل (با جلوگیری از بیش از حد بزرگ شدن پارامترها) هست که به تعمیم بهتر داده های جدید کمک میکنه. Ridge regression که بعنوان L2 regularization هم شناخته میشه cost function رگرسیون رو با اضافه کردن یه عبارت جریمه اصلاح میکنه. این جریمه مجموع مجذور ضرایب مدل (بدون احتساب بایاس) هست. Lasso regression که یه تکنیک دیگه رگولاریزیشن هست و با نام L1 regularization هم شناخته میشه cost function رگرسیون رو با اضافه کردن یه پنالتی به اون که مجموع مقادیر مطلق ضرایب مدل (بدون احتساب بایاس) هست اصلاح میکنه. و Elastic-Net regression هم پنالتی های دو متد Lasso (L1 regularization) و Ridge (L2 regularization) رو ترکیب میکنه. هر دو رو به cost function اضافه میکنه.اما در حالی که این متدها برای مسیله رگرسیون توسعه دادن شدن اما میشه از اونها در مسیله کلاسیفیکیشن هم استفاده کرد.
👍1🤩1
1
Machine Learning Melodies
GIF
Stable Video Diffusion - Img2Vid - XT
🤩1
سلام. میخوام در مورد Decision Tree برای دیتاست iris حرف بزنم و یکم هم کد بزنیم
🤩1
این دیتاست گل های زنبق هست. یکسری فیچر داره-اندازه گیری گل های زنبق. و یکسری هم لیبل-گونه های گل زنبق. هدش رو نشون دادم توی تصویر
1
اینجا Pairplotش رو با seaborn نشون دادم. Pairplot گریدی از اسکتر پلات‌ها (و گاهی histograms یا density plots) هست که روابط پِیری بین فیچرهای یه دیتاست رو نشون میده. عناصر خارج از قطر اصلی اسکتر پلات‌ها رو برای پِیر فیچرها نشون میده. عناصر قطر اصلی معمولا Histograms یا Kernel Density Plots (KDE Plots) رو نشون میده. هیستوگرام داده هارو به binsها تقسیم میکنه و مشاهدات هر bin رو میشماره. KDE رو میشه ورژن smooth شده ی هیستوگرام دونست. این برای تجسم تابع چگالی احتمال یه متغیر تصادفی پیوسته بکار میره. از یه kernel function برای تخمین چگالی احتمال استفاده میکنه. فرض کنید روی هر نقطه داده یه نمودار یکسان بزاریم و در آخر این نمودارهارو با هم جمع کنیم. نمودار حاصل میشه KDE.
1👍1
اینم box plots دیتاست هست که توزیع هر فیچر رو نشون میده
1
segformer.ipynb
32.2 KB
اینم یه کد که ممکنه بدردتون بخوره. clothes segmentation انجام میده و از مدل segformer_b2_clothes استفاده میکنه. یه فانکشن نوشتم که لباسهای خاصی که میخوایید رو جدا میکنه و جداگانه ذخیره میکنه. این میتونه توی پروژه های try on خیلی مفید باشه
1💯1
dress