آموزش دیتاساینس و ماشین‌لرنینگ
1.89K subscribers
161 photos
9 videos
134 links
🔴 آموزش مباحث حوزه دیتا شامل علم داده، یادگیری ماشین و تحلیل داده (رضا شکرزاد)

🌀 کانال اخبار و منابع هوش مصنوعی:
@DSLanders

🌀 مشاوره و ارتباط مستقیم:
https://t.iss.one/dslanders_admin

یوتیوب:
Youtube.com/@RezaShokrzad

دوره‌ها:
cafetadris.com/datascience
Download Telegram
🧑‍🎓 آشنایی با الگوریتم XGBoost

الگوریتم XGBoost یک الگوریتم یادگیری باناظره به‌خاطر قابلیت‌هاش در تنظیم خودکار، سرعت بالا در آموزش و قدرت پیش‌بینی‌اش، به‌عنوان یکی از قدرتمندترین و مؤثرترین ابزارها در حوزه یادگیری ماشین شناخته می‌شه و کاربردهای فراوانی داره.

🟢برای مطالعه کلیک کنین:
👉📎 ctdrs.ir/ds0224

#Machine_Learning
#Xgboost

@DSLanders | دی‌اس‌لندرز
Please open Telegram to view this post
VIEW IN TELEGRAM
👍52👌2
👨‍🎓 پکیج پایتونی Xgboost

پکیج پایتون برای XGBoost که به دلیل سرعت و دقت بالا شهرت داره، برای حل مسائل طبقه‌بندی، رگرسیون و رتبه‌بندی به کار می‌ره.

۱. نصب و وارد کردن پکیج XGBoost: در مرحله اول باید کتابخانه XGBoost رو نصب کرد. این کار با استفاده از pip انجام میشه.

pip install xgboost


بعد از نصب، به این صورت وارد میشه:

import xgboost as xgb


۲. آماده‌سازی داده‌ها: داده‌ها باید به فرمت DMatrix تبدیل شن که فرمت داده‌ای اختصاصی XGBoost هست و برای بهینه‌سازی عملکرد طراحی شده.

train = xgb.DMatrix(X_train, label=y_train)
test = xgb.DMatrix(X_test, label=y_test)


۳. تنظیم پارامترها: پارامترهای XGBoost رو میشه به سه دسته کلی تقسیم کرد: پارامترهای عمومی، پارامترهای بوستر و پارامترهای مربوط به وظایف خاص.

params = {
'max_depth': 3,
'eta': 0.1,
'objective': 'binary:logistic',
'eval_metric': 'auc'
}
num_round = 100


🔵پارامترهای عمومی: تنظیمات کلی الگوریتم رو مشخص و روی همه جنبه‌های آموزش تأثیر می‌گذارن.

- نوع مدلی که استفاده میشه رو booster مشخص می‌کنه. می‌تونه gbtree (درخت تصمیم‌گیری), gblinear یا dart باشه.
- تعداد رشته‌های CPU برای اجرای XGBoost توسط nthread مشخص میشه. اگه با None تنظیم شه، XGBoost تعداد رشته‌های موجود رو خودش تعیین می‌کته.

🔵پارامترهای بوستر: ویژگی‌های مدل رو کنترل می‌کنن و روی دقت و سرعت آموزش تأثیر می‌گذارن.

- نرخ یادگیری توسط eta مشخص میشه. مقدار کمش باعث می‌شه مدل به آرومی یاد بگیره.
- حداکثر عمق هر درخت با max_depth مشخص میشه و افزایش این مقدار مدل رو پیچیده‌تر و قادر به یادگیری الگوهای دقیق‌تر می‌کنه.
- حداقل وزن مورد نیاز برای یک فرزند توسط min_child_weight مشخص میشه. مقادیر بزرگ‌تر برای این پارامتر باعث کنترل بیش‌برازش میشن.

🔵پارامترهای مربوط به وظایف خاص:برای وظایف خاص یادگیری ماشین مثل دسته‌بندی یا رگرسیون تنظیم می‌شن.

- تابع هدف یا خطایی که باید بهینه‌سازی شه با objective مشخص میشه. مثلا binary:logistic برای طبقه‌بندی دو کلاسه کاربرد داره.
- معیار ارزیابی برای مجموعه داده‌های اعتبارسنجی eval_metric هست. مثلا auc برای منطقه زیر منحنی ROC.

۴. آموزش و ارزیابی مدل: مدل با استفاده از داده‌های آموزشی و پارامترهای تعیین‌شده آموزش داده می‌شه و با استفاده از داده‌های تست عملکردش ارزیابی می‌شه.

