معرفی الگوریتم های ماشین لرنینگ با استفاده از scikit-learn
بخش مقدماتی : ?
تعریف ساده ماشین لرنینگ اینطوری میشه گفت که به علم برنامه نویسی کامپیوتر ها به نحوی که از داده ها یادبگیرند . یا به عبارت دیگه حوزه ای از علوم کامپیوتره که این قابلیتو به کامپیوتر میده که بدون برنامه نویسی شدن به طور مشخص یه کاریو انجام بده.
یه مثال ساده از ماشین لرنینگ فیلتر اسپم ایمیله . که یه سری از ایمیل های آشغال رو به عنوان اسپم بهش میدیم و یه سری دیگه که مهم هستند رو به عنوان ایمیل مهم یا None-Spam بهشون میدیم و میاد بر اساس نمونه هایی که بهش دادیم به ایمیل ها لیبل میده که اسپم هستند یا نیستند .
فرق ماشین لرنینگ با کد زدن عادی چیه ؟
تو همون مثال ایمیل های اسپم فرض ما می خوایم خودمون یه برنامه ای طراحی کنیم که بیاد توی ایمیل ها بگرده و مثلا یه سری الگو های کلامی که ایمیل های اسپم دارند رو تشخیص بده و هر چه قدر که تعداد این الگو ها بیشتر بود احتمال اینکه این ایمیل عنوان اسپم بگیره بیشتر هستش پس به طور خلاصه اون عمل اصلی و مهمی که ما انجام میدیم نوشتن قوانین تشخیص این الگو هاست.
بدیه این کار چیه ؟ اینکه نهایتا ما یه مقدار زیادی کده پیچیده داریم که فقط برای این لیست از ایمیل ها کار
می کنه?
در مقابل یه فیلتر اسپم با استفاده از ماشین لرنینگ به طور خودکار یادمیگیره کدوم کلمات و جملات نشون دهنده اسپم بودن ایمیل هستند حالا چجوری اینکارو انجام میده ؟ میاد تو ایمیل ها میگرده که کدوم کلمات و جملات به طور غیر طبیعی تکرار شدند و یه سری الگو توی این کلمات پیدا می کنه
این برنامه به مراتب کوتاه تر و دقیق تر از روش قبلی هست و جوریه که ما اگه یه سری ایمیل جدید بهش بدیم خودشو تطبیق میده به دیتا های جدید?
پس به طور خلاصه ماشین لرنینگ برا اینکار ها مناسبه :
- مسائلی که توش پیدا کردن جواب مناسب نیازمند قوانین و حالات بسیار زیادی هست .
- محیط هایی که توی اونها داده های به طور مرتب تغییر می کنند و استفاده از یه سری کد ثابت جوابگو نیستش و باید به طور مرتب این کد تغییر بکنه بسته به دیتایی که داره.
- توی بحث بیگ دیتا استفاده از ماشین لرنینگ به ما کمک می کنه که روابط بین یه سری ورودی ها رو درک کنیم و اصطلاحا اونارو همسو بدونیم.
انواع ماشین لرنینگ :
به طور کلی سیستم های ماشین لرنینگ بر اساس اینکه چه نوع و مقدار داده ای رو نظارت روش میکنند ، به چهار دسته نظارتی ، غیرنظارتی ، تقویتی و شبه نظارتی تقسیم میشند که من سه تای اولو یه توضیح مختصری میدم?
یادگیری نظارتی(supervised learning):
توی یادگیری نظارتی training data set که ما به برنامه میدیم شامل مقادیر خروجی یا به زبون دیگه جوابی که باید برنامه بده میشه که بهشون میگیم لیبل(Label) همون مثال فیلتر اسپمی که اول کار گفتم هم از همین نوع هست.
مثلا یه کاربرد دیگه ای که میتونه داشته باشه تو بحث قیمت خودرو ، ملک یا به طور کلی هر نوع مقدار عددی هست که پارامتر های عددی دیگه رابطه دارند . ما یه سری خصوصیت (feature ) مثل سال تولید ، کیلومتر طی شده ، رنگ ، اتوماتیک بودن یا نبودن و ویژگی های دیگه رو به همراه قیمتش به عنوان training set میدیم و الگوریتم پیشبینی می کنه که مثلا یه ماشینی مدل 82 دنده اتوماتیک با رنگ نقره ای چه قیمت هست و این قیمت رو که مدل ما پیشبینی کرده میایم نسبت میدیم به قیمت واقعیش و میفهمیم که درصد خطاش یا دقتش چقدر بوده.
نکته مهمی هم که باید اضافه بکنم تو حوزه ماشین لرنینگ بین دو کلمه attribute و feature تفاوت وجود داره به این شکل که attribute فقط اشاره به نوع داده داره اما feature نوع و مقدار اون داده رو مشخص می کنه .
یادگیری غیر نظارتی (unsupervised leaning ):
توی این روش برخلاف روش قبل ما درون داده ای که آموزش میدیم لیبل نداریم و در واقع هیچ معیاری برای سنجش درست یا غلط بودن وجود نداره
به عنوان مثال ما حجم زیادی دیتا از بینندگان وبساتیمون داریم و می خوای با استفاده از الگوریتم کلاسترینگ افرادی که سلیقه های مشترکی دارند رو گروه بندی کنیم . اینکارو الگوریتم بدون هیچ کمکی از داده ترین انجام میده و باید خودش شباهت ها و اشتراکات این داده ها رو تشخیص بده مثلا تشخیص بده به عنوان مثال 60 درصد خوانندگان مرد هستند یا مثلا 20 درصد مردم علاقه به فیلمای اکشن دارند.
یه سری دیگه از الگوریتم های غیر نظارتی نمایش بصری (visualization ) هستند که توی بحث بیگ دیتا و داده های حجم بالایی که لیبل ندارند خیلی کاربردیه و میتونه خیلی سریع بینش کلی از اون داده ای که داریم بهمون بده
یک موضوعی که مربوط به یادیگری غیرنظارتی هستش و خیلی مهم هست بحث کاهش ابعادیه (dimensionality reduction ) که درش ما بدون اینکه اطلاعات زیادی رو از دست بدیم میایم داده های ساده تر می کنیم و برای این کار میایم گروه های داده ای رو که با همدیگه مرتبط هستند مرج (merge)می کنیم تا تقسیم بندی ساده تر بشه به عنوان مثال کیلو متر ماشین با عمر ماشین مرتبطه به خاطر همین میایم ما این دو گروه از داده رو مرج می کنیم به این عمل feature extraction گفته میشه .
یادگیری تقویتی ( Reinforcement learning ):
توی یادگیری تقویتی سیستم یادگیری محیط رو مشاهده می کنه یه عملی رو انتخاب و اونو انجام میده و در صورت درست بودنش جایزه میگیره در غیر این صورت هم جریمه میشه جوریه که یادمیگیره که بهترین استراتژی چیه که تو طول زمان بیشترین جایزه یا توکن رو بگیره
مثال های زیادی هم داره از حوزه رباتیک گرفته تا شبیه سازی و مدلینگ تا بحث گیمینگ و پست خودشو میطلبه تا توضیح بدم ?
من توی این پست سعی کردم مقدمه ای از مطالبی که در ادامه قراره با کتابخونه scikit-learn انجام بدیم بیان کنم منبع اصلی برای مطالب این کتابی هست که معرفی می کنم .
Hands-on Machine Learning with Scikit-Learn, Keras and TensoFlow
ترتیب مطالب و الگوریتم هایی هم که قراره پوشش بدیم شبیه به مسیر راه شکل زیره امیدوارم این مطلب مفید واقع شده باشه.
مطلبی دیگر از این انتشارات
معرفی کتابخانه Matplotlib (قسمت دوم)
مطلبی دیگر از این انتشارات
جهان از نگاه ماشینها
مطلبی دیگر از این انتشارات
معرفی کتابخانه seaborn (بخش اول)