الگوریتم جنگل تصادفی در یادگیری ماشین
الگوریتمهای یادگیری ماشین انقلابی در تجزیه و تحلیل دادهها ایجاد کردهاند و کسبوکارها و محققان را قادر میسازند تا پیشبینیهای بسیار دقیقی بر اساس مجموعه دادههای گسترده انجام دهند. در این میان، الگوریتم جنگل تصادفی به عنوان یکی از همه کاره ترین و قدرتمندترین ابزارها برای کارهای طبقه بندی و رگرسیون برجسته می شود.
این مقاله مفاهیم کلیدی پشت الگوریتم جنگل تصادفی، اصول کار، مزایا، محدودیتها و پیادهسازی عملی با استفاده از پایتون را تحلیل میکند. چه یک مبتدی یا یک توسعه دهنده با تجربه باشید، این راهنما یک نمای کلی از Random Forest در عمل ارائه می دهد.
خوراکی های کلیدی
الگوریتم Random Forest چندین درخت را برای ایجاد یک مدل پیشبینی قوی و دقیق ترکیب میکند.
طبقهبندیکننده Random Forest چندین درخت تصمیم را با استفاده از اصول یادگیری مجموعه ترکیب میکند، بهطور خودکار اهمیت ویژگی را تعیین میکند، وظایف طبقهبندی و رگرسیون را به طور موثر مدیریت میکند، و بهطور یکپارچه مقادیر و مقادیر از دست رفته را مدیریت میکند.
رتبهبندیهای اهمیت آپشن های Random Forest بینش ارزشمندی در مورد دادههای شما ارائه میکند.
قابلیت های پردازش موازی آن را برای مجموعه های بزرگ داده های آموزشی کارآمد می کند.
Random Forest از طریق یادگیری گروهی و انتخاب تصادفی ویژگی، بیش از حد برازش را کاهش می دهد.
الگوریتم جنگل تصادفی چیست؟
الگوریتم جنگل تصادفی یک روش یادگیری گروهی است که چندین درخت تصمیم را می سازد و خروجی های آنها را برای پیش بینی ترکیب می کند. هر درخت به طور مستقل بر روی یک زیرمجموعه تصادفی از داده های آموزشی با استفاده از نمونه برداری راه انداز (نمونه گیری با جایگزینی) آموزش داده می شود.
علاوه بر این، در هر تقسیم در درخت، تنها یک زیرمجموعه تصادفی از ویژگی ها در نظر گرفته می شود. این انتخاب ویژگی تصادفی، تنوع را در میان درختان معرفی میکند، برازش بیش از حد را کاهش میدهد و دقت پیشبینی را بهبود میبخشد.
این مفهوم منعکس کننده اصل خرد جمعی است. همانطور که گروه های بزرگ اغلب تصمیمات بهتری نسبت به افراد می گیرند، جنگلی از درختان تصمیم گیری متنوع معمولاً از درختان تصمیم گیری فردی بهتر عمل می کند.
به عنوان مثال، در یک مدل پیشبینی ریزش مشتری، یک درخت تصمیم ممکن است سابقه پرداخت را در اولویت قرار دهد، در حالی که دیگری بر تعاملات خدمات مشتری تمرکز دارد. این درختان با هم جنبه های مختلف رفتار مشتری را به تصویر می کشند و پیش بینی متعادل و دقیق تری را ایجاد می کنند.
به طور مشابه، در یک کار پیشبینی قیمت خانه، هر درخت زیرمجموعههای تصادفی دادهها و ویژگیها را ارزیابی میکند. برخی از درختان ممکن است بر مکان و اندازه تأکید کنند، در حالی که برخی دیگر بر سن و شرایط تمرکز دارند. این تنوع تضمین می کند که پیش بینی نهایی منعکس کننده دیدگاه های متعدد است که منجر به نتایج قوی و قابل اعتماد می شود.
مبانی ریاضی درختان تصمیم در جنگل تصادفی
برای درک چگونگی تصمیمگیری Random Forest، باید معیارهای ریاضی را که تقسیمبندیها را در درختهای تصمیم فردی هدایت میکنند تحلیل کنیم:
1. آنتروپی (H)
عدم قطعیت یا ناخالصی را در یک مجموعه داده اندازه گیری می کند.
pi: نسبت نمونه های متعلق به کلاس
ج: تعداد کلاس ها.
2. کسب اطلاعات (IG)
کاهش آنتروپی حاصل از تقسیم مجموعه داده را اندازه گیری می کند:
S: مجموعه داده اصلی
Sj: زیر مجموعه پس از تقسیم
H(S): آنتروپی قبل از تقسیم
3. ناخالصی جینی (مورد استفاده در درختان طبقه بندی)
این یک جایگزین برای آنتروپی است. ناخالصی جینی به صورت زیر محاسبه می شود:
4. میانگین مربعات خطا (MSE) برای رگرسیون
برای رگرسیون جنگل تصادفی، تقسیم ها میانگین مربعات خطا را به حداقل می رساند:
yi: مقادیر واقعی
yˉ: میانگین مقدار پیش بینی شده
چرا از جنگل تصادفی استفاده کنیم؟
طبقهبندیکننده Random Forest ML مزایای قابلتوجهی را ارائه میکند و آن را به یک الگوریتم یادگیری ماشینی قوی در میان سایر الگوریتمهای یادگیری ماشینی تحت نظارت تبدیل میکند.
1. تطبیق پذیری
مدل جنگل تصادفی در پردازش همزمان داده های آموزشی عددی و مقوله ای بدون پیش پردازش گسترده برتری دارد.
این الگوریتم بر اساس مقادیر آستانه برای دادههای عددی، مانند سن، درآمد، یا دما، تقسیمبندی ایجاد میکند. هنگام مدیریت دادههای دستهبندی مانند رنگ، جنسیت یا دستههای محصول، تقسیمبندیهای باینری برای هر دسته ایجاد میشود.
این تطبیق پذیری به ویژه در کارهای طبقه بندی دنیای واقعی که در آن مجموعه داده ها اغلب دارای انواع داده های مختلط هستند، ارزشمند می شود.
برای مثال، در یک مدل پیشبینی ریزش مشتری، Random Forest میتواند آپشن های عددی مانند موجودی حساب و مدت زمان خدمات را در کنار آپشن های طبقهبندی مانند نوع اشتراک و مکان مشتری بهطور یکپارچه پردازش کند.
2. استحکام
ماهیت مجموعه ای Random Forest با ترکیب چندین درخت تصمیم، استحکام استثنایی را ارائه می دهد.
هر درخت تصمیم از زیرمجموعهای متفاوت از دادهها یاد میگیرد و باعث میشود مدل کلی نسبت به دادههای پر سر و صدا و پرت حساستر شود.
یک سناریوی پیشبینی قیمت مسکن را در نظر بگیرید و یک درخت تصمیم ممکن است تحت تأثیر یک خانه پرهزینه در مجموعه داده قرار گیرد. با این حال، از آنجایی که صدها درخت تصمیم دیگر بر روی زیرمجموعههای دادههای مختلف آموزش داده شدهاند، این تأثیر پرت در پیشبینی نهایی رقیق میشود.
این فرآیند تصمیم گیری جمعی به طور قابل توجهی بیش از حد برازش را کاهش می دهد - یک مشکل رایج که در آن مدل ها به جای الگوهای واقعی، نویز را در داده های آموزشی یاد می گیرند.
3. اهمیت ویژگی
Random Forest به طور خودکار اهمیت هر ویژگی را در فرآیند پیش بینی محاسبه و رتبه بندی می کند. این رتبه بندی به دانشمندان داده کمک می کند تا بفهمند کدام متغیرها بیشترین تأثیر را بر نتیجه دارند.
مدل جنگل تصادفی در یادگیری ماشین اهمیت را با ردیابی میزان خطای پیشبینی افزایش میدهد که یک ویژگی بهطور تصادفی درهم میآید.
به عنوان مثال، در یک مدل ارزیابی ریسک اعتباری، مدل جنگل تصادفی ممکن است نشان دهد که سابقه پرداخت و نسبت بدهی به درآمد اصلی ترین عوامل هستند، در حالی که سن مشتری تأثیر کمتری دارد. این بینش برای انتخاب ویژگی و تفسیر مدل بسیار ارزشمند است.
4. مدیریت ارزش از دست رفته
Random Forest به طور موثر مقادیر از دست رفته را مدیریت می کند و آن را برای مجموعه داده های دنیای واقعی با داده های ناقص یا ناقص مناسب می کند. مقادیر از دست رفته را از طریق دو مکانیسم اصلی کنترل می کند:
تقسیمهای جایگزین (شکافهای جایگزین): در طول ساخت درخت، Random Forest مسیرهای تصمیم جایگزین (تقسیمهای جایگزین) را بر اساس آپشن های مرتبط شناسایی میکند. اگر یک مقدار ویژگی اولیه وجود نداشته باشد، مدل از یک ویژگی جایگزین برای ایجاد تقسیم استفاده میکند و اطمینان حاصل میکند که پیشبینیها همچنان ادامه دارند.
انتساب مبتنی بر مجاورت: جنگل تصادفی از اندازه گیری مجاورت بین نقاط داده برای تخمین مقادیر گمشده استفاده می کند. شباهتهای بین مشاهدات را محاسبه میکند و ورودیهای گمشده را با استفاده از مقادیر نزدیکترین همسایهها محاسبه میکند و به طور موثر الگوها را در دادهها حفظ میکند.
سناریویی را در نظر بگیرید که پیشبینی میکند کسی وام را بازپرداخت میکند یا خیر. اگر اطلاعات حقوق موجود نباشد، Random Forest آپشن های مرتبط مانند سابقه شغلی، پرداختهای گذشته و سن را تجزیه و تحلیل میکند تا پیشبینیهای دقیق انجام دهد. با اعمال اهرم همبستگی بین ویژگی ها، به جای دور انداختن سوابق ناقص، شکاف در داده ها را جبران می کند.
5. موازی سازی
معماری طبقهبندیکننده جنگل تصادفی به طور طبیعی از محاسبات موازی پشتیبانی میکند زیرا هر درخت تصمیم بهطور مستقل آموزش میدهد.
این مقیاس پذیری را بهبود می بخشد و زمان آموزش را به طور قابل توجهی کاهش می دهد زیرا ساخت درخت می تواند در چندین هسته CPU یا خوشه های GPU توزیع شود.
پیاده سازی های مدرن، مانند Scikit-Learn's RandomForestClassifier، از چارچوب های محاسباتی چند رشته ای و توزیع شده مانند Dask یا Spark برای پردازش داده ها به صورت موازی استفاده می کنند.
این موازی سازی هنگام کار با داده های بزرگ بسیار مهم می شود. به عنوان مثال، هنگام پردازش میلیونها تراکنش مشتری برای کشف تقلب، پردازش موازی میتواند زمان آموزش را از ساعتها به دقیقه کاهش دهد.
تکنیک یادگیری گروهی
یادگیری گروهی در الگوریتم جنگل تصادفی چندین درخت تصمیم را ترکیب میکند تا پیشبینیهای دقیقتری نسبت به یک درخت به تنهایی ایجاد کند. این رویکرد از طریق دو تکنیک اصلی کار می کند:
بسته بندی (تجمیع بوت استرپ)
هر درخت تصمیم بر روی یک نمونه تصادفی از داده ها آموزش داده می شود. مثل این است که از افراد مختلف نظر بخواهید. هر گروه ممکن است متوجه الگوهای متفاوتی شود و ترکیب دیدگاههای آنها اغلب منجر به تصمیمگیری بهتر میشود.
در نتیجه، درختان مختلف الگوهای کمی متفاوت را یاد می گیرند، واریانس را کاهش می دهند و تعمیم را بهبود می بخشند.
انتخاب ویژگی تصادفی
در هر نقطه تقسیم در درخت تصمیم، به جای ارزیابی همه ویژگیها، تنها یک زیرمجموعه تصادفی از ویژگیها در نظر گرفته میشود.
این تصادفی بودن همبستگی بین درختان را تضمین می کند، از شبیه شدن بیش از حد آنها جلوگیری می کند و خطر بیش از حد برازش را کاهش می دهد.
این رویکرد مجموعهای باعث میشود الگوریتم جنگل تصادفی یادگیری ماشین بهویژه برای طبقهبندیهای دنیای واقعی که الگوهای داده پیچیده هستند، مؤثر باشد و هیچ دیدگاه واحدی نمیتواند روابط بسیار مهم را ثبت کند.
انواع الگوریتم جنگل تصادفی
روش جنگل تصادفی دارای انواع مختلفی است که برای مقابله با چالشهای خاص، مانند دادههای نامتعادل، آپشن های ابعادی بالا، یادگیری افزایشی و تشخیص ناهنجاری طراحی شدهاند. در زیر انواع اصلی و کاربردهای آنها آورده شده است:
1. درختان بسیار تصادفی (درختان اضافی)
به جای یافتن بهترین تقسیم، از تقسیم های تصادفی استفاده می کند.
بهترین گزینه برای داده های با ابعاد بالا که به آموزش سریعتر به جای دقت 100٪ نیاز دارند.
2. جنگل چرخشی
از تجزیه و تحلیل اجزای اصلی (PCA) برای تبدیل ویژگی ها قبل از آموزش درخت استفاده می کند.
بهترین برای مجموعه داده های چند متغیره با همبستگی بالا بین ویژگی ها.
3. وزن تصادفی جنگل (WRF)
با اولویت دادن به نمونههای طبقهبندی سخت یا کلاسهای اقلیت، وزنها را به نمونهها اختصاص میدهد.
بهترین گزینه برای مجموعه داده های نامتعادل مانند تشخیص تقلب یا تشخیص پزشکی.
4. جنگل تصادفی مایل (ORF)
از ترکیب خطی ویژگیها به جای آپشن های منفرد برای تقسیمها استفاده میکند و مرزهای غیرخطی را امکانپذیر میکند.
بهترین کار برای کارهایی با الگوهای پیچیده مانند تشخیص تصویر.
5. جنگل تصادفی متعادل (BRF)
مجموعه داده های نامتعادل را با نمونه برداری بیش از حد از کلاس های اقلیت یا کم نمونه گیری از کلاس های اکثریت کنترل می کند.
بهترین برای طبقهبندی باینری با توزیعهای کلاسی اریب (مثلاً تشخیص تقلب).
6. جاسازی درختان کاملاً تصادفی (TRTE)
داده ها را در یک فضای باینری پراکنده با ابعاد بالا برای استخراج ویژگی پروژه می دهد.
بهترین برای یادگیری بدون نظارت و پیش پردازش برای الگوریتم های خوشه بندی.
7. جنگل جداسازی (تشخیص ناهنجاری)
تمرکز بر جداسازی نقاط پرت با انتخاب تصادفی و تقسیمبندی ویژگیها.
بهترین برای تشخیص ناهنجاری در سیستمهای تشخیص تقلب، امنیت شبکه و تشخیص نفوذ.
8. جنگل موندریان (یادگیری افزایشی)
پشتیبانی از به روز رسانی های افزایشی، اجازه می دهد تا یادگیری پویا با در دسترس قرار گرفتن داده های جدید.
بهترین برای پخش داده ها و پیش بینی های زمان واقعی.
9. جنگل بقای تصادفی (RSF)
طراحی شده برای تجزیه و تحلیل بقا، پیش بینی نتایج زمان تا رویداد با داده های سانسور شده.
بهترین برای تحقیقات پزشکی و پیش بینی بقای بیمار.
الگوریتم جنگل تصادفی چگونه کار می کند؟
الگوریتم Random Forest مجموعه ای از درختان تصمیم را ایجاد می کند که هر کدام بر روی زیرمجموعه تصادفی داده ها آموزش دیده اند. در اینجا یک تفکیک گام به گام آورده شده است:
مرحله 1: نمونه برداری بوت استرپ
الگوریتم Random Forest از بوت استرپینگ استفاده می کند، تکنیکی برای تولید مجموعه داده های متعدد با نمونه گیری تصادفی (با جایگزینی) از مجموعه داده آموزشی اصلی. هر نمونه بوت استرپ کمی متفاوت است، و تضمین می کند که درختان جداگانه زیر مجموعه های متنوعی از داده ها را می بینند.
تقریباً 63.2٪ از داده ها در آموزش هر درخت استفاده می شود، در حالی که 36.8٪ باقی مانده به عنوان نمونه های خارج از کیسه (نمونه های OOB)، که بعداً برای تخمین دقت مدل استفاده می شوند، حذف می شوند.
مرحله 2: انتخاب ویژگی
یک درخت تصمیم به طور تصادفی یک زیرمجموعه از ویژگی ها را به جای همه ویژگی ها برای هر تقسیم انتخاب می کند، که به کاهش بیش از حد برازش کمک می کند و تنوع را در بین درختان تضمین می کند.
برای طبقهبندی : تعداد آپشن های در نظر گرفته شده در هر تقسیم بر روی: m = sqrt(p)
تنظیم میشود.
برای رگرسیون: تعداد ویژگی های در نظر گرفته شده در هر تقسیم برابر است: m = p/3
که در آن:
p = تعداد کل ویژگی های مجموعه داده.
m = تعداد ویژگی هایی که به طور تصادفی برای ارزیابی در هر تقسیم انتخاب شده اند.
مرحله 3: درخت سازی
درختان تصمیم به طور مستقل با استفاده از داده های نمونه برداری شده و ویژگی های انتخاب شده ساخته می شوند. هر درخت رشد می کند تا زمانی که به یک معیار توقف، مانند حداکثر عمق یا حداقل تعداد نمونه در هر برگ برسد.
برخلاف روش های هرس در درختان تصمیم گیری تک، درختان جنگل تصادفی اجازه رشد کامل دارند. برای کنترل بیش از حد برازش به میانگین گروه متکی است.
مرحله 4: رای دادن یا میانگین گیری
برای مسائل طبقه بندی، هر درخت تصمیم به یک کلاس رای می دهد و اکثریت رای پیش بینی نهایی را تعیین می کند.
برای مشکلات رگرسیون، پیشبینیها از همه درختان برای تولید خروجی نهایی میانگین میشوند.
مرحله 5: تخمین خطای خارج از کیف (OOB) (اختیاری)
نمونههای OOB، که برای آموزش هر درخت استفاده نشدند، به عنوان یک مجموعه اعتبار سنجی عمل میکنند.
الگوریتم خطای OOB را برای ارزیابی عملکرد بدون نیاز به مجموعه داده اعتبارسنجی جداگانه محاسبه می کند. این یک برآورد دقت بی طرفانه ارائه می دهد.
مزایا و معایب طبقهبندیکننده جنگل تصادفی
طبقهبندیکننده یادگیری ماشین Random Forest به دلیل توانایی آن در مدیریت انواع دادهها و وظایف، از جمله طبقهبندی و رگرسیون، به عنوان یکی از قدرتمندترین الگوریتمها در نظر گرفته میشود. با این حال، با برخی از معاوضه ها نیز همراه است که باید در هنگام انتخاب الگوریتم مناسب برای یک مسئله معین در نظر گرفته شود.
مزایای طبقه بندی جنگل تصادفی
Random Forest می تواند داده های عددی و مقوله ای را بدون نیاز به پیش پردازش یا تبدیل گسترده پردازش کند.
تکنیک یادگیری گروهی آن واریانس را کاهش میدهد، و باعث میشود که نسبت به درختهای تصمیم منفرد کمتر مستعد بیش از حد برازش شوند.
Random Forest می تواند داده های از دست رفته را نشان دهد یا حتی زمانی که برخی از مقادیر ویژگی در دسترس نیستند، پیش بینی کند.
این یک رتبه بندی از اهمیت ویژگی ارائه می دهد که بینش هایی را ارائه می دهد که متغیرها بیشترین سهم را در پیش بینی ها دارند.
توانایی پردازش داده ها به صورت موازی آن را برای مجموعه داده های بزرگ مقیاس پذیر و کارآمد می کند.
معایب طبقهبندیکننده تصادفی جنگل
آموزش چندین درخت نسبت به مدل های ساده تری مانند رگرسیون لجستیک به حافظه و قدرت پردازش بیشتری نیاز دارد.
برخلاف درختهای تصمیم منفرد، ساختار مجموعه تفسیر و تجسم پیشبینیها را سختتر میکند.
مدلهای دارای درختهای زیاد ممکن است فضای ذخیرهسازی قابل توجهی را اشغال کنند، مخصوصاً برای برنامههای دادههای بزرگ.
Random Forest ممکن است زمان استنتاج کندی داشته باشد. این ممکن است استفاده از آن را در سناریوهایی که نیاز به پیشبینی فوری دارند، محدود کند.
تنظیم دقیق فراپارامترها (به عنوان مثال، تعداد درختان، حداکثر عمق) برای بهینه سازی عملکرد و جلوگیری از پیچیدگی بیش از حد ضروری است.
جدول زیر نقاط قوت و محدودیت های کلیدی الگوریتم جنگل تصادفی را نشان می دهد.
طبقه بندی جنگل تصادفی در طبقه بندی و رگرسیون
الگوریتم جنگل تصادفی با استفاده از رویکردهای کمی متفاوت برای هر نوع مسئله، به طور موثر با وظایف طبقهبندی و رگرسیون سازگار میشود.
طبقه بندی
در طبقهبندی، یک جنگل تصادفی از یک سیستم رأیگیری برای پیشبینی نتایج طبقهبندی شده (مانند تصمیمهای بله/خیر یا چندین کلاس) استفاده میکند. هر درخت تصمیم در جنگل پیش بینی خود را می کند و اکثریت رای پاسخ نهایی را تعیین می کند.
برای مثال، اگر 60 درخت «بله» و 40 درخت «نه» را پیشبینی کنند، پیشبینی نهایی «بله» خواهد بود.
این رویکرد به ویژه برای مشکلات زیر کار می کند:
طبقه بندی باینری (به عنوان مثال، ایمیل های هرزنامه در مقابل ایمیل های غیر هرزنامه).
طبقه بندی چند طبقه (به عنوان مثال، شناسایی گونه های گل بر اساس ابعاد گلبرگ).
مجموعه داده های نامتعادل ، که در آن توزیع کلاس به دلیل ماهیت مجموعه آن ناهموار است، سوگیری را کاهش می دهد.
رگرسیون
Random Forest از روشهای مختلفی برای وظایف رگرسیون استفاده میکند، جایی که هدف پیشبینی مقادیر پیوسته (مانند قیمت خانه یا دما) است. هر درخت تصمیم به جای رأی دادن، مقدار عددی خاصی را پیشبینی میکند. پیش بینی نهایی با میانگین گیری همه این پیش بینی های فردی محاسبه می شود. این روش به طور موثر روابط پیچیده در داده ها را کنترل می کند، به خصوص زمانی که ارتباط بین متغیرها ساده نباشد.
این رویکرد برای موارد زیر ایده آل است:
وظایف پیش بینی (به عنوان مثال، پیش بینی آب و هوا یا قیمت سهام).
روابط غیر خطی ، که در آن تعاملات پیچیده بین متغیرها وجود دارد.
جنگل تصادفی در مقابل سایر الگوریتم های یادگیری ماشین
جدول تفاوتهای کلیدی بین Random Forest و سایر الگوریتمهای یادگیری ماشین را نشان میدهد که بر پیچیدگی، دقت، تفسیرپذیری و مقیاسپذیری تمرکز دارد.
جنبه | جنگل تصادفی | درخت تصمیم | SVM (دستگاه بردار پشتیبانی) | KNN (K-نزدیکترین همسایگان) | رگرسیون لجستیک |
نوع مدل | روش مجموعه (ترکیب درختان تصمیم چندگانه) | درخت تصمیم واحد | طبقه بندی کننده غیر احتمالی مبتنی بر حاشیه | مبتنی بر نمونه، ناپارامتریک | یک طبقهبندی خطی احتمالی |
پیچیدگی | نسبتاً زیاد (به دلیل مجموعه درختان) | کم | بالا، به خصوص با هسته های غیر خطی | کم | کم |
دقت | دقت بالا، به ویژه برای مجموعه داده های بزرگ | می تواند بیش از حد برازش کند و در مجموعه داده های پیچیده دقت کمتری داشته باشد | بالا برای داده های به خوبی جدا شده؛ برای مجموعه داده های پر سر و صدا کمتر موثر است | بستگی به انتخاب k تصادفی و متریک فاصله دارد | برای روابط خطی خوب عمل می کند |
مدیریت داده های غیر خطی | عالی، الگوهای پیچیده را به دلیل مجموعه درختان به تصویر می کشد | محدود | عالی با هسته های غیر خطی | متوسط، به k و توزیع داده بستگی دارد | بیچاره |
بیش از حد برازش | کمتر مستعد بیش از حد تناسب (به دلیل میانگین درختان) | به شدت مستعد بیش از حد مناسب شدن است | مستعد تطبیق بیش از حد با هسته های غیر خطی | مستعد بیش از حد تطبیق با k کوچک؛ کم تناسب با k بزرگ | کمتر مستعد بیش از حد تناسب است |
مراحل کلیدی آماده سازی داده ها برای مدل سازی تصادفی جنگل
آماده سازی اطلاعات کافی برای ساخت یک مدل جنگل تصادفی قوی بسیار مهم است. در اینجا یک چک فهرست جامع برای اطمینان از آمادگی بهینه داده ها وجود دارد:
1. پاکسازی داده ها
برای مقادیر از دست رفته از تکنیک های انتساب مانند میانگین، میانه یا حالت استفاده کنید. Random Forest همچنین می تواند مقادیر از دست رفته را به صورت بومی از طریق تقسیم های جایگزین کنترل کند.
از نمودارهای جعبه یا z-score استفاده کنید و تصمیم بگیرید که بر اساس دانش دامنه، نقاط پرت را حذف کنید یا تغییر دهید.
اطمینان حاصل کنید که مقادیر طبقهبندی استاندارد شدهاند (به عنوان مثال، "Male" در مقابل "M") تا از خطا در هنگام رمزگذاری جلوگیری شود.
2. مهندسی ویژگی
ویژگیها را ترکیب کنید یا بینشهایی مانند گروههای سنی یا فواصل زمانی را از مهرهای زمانی استخراج کنید.
از رمزگذاری برچسب برای داده های ترتیبی استفاده کنید و برای دسته بندی های اسمی از رمزگذاری تک داغ استفاده کنید.
3. تقسیم داده ها
از تقسیم 80/20 یا 70/30 برای متعادل کردن مراحل تمرین و تست استفاده کنید.
در مسائل طبقهبندی با دادههای نامتعادل، از نمونهگیری طبقهای برای حفظ نسبتهای کلاس در هر دو مجموعه آموزشی و آزمایشی استفاده کنید.
نحوه پیاده سازی الگوریتم جنگل تصادفی
در زیر یک مثال ساده از الگوریتم جنگل تصادفی با استفاده از Scikit-Learn برای طبقه بندی آورده شده است. مجموعه داده مورد استفاده مجموعه داده داخلی Iris است.
import numpy as np import pandas as pd from sklearn . datasets import load_iris from sklearn . model_selection import train_test_split from sklearn . ensemble import RandomForestClassifier from sklearn . metrics import accuracy_score , classification_report , confusion_matrix
iris = load_iris ( ) X = iris . data y = iris . target
iris_df = pd . DataFrame ( data = iris . data , columns = iris . feature_names )
iris_df [ 'target' ] = iris . target
print ( iris_df . head ( ) )
X_train , X_test , y_train , y_test = train_test_split ( X , y , test_size = 0.3 , random_state = 42 )
rf_classifier = RandomForestClassifier ( n_estimators = 100 , random_state = 42 )
rf_classifier . fit ( X_train , y_train )
y_pred = rf_classifier . predict ( X_test )
accuracy = accuracy_score ( y_test , y_pred ) print ( f"Accuracy: { accuracy : .2f } " )
print ( "\nClassification Report:" ) print ( classification_report ( y_test , y_pred ) )
print ( "\nConfusion Matrix:" ) print ( confusion_matrix ( y_test , y_pred ) )
توضیح کد
اکنون، بیایید الگوریتم جنگل تصادفی بالا را در مثال یادگیری ماشینی به چندین بخش تقسیم کنیم تا نحوه عملکرد کد را درک کنیم:
بارگذاری داده ها :
مجموعه داده Iris یک مجموعه داده کلاسیک در یادگیری ماشین برای کارهای طبقه بندی است.
X شامل ویژگی ها (اندازه گیری های کاسبرگ و گلبرگ) و y شامل کلاس هدف (نوع عنبیه) است. در اینجا پنج ردیف داده اول در مجموعه داده Iris آمده است.
تقسیم داده ها :
مجموعه داده با استفاده از train_test_split به مجموعه های آموزشی و آزمایشی تقسیم می شود.
مقداردهی اولیه مدل :
یک طبقهبندیکننده جنگل تصادفی با 100 درخت (n_estimators=100) و یک دانه تصادفی ثابت (random_state=42) برای تکرارپذیری اولیه میشود.
آموزش مدل :
روش برازش جنگل تصادفی را بر روی داده های آموزشی آموزش می دهد.
پیش بینی :
روش پیشبینی، پیشبینیهایی را روی مجموعه آزمایشی ایجاد میکند.
ارزیابی :
تابع accuracy_score دقت مدل را محاسبه می کند.
classification_report معیارهای دقیق، فراخوان، امتیاز F1 و پشتیبانی را برای هر کلاس ارائه می دهد.
confusion_matrix عملکرد طبقه بندی کننده را بر حسب موارد مثبت واقعی، مثبت کاذب، منفی درست و منفی کاذب نشان می دهد.
مثال خروجی:
این مثال نحوه استفاده موثر از طبقهبندیکننده جنگل تصادفی در Scikit-Learn را برای یک مسئله طبقهبندی نشان میدهد. می توانید پارامترهایی مانند n_estimators، max_depth و max_features را برای تنظیم دقیق مدل برای مجموعه داده ها و برنامه های خاص تنظیم کنید.
چالش ها و راه حل های بالقوه هنگام استفاده از الگوریتم جنگل تصادفی
هنگام استفاده از الگوریتم جنگل تصادفی ممکن است چندین چالش مانند ابعاد بالا، داده های نامتعادل و محدودیت های حافظه ایجاد شود. این مسائل را می توان با استفاده از انتخاب ویژگی، وزن بندی کلاس و کنترل عمق درخت برای بهبود عملکرد و کارایی مدل کاهش داد.
1. ابعاد بالا
Random Forest می تواند با مجموعه داده های حاوی تعداد زیادی ویژگی مبارزه کند و باعث افزایش زمان محاسبه و کاهش قابلیت تفسیر شود.
راه حل ها:
از امتیازهای اهمیت ویژگی برای انتخاب مرتبط ترین ویژگی ها استفاده کنید.
importances = rf_classifier . feature_importances_
از الگوریتم هایی مانند تجزیه و تحلیل مؤلفه اصلی (PCA) یا t-SNE برای کاهش ابعاد ویژگی استفاده کنید.
from sklearn . decomposition import PCA pca = PCA ( n_components = 10 ) X_reduced = pca . fit_transform ( X )
2. داده های نامتعادل
زمانی که مجموعه داده دارای کلاسهای نامتعادل باشد، Random Forest ممکن است پیشبینیهای مغرضانه ایجاد کند.
راه حل ها:
وزن کلاس را اعمال کنید. میتوانید با استفاده از پارامتر class_weight='balanced' در Scikit-Learn وزنهای بالاتری را به کلاسهای اقلیت اختصاص دهید.
RandomForestClassifier ( class_weight = 'balanced' )
از الگوریتمهایی مانند جنگل تصادفی متعادل برای نمونهگیری مجدد دادهها قبل از آموزش استفاده کنید.
from imblearn . ensemble import BalancedRandomForestClassifier clf = BalancedRandomForestClassifier ( n_estimators = 100 )
3. محدودیت های حافظه
آموزش جنگلهای بزرگ با درختهای تصمیمگیری زیاد میتواند حافظه فشرده باشد، بهویژه برای برنامههای دادههای بزرگ .
راه حل ها:
تعداد درختان تصمیم را کاهش دهید.
حداکثر عمق (max_depth) را تنظیم کنید تا از درختان بیش از حد بزرگ و استفاده بیش از حد از حافظه جلوگیری کنید.
از ابزارهایی مانند Dask یا H2O.ai برای مدیریت مجموعه داده های بسیار بزرگ برای جا دادن در حافظه استفاده کنید.
نمونه های واقعی از جنگل تصادفی
در اینجا سه کاربرد عملی Random Forest وجود دارد که نشان می دهد چگونه مسائل دنیای واقعی را حل می کند:
تجزیه و تحلیل خرده فروشی
Random Forest با تجزیه و تحلیل تاریخچه خرید، الگوهای مرور، داده های جمعیتی و روندهای فصلی به پیش بینی رفتار خرید مشتری کمک می کند. خردهفروشان عمده از این پیشبینیها برای بهینهسازی سطح موجودی و ایجاد کمپینهای بازاریابی شخصیسازی شده استفاده میکنند و تا 20 درصد در دقت پیشبینی فروش بهبود مییابند.
تشخیص پزشکی
Random Forest با پردازش داده های بیمار از جمله نتایج آزمایش خون، علائم حیاتی، سابقه پزشکی و نشانگرهای ژنتیکی به پزشکان در تشخیص بیماری کمک می کند. یک مثال قابل توجه، تشخیص سرطان پستان است، که در آن مدلهای جنگل تصادفی نتایج ماموگرافی را در کنار سابقه بیمار تجزیه و تحلیل میکنند تا موارد بالقوه را با دقت بیش از 95 درصد شناسایی کنند.
علوم محیطی
Random Forest تغییرات جمعیت حیات وحش را با پردازش دادههای مربوط به الگوهای دما، بارندگی، فعالیتهای انسانی و تعداد گونههای تاریخی پیشبینی میکند. تیمهای حفاظت از این پیشبینیها برای شناسایی گونههای در خطر انقراض و اجرای اقدامات حفاظتی قبل از بحرانی شدن کاهش جمعیت استفاده میکنند.
روندهای آینده در جنگل تصادفی و یادگیری ماشینی
تکامل Random Forest در یادگیری ماشین در کنار پیشرفتهای گستردهتر در فناوری یادگیری ماشین به پیشرفت خود ادامه میدهد. در اینجا تحلیل روندهای کلیدی شکل دهنده آینده آن است:
1. ادغام با یادگیری عمیق
مدل های ترکیبی ترکیب جنگل تصادفی با شبکه های عصبی
قابلیت های استخراج ویژگی های پیشرفته.
2. بهینه سازی خودکار
تنظیم هایپرپارامتر خودکار پیشرفته
انتخاب ویژگی هوشمند
3. محاسبات توزیع شده
قابلیت های پردازش موازی بهبود یافته است
مدیریت بهتر داده های بزرگ
نتیجه گیری
Random Forest یک مدل قوی است که چندین درخت تصمیم را برای پیشبینی قابل اعتماد ترکیب میکند. نقاط قوت کلیدی آن شامل مدیریت انواع دادههای مختلف، مدیریت مقادیر از دست رفته و شناسایی خودکار آپشن های ضروری است.
Random Forest از طریق رویکرد گروهی خود، دقت ثابتی را در بین برنامههای مختلف ارائه میکند و در عین حال اجرای آن ساده است. همانطور که یادگیری ماشین پیشرفت می کند، Random Forest ارزش خود را از طریق تعادل تجزیه و تحلیل پیچیده و کاربرد عملی خود ثابت می کند و آن را به یک انتخاب قابل اعتماد برای چالش های علم داده مدرن تبدیل می کند.
سوالات متداول در مورد الگوریتم جنگل تصادفی
1. تعداد بهینه درختان برای یک جنگل تصادفی چقدر است؟
نتایج خوب معمولاً از شروع با 100-500 درخت تصمیم حاصل می شود. زمانی که منابع محاسباتی بیشتری در دسترس باشد، می توان تعداد را افزایش داد و به ثبات پیش بینی بالاتری نیاز است.
2. جنگل تصادفی چگونه ارزش های گمشده را مدیریت می کند؟
Random Forest به طور موثر مقادیر گمشده را از طریق تکنیکهای متعدد، از جمله تقسیمهای جایگزین و روشهای انتساب، مدیریت میکند. این الگوریتم حتی زمانی که داده ها ناقص هستند، دقت را حفظ می کند.
3. چه تکنیک هایی از برازش بیش از حد در جنگل تصادفی جلوگیری می کند؟
Random Forest از طریق دو مکانیسم اصلی از نصب بیش از حد جلوگیری می کند: نمونه برداری بوت استرپ و انتخاب تصادفی ویژگی. اینها درختان متنوعی را ایجاد می کنند و واریانس پیش بینی را کاهش می دهند که منجر به تعمیم بهتر می شود.
4. چه چیزی جنگل تصادفی را از تقویت گرادیان متمایز می کند؟
هر دو الگوریتم از روشهای مجموعه استفاده میکنند، اما رویکردهای آنها به طور قابل توجهی متفاوت است. Random Forest درختان را به طور مستقل به صورت موازی می سازد، در حالی که Gradient Boosting درختان را به صورت متوالی می سازد. هر درخت جدید بر تصحیح خطاهای درختان قبلی تمرکز دارد.
5. آیا جنگل تصادفی به طور موثر با مجموعه داده های کوچک کار می کند؟
Random Forest با مجموعه داده های کوچک عملکرد خوبی دارد. با این حال، تنظیمات پارامتر - به ویژه تعداد درختان و تنظیمات حداکثر عمق - برای حفظ عملکرد مدل و جلوگیری از برازش بیش از حد بسیار مهم است.
6. جنگل تصادفی چه نوع مسائلی را می تواند حل کند؟
Random Forest بسیار متنوع است و می تواند موارد زیر را مدیریت کند:
طبقه بندی: تشخیص هرزنامه، تشخیص بیماری، تشخیص تقلب.
رگرسیون: پیش بینی قیمت خانه، پیش بینی فروش، پیش بینی دما.
7. آیا می توان از جنگل تصادفی برای انتخاب ویژگی استفاده کرد؟
بله، Random Forest امتیازهای اهمیت ویژگی را برای رتبه بندی متغیرها بر اساس سهم آنها در پیش بینی ها ارائه می دهد. این به ویژه برای کاهش ابعاد و شناسایی پیش بینی کننده های کلیدی در مجموعه داده های بزرگ مفید است.
8. فراپارامترهای کلیدی در جنگل تصادفی چیست و چگونه آنها را تنظیم کنم؟
الگوریتمهای جنگل تصادفی نیاز به تنظیم دقیق چندین پارامتر کلیدی دارند که عملکرد مدل را به طور قابلتوجهی تحت تأثیر قرار میدهند. این فراپارامترها نحوه رشد جنگل و تصمیم گیری را کنترل می کنند:
n_estimators: تعداد درختان (پیش فرض = 100).
max_depth: حداکثر عمق هر درخت (پیش فرض = نامحدود).
min_samples_split: حداقل نمونه های مورد نیاز برای تقسیم یک گره.
min_samples_leaf: حداقل نمونه مورد نیاز در یک گره برگ.
max_features: تعداد ویژگی های در نظر گرفته شده برای هر تقسیم.
9. آیا جنگل تصادفی می تواند مجموعه داده های نامتعادل را مدیریت کند؟
بله، می تواند عدم تعادل را با استفاده از:
وزن های کلاس: وزن های بالاتر را به کلاس های اقلیت اختصاص دهید.
انواع جنگل تصادفی متعادل: از تکنیکهای نمونهگیری برای برابر کردن نمایش کلاس استفاده کنید.
روشهای نمونهبرداری بیش از حد و کمنمونهسازی: روشهایی مانند SMOTE و Tomek Links، مجموعه دادهها را قبل از آموزش متعادل میکنند.
10. آیا جنگل تصادفی برای پیش بینی های زمان واقعی مناسب است؟
Random Forest به دلیل زمان استنتاج طولانی، به خصوص با تعداد زیادی درخت، برای کاربردهای بلادرنگ ایده آل نیست. برای پیشبینی سریعتر، الگوریتمهایی مانند رگرسیون لجستیک یا تقویت گرادیان را با درختان کمتر در نظر بگیرید.
ارسال نظر