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

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

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

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

دوره‌ها:
cafetadris.com/datascience
Download Telegram
💡آیا max_depth در Scikit-learn کار هرس درخت تصمیم رو انجام میده؟

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

برای هرس درخت تصمیم در Scikit-learn، میشه از تابع ().prune استفاده کرد. این تابع دو پارامتر ورودی criterion و max_depth رو میگیره. برای مثال برای هرس یک درخت تصمیم با استفاده از شاخص Gini و عمق حداکثر 5، میشه از کد زیر استفاده کرد:

from sklearn.tree import DecisionTreeClassifier

classifier = DecisionTreeClassifier()
classifier.fit(X_train, y_train)

pruned_classifier = classifier.prune(criterion="gini", max_depth=5)


#Machine_Learning
#Decision_Tree

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

🔺 آموزشی

🔵تعریف درخت تصمیم
👉🔗 https://t.iss.one/data_ml/198

🔵اصول و مفاهیم Information Gain
👉🔗 https://t.iss.one/data_ml/201

🔵مقایسه شاخص Gini و Entropy
👉🔗 https://t.iss.one/data_ml/204

🔵کاربردها، مزایا و معایب درخت تصمیم
👉🔗 https://t.iss.one/data_ml/207

🔵کد درخت تصمیم از پایه (Scratch)
👉🔗 https://t.iss.one/data_ml/210

🔵درخت تصمیم در Sklearn
👉🔗 https://t.iss.one/data_ml/213

🔺 کوئیز

🔵کوئیز شماره ۵۶: انواع هرس کردن
👉🔗 https://t.iss.one/data_ml/199

🔵کوئیز شماره ۵۷: انتروپی گره‌های فرزندی
👉🔗 https://t.iss.one/data_ml/202

🔵کوئیز شماره ۵۸: شاخص جینی و انتروپی
👉🔗 https://t.iss.one/data_ml/205

🔵کوئیز شماره ۵۹: استفاده از درخت تصمیم‌ برای کاهش ابعاد
👉🔗 https://t.iss.one/data_ml/208

🔵کوئیز شماره ۶۰: مزیت استفاده از Bagging
👉🔗 https://t.iss.one/data_ml/211

🔵کوئیز شماره ۶۱: پارامتر Splitter
👉🔗 https://t.iss.one/data_ml/214

🔺 نکته

🔵مفهوم Tree Bagging
👉🔗 https://t.iss.one/data_ml/200

🔵ارتباط بین Information Gain و Information Gain Ratio
👉🔗 https://t.iss.one/data_ml/203

🔵شاخص جینی و بهره اطلاعاتی (انتروپی)
👉🔗 https://t.iss.one/data_ml/206

🔵الگوریتم CART
👉🔗 https://t.iss.one/data_ml/209

🔵درخت Bagging
👉🔗 https://t.iss.one/data_ml/212

🔵هرس کردن در Scikit-learn
👉🔗 https://t.iss.one/data_ml/215

#Weekend
#Machine_Learning
#Decision_Tree

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
6👏3👍1
👩‍🎓 برنامه آموزشی هفته: الگوریتم جنگل تصادفی یا Random Forest

🟠شنبه: مفهوم پشت جنگل در جنگل تصادفی

🔵یک‌شنبه: مفهوم پشت تصادفی در جنگل تصادفی

🟢دوشنبه: جنگل تصادفی در رگرسیون و طبقه‌بندی

🔴سه‌شنبه: کاربردها و مزایای جنگل تصادفی

🟠چهارشنبه: کد جنگل تصادفی از پایه (Scratch)

🔵پنج‌شنبه: جنگل تصادفی در Sklearn

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

#Machine_Learning
#Random_Forest

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

🔺 سرفصل‌ها

🔵نحوه اصولی پرامپت نویسی در ChatGPT
🔵شخصی سازی ChatGPT
🔵یادگیری ماشین لرنینگ با کمک ChatGPT
🔵تحلیل داده با ChatGPT
🔵دریافت برنامه مطالعاتی بلند و کوتاه مدت

📆 یکشنبه، ۸ بهمن ساعت ۱۹

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

@DSLanders | دی‌اس‌لندرز
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61🔥1
👨‍🎓 مفهوم پشت جنگل در الگوریتم جنگل تصادفی

جنگل تصادفی (Random Forest) در گروه الگوریتم‌های باناظر قرار داره و برای حل مسائل طبقه‌بندی و رگرسیون استفاده می‌شه. این الگوریتم بر اساس ترکیب چندین درخت تصمیم کار می‌کنه و به عنوان یک روش یادگیری گروهی (Ensemble Learning) شناخته می‌شه.

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

🔵 چند نکته مهم

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

🔵درختان تصمیم مستقل، هر کدوم پیش‌بینی‌هایی رو ارائه می‌دن، و نتیجه‌ی نهایی جنگل تصادفی از ترکیب این پیش‌بینی‌ها (معمولاً با رأی‌گیری اکثریت برای طبقه‌بندی یا میانگین برای رگرسیون) به دست میاد. این ترکیب‌سازی کمک می‌کنه تا اثر Overfitting هر یک از درخت‌ها به حداقل برسه.

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

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

#Machine_Learning
#Random_Forest

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
8👌2👨‍💻1
💡خطای Out-of-Bag چیه؟

خطای Out-of-Bag یک روش ارزیابی عملکرد برای الگوریتم‌های جنگل تصادفیه. در فرایند آموزش یک جنگل تصادفی، برای هر درخت تصمیم، یک نمونه‌گیری بوت‌استرپ از داده‌های آموزشی انجام می‌شه. یعنی بعضی از داده‌ها ممکنه چندین بار در نمونه‌گیری ظاهر شن، در حالی که بعضی دیگه اصلاً انتخاب نمی‌شن. داده‌هایی که در نمونه‌گیری برای یک درخت خاص استفاده نمی‌شن، خارج از کیسه (OOB) نام دارن.

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

مزیت این روش اینکه نیازی به جدا کردن یک مجموعه تست جداگانه نیست و میشه یک تخمین از خطای تعمیم رو بدون استفاده از داده‌های بیشتر به دست آورد. خطای OOB به عنوان یک روش در زمان تنظیم هایپرپارامترها کاربرد داره.

#Machine_Learning
#Random_Forest

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7🤔1👌1
👨‍🎓 مفهوم پشت تصادفی در جنگل تصادفی

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

🔵تصادفی در انتخاب نمونه‌ها (Bootstrap Aggregating یا Bagging)

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

🔵تصادفی در انتخاب ویژگی‌ها

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

این دو تعریف پشت "تصادفی" در جنگل تصادفی باعث می‌شن که این الگوریتم به عنوان یک مدل قوی و مقاوم در برابر Overfitting شناخته شه. ترکیب پیش‌بینی‌های تمام درخت‌ها، که هر کدوم با توجه به نمونه‌ها و ویژگی‌های متفاوتی آموزش دیدن، منجر به ایجاد یک مدل نهایی می‌شه که هم دقت بالایی داره و هم قابلیت تعمیم خوبی به داده‌های جدید داره.

#Machine_Learning
#Random_Forest

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
7👍2👌1👨‍💻1
👨‍🎓 جنگل تصادفی در رگرسیون و طبقه‌بندی

🔵 جنگل تصادفی در طبقه‌بندی (Random Forest in Classification)

🔵جنگل تصادفی مجموعه‌ای از درخت‌های تصمیمه که هر کدوم به صورت مستقل نتایج رو پیش‌بینی می‌کنن. بعد نتیجه نهایی از طریق رأی‌گیری اکثریت (Majority voting) بین نتایج درختان به دست میاد.

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

🔵در مرحله پیش‌بینی، هر درخت تصمیم یک پیش‌بینی انجام می‌ده و کلاسی که بیشترین رأی رو داشته باشه به عنوان پیش‌بینی نهایی انتخاب می‌شه.

🔵جنگل تصادفی در رگرسیون (Random Forest in Regression)

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

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

🔵در مرحله پیش‌بینی، پیش‌بینی هر درخت محاسبه می‌شه و بعد میانگین این پیش‌بینی‌ها به عنوان پیش‌بینی نهایی مدل ارائه میشه.

🔵 نکات تکمیلی

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

🔵تنظیم عمق (Depth) درختان برای جلوگیری از overfitting مفیده. درختان عمیق‌تر جزئیات داده‌ها رو بهتر می‌گیرن اما خطر بیش‌برازش رو افزایش می‌دن.

🔵برای مسائل طبقه‌بندی، معمولاً از معیارهای تقسیم (Split Criteria) مثل Gini Impurity یا Entropy استفاده می‌شه و برای رگرسیون از Mean Squared Error یا Mean Absolute Error. انتخاب معیار مناسب روی دقت مدل تأثیر داره.

#Machine_Learning
#Random_Forest

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54👨‍💻1
💡جنگل تصادفی چطور با مقادیر گمشده رفتار می‌کنه؟

یکی از روش‌های رایج اینکه در هر تقسیم (split)، درخت‌های تصمیم‌گیری از مقادیر داده‌ای که موجود هستن استفاده می‌کنن و مقادیر گمشده رو نادیده می‌گیرن.

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

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