bst = xgb.train(params, train, num_round)
preds = bst.predict(test)


۵. تنظیم دقیق مدل (Fine-tuning): XGBoost از روش‌هایی مثل cross-validation برای تنظیم دقیق پارامترها و جلوگیری از بیش‌برازش پشتیبانی می‌کنه.

cv_results = xgb.cv(params, train, num_boost_round=100, nfold=3, metrics={'auc'}, early_stopping_rounds=10)


🔵 بررسی یک نمونه کد کامل برای درک بهتر

import xgboost as xgb
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
from sklearn.metrics import accuracy_score

data = load_breast_cancer()
X, y = data.data, data.target

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

train = xgb.DMatrix(X_train, label=y_train)
test = xgb.DMatrix(X_test, label=y_test)

params = {
'max_depth': 3,
'eta': 0.1,
'objective': 'binary:logistic',
'eval_metric': 'auc'
}
num_round = 100

bst = xgb.train(params, train, num_round)

preds = bst.predict(test)
predictions = [1 if value > 0.5 else 0 for value in preds]

accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy: {accuracy * 100.0}%")

🔜Accuracy: 95.61%

#Machine_Learning
#Xgboost

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63👌2
💡تفاوت بین GBM و XGBoost

یک رویکرد عمومی تقویت گرادیان، الگوریتم (Gradient Boosting Machines) GBM هست که می‌تونه برای انواع کاربردها استفاده شه اما XGBoost یک پیاده‌سازی خاص از GBM هست.

🔵سرعت: XGBoost به دلیل استفاده از تکنیک‌هایی مثل تقسیم سریع درخت و جستجوی موازی به طور قابل‌توجهی‌ای سریع‌تر از GBM سنتیه.

🔵عملکرد: XGBoost به دلیل استفاده از تکنیک‌های منظم‌سازی و جستجوی دقیق‌تر فضای پارامتر GBM دقیق‌تره.

🔵قابلیت استفاده: XGBoost به دلیل وجود پارامترهای بیشتر و تکنیک‌های تنظیم پیچیده‌تر از GBM هست.

🔵موارد استفاده: GBM و XGBoost برای مسائل مختلف طبقه‌بندی، رگرسیون، رتبه‌بندی و یادگیری تقویتی به کار می‌رن. XGBoost به طور خاص برای مسائل رگرسیون با حجم داده بالا مناسبه.

#Machine_Learning
#Xgboost

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌4👍32
👨‍🎓 مقایسه Xgboost و Random Forest

🔵 دقت (Accuracy)

🔵جنگل تصادفی در بسیاری از موارد دقت بالایی داره. این الگوریتم با ایجاد تعداد زیادی درخت و ترکیب نتایج از overfitting جلوگیری می‌کنه.

🔵الگوریتم XGBoost معمولا دقت بسیار بالایی داره؛ به‌خصوص در مجموعه داده‌هایی که پیچیده هستن و تعداد ویژگی زیادی دارن. روش‌های تنظیم دقیق پارامتر در XGBoost به بهبود عملکرد مدل کمک می‌کنن.

🔵 سرعت و کارایی

🔵جنگل تصادفی می‌تونه با استفاده از چندین هسته CPU به صورت موازی اجرا شه، اما در مقایسه با XGBoost کمی کنده.

🔵یکی از بزرگترین مزیت‌های XGBoost، سرعت زیادشه. XGBoost برای استفاده از منابع سخت‌افزاری بهینه شده و می‌تونه روی هسته‌های CPU و حتی GPU به صورت موازی اجرا شه.

🔵 مدیریت داده‌های گمشده (Missing Values)

🔵جنگل تصادفی می‌تونه به طور موثر با داده‌های گمشده کنار بیاد، اما نیاز به اعمال روش‌های پیش‌پردازش داده برای بهبود عملکرد داره.

🔵الگوریتم XGBoost دارای قابلیت‌های پیشرفته برای مدیریت داده‌های گمشده است و داده‌های گمشده رو به صورت داخلی (بدون نیاز به پیش‌پردازش) مدیریت می‌کنه.

🔵 تنظیم پارامتر (Parameter Tuning)

🔵جنگل تصادفی دارای پارامترهای کمتری برای تنظیمه و به طور کلی، تنظیم پارامتر در Random Forest ساده‌تره.

🔵الگوریتم XGBoost دارای تعداد زیادی پارامتره که تنظیم میشن و به بهبود عملکردش کمک می‌کنن. اما تنظیم این پارامترها ممکنه زمان‌بر و پیچیده باشه.

🔵 مقیاس‌پذیری و استفاده از منابع

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

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

