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

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

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

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

دوره‌ها:
cafetadris.com/datascience
Download Telegram
💡آشنایی با الگوریتم AdaBoost

🔵الگوریتم AdaBoost، که مخفف Adaptive Boosting هست، یک روش یادگیری تقویتی (Boosting) در ماشین لرنینگه. هدف اصلی AdaBoost، افزایش دقت پیش‌بینی با ترکیب چندین طبقه‌بندی کننده ضعیف، مثل درختان تصمیم کوچک، به یک طبقه‌بندی کننده قدرتمنده.

🔵روند کار AdaBoost به این شکله که در هر مرحله از آموزش، داده‌هایی که به درستی طبقه‌بندی نشدن، وزن بیشتری دریافت می‌کنن. به طوری که طبقه‌بندی کننده بعدی تمرکز بیشتری بر روی این نمونه‌ها داشته باشه.

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

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

#Machine_Learning
#Random_Forest

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
8👍3👨‍💻1
👨‍🎓 جنگل تصادفی در Sklearn

کتابخانه scikit-learn شامل ابزارهای مفیدی برای پیش‌پردازش داده‌ها، انتخاب ویژگی، تنظیم پارامترها و ارزیابی مدله که فرآیند توسعه و تحلیل مدل‌های یادگیری ماشین رو آسون می‌کنه. در ادامه مراحل لازم برای پیاده سازی الگوریتم جنگل تصادفی از این کتابخانه رو با هم بررسی می‌کنیم.

۱. آماده‌سازی داده‌ها: قبل از آموزش مدل، داده‌ها باید بارگذاری و به دو بخش آموزش و تست تقسیم شن.

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)


۲. ایجاد مدل جنگل تصادفی: مدل جنگل تصادفی با استفاده از RandomForestClassifier یا RandomForestRegressor از کتابخانه scikit-learn ایجاد و با داده‌های آموزشی، آموزش داده میشه.

from sklearn.ensemble import RandomForestClassifier
model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)


۳. ارزیابی مدل: نهایتا عملکرد مدل با استفاده از داده‌های تست ارزیابی میشه.

from sklearn.metrics import accuracy_score
y_pred = model.predict(X_test)
print(accuracy_score(y_test, y_pred))


🔵 تنظیم پارامترها

- n_estimators: تعداد درخت‌ها در جنگل. تعداد بیشتر عملکرد بهتری به همراه داره اما زمان محاسبه رو افزایش می‌ده
- max_features: تعداد ویژگی‌هایی که باید در هر تقسیم در نظر گرفته شه. این مقدار تأثیر زیادی روی عملکرد مدل داره
- max_depth: حداکثر عمق درخت. مقدار کمتر می‌تونه به جلوگیری از بیش برازش کمک کنه
- min_samples_split: حداقل تعداد نمونه‌های مورد نیاز برای تقسیم یک گره
- min_samples_leaf: حداقل تعداد نمونه‌های مورد نیاز در یک برگ

🔵 نکات تکمیلی

- اهمیت ویژگی‌ها (Feature Importance): جنگل تصادفی این امکان رو می‌ده که بفهمیم کدوم ویژگی‌ها بیشترین تأثیر رو روی پیش‌بینی‌ها دارن.
feature_importances = model.feature_importances_


- مقابله با بیش برازش (Overfitting): استفاده از پارامترهای max_depth, min_samples_leaf, و min_samples_split در جلوگیری از Overfitting موثره.

🔵 کد قابل اجرا

کد زیر یک مجموعه داده مصنوعی با ۱۰۰۰ نمونه و ۲۰ ویژگی ایجاد می‌کنه. بعد با استفاده از الگوریتم جنگل تصادفی در scikit-learn، مدلی آموزش داده می‌شه و دقتش روی داده‌های تست محاسبه می‌شه. در نهایت اهمیت ویژگی‌ها ارزیابی و سه ویژگی برتر نشون داده می‌شن.

