فصل دوم- End-to-End Machine Learning Project

در این نوشته ترجمه و تلخیص فصل دوم از کتاب زیر را آورده ام:

hands_on_Machine_Learning_with_Scikit_Learn,_Keras,_and_TensorFlow

فصل اول را در این نوشته بخوانید.

در این فصل فرض میشود که شما در یک شرکت مشغول به کار شده اید و میخواهید یک مسئله ماشین لرنینگ را حل کنید.

مراحل انجام پروژه ماشین لرنینگ:

آنچه باید انجام دهید به شرح زیر است:

  • دیدن big picture
  • دریافت اطلاعات
  • visualize کردن برای داشتن دید بهتر
  • آماده کردن دیتا برای الگوریتم ماشین لرنینگ
  • انتخاب مدل و آموزش دادن آن
  • تنظیمات نهایی مدل
  • ارائه راه حل
  • لانچ کردن روی دیتا- مانیتور کردن -نگهداری سیستم

معرفی منابع دیتای واقعی برای یادگیری ماشین لرنینگ:

در هنکام یادگیری ماشین لرنینگ بهتر است با دیتاهای واقعی یادگیری صورت گیرد. در زیر چند لینک که دیتاهای واقعی در آن وجود دارد معرفی می شود:

۱- دانشگاه ایرواین

۲-دیتا ستهای kaggle

۳- دیتا ستهای AWS آمازون

۴- دیتاست های ویکی پدیا -(عالی)

۵- دیتاستهای Quora

۶-دیتا ستهای reddit

در این فصل به سراغ دیتاست معروف California Housing Prices میرویم.

Look at the Big Picture

برخی از دیتاهایی که در این مسئله وجود دارد عبارتند از:

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

Pipeline چیست؟

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

Select a Performance Measure

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

m در فرمول بالا برابر با تعداد نمونه ها می باشد که بر اساس آن RMSE را محاسبه میکنیم. برای مثال اگر تعداد نمونه های ما ۲۰۰۰ باشد. m نیز برابر با ۲۰۰۰ خواهد بود.

x(i) بردار مقادیر feature میباشد. که مربوط به نمونه i ام در دیتاست می باشد.

y(i) برابر برچسب آن می باشد. (آنچه که دوست داریم مقادیر پیش بینی ما به آنها نزدیک باشد.)

فرض کنید داریم در مورد ناحیه یک کالیفرنیا صحبت میکنیم. فرض کنید طول و عرض جغرافیایی آن -۱۱۸٫۲۹ درجه و ۳۳٫۹۱ درجه باشد. جمعیت آن ۱۴۱۶ نفر باشد و متوسط درآمد آنها ۳۸۳۷۲ دلار باشد و متوسط قیمت خانه برابر ۱۵۶۴۰۰ دلار باشد.(به بقیه features فعلا کاری نداریم.):

و

X ماتریسی شامل تمام Features ها می باشد

h همان مقدار پیش بینی شده سیستم ما می باشد. که به آن Hypothesis میگویند.

روش RMSE معمولا در حالات Regression استفاده می شود. در حالات دیگر ممکن است از روش های دیگری استفاده کرد. برای مثال اگر تعداد Outlier های ما زیاد باشد از Mean absolute error استفاده میکنیم. که به آن Average Absolute Error نیز گفته می شود. که فرمول آن را در زیر میبینید:

هر دوی RMSE و MAE برای ما اختلاف بین Predictions و target values را حساب میکنند.

دریافت دیتا:

از این لینک میتوانید دیتا را از github دریافت کنید.

ساخت محیط virtual در ویندوز با استفاده از powershell :

ابتدا دستور زیر را وارد میکنیم که باعث میشود یک فولدر ساخته شود که بیس محیط مجازی ما می باشد:

python -m venv strumer_env

حال با دستور زیر آن را فعال میکنیم:

Scripts\activate.bat

یعنی به فولدر Scripts رفته و فایل اجرایی موسوم به activate.bat را فعال میکنیم.

Download the Data

lمعمولا دیتایی که باید روی آن کار کنیم ، در یک دیتا بیس یا در یک فایل CSV قرار دارد.

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

برنامه ای که این کار را انجام میدهد به شرح زیر است:

زمانی که تابع راfetch_housin_data را فراخوانی میکنیم، باعث میشود دایرکتوری datasets/housing ساخته شود، فایل با پسوند .tgz دانلود و extract شود . حال میخواهیم با استفاده از pandas به لود دیتا بپردازیم:

تابع بالا دیتا را با فریم پاندا به ما برمیگرداند.

Take a Quick Look at the Data Structure

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

هر ردیف مربوط به یک منطقه می باشد. هر ردیف دارای ۱۰ ویژگی (Attributes) می باشد که ۶ تای آن در شکل مشخص است. با تابع info میتوان به اطلاعات تکمیلی بیشتری دست پیدا کرد:

برای مثال میتوان فهمید که ما ۲۰۶۴۰ نمونه در دیتاست خود داریم. این برای مسئله ماشین لرنینگ مقداری کم است. اما برای شروع خوب است. باید دقت کرد که تنها ۲۰۴۳۳ مورد از کل موارد ، اطلاعات total_bed_rooms را دارند. (ما بقی ندارند. null values) و این یعنی ۲۰۷ مورد از آنها در این Feature ناقص هستند. که باید فکری به حال آن بکنیم.

همه ویژگی ها ، از نوع عددی (Numerical ) هستند. به جز Ocean_proximity که نوع آن object می باشد. بنابر این میتواند هر نوع شی از اشیاء موجود در پایتون را به خود اختصاص دهد. از آنجا که کل این دیتا را یک فایل CSV دریافت کرده ایم، میدانیم که همه از نوع Text هستند. زمانی که به ۵ ردیف بالایی دیتا نگاه میکنیم میبینیم که در دیتای مربوط به Ocean_Proximity موارد تکراری مشاهده می شود . و این یعنی با یک ویژگی از نوع Categorical روبرو هستیم.

با دستور زیر میتوانیم متوجه شویم که چه گروه هایی (Categories) در دیتای ما وجود دارند و به هر گروه چه تعداد از مناطق کالیفرنیا تعلق دارند:

یعنی ۹۱۳۶ تا از کل نمونه ها بیش از یک ساعت از ساحل فاصله دارند .۶۵۵۱ مورد در ناحیه inland هستند و…

حال با تابع Describe نگاه کلی به دیتای خود می اندازیم:

مشخص است که دارد میگوید میانگین و ماکس و min چقدر هستند. و نیزباید توجه داشت که موارد null values نادیده گرفته شده اند. برای مثال تعداد Totallbedrooms برابر ۲۰۴۳۳ تا می باشد و نه ۲۰۶۴۰ تا.

STD همان Standard deviation می باشد. که نشان میدهد پراکندگی دیتاها تا چه حد می باشد.

با ذکر مثال در مورد ۲۵ و ۵۰ و ۷۵ درصد توضیح می دهیم:

برای مثال ۲۵ درصد مناطق ، دارای خانه های با عمر کمتر از ۱۸ سال هستند ۵۰ درصد مناطق دارای خانه های با عمر کمتر از ۲۹ سال و ۷۵ درصد آنها دارای خانه های با عمر کمتر از ۳۷ سال هستند. به این درصدها ربع اول و دوم و سوم میگویند.

یک روش سریعتر برای مشاهده رفتار داده ها استفاده از پلات هیستوگرام می باشد.

ص ۷۸

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *