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

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




خوش آمدید!
به شما بابت قدم بزرگی که برای تبدیل شدن به یک متخصص ماشین لرنینگ برداشته اید تبریک میگویم!

ما از زبان برنامه نویسی پایتون در این کورس استفاده می کنیم.

ماشین لرنینگ درواقع یک راه برای گرفتن اطلاعات (Data) و تبدیل اونها به یک بینش (insight) هست. ما از قدرت کامپیوتر استفاده میکنیم تا مثال هایی از گذشته رو آنالیز کنیم و یک مدل بسازیم که میتونه یه نتیجه رو برای مثال های جدید پیشبینی کنه.

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

در این کورس ما چندین تکنیک رو یاد میگیریم تا مسائل ماشین لرنینگ رو حل کنیم.

"ماشین لرنینگ میتونه برای ساخت یک ربات سخنگو (chatbot)، تشخیص دهنده اسپم یا تشخیص تصویر ( image recognition ) استفاده بشه"

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

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

در این کورس ما چندین پکیج پایتون استفاده میکنیم که در حل مسائل ماشین لرنینگ مفید هستن. ما قراره از pandas , numpy , matplotlib, scikit-learn استفاده کنیم:)

برای خوندن و دستکاری اطلاعات(Data ) از pandas ، برای محاسبات داده های عددی از numpy ، برای نشان دادن دیتا بصورت نمودار از matplotlib و برای ساخت مدل های ماشین لرنینگ از scikit-learn استفاده میکنیم.

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

همچنین بخاطر اینکه پایه ماشین لرنینگ آمار هست یکسری مباحث ساده آمار هم مرور خواهیم کرد.

"این کورس هم مسائل تئوری و هم عملی تکنیک ماشین لرنینگ رو پوشش میده، اما ما روی اینکه چطور اونها رو در مثال های واقعی استفاده کنیم تمرکز داریم"

ماشین لرنینگ چیست؟

در ماشین لرنینگ، ما درباره یادگیری تحت نظارت (supervised) و نظارت نشده (unsupervised) بحث میکنیم.

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

یادگیری نظارت نشده ( unsupervised learning ) زمانیه که اطلاعاتی در گذشته وجود نداره که جواب به ما بده؛ به زبان دیگر جواب ما در گذشته یافت نمیشه. برای مثال: مشخص کردن مباحثی که در بررسی یک رستوران راجع به اونها بحث میشه.

در این کورس ما تمرکزمون روی یادگیری نظارت شده ( تحت نظارت/supervised) هست. در یادگیری نظارت شده ما با مسائل رگرسیونی (Regression) و مسائل دسته بندی ( classification) روبرو هستیم.

"رگرسیون" درواقع به پیشبینی یک مقدار عددی گفته میشه؛ مثلا قیمتی که یه ویلا در اون فروش میره. و "دسته بندی" پیشبینی اینه که یه چیزی در چه دسته ای قرار میگیره؛ مثلا آیا این شخصی که اومد از ما وام گرفت، وامش رو برمیگردونه (دسته خوش قول ها که باید بهشون وام بدیم) یا سابقه ش ( همون past Data) نشون میده این آدم احتمال زیاد برنمیگردونه و به مشکل میخوریم باهاش( دسته بد قول ها)؟.

تمرکز ما بر روی مسائل دسته بندی هست.

مثال های ما مسائل زیر خواهند بود:

  • پیشبینی اینکه چه کسانی در غرق شدن تایتانیک جون سالم به در خواهند برد.
  • مشخص کردن یک عدد از روی دستخط یک نفر.
  • استفاده کردن از اطلاعات نمونه برداری بافتی ( بیوپسی/ biopsy) برای مشخص کردن اینکه آیا این توده سرطانی هست یا نه؟

سعی کنید دسته هارو در مثال های بالا پیدا کنید

ما قراره از یک سری تکنیک های محبوب برای حل این مشکلات استفاده کنیم.

در بخش های آینده با جزئیات بیشتری به هرکدومشون خواهیم پرداخت:

  • لاجیستیک رگرسیون ( Logistic Regression )
  • درخت های تصمیم گیری ( Decision Trees )
  • جنگل های تصادفی (Random Forests)
  • شبکه های نورونی ( Neural Networks)

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

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

مروری بر آمار

میانگین:

وقتی با اطلاعات سر و کار داریم لازمه که یک سری آمار ساده رو محاسبه کنیم.

فرض کنیم لیستی از سن افراد حاضر در یک کلاس رو داریم.

ما اونهارو برای محاسبه راحت تر به صورت صعودی مرتب کردیم.

“15, 16, 18, 19, 22, 24, 29, 30, 34”

میانگین (mean) رایج ترین شاخص مرکزگراست.

این مقادیر رو باهم جمع کنید و بر تعداد مقادیر تقسیم کنید:


میانه( median ) مقداری ست که در وسط قرار می گیرد. در این مورد، چون ما 9 تا مقدار داریم، مقدار میانه 5مین است که همان 22 است.


چارک ها

میانه همچنین میتونه به عنوان چارک 50 نیز در نظر گرفته بشه. این به این معنیه که 50 درصد دیتا از میانه کوچک تر و 50 درصد از میانه بزرگتره. این به ما میگه وسط داده ها کجاست ولی معمولا ما به درکی از پراکندگی دیتا نیاز داریم و واسه همین معمولا به چارک اول ( 25) و سوم ( 75) نگاه میکنیم.

چارک 25 اون مقداریه که در یک چهارم دیتا قرار داره ( ربع اولشه? ) و همچنین مقداریه که 25 درصدِ دیتا ازش کمتره و 75 درصدِ دیتا ازش بزرگتره.

مشابها، چارک 75 در سه چهارمِ دیتا قرار داره و 75 درصد دیتا ازش کوچیکتر و 25 درصد دیتا از اون بزرگتره.

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

15, 16, 18, 19, 22, 24, 29, 30, 34

ما 9 مقدار(value) داریم. پس 25% دیتا تقریبا میشه 2 داده (datapoint) پس سومین داده بزرگتر از 25 درصد اطلاعاته. پس، سومین داده چارک 25 ماست که میشه همون 18(داده سوم).

به طور مشابه، 75% دیتا تقریبا میشه 6 داده، پس داده 7م از75% دیتا بزرگتره و میشه چارک 75 که همون 29 هست (داده هفتم).

بازه کامل دیتا بین 15 و 34ه. چارک های 25 و 75 بهمون میگن که 50 درصد دیتا بین 18 و 29 قرار دارن. این بهمون کمک میکنه درک کنیم دیتا چطور پراکنده شده.

" اگر تعداد زوجی از داده ها بهتون داده شد، برای پیدا کردن میانه(یا همون چارک 50)، میانگین 2 داده وسطی رو بدست میارید"

انحراف معیار و واریانس

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

ما فاصله هر داده تا میانگین رو اندازه میگیریم.

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

15, 16, 18, 19, 22, 24, 29, 30, 34

یادتون باشه میانگینمون 23 ست.

بیاید حساب کنیم هر مقدارمون چقدر از میانگین فاصله داره. 15 8تا از میانگین فاصله داره.

این لیست تمام فاصله هاست:

8, 7, 5, 4, 1, 1, 6, 7, 11

ما این مقادیر رو به توان 2 میرسونیم و باهم جمع میکنیم:

نمونه مجذور فاصله اعداد از میانگین
نمونه مجذور فاصله اعداد از میانگین

ما این مقدار جدید ( 362) رو تقسیم بر تعداد داده هامون میکنیم و این به ما واریانس رو میده.

برای بدست آوردن انحراف معیار، ریشه این عدد بدست اومده رو حساب میکنیم و 6.34 بدست میاد.

اگر دیتامون بطور عادی مثل گراف زیر پراکنده شده باشه، 68% جمعیت در یک انحراف معیار از میانگین قرار دارن. در این گراف، ما منطقه ای که یک انحراف معیار از میانگین فاصله داره رو هایلایت کردیم. میتونید ببینید که منطقه هایلایت شده تقریبا دو سوم ( در واقع 68 درصد) منطقه زیر منحنی هست. اگر فرض کنیم دیتامون به طور عادی پخش شده باشه، میتونیم بگیم 68 درصد دیتامون در 1 انحراف معیار از میانگین قرار داره.

آمار با پایتون

ما میتونیم تمام این اعمال رو با پایتون حساب کنیم. ما از پکیج numpy استفاده میکنیم. ما بعدا از numpy برای دستکاری آرایه ها (array manipulation)استفاده خواهیم کرد ولی فعلا از چند تا تابع آماری برای محاسبات آماری استفاده میکنیم:

  • Mean
  • Median
  • Percentile
  • Std (انحراف معیار)
  • Var

اول پکیج رو import میکنیم. بسیار رایجه که اون رو به اسم npایمپورت کنید.

import numpy as np

بیاید اول دیتامون رو در قالب لیست داشته باشیم:

data = [15, 16, 18, 19, 22, 24, 29, 30, 34]

الان میتونیم از توابع numpy استفاده کنیم. برای میانگین، میانه، انحراف معیار و واریانس ما صرفا دیتا رو به عنوان لیست به تابع میدیم. اما واسه چارک باید لیست دیتا و چارک رو وارد کنیم ( عددی بین 0 تا 100 ).

Import numpy as np
data = [15, 16, 18, 19, 22, 24, 29, 30, 34]
print(“mean: ”, np.mean(data))
print(“median: “, np.median(data))
print(“75th percentile: “, np.percentile(data, 50))
print(“standard deviation: ”, np.std(data))
print(“variance : ” , np.var(data))