from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
import numpy as np

X, y = make_classification(n_samples=1000, n_features=20, n_informative=10, n_redundant=10, random_state=42)

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

model = RandomForestClassifier(n_estimators=100, random_state=42)
model.fit(X_train, y_train)

y_pred = model.predict(X_test)
print('Accuracy:', accuracy_score(y_test, y_pred))

feature_importances = model.feature_importances_

indices = np.argsort(feature_importances)[::-1]
top_three_indices = indices[:3]
top_three_importances = feature_importances[top_three_indices]

print('Top 3 feature indices:', top_three_indices)
print('Top 3 feature importances:', top_three_importances)

🔜 Accuracy: 0.94
Top 3 feature indices: [ 2 13 7]
Top 3 feature importances: [0.12026529 0.10476057 0.10329556]

#Machine_Learning
#Random_Forest

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73👌1
💡تنظیم پارامتر Bootstrap در جنگل تصادفی

پارامتر bootstrap برای پیاده سازی جنگل تصادفی از scikit-learn نشون‌دهنده استفاده یا عدم استفاده از نمونه‌گیری با جایگزینی برای ساخت درخت‌هاست.

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

بهترین مقدار برای این پارامتر به داده‌ها و ویژگی‌های مسئله بستگی داره و اکثرا توسط جستجوی شبکه‌ای یا تصادفی تعیین می‌شه.

model = RandomForestClassifier(n_estimators=100, bootstrap=True, random_state=42)


#Machine_Learning
#Random_Forest

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

🔺 آموزشی

🔵مفهوم پشت جنگل در الگوریتم جنگل تصادفی
👉🔗 https://t.iss.one/data_ml/219

🔵مفهوم پشت تصادفی در جنگل تصادفی
👉🔗 https://t.iss.one/data_ml/222

🔵جنگل تصادفی در رگرسیون و طبقه‌بندی
👉🔗 https://t.iss.one/data_ml/224

🔵کاربردها، مزایا و معایب جنگل تصادفی
👉🔗 https://t.iss.one/data_ml/227

🔵کد جنگل تصادفی از پایه (Scratch)
👉🔗 https://t.iss.one/data_ml/230

🔵جنگل تصادفی در Sklearn
👉🔗 https://t.iss.one/data_ml/233

🔺 کوئیز

🔵کوئیز شماره ۶۱: تأثیر تعداد درختان در جنگل تصادفی
👉🔗 https://t.iss.one/data_ml/220

🔵کوئیز شماره ۶۲: اثر تصادفی در بهبود کیفیت مدل جنگل تصادفی
👉🔗 https://t.iss.one/data_ml/223

🔵کوئیز شماره ۶۳: داده‌های نامتعادل در جنگل تصادفی
👉🔗 https://t.iss.one/data_ml/225

🔵کوئیز شماره ۶۴: مزیت رقابتی جنگل تصادفی
👉🔗 https://t.iss.one/data_ml/228

🔵کوئیز شماره ۶۵: تنظیم هایپرپارامترها در جنگل تصادفی
👉🔗 https://t.iss.one/data_ml/231

🔵کوئیز شماره ۶۶: تفسیر مدل در جنگل تصادفی
👉🔗 https://t.iss.one/data_ml/234

🔺 نکته

🔵خطای Out-of-Bag
👉🔗 https://t.iss.one/data_ml/221

🔵مدیریت مقادیر گمشده در جنگل تصادفی
👉🔗 https://t.iss.one/data_ml/226

🔵بلاگ الگوریتم جنگل تصادفی
👉🔗 https://t.iss.one/data_ml/229

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

🔵پارامتر Bootstrap در جنگل تصادفی
👉🔗 https://t.iss.one/data_ml/235

#Weekend
#Machine_Learning
#Random_Forest

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62👏1
Audio
🟡 توضیحات دوره جامع دیتا ساینس و ماشین لرنینگ

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

🟢برای ثبت‌نام کلیک کنین:‌
👉📎 https://ctdrs.ir/cr14924

#DS_Course

@DSLanders | دی‌اس‌لندرز
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥21👏1
👩‍🎓 برنامه آموزشی هفته: الگوریتم Xgboost

🟠شنبه: مقایسه Bagging و Boosting و Stacking

🔵یک‌شنبه: استفاده از Gradient در Xgboost

🟢دوشنبه: Xgboost در رگرسیون و طبقه‌بندی

🔴سه‌شنبه: کد Xgboost از پایه (Scratch)

🟠چهارشنبه: پکیج پایتونی Xgboost

🔵پنج‌شنبه: مقایسه Xgboost و Random Forest

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

#Machine_Learning
#Xgboost

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
8👌2🔥1
👨‍🎓 مقایسه Bagging و Boosting و Stacking

یادگیری ترکیبی (Ensemble Learning)، که به نام تجمیعی هم شناخته می‌شه، رویکردی در یادگیری ماشینه که در اون مدل‌های مختلف برای حل یک مسئله خاص ترکیب می‌شن. هدف اینکه با ترکیب کردن تعدادی از مدل‌ها، یک مدل نهایی قوی‌تر، دقیق‌تر و قابل اعتمادتر از هر مدل انفرادی به دست بیاد. این رویکرد بر این فرض هست که ترکیب چند مدل می‌تونه نویز، واریانس و bias رو کاهش بده.

🔵 روش Bagging یا Bootstrap Aggregating، به کاهش واریانس و جلوگیری از overfitting کمک می‌کنه. این روش با تولید چند نسخه از مجموعه داده اصلی و آموزش مستقل هر مدل روی این نمونه‌ها کار می‌کنه.

بعد با استفاده از روش‌هایی مثل رای‌گیری یا میانگین‌گیری، نتیجه نهایی به دست میاد. یک مثال معروف از Bagging، مدل Random Forest هست که در تشخیص بیماری‌ها یا تحلیل ریسک مالی کاربرد داره.

🔵 روش Boosting فرایندی تکراریه که در اون مدل‌های جدید به صورت متوالی آموزش داده می‌شن و هر مدل جدید تلاش می‌کنه تا خطاهای مدل‌های قبلی رو جبران کنه. این روش روی کاهش bias تمرکز داره و نسبت به نویز و داده‌های پرت حساسه.

همچنین از تکنیک‌هایی مثل AdaBoost و Gradient Boosting استفاده می‌کنه. XGBoost یکی از پیاده‌سازی‌های محبوب Boosting هست که با استفاده از تکنیک‌هایی مثل gradient descent، عملکرد خودش رو بهینه می‌کنه.

🔵 روش Stacking یا Stacked Generalization، مدل‌های مختلف رو ترکیب و پیش‌بینی‌هاشون رو به عنوان ورودی به یک مدل meta یا متا-یادگیرنده می‌ده که پیش‌بینی نهایی رو انجام بده.

روش Stacking معمولاً در وظایف طبقه‌بندی از logistic regression و در وظایف رگرسیونی از linear regression به عنوان متا-یادگیرنده استفاده می‌کنه، چون این مدل‌ها توانایی خوبی در ترکیب پیش‌بینی‌های مدل‌های پایه دارن و می‌تونن نتایج نهایی رو بر اساس وزن‌دهی به پیش‌بینی‌های مختلف بهینه‌سازی کنن.

#Machine_Learning
#Xgboost

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍73🔥1
کوئیز شماره ۶۷: کدوم تکنیک‌ زیر در پیاده‌سازی XGBoost برای کاهش overfitting به کار می‌ره؟
Anonymous Quiz
18%
تقویت داده‌های پرت
18%
کاهش سرعت یادگیری
38%
افزایش تعداد یادگیرنده‌های ضعیف
27%
هیچکدام
👌8😎21🔥1
👨‍🎓 با اینکه یادگیری گروهی در اکثر اوقات نتایج بهتری می‌ده، چرا همیشه ازش استفاده نمیشه؟

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

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

