آموزش ماشین لرنینگ با پایتون ( پارت پنجم- کلسیفیکیشن)



لازم به ذکره این دوره نسخه ترجمه شده دوره ماشین لرنینگ سایت SoloLearn هست و من فقط ترجمه اون رو انجام دادم.

در این قسمت ما با کلسیفیکیشن (دسته بندی) آشنا میشیم.



کلسیفیکیشن چیست؟

کلسیفیکیشن در کجای دنیای ماشین لرنینگ جای می گیرد؟

ماشین لرنینگ در سطح بالا از یادگیری نظارت شده و نظارت نشده تشکیل میشه.

یادگیری نظارت شده به این معنیه که ما داده های تاریخی را برچسب گذاری میکنیم و از اونها برای اطلاع رسانی به مدل خود استفاده میکنیم. ما به اون برچسب یا چیزی که میخوایم پیشبینیش کنیم تارگت میگیم. پس در یادگیری نظارت شده، یه هدف مشخص(تارگت) برای اون اطلاعات گذشته مون داریم و در یادگیری نظارت نشده هدف مشخصی نداریم.

در یادگیری نظارت شده، کلسیفیکیشن (دسته بندی) و رگرشن رو داریم.

مسائل کلسیفیکیشن مسائلین که توی اونا تارگت ما یه "دسته" (کتگوری) ست. (یعنی میخوایم ببینیم به چه دسته ای تعلق میگیره) ( معمولا True یا False ه اما میتونه چندین کتگوری هم باشه). مشکلات رگرشنی اون هایین که تارگت ما یه مقدار عددی هست.

برای مثال، پیشبینی کردن قیمت یک خونه یه مسئله رگرشنی هست.تحت نظارته => چون ما دیتای فروش های گذشته اون خونه رو داریم. رگرشنه => چون قیمت خونه یه عدده. پیشبینی کردن اینکه آیا کسی وامی که گرفته رو پس میاره یا نه یه مشکل کلسیفیکیشنه. تحت نظارته => چون ما گذشته طرف رو داریم(همون وام های قبلی که گرفته)، کلسیفیکیشنه => چون میخوایم ببینیم آیا طرف جز دسته خوش قول هاست یا بدقول ها.

لاجیستیک رگرشن با اینکه رگرشن توی اسمش داره اما یه الگوریتم برای حل کردن مشکلات کلسیفیکیشنه، نه مشکلات رگرشن



ترمینولوژی کلسیفیکیشن

بیاید دوباره به دیتاست تایتانیک نگاه کنیم:

ستون Survived ( بقا یافته) چیزیه که ما سعی داریم پیشبینیش کنیم. ما به این میگیم تارگت.

میبینید که یه لیست از 1 ها و 0 هاست. 1 یعنی مسافره زنده مونده، 0 یعنی مسافره بقا پیدا نکرده.

باقی ستون ها اطلاعاتی راجب مسافرن که ما میتونیم ازشون استفاده کنیم تا تارگت رو پیشبینی کنیم. به این ستون ها میگیم یه فیچر (ویژگی-خصوصیت). فیچر ها دیتایی هستن که ما برای پیشبینی کردن از اونها استفاده میکنیم.

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

ممکنه بشنوید به فیچر ها predictors (پیشبینی کننده ها) هم بگن



یک مدل خطی برای کلسیفیکیشن

دسته بندی گرافیکی

در پایان ما قراره از همه فیچر ها استفاده کنیم ولی بیاید برای سادگی اول فقط از 2تا فیچر استفاده کنیم ( کرایه و سن). استفاده کردن از 2 فیچر مارو قادر میسازه تا بتونیم دیتا رو در یک گراف نشون بدیم.

بر روی محور x ها ما کرایه و روی محور y ها سن مسافر هارو داریم. نقاط زرد مسافر هایین که زنده موندن و نقاط بنفش مسافر هایین که زنده نموندن.

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

کار یک مدل خطی (linear Model)اینه که بهترین خطی رو پیدا کنه که دو دسته (کلاس) مارو از هم جدا میکنه، که نقاط زرد روی یک سمت و نقاط بنفش روی سمت دیگری باشه.

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




معادله خط

یک خط با معادله زیر تعریف میشه:

0 = ax + by + c

مقادیر a و b و c ، ضریب هستند. هر 3 مقدار منفردی یه خط مخصوص به خودش رو ایجاد میکنه.

بیاید به خطی نگاه کنیم که در اون a=1, b = -1, c = -30 هست.

0 = (1)x + (-1)y + (-30)

سه ضریب 1 و -1 و -30 هستن

یادتون باشه که ما توی نمودارمون کرایه محور x و سن محور y رو تشکیل میداد.

برای کشیدن یک خط از یک معادله خط، ما به 2 نقطه از اون نیاز داریم.

میتونیم ببینیم که برای مثال، نقطه (30,0) بر روی سمت راست خط ما میوفته. ( 30 کرایه، 0 سن). اگر ما اونو وارد معادله کنیم، جواب میده.

30 – 0 – 30 = 0

ما همچنین میتونیم ببینیم که نقطه (50, 20) روی خط قرار داره ( کرایه 50، سن 20).

این چیزیه که خط ما روی نمودار بنظر میاد:



پیشبینی کردن بر حسب خط

بیاید دوباره به همون خط نگاه کنیم:

0 = (1)x + (-1)y – 30

اگر ما دیتای یه مسافر رو بگیریم، میتونیم از این معادله استفاده کنیم تا مشخص کنیم اون مسافره کدوم طرف این خط میوفته. برای مثال، بیاید بگیم که یه مسافر داریم که کرایه ش 100 دلار و سنش 20 سال هست.

اگر ما این مقادیر رو وارد معادله کنیم جواب 50 رو به ما میده.

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

حالا بیاید بگیم که یه مسافر کرایه 10دلار و 50 سال سن داشته.

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




چی باعث میشه یه خط خوب باشه؟
بیاید به 2 خط متفاوت نگاه کنیم.

اولی همون خطیه که تا الان باهاش کار میکردیم. بیاید بهش بگیم خط 1

0 = (1)x + (-1)y - 30

حالا ما یک معادله دیگر برای یک خط دیگر داریم. بیاید به این بگیم خط 2.

0 = (4)x + (5)y – 400

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

ما نیازه که این ایده رو از نظر ریاضیاتی بیان کنیم تا بتونیم اونو بصورت الگوریتمی حل کنیم و بهترین خط رو پیدا کنیم.

لاجیستیک رگرشن یک راه ریاضیاتی برای پیدا کردن بهترین خطه.