🔵 قابلیت تفسیرپذیری (Interpretability)

🔵در جنگل تصادفی گاهی تفسیر نتایج به دلیل تعداد زیاد درختان تصمیم چالش‌برانگیزه.

🔵در XGBoost امکان ارائه ویژگی‌های مهم تفسیرپذیری مدل‌ رو نسبتاً ساده‌تر می‌کنه.

🔵 پیچیدگی زمانی (Big O)

🔵پیچیدگی زمانی Random Forest به تعداد درختان (n_estimators) و تعداد ویژگی‌ها (features) بستگی داره و به صورت O(N * M * log(M)) محاسبه میشه که در اون N تعداد نمونه‌ها و M تعداد ویژگی‌هاست.

🔵پیچیدگی زمانی XGBoost به عوامل مختلفی مثل تعداد دوره‌های تکرار (n_rounds)، تعداد ویژگی‌ها و تعداد نمونه‌ها بستگی داره و به صورت O(K * N * M) محاسبه میشه که در اون K تعداد دوره‌های تکراره.

#Machine_Learning
#Xgboost

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌53👍2
💡مقایسه XGBoost با روش‌های یادگیری عمیق مثل ANNs، CNNs، RNNs

الگوریتم XGBoost یک الگوریتم مبتنی بر درخت تصمیمه، در حالی که روش‌های یادگیری عمیق بر اساس شبکه‌های عصبی مصنوعی هستن. یعنی XGBoost نسبت به روش‌های یادگیری عمیق، قابل تفسیرتره؛ چون ساختار درخت تصمیم نسبت به شبکه‌های عصبی برای درک آسان‌تره.

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

#Machine_Learning
#Xgboost

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64👏1
پست‌های هفته‌ای که گذشت رو این‌جا پیدا کنین!

🔺 آموزشی

🔵مقایسه Bagging و Boosting و Stacking
👉🔗 https://t.iss.one/data_ml/239

🔵استفاده از Gradient در Xgboost
👉🔗 https://t.iss.one/data_ml/242

🔵الگوریتم Xgboost در رگرسیون و طبقه‌بندی
👉🔗 https://t.iss.one/data_ml/245

🔵پیاده سازی Xgboost از پایه (Scratch)
👉🔗 https://t.iss.one/data_ml/248

🔵پکیج پایتونی Xgboost
👉🔗 https://t.iss.one/data_ml/251

🔵مقایسه Xgboost و Random Forest
👉🔗 https://t.iss.one/data_ml/254

🔺 کوئیز

🔵کوئیز شماره ۶۷: تکنیک‌ مناسب برای کاهش overfitting در XGBoost
👉🔗 https://t.iss.one/data_ml/240

🔵کوئیز شماره ۶۸: آموزش افزایشی مدل‌ها در XGBoost
👉🔗 https://t.iss.one/data_ml/243

🔵کوئیز شماره ۶۹: XGBoost و داده‌های نامتوازن
👉🔗 https://t.iss.one/data_ml/246

🔵کوئیز شماره ۷۰: روش محاسبه اهمیت ویژگی‌ها در XGBoost
👉🔗 https://t.iss.one/data_ml/249

🔵کوئیز شماره ۷۱: subsampling در XGBoost
👉🔗 https://t.iss.one/data_ml/252

🔵کوئیز شماره ۷۲: روش هرس کردن
👉🔗 https://t.iss.one/data_ml/255

🔺 نکته

🔵دلایل عدم استفاده همیشگی از یادگیری گروهی
👉🔗 https://t.iss.one/data_ml/241

🔵کاربردهای Ensemble Learning در دنیای واقعی
👉🔗 https://t.iss.one/data_ml/244

🔵پارامتر گاما (gamma) در XGBoost
👉🔗 https://t.iss.one/data_ml/247

🔵بلاگ آشنایی با الگوریتم XGBoost
👉🔗 https://t.iss.one/data_ml/250

🔵تفاوت بین GBM و XGBoost
👉🔗 https://t.iss.one/data_ml/253

🔵مقایسه XGBoost با روش‌های یادگیری عمیق
👉🔗 https://t.iss.one/data_ml/256

#Weekend
#Machine_Learning
#Xgboost

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4👏31🔥1
👩‍🎓 برنامه آموزشی هفته: کاهش ابعاد یا Dimensionality Reduction

🟠شنبه: هدف از کاهش ابعاد

🔵یک‌شنبه: انواع روش‌های کاهش ابعاد

🟢دوشنبه: بررسی PCA با جزئیات

🔴سه‌شنبه: بررسی t-SNE با جزئیات

🟠چهارشنبه: بررسی UMAP با جزئیات