#Machine_Learning
#Xgboost

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
6👌4👍3
👨‍🎓 استفاده از Gradient در Xgboost

الگوریتم XGBoost (eXtreme Gradient Boosting) یکی از الگوریتم‌های محبوب یادگیری ماشینه که برای حل مسائل طبقه‌بندی و رگرسیون استفاده می‌شه. این الگوریتم بر پایه‌ی تقویت گرادیان (Gradient Boosting) کار می‌کنه و توانایی بالایی در برخورد با داده‌های بزرگ و پیچیده داره.

🔵 تقویت گرادیان چیه؟

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

🔵 گرادیان در XGBoost

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

🔵 جزئیات گرادیان در XGBoost

🔵الگوریتم XGBoost برای هر نمونه در داده‌ها، گرادیان تابع هزینه رو محاسبه می‌کنه. این گرادیان‌ها نشون‌دهنده خطاهای نمونه‌ها هستن و میزان تغییر لازم برای پیش‌بینی‌ها رو مشخص می‌کنن.

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

🔵تنظیم دقیق پارامترهای XGBoost می‌تونن روی تأثیر گرادیان‌ها در یادگیری مدل اثر گذار باشن. پارامترهایی مثل نرخ یادگیری (learning rate) و عمق درخت (max_depth) روی سرعت و جهت حرکت گرادیان‌ها تأثیر دارن.

🔵همچنین XGBoost از تکنیک‌های پیشرفته برای کار با داده‌های پراکنده و مقیاس بزرگ استفاده می‌کنه. این تکنیک‌ها به کارایی الگوریتم در محاسبه گرادیان‌ها و ساخت درخت‌های تصمیم کمک می‌کنند.
#Machine_Learning
#Xgboost

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7👌2👨‍💻1
کوئیز شماره ۶۸:در XGBoost، مدل‌ها به صورت افزایشی آموزش داده می‌شن یعنی هر درخت به تدریج به مجموعه اضافه می‌شه. در این فرآیند، هدف اصلی چیه؟
Anonymous Quiz
10%
کاهش زمان آموزش برای هر درخت
45%
افزایش دقت پیش‌بینی‌ها در هر مرحله
35%
اضافه کردن درختی که بهینه‌ترین کاهش رو در تابع هدف ارائه می‌ده
10%
ایجاد تنوع در مدل‌ها برای کاهش بیش‌برازش
👍5😎41🤔1
💡بعضی از کاربردهای Ensemble Learning در دنیای واقعی چیه؟

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

#Machine_Learning
#Xgboost

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍62🔥1
👨‍🎓 الگوریتم Xgboost در رگرسیون و طبقه‌بندی

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

🔵 استفاده از XGBoost برای Regression

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

🔵تنظیم پارامترها: برای بهینه‌سازی عملکرد XGBoost در رگرسیون، پارامترهایی مثل max_depth (عمق حداکثری درخت)، learning_rate (نرخ یادگیری)، و n_estimators (تعداد درختان) باید با دقت تنظیم شن.

🔵تابع هزینه: تابع هزینه‌ای که معمولا برای مسائل رگرسیون استفاده می‌شه، MSE (میانگین مربعات خطا) یا RMSE (ریشه میانگین مربعات خطا) هست.

🔵بررسی اهمیت ویژگی‌ها: XGBoost قابلیت ارائه اطلاعات در مورد اهمیت ویژگی‌ها در مدل رو داره، که برای تحلیل داده‌ها و بهینه‌سازی مدل کمک‌کننده است.

🔵 استفاده از XGBoost برای Classification

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

🔵تنظیم پارامترها: مثل رگرسیون، تنظیم پارامترهای max_depth ، learning_rate، و n_estimators بسیار مهمه. علاوه بر این، objective باید به درستی تنظیم شه (مثلا binary:logistic برای طبقه‌بندی باینری).

🔵تابع هزینه: برای طبقه‌بندی، تابع هزینه‌ شامل Log Loss برای طبقه‌بندی باینری یا Cross Entropy برای مسائل چند کلاسی هستن.

🔵کار با داده‌های نامتوازن: در مسائل طبقه‌بندی‌ای که داده‌ها نامتوازن هستن، XGBoost امکاناتی مثل وزن‌دهی به کلاس‌ها رو برای بهبود عملکرد مدل ارائه می‌ده.

در استفاده از XGBoost برای رگرسیون یا طبقه‌بندی، درک دقیق داده‌ها، پیش‌پردازش مناسب داده‌ها، و تنظیم دقیق پارامترها اهمیت بالایی داره. همچنین، استفاده از تکنیک‌ Cross-Validation برای ارزیابی مدل و جلوگیری از بیش‌برازش در بهبود عملکرد مدل مؤثره.

#Machine_Learning
#Xgboost

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5👌32
کوئیز شماره ۶۹: اگه قرار باشه از XGBoost برای مسئله طبقه‌بندی با داده‌های نامتوازن استفاده شه؛ کدوم یک از پارامترهای زیر رو باید برای این هدف تنظیم کرد تا مدل بهترین عملکرد رو داشته باشه؟
Anonymous Quiz
29%
max_depth
26%
learning_rate
32%
scale_pos_weight
12%
colsample_bytree
😎7👍21👌1
💡معنی پارامتر گاما (gamma) در XGBoost چیه؟

گاما یک پارامتر در XGBoost هست که کنترل می‌کنه هر درخت چقدر در خروجی نهایی تاثیر گذار باشه. مقدار بالاتر گاما به این معنی هست که هر درخت تأثیر بیشتری روی خروجی نهایی داره.

#Machine_Learning
#Xgboost

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍3👌3
👨‍🎓 پیاده سازی Xgboost از پایه (Scratch)

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

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

class Node:
def __init__(self, feature_index=None, threshold=None, left=None, right=None, *, value=None):
self.feature_index = feature_index
self.threshold = threshold
self.left = left
self.right = right
self.value = value


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

🔵 تابع آموزش و پیش‌بینی: برای هر درخت، باید توانایی آموزش به داده‌ها و انجام پیش‌بینی‌ها وجود داشته باشه.

class DecisionTree:
def __init__(self, max_depth):
self.max_depth = max_depth
self.root = None

def fit(self, X, y):
pass

def predict(self, X):
pass


🔵 تابع هزینه و گرادیان: برای بروزرسانی مدل در هر تکرار، باید تابع هزینه و گرادیان‌هاش رو محاسبه کنیم. در XGBoost از تابع هزینه MSE برای مسائل رگرسیون استفاده می‌شه.

def mse(y_true, y_pred):
return np.mean((y_true - y_pred) ** 2)

def mse_grad(y_true, y_pred):
return -2 * (y_true - y_pred) / len(y_true)


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

class XGBoost:
def __init__(self, n_estimators=100, max_depth=3, learning_rate=0.1):
self.n_estimators = n_estimators
self.max_depth = max_depth
self

.learning_rate = learning_rate
self.trees = []

def fit(self, X, y):
y_pred = np.zeros(len(y))
for _ in range(self.n_estimators):
tree = DecisionTree(max_depth=self.max_depth) #Calculation of gradients

grad = mse_grad(y, y_pred)
tree.fit(X, grad)

y_pred += self.learning_rate * tree.predict(X) #Update predicts
self.trees.append(tree)

def predict(self, X):
y_pred = np.zeros(len(X))
for tree in self.trees:
y_pred += self.learning_rate * tree.predict(X)
return y_pred


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

#Machine_Learning
#Xgboost

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍92🔥1
🧑‍🎓 آشنایی با الگوریتم 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