#Machine_Learning
#Random_Forest

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

جنگل تصادفی با ترکیب چند درخت تصمیم‌گیری و استفاده از تکنیکی به نام بوت‌استرپینگ (Bootstrap Aggregation یا Bagging)، به نتایج قابل اطمینانی دست پیدا می‌کنه و کاربردهای زیادی داره.

🔵 کاربردها

🔵تشخیص بیماری‌: این الگوریتم برای تشخیص بیماری‌ (مثلا تشخیص بیماری‌های قلبی یا دیابت) کاربرد داره.

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

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

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

🔵 مزایا

🔵دقت بالا: جنگل تصادفی با ترکیب چندین درخت تصمیم، دقت بالایی در پیش‌بینی‌ها ارائه می‌ده.

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

🔵قابلیت کار با داده‌های بزرگ و پیچیده: جنگل تصادفی می‌تونه با دیتاست‌های بزرگ و دارای ویژگی‌ زیاد (High Dimensionality) به خوبی کار کنه.

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

🔵 معایب

🔵پیچیدگی: جنگل تصادفی می‌تونه بسیار پیچیده شه و تفسیر و تحلیل سختی داشته باشه.

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

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

#Machine_Learning
#Random_Forest

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

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

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

#Machine_Learning

@DSLanders | دی‌اس‌لندرز
Please open Telegram to view this post
VIEW IN TELEGRAM
👌63👏1👨‍💻1
👨‍🎓 کد جنگل تصادفی از پایه (Scratch)

۱. ساخت درخت تصمیم: در مرحله اول یک کلاس برای هر درخت تصمیم می‌نویسیم. این کلاس مسئولیت یادگیری از داده‌ها و انجام پیش‌بینی‌ها رو داره.

class DecisionTree:
def __init__(self, max_depth=None):
self.max_depth = max_depth
self.left = None
self.right = None
self.feature_index = None
self.threshold = None
self.label = None

def fit(self, X, y, depth=0):
# اگه داده‌ها همگی از یک کلاس هستن یا به حداکثر عمق رسیدیم
if len(set(y)) == 1 or depth == self.max_depth:
self.label = max(set(y), key=list(y).count)
return

# پیدا کردن بهترین تقسیم
best_feature, best_threshold = find_best_split(X, y)
if best_feature is None or best_threshold is None:
self.label = max(set(y), key=list(y).count)
return

self.feature_index = best_feature
self.threshold = best_threshold

# تقسیم داده‌ها
left_indices = X[:, best_feature] < best_threshold
X_left, y_left = X[left_indices], y[left_indices]
X_right, y_right = X[~left_indices], y[~left_indices]

# ساخت درخت برای زیر مجموعه‌ها
self.left = DecisionTree(max_depth=self.max_depth)
self.left.fit(X_left, y_left, depth + 1)

self.right = DecisionTree(max_depth=self.max_depth)
self.right.fit(X_right, y_right, depth + 1)

def predict(self, X):
if self.label is not None:
return self.label
if X[self.feature_index] < self.threshold:
return self.left.predict(X)
else:
return self.right.predict(X)


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

۲. بوت‌استرپینگ داده‌ها: برای بوت‌استرپ کردن داده‌ها، می‌تونیم از تابع زیر استفاده کنیم. این تابع به صورت تصادفی نمونه‌هایی از داده‌ها رو با جایگزینی انتخاب می‌کنه و به عنوان نمونه بوت‌استرپ برمی‌گردونه.

def bootstrap_sample(X, y):
n_samples = X.shape[0]
indices = np.random.choice(n_samples, size=n_samples, replace=True)
return X[indices], y[indices]


۳. انتخاب ویژگی‌ها: این تابع از بین همه ویژگی‌ها، تعداد max_features ویژگی رو به صورت تصادفی انتخاب می‌کنه.

def random_feature_indices(n_features, max_features):
return np.random.choice(n_features, max_features, replace=False)


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

from statistics import mode, mean

def aggregate_predictions(predictions):
# برای طبقه‌بندی
if isinstance(predictions[0], (int, np.int64)):
return mode(predictions)
# برای رگرسیون
else:
return mean(predictions)


این مراحل اساسی و اولیه‌ای هستن که برای ساخت یک جنگل تصادفی از Scratch نیاز هست.

#Machine_Learning
#Random_Forest

@Data_ML | دیتاساینس و ماشین‌ لرنینگ
Please open Telegram to view this post
VIEW IN TELEGRAM
👍84👏2
💡آشنایی با الگوریتم 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