برترین الگوریتم های پیش بینی در یادگیری ماشین (Machine Learning)


عبارت «یادگیری ماشین» (Machine Learning) این روزها در فضای دانشگاهی و کسبوکارها و معمولا در زمینه «تحلیلهای پیشبین» (Predictive Analysis) و «هوش مصنوعی» (Artificial Intelligence) زیاد شنیده میشود. یادگیری ماشین راهکاری برای کامپیوترها جهت فراگیری چیزها بدون آنکه مشخصا برای آن برنامهریزی شده باشند است. اما چنین مسالهای چگونه به وقوع میپیوندد؟
پاسخ تنها یک کلمه است: «الگوریتمها» (Algorithms). الگوریتمها مجموعههایی از قوانین هستند که کامپیوتر قادر به پیروی از آنها است. برای مثال، روش انجام عمل تقسیم اعداد صحیح مفروض است. افراد اغلب آموختهاند که برای انجام این کار از سمت چپ ارقام مقسوم را جدا و بر مقسومعلیه تقسیم کنند و این کار را تا زمانی ادامه دهند که باقیمانده (غیر قابل تقسیم بر مقسومعلیه) بر جای بماند.
البته روش مذکور، چگونگی انجام تقسیم به صورت ساده بود و در عمل راهکار انجام تقسیم پیچیدهتر و کاملتر است. روش بیان شده برای انجام عمل تقسیم یک «الگوریتم» است، کامپیوترها را میشود با بهرهگیری از الگوریتمها به گونهای برنامهریزی کرد که قادر باشند چنین محاسباتی را بسیار سریعتر از انسانها انجام دهند. در ادامه، خلاصهای از برترین الگوریتمهای استفاده شده در تحلیلهای پیشبین (الگوریتمهای پیشبینی) ارائه شده است.
یادگیری ماشین چگونه است؟
در یادگیری ماشین، هدف پیشبینی یا خوشهبندی است. در این مطلب به بحث پیشبینی پرداخته خواهد شد. پیشبینی فرآیندی است که طی آن، با بهرهگیری از یک مجموعه متغیرهای ورودی، ارزش یک متغیر خروجی تخمین زده میشود. برای مثال، با استفاده از مجموعهای از مشخصههای یک خانه، میتوان قیمت آن را تخمین زد. مسائل پیشبینی به دو دسته کلی «رگرسیون» (Regression) و «دستهبندی» (Classification) تقسیم میشوند.
- رگرسیون: در مسائل رگرسیون متغیری که باید پیشبینی شود عددی است (برای مثال قیمت یک خانه).
- دستهبندی: در مسائل دستهبندی متغیرها برای پیشبینی یکی یا برخی از دستههای از پیش تعریف شده مورد استفاده قرار میگیرند. این دستهها میتوانند به سادگی «بلی» یا «خیر» باشند (برای مثال، پیشبینی اینکه آیا یک قطعه مکانیکی دچار نقص فنی خواهد شد یا خیر).
البته هدف این مطلب آموزش چگونگی تبدیل شدن به یک دانشمند داده یا فراگیری علم داده نیست، بلکه قصد معرفی کردن برخی از محبوبترین و برجستهترین الگوریتمهای پیشبینی است که در یادگیری ماشین مورد استفاده قرار میگیرند. این الگوریتمها در سه دسته «مدلهای خطی» (Linear Models)، «مدلهای مبتنی بر درخت» (Tree Based Models) و «شبکههای عصبی» قرار میگیرند.
مدلهای خطی
یک مدل خطی از فرمولی ساده برای پیدا کردن خط دارای « بهترین برازش» (Bestfitting) در میان یک مجموعه از نقاط داده استفاده میکند. پیشینه روشهای خطی به بالغ بر ۲۰۰ سال پیش باز میگردد و البته این روشها در حال حاضر به طور گستردهای در آمار و یادگیری ماشین مورد استفاده قرار میگیرند.
مدلهای خطی به دلیل سادگی برای کارهای آماری بسیار مفید هستند و در آنها متغیری که قصد پیشبینی آن وجود دارد (متغیر وابسته) به عنوان معادلهای از متغیرهای شناخته شده (متغیرهای مستقل) ارائه میشود و بنابراین پیشبینی نهایی تنها به متغیرهای ورودی مستقل و داشتن معادلهای که پاسخ را به دست دهد بستگی دارد.
برای مثال، فرد ممکن است بخواهد بداند که پختن یک کیک چقدر زمان میبرد و با بهرهگیری از تحلیلهای رگرسیون معادلهای مانند t = 0.5x + 0.25y را تولید کند که در آن t زمان پخت کیک به ساعت، x وزن خمیر کیک به کیلوگرم، و y متغیری است که اگر کیک شکلاتی باشد برابر با یک و اگر غیر شکلاتی باشد برابر با ۰ است. اگر فرد یک کیلوگرم خمیر کیک شکلاتی داشته باشد، با قرار دادن مقادیر متغیرها در معادله بالا میتواند مقدار زمان پخت کیک یعنی t را به دست آورد که برای این مثال به صورت t = (0.5 x 1) + (0.25 x 1) = 0.75 ساعت یا ۴۵ دقیقه است.
رگرسیون خطی
«رگرسیون خطی» (Linear Regression) یا به طور مشخصتر «رگرسیون کمترین مربعات» (Least Squares Regression) استاندارترین شکل یک مدل خطی است. برای مساله رگرسیون، رگرسیون خطی سادهترین و قابل فهمترین نوع مدلهای خطی محسوب میشود. اشکال این روش آن است که گرایش به «بیشبرازش» (Overfit) کردن مدل دارد.
بیشبرازش به بیان ساده یعنی مدل بیش از اندازه با دادههای برچسبدار آموزش داده شود و خروجیهایی عینا مثل دادههای آموزش به دست دهد که مانعی در راه عمومیسازی مدل محسوب میشوند. به همین دلیل، رگرسیون خطی (همراه با رگرسیون لوجستیک که در ادامه به آن پرداخته خواهد شد) در یادگیری ماشین اغلب «تنظیم» (regularized) میشوند، بدین معنا که مدل در صورت انجام بیشبرازش دارای جریمه مشخصی خواهد شد. دیگر اشکال مدل رگرسیون خطی سادگی بسیار زیاد آن است که موجب میشود هنگام پیشبینی رفتارهای پیچیدهتر که متغیرهای ورودی در آنها مستقل نیستند دچار مشکل میشود.
رگرسیون لوجستیک
رگرسیون لوجستیک تطبیق دادن رگرسیون خطی برای مسائل دستهبندی است. مشکلات رگرسیون لوجستیک درست مانند رگرسیون خطی است با این تفاوت که این روش گرایش زیادی نیز به بیش برازش دارد.
از آنجا که این رگرسیون مقادیر بین ۰ و ۱ را نگاشت میکند، راهکار مناسبی برای مسائل دستهبندی است، زیرا احتمال وجود داشتن نقاط داده در هر کلاس را به دست میدهد.
مدلهای مبتنی بر درخت
اغلب افراد هنگامی که عبارت «مدلهای مبتنی بر درخت» را میشنوند، «درخت تصمیم» (Decision Trees) را به خاطر میآورند که دنبالهای از عملیات انشعابی است.
درخت تصمیم
درخت تصمیم گرافی است که از روش انشعابی برای نمایش کلیه خروجیهای ممکن برای یک تصمیم استفاده میکند. برای مثال، فرد برای سفارش یک سالاد، ابتدا نوع کاهو، سپس چاشنی و در نهایت سس روی آن را انتخاب میکند. میتوان همه خروجیهای ممکن را در درخت تصمیم ارائه کرد. در یادگیری ماشین، انشعابهای استفاده شده پاسخهای دودویی بله/خیر هستند.
برای آموزش دادن درخت تصمیم، مجموعه داده آموزش (train data set) از ورودی دریافت میشود (که مجموعه دادهای است که برای آموزش دادن مدل مورد استفاده قرار میگیرد) و متغیرهایی که مجموعه داده آموزش را به بهترین شکل منشعب میکنند با توجه به هدف انتخاب میشوند. برای مثال، در تشخیص کلاهبرداری، میتوان ویژگی(هایی) را پیدا کرد که به بهترین شکل خطر کلاهبرداری در یک کشور را پیشبینی میکند.
پس از اولین انشعاب دو زیرمجموعه حاصل میشوند، سپس منشعب کردن بر اساس دومین ویژگی برای هر زیر مجموعه تکرار میشود و این کار تا هنگامی که از تعداد کافی از متغیرها برای ارضای نیازهای کاربر استفاده شده باشد ادامه پیدا میکند. درختهای تصمیم در صورت مشخص بودن اولین ویژگی در انجام پیشبینی عالی هستند.
جنگلهای تصادفی
یک جنگل تصادفی میانگینی از تعداد بسیار زیادی درخت تصمیم است که هر یک با نمونهای تصادفی از دادهها آموزش داده شدهاند. هر درخت تنها در کل جنگل از یک درخت تصمیم کامل ضعیفتر است، اما با کنار هم قرار گرفتن همه آنها، به لطف تنوع خروجیها کارایی کلی بهتری حاصل میشود.
جنگل تصادفی امروزه یکی از محبوبترین الگوریتمهای یادگیری ماشین محسوب میشود. آموزش دادن این مدل بسیار آسان و کارایی آن خوب محسوب میشود. مشکل این الگوریتم آن است که برای ارائه پیشبینیهای خروجی نسبت به دیگر الگوریتمها کندتر عمل میکند، بنابراین ممکن است هنگام نیاز به پیشبینیهای خیلی سریع از این روش استفاده نشود.
گرادیان بوستینگ
روش «گرادیان بوستینگ» (Gradient Boosting)، نیز مانند جنگل تصادفی از درختهای تصمیم «ضعیف» استفاده میکند. تفاوت بزرگ این دو روش آن است که در روش گرادیان بوستینگ درختها یکی پس از دیگری آموزش داده میشوند. هر درخت زیرمجموعه در درجه اول با دادههایی که به اشتباه توسط درخت پیشین پیشبینی شدهاند آموزش داده میشوند. این امر موجب میشود مدل کمتر بر مسائلی که پیشبینی در آنها آسان است و بیشتر روی موارد پیچیده متمرکز شود.
شبکههای عصبی
شبکه عصبی به پدیده بیولوژیکی مربوط میشود که شامل «نورونهای» (Neurons) متصلی است که به مبادله پیام با یکدیگر میپردازند. این ایده در حال حاضر در جامعه یادگیری ماشین پذیرفته شده و به آن «شبکههای عصبی مصنوعی» (Artificial Neural Networks) گفته میشود.
«یادگیری عمیق» (Deep learning) که یکی از مباحث داغ روز است را میتوان با چندین لایه از شبکههای عصبی روی هم قرار گرفته پیادهسازی کرد.
شبکههای عصبی مصنوعی خانوادهای از مدلها هستند که آموختهاند مهارتهای شناختی را کسب کنند. هیچ الگوریتم دیگری نمیتواند وظیفه فوقالعاده پیچیدهای همچون «بازشناسی تصویر» (Image Recognition) را به خوبی شبکههای عصبی انجام دهد. اگرچه، درست مانند مغز انسان، زمان زیادی لازم است تا این مدل آموزش ببیند و نیازمند توان محاسباتی زیادی نیز هست (همانطور که میزان خوراک مصرفی انسان برای حفظ عملکرد مغز قابل توجه است).
اگر مطلب بالا برای شما مفید بوده، آموزشهای زیر نیز به شما پیشنهاد میشود:
- مجموعه آموزشهای شبکههای عصبی مصنوعی
- مجموعه آموزشهای آمار، احتمالات و دادهکاوی
- مجموعه آموزشهای یادگیری ماشین و بازشناسی الگو
- مجموعه آموزشهای هوش محاسباتی
^^