🔵پنج‌شنبه: کاربردهای کاهش ابعاد

🟢جمعه: جمع بندی

#Machine_Learning
#Dimensionality_Reduction

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍6👌1
👨‍🎓 هدف از کاهش ابعاد

کاهش ابعاد یا Dimensionality Reduction فرآیندیه که در طولش تعداد متغیرها یا ویژگی‌های (Features) موجود در داده‌ها کاهش پیدا می‌کنه؛ بدون اینکه اطلاعات مهم و مرتبط با مسئله به طور قابل توجهی از دست برن.

🔵 اهداف کاهش ابعاد

🔵کاهش پیچیدگی محاسباتی: با کاهش تعداد ویژگی‌ها، الگوریتم‌های یادگیری ماشین سریع‌تر و با کارایی بالاتری آموزش می‌بینن.

🔵کاهش مشکل بیش‌برازش (Overfitting): با حذف ویژگی‌های غیرضروری یا تکراری، مدل کمتر مستعد بیش‌برازش خواهد بود.

🔵افزایش قابلیت تفسیرپذیری: کاهش تعداد ویژگی‌ها به درک بهتر مدل و تصمیم‌گیری‌هایش کمک می‌کنه.

🔵کاهش نیاز به حافظه: ذخیره‌سازی داده‌ها با تعداد ویژگی‌های کمتر به فضای کمتری نیاز داره.

🔵 روش‌های کاهش ابعاد

🔵روش‌های خطی: این روش‌ها سعی می‌کنن ساختار داده‌ها رو در فضایی با بعد پایین‌تر نمایش بدن، در حالی که اطلاعات مهم حفظ میشن.

- تجزیه مولفه‌های اصلی (PCA): محبوب‌ترین روش برای کاهش ابعاد که با پیدا کردن مولفه‌های اصلی که بیشترین واریانس داده‌ها رو حفظ کنن، کار می‌کنه.

- تجزیه مقادیر منفرد (SVD): روشی که از تجزیه ماتریس برای کاهش بُعد استفاده می‌کنه.

🔵روش‌های غیرخطی: این روش‌ها برای داده‌هایی که ساختار پیچیده‌تری دارن مناسب‌تر هستن.

- تعبیه چندبُعدی مقیاس (MDS): روشی که سعی داره فواصل بین نقاط در فضای کاهش یافته رو حفظ کنه.
- توزیع استوکاستیک همسایگی t-SNE: روشی محبوب برای کاهش بُعدیت که ساختارهای محلی داده‌ها رو حفظ می‌کنه و برای تصویرسازی داده‌های پیچیده مفیده.

🔵 چالش‌ها

چالش‌های کاهش ابعاد شامل انتخاب تعداد ابعاد مناسب برای کاهش، حفظ تمام اطلاعات مهم و اطمینان از اینکه کاهش ابعاد به تفسیرپذیری مدل آسیب نمی‌زنه، میشه.

#Machine_Learning
#Dimensionality_Reduction

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍63👌3
👨‍🎓 انواع روش‌های کاهش ابعاد

روش‌های کاهش بُعد دو دسته کلی دارن: روش‌هایی که فقط ویژگی‌های مهم رو حفظ می‌کنن و روش‌هایی که ترکیب جدیدی از ویژگی‌ها پیدا می‌کنن. در دسته اول، سه تکنیک وجود داره: حذف ویژگی به روش عقب‌گرد، انتخاب ویژگی به روش جلوگرد و جنگل‌های تصادفی. در دسته دوم، دو زیر دسته از روش‌ها وجود دارن: روش‌های خطی و روش‌های غیرخطی

🔵 روش‌های حفظ ویژگی‌های مهم

🔵حذف ویژگی به روش عقب‌گرد (Backward Elimination): در این روش با تمام ویژگی‌ها شروع می‌کنیم و در هر مرحله، ویژگی‌ای که کمترین تأثیر رو بر دقت مدل داره، حذف می‌شه. این فرآیند تا زمانی ادامه پیدا می‌کنه که فقط ویژگی‌های با اهمیت باقی بمونن.

🔵انتخاب ویژگی به روش جلوگرد (Forward Selection): در این روش، برعکس حذف به روش عقب‌گرد، با هیچ ویژگی شروع نمی‌کنیم و ویژگی‌ها یکی یکی به مدل اضافه می‌شن. هر ویژگی که بیشترین بهبود رو در عملکرد مدل داشته باشه، انتخاب می‌شه و در نهایت فقط مجموعه‌ای از ویژگی‌های مهم باقی می‌مونن.

🔵جنگل‌های تصادفی (Random Forests): این الگوریتم به خودی خود می‌تونه اهمیت ویژگی‌ها رو مشخص کنه و بنابراین برای انتخاب ویژگی‌ها مورد استفاده قرار می‌گیره. جنگل‌های تصادفی با ترکیب چندین درخت تصمیم و بررسی چگونگی عملکرد هر ویژگی در این درخت‌ها، ویژگی‌های مهم رو شناسایی می‌کنن.

🔵 روش‌های خطی

🔵تحلیل مؤلفه‌های اصلی (PCA): این روش از تبدیلات زاویه‌دار برای تبدیل ویژگی‌های مرتبط به مجموعه‌ای از ویژگی‌های آماری مستقل استفاده می‌کنه که به اونها مؤلفه‌های اصلی گفته می‌شه.

🔵تحلیل عاملی (FA): این تکنیک برای پیدا کردن علت‌ها یا فاکتورهایی هست که مستقیماً مشهود نیستن اما می‌تونن رفتار یا الگوهایی که در داده‌ها دیده میشه رو توجیه کنن.

🔵تحلیل تمایزی خطی (LDA): LDA سعی در پیدا کردن ترکیب خطی از ویژگی‌ها داره که بیشترین جداسازی بین کلاس‌های مختلف داده‌ها رو ایجاد کنه.

🔵تحلیل مؤلفه‌های متقطع (Truncated SVD): روش Truncated SVD برای کاهش بُعد داده‌هایی که به صورت ماتریس‌های Sparse (کم تراکم) هستن، به کار می‌ره. این روش برای مواردی مثل ماتریس‌های متنی یا داده‌هایی که در اونها بیشتر مقادیر صفر هستن، مناسبه.

🔵 روش‌های غیرخطی (یادگیری Manifold)

🔵تحلیل مؤلفه‌های هسته‌ای (Kernel PCA): این روش یک توسعه غیرخطی از PCA هست که امکان کاهش بُعد در داده‌هایی که رابطه‌های غیرخطی دارن رو فراهم می‌کنه.

🔵توزیع تصادفی همسایه نزدیک با توزیع t: یک تکنیک قدرتمند برای کاهش بُعد، t-SNE هست که برای مصورسازی داده‌های با بُعد بالا به کار می‌ره. این روش سعی در حفظ ساختارهای محلی داده‌ها در فضای کاهش بُعد یافته داره و به طور گسترده‌ در تجزیه و تحلیل داده‌های پیچیده مثل داده‌های ژنتیکی کاربرد داره.

🔵تحلیل تفاوت‌های چندبُعدی: MDS یک روش کاهش بُعد هست که با حفظ فاصله‌های بین نقاط در فضای بُعد بالا، به کاهش بُعد داده‌ها می‌پردازد.

🔵تصویرسازی بُعد کمتر با حفظ فواصل: روش Isomap یکی از اولین تکنیک‌های یادگیری Manifold هست که با ترکیب روش‌های محاسبه فاصله‌ی کوتاه‌ترین مسیر و کاهش بُعد خطی، به حفظ ساختار کلی داده‌ها در فضای کاهش بُعد یافته کمک می‌کنه.

اگه داده‌ها دارای روابط غیرخطی قوی باشن، استفاده از روش‌های غیرخطی مثل Kernel PCA یا t-SNE مناسبه. در حالی که اگه داده‌ها به صورت خطی جدا بشن، استفاده از PCA یا LDA مؤثرتره. t-SNE برای مجموعه‌های داده‌های بزرگ بسیار زمان‌بره و نیاز به تنظیم دقیق پارامترها داره.

در نهایت، هدف از کاهش بُعد اینکه بتوانیم داده‌های پیچیده رو به شکلی ساده‌تر برای تحلیل و مدل‌سازی در یادگیری ماشین تبدیل کنیم. این کار نه تنها به بهبود عملکرد الگوریتم‌ها کمک می‌کنه بلکه امکان تصویرسازی داده‌هایی که در فضاهای بُعد بالا قرار دارن رو هم فراهم می‌کنه. همچنین، با کاهش ابعاد، overfitting هم کاهش پیدا می‌کنه چون مدل کمتر توسط نویز و ویژگی‌های غیرمرتبط تأثیر می‌پذیره.

#Machine_Learning
#Dimensionality_Reduction

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍64👌3👏1
👨‍🎓 بررسی PCA با جزئیات

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

🔵 نحوه کارکرد PCA

🔵مرحله اولیه: شروع با داده‌های اصلی.
🔵نرمال‌سازی داده‌ها: صفر در نظر گرفتن میانگین و یک در نظر گرفتن واریانس.
🔵محاسبه ماتریس کوواریانس: برای درک نحوه وابستگی متغیرها به نسبت به هم کوواریانس محاسبه میشه.
🔵محاسبه مقادیر و بردارهای ویژه: برای تعیین جهت‌هایی که بیشترین واریانس (پراکندگی) داده‌ها رو نشون بده، این مورد محاسبه میشه.
🔵محاسبه مولفه‌های اصلی (PC): این مرحله شامل انتخاب بردارهای ویژه‌ایه که بیشترین واریانس رو شامل شن.
🔵ترسیم نمودار: برای بررسی عمود بودن مولفه‌های اصلی نسبت بهم نمودار رسم میشه.

🔵 تعداد مولفه‌های اصلی مورد نیاز

تعداد مولفه‌های اصلی مورد نیاز بر اساس میزان واریانس (اطلاعات) که یک مولفه اصلی در خودش جا داده، تعیین می‌شه.

🔵 مزایا و معایب PCA

مزایا:

🔵کاهش ابعاد داده‌ها و سهولت در تجزیه و تحلیل.
🔵حذف ویژگی‌های مرتبط و کاهش مشکل چند خطی بودن.
🔵کاهش زمان لازم برای آموزش مدل‌ها.
🔵کمک به جلوگیری از بیش‌برازش با حذف ویژگی‌های اضافی.

معایب:

🔵مناسب برای داده‌های کمی و نه چندان موثر برای داده‌های کیفی.
🔵مولفه‌های اصلی به دست اومده از PCA گاهی به سادگی قابل تفسیر نیستن چون ترکیب خطی از ویژگی‌های اصلی هستن.
🔵داده‌هایی که در مقیاس‌های مختلف اندازه‌گیری شدن نتایج PCA رو به شدت تحت تأثیر قرار میدن و نرمال‌سازی داده‌ها قبل از اجرای PCA ضروریه.
🔵این الگوریتم بر اساس فرضیه خطی بودن داده‌ها کار می‌کنه و در مواجهه با ساختارهای پیچیده‌تر و غیرخطی داده‌ها کارایی لازم رو نداره.

🔵 کاربردهای PCA

- بینایی کامپیوتر: برای پردازش تصویر و شناسایی الگو.
- بیوانفورماتیک: کاربرد در تحلیل داده‌های ژنومیک و پروتئومیک.
- فشرده‌سازی تصاویر: کاهش حجم داده‌های تصویری با حفظ اطلاعات مهم.
- کشف الگوها در داده‌های با بعد بالا: تجزیه و تحلیل داده‌های پیچیده و بزرگ.
- کاهش ابعاد برای تجسم داده‌ها: تسهیل در تجسم و تحلیل داده‌های چند بعدی.

🔵برای پیاده‌سازی عملی PCA معمولاً از کتابخانه sklearn.decomposition.PCA در Python استفاده میشه.

from sklearn.decomposition import PCA
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
import pandas as pd

iris = load_iris()
X = iris.data
y = iris.target

pca = PCA(n_components=2) # کاهش به 2 بعد
X_r = pca.fit_transform(X)

df = pd.DataFrame(X_r, columns=['PC1', 'PC2'])
df['Target'] = y

fig, ax = plt.subplots()
colors = ['navy', 'turquoise', 'darkorange']
lw = 2

for color, i, target_name in zip(colors, [0, 1, 2], iris.target_names):
plt.scatter(df[df['Target'] == i]['PC1'], df[df['Target'] == i]['PC2'], color=color, alpha=.8, lw=lw,
label=target_name)
plt.legend(loc='best', shadow=False, scatterpoints=1)
plt.title('PCA of IRIS dataset')
plt.xlabel('Principal Component 1')
plt.ylabel('Principal Component 2')
plt.show()


#Machine_Learning
#Dimensionality_Reduction

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍83👌1
💡چطور از PCA برای تشخیص ناهنجاری استفاده میشه؟

برای تشخیص ناهنجاری با شناسایی تغییرات غیرعادی در واریانس داده‌ها از PCA استفاده می‌شه. در حالتی که داده‌ها در فضایی با بعد بالا قرار دارن، PCA می‌تونه به کاهش ابعاد داده‌ها کمک کنه و اجازه بده تا الگوهای ناهنجاری که در ابعاد اصلی داده‌ها پنهان شذن، به راحتی تشخیص داده شن. این کار با برجسته‌سازی تفاوت‌ها در ویژگی‌های کلیدی داده‌ها انجام می‌شه، که شامل ناهنجاری‌های آماری یا الگوهای داده‌ای غیرمعموله.

#Machine_Learning
#Dimensionality_Reduction

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
👍42👌1
👨‍🎓 بررسی t-SNE با جزئیات

الگوریتم t-SNE مخفف t-distributed Stochastic Neighbor Embedding، یک تکنیک کاهش بعد غیرخطی در یادگیری ماشینه که برای مصور سازی داده‌های چند بعدی در فضایی با بعد پایین‌تر طراحی شده. این الگوریتم به طور گسترده‌ای برای کشف الگوها و ساختارهای پنهان در مجموعه‌های داده پیچیده استفاده می‌شه.

🔵 نحوه کارکرد t-SNE

🔵شروع با داده‌های اصلی: در این مرحله، مجموعه داده‌های چندبعدی اولیه به عنوان ورودی الگوریتم در نظر گرفته میشن.

🔵محاسبه احتمالات شرطی: به جای نرمال‌سازی داده‌ها، t-SNE احتمالات شرطی رو محاسبه می‌کنه که نشون‌دهنده میزان شباهت هر جفت نقطه در فضای چندبعدیه. این احتمالات بر اساس فاصله بین نقاط داده در فضای اصلی و با استفاده از توزیع گاوسی محاسبه می‌شن.

🔵انتخاب پارامتر پیچیدگی (Perplexity): پیچیدگی، معیاری برای تعداد همسایه‌های موثر هر نقطه داده است و نقش مهمی در تعیین مقیاس احتمالات شرطی داره. این پارامتر روی توازن بین حفظ ساختارهای Local و Global در نقشه کم‌بعد تأثیر می‌گذاره.

🔵محاسبه نقشه کم‌بعد: الگوریتم t-SNE یک نمایش با بعد پایین‌تر از داده‌ها ارائه می‌ده. در این فرآیند، روابط بین نقاط داده در فضای با بعد کم با به کارگیری توزیع t-Student برای محاسبه احتمالات متقابل تعریف می‌شن. هدف از این کار، بازتاب دقیق شباهت‌هایی هست که در بین داده‌های اصلی وجود دارن، تا از این طریق بشه ساختار واقعی داده‌ها رو در فضایی با ابعاد کمتر به نمایش گذاشت.

🔵کمینه‌سازی اختلاف Kullback-Leibler: الگوریتم t-SNE تلاش می‌کنه تا با کمینه‌سازی تفاوت Kullback-Leibler بین توزیع‌های احتمالی در فضای اصلی و فضای کم‌بعد، نقشه‌ رو بهینه‌سازی کنه. این فرایند به طور معمول از طریق روش‌های گرادیان کاهشی انجام می‌شه.

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

🔵 مزایا و معایب t-SNE

مزایا

🔵قدرت بالا در نمایش ساختارهای پیچیده و گروه‌بندی‌های ظریف در داده‌ها.
🔵توانایی در تجسم داده‌هایی با ابعاد بالا در فضایی با دو یا سه بعد برای تحلیل آسان‌تر.

معایب

🔵پیچیدگی زمانی و فضایی بالا، که استفاده از این الگوریتم رو برای مجموعه‌های داده‌ای با بیشتر از 10,000 نمونه رو سخت می‌کنه.
🔵حساسیت به انتخاب پارامترها مثل پیچیدگی.
🔵عدم قابلیت تعمیم‌پذیری نتایج به داده‌های جدید بدون اجرای مجدد الگوریتم.

🔵 کاربردهای t-SNE

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

🔵 قطعه کد قابل اجرا برای این الگوریتم

from sklearn.manifold import TSNE
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits

digits = load_digits()
X = digits.data
y = digits.target

tsne = TSNE(n_components=2, random_state=0)
X_2d = tsne.fit_transform(X)

plt.figure(figsize=(10, 5))
plt.scatter(X_2d[:, 0], X_2d[:, 1], c=y, cmap='jet', edgecolor='k', s=40)
plt.colorbar()
plt.title('t-SNE visualization of digit data')
plt.xlabel('t-SNE axis 1')
plt.ylabel('t-SNE axis 2')
plt.show()


#Machine_Learning
#Dimensionality_Reduction

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌3👍21👨‍💻1
آموزش دیتاساینس و ماشین‌لرنینگ
👨‍🎓 بررسی t-SNE با جزئیات الگوریتم t-SNE مخفف t-distributed Stochastic Neighbor Embedding، یک تکنیک کاهش بعد غیرخطی در یادگیری ماشینه که برای مصور سازی داده‌های چند بعدی در فضایی با بعد پایین‌تر طراحی شده. این الگوریتم به طور گسترده‌ای برای کشف الگوها و ساختارهای…
💡بررسی کد الگوریتم t-SNE

🔵تعداد بعدهای هدف برای نمایش داده‌ها در فضای کم‌بعد توسط n_components مشخص میشه.

🔵یک عدد ثابت برای اطمینان از تکرارپذیری نتایج توسط random_state مشخص میشه. t-SNE دارای جنبه‌های تصادفیه و تنظیم این پارامتر اطمینان می‌ده که با هر بار اجرای کد، نتایج یکسانی به دست میاد.

🔵توسط c=y رنگ هر نقطه بر اساس برچسب کلاس آن نقطه تعیین می‌شود، که در اینجا نشان‌دهنده شماره عدده.

🔵پالت رنگی که برای رنگ‌آمیزی نقاط استفاده می‌شه cmap=jet هست.

🔵تصویر پست، خروجی قطعه کد می‌باشد.

#Machine_Learning
#Dimensionality_Reduction

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌32👍1🔥1
👨‍🎓 بررسی UMAP با جزئیات

الگوریتم UMAP، مخفف Uniform Manifold Approximation and Projection، یک روش پیشرفته کاهش ابعاده که با هدف حفظ روابط و ویژگی‌های موجود بین نقاط داده و کشف ساختار Global در داده‌ها، طراحی شده.

در مقایسه با t-SNE، الگوریتم UMAP سریع‌تر و مقیاس‌پذیرتره و امکان استفاده ازش در مجموعه‌های داده‌ با اندازه بزرگ‌تر ممکنه. همچنین، UMAP قابلیت تعمیم به داده‌های جدید رو داره.

🔵 نحوه کارکرد UMAP

🔵شروع با داده‌های اصلی: UMAP اول مجموعه داده‌های چندبعدی رو به عنوان ورودی دریافت می‌کنه و به دنبال حفظ الگوها، روابط، و فاصله‌های نزدیک بین نقاط داده‌ است.

🔵ساخت گراف همسایگی: UMAP یک گراف همسایگی از داده‌های ورودی می‌سازه، که در اون نقاط به همسایه‌های نزدیک‌شون متصل می‌شن. این فرآیند با استفاده از فاصله اقلیدسی یا بقیه معیارهای فاصله انجام می‌شه.

🔵بهینه‌سازی فضای کم‌بعد: با استفاده از تکنیک‌های بهینه‌سازی، UMAP سعی می‌کنه نمایشی از داده‌ها در فضایی با بعد پایین‌تر ارائه بده که ساختارهای Local و Global داده‌های اصلی رو حفظ کنه.

🔵کمینه‌سازی تابع هزینه: UMAP از یک تابع هزینه برای کمینه‌سازی اختلاف بین فاصله‌های موجود در گراف همسایگی اصلی و نمایش کاهش یافته استفاده می‌کنه. این فرآیند باعث می‌شه تا نمایش کم‌بعد، ساختارهای موجود در داده‌های چندبعدی رو به خوبی منعکس کنه.

🔵 مزایا و معایب UMAP

مزایا:

🔵سرعت بالا و مقیاس‌پذیری: UMAP برای مجموعه‌های داده بزرگ مناسبه.
🔵حفظ ساختارهای Local و Global: توانایی حفظ هر دو نوع ساختار، UMAP رو برای تجسم و تحلیل داده‌های پیچیده ارزشمند می‌کنه.
🔵تنظیم پذیری: پارامترهای مختلفی برای تنظیم UMAP وجود داره که به کاربر امکان می‌ده کنترل بیشتری روی فرآیند کاهش بعد داشته باشه.

معایب:

🔵انتخاب پارامترها: بهینه‌سازی نتایج نیاز به تنظیم دقیق پارامترها داشته داره.
🔵تفسیرپذیری: مثل سایر روش‌های کاهش بعد غیرخطی، تفسیر نتایج می‌تونه چالش‌برانگیز باشه.

🔵 کاربردهای UMAP

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

🔵 قطعه کد قابل اجرا برای UMAP

import umap
import matplotlib.pyplot as plt
from sklearn.datasets import load_digits

digits = load_digits()
X = digits.data
y = digits.target

reducer = umap.UMAP()
X_reduced = reducer.fit_transform(X)

plt.figure(figsize=(10, 5))
plt.scatter(X_reduced[:, 0], X_reduced[:, 1], c=y, cmap='Spectral', edgecolor='k', s=40)
plt.colorbar()
plt.title('UMAP visualization of digit data')
plt.xlabel('UMAP axis 1')
plt.ylabel('UMAP axis 2')
plt.show()


#Machine_Learning
#Dimensionality_Reduction

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👌42👍2👨‍💻1