در این نوشته مهمترین موارد (یا گزیده) فصل اول کتاب hands on Machine learning with scikit-learn keras and tensor Flow بیان میشود:
فهرست فصل ها: (گیت هاب) و لینک دوم
1- ماشین لرنینگ و مدلهای آن
2- نحوه اجرای پروژه ماشین لرنینگ
3- classification
4- رگرسیون- training linear models
5-SVM
6- decision tree
7-random forest
8-dimension reduction
9-anomaly detection- unsupervised learning
10-ANN – شبکه عصبی
11-deep learning
12-tensorflow
13-load and process data
14-computer vision
15-rnn
16-cnn , nlp
17-aouto encoders and gans
18- reinforcement learning
19- train and deploy at scale
ماشین لرنینگ چیست؟
علم برنامه ریزی کامپیوترها که بتوانند از دیتا یاد بگیرند. برای مثال سیستمی که ایمیل اسپم را تشخیص میدهد، نمونه ای از کاربرد ماشین لرنینگ است. ماشین لرنینگ بویژه در موارد زیر کاربرد زیادی دارد:
1- مسائلی که راه حل آنها بسیار طولانی است و یا قوانین زیادی برای رسیدن به جواب باید اجرا شود.
2- حل مسائل قدیمی با راه حل های طولانی
3-محیطهای پویا؛ ماشین لرنینگ میتواند با داده جدید نیز خود را تطبیق دهد و جواب صحیح ارائه دهد.
4- در مسائلی که دیتای زیادی وجود دارد.
تا ص 35 از 851
مثال از کاربردهای ماشین لرنینگ:
1- آنالیز تصویر محصولات در خط خروجی کارخانه و دسته بندی آنها. این مورد را میتواند با image classificatin با استفاده از CNN به معنای convolutional neural networks حل نمود. (فصل 14 کتاب)
2- تشخیص تومور در مغز. (قابل حل با روش CNN)
3- دستهبندی اتوماتیک مقالات. این نمونهای از مسئله NLP و همچنین text classification است که میتوان آن را با استفاده از RNN به معنای recurrent neural networks یا CNN حل نمود. (فصل 16 کتاب)
4- خلاصه کردن متون بلند. (NLP و همچنین text classification )
5- علامت گذاری کامنتهای ممنوعه در شبکههای اجتماعی یا سایتها (NLP و همچنین text classification )
6- پیشبینی میزان سود شرکت در سال آینده
تا ص 37 از 851
سیستم توصیه گر یا Recommender systems
موتورهای توصیهگر زیرمجموعهای از روشهای یادگیری ماشین هستند که عموماً برای رتبهبندی محصولات یا کاربران استفاده میشوند. این سیستمها بیشتر توسط شرکتهای بزرگ مانند گوگل، اینستاگرام، اسپاتیفای، آمازون، ردیت، نتفلیکس برای افزایش تعامل با کاربران و پلت فرم استفاده میشوند. به عنوان مثال، Spotify آهنگهایی مشابه آهنگهایی را که بارها به آنها گوش دادهاید یا دوست داشتهاید را به شما توصیه میکند تا بهتر بتوانید از پلتفرم آنها برای گوش دادن به موسیقی استفاده کنید. یا سایت فروشگاهی آمازون از توصیههای این سیستم برای پیشنهاد محصولات به کاربران مختلف بر اساس دادههایی که برای آن کاربر جمع آوری کرده است، استفاده میکند.
انواع روشهای یادگیری ماشین:
بر اساس اینکه آیا انسان در یادگیری آنها نقشی دارد یا نه به چهار دسته اصلی به صورت زیر تعریف میشود:
1- supervised learning
2-unsupervised learning
3-semisupervised learning
4-Reiforcement learning
بر اساس اینکه به تدریج میزان یادگیری آنها افزایش یابد:
1- Online
2- Batch
بر اساس مقایسه نمونه جدید با دیتاهای قبلی و یا اینکه الگویی تشخیص داده شود و بر اساس آن یک مدل پیشگو طراحی شود:
1- instance Based
2- Model based
نکته: روشهای بیان شده ممکن است باهم ترکیب شوند. در ادامه هر روش را اندکی بیشتر بررسی میکنیم:
یک نمونه کاربرد روش Supervised learning در زمینه طبقهبندی است. برای مثال فیلتر اسپم در ایمیل نمونهای از کاربرد این روش است. در این روش ، الگوریتم با بسیاری از ایمیلهای نمونه همراه با نوع آنها (هرزنامه یا spam) آموزش داده شده است. و بعد از این مرحله یادگیری، الگوریتم باید یاد بگیرد که چگونه ایمیل های جدید را طبقه بندی کند.

نکته: چند عبارت هستند که ممکن است به جای هم به کار روند. Attribute و Feature و Predictors .
مهمترین الگوریتمهای Supervised:
مهمترین الگوریتمهایی که در این کتاب معرفی میشود به شرح زیر است:
- k-Nearest Neighbors
- Linear Regression
- Logistic Regression
- Support Vector Machines (SVMs)
- Decision Trees and Random Forests
- Neural networks
تا صفحه 39 از 851 کتاب
سیستم Unsupervised learning
در این روش، سیستم سعی میکند بدون معلم یادگیری را انجام دهد. در روش unsupervised دیتای training برچسب ندارد و بعبارتی (unlabled) هستند. در واقع سیستم سعی میکند بدون معلم یاد بگیرد. مهمترین روشهای نوع Unsupervised به شرح زیر هستند:
Clustering :
- — K-Means
- — DBSCAN
- — Hierarchical Cluster Analysis (HCA)
• Anomaly detection and novelty detection:
- — One-class SVM
- — Isolation Forest
• Visualization and dimensionality reduction
- — Principal Component Analysis (PCA)
- — Kernel PCA
- — Locally Linear Embedding (LLE)
- — t-Distributed Stochastic Neighbor Embedding (t-SNE)
— t-Distributed Stochastic Neighbor Embedding (t-SNE)
- Apriori
- — Eclat
به عنوان مثال، ممکن است بخواهید بازدید کنندگان یک وبلاگ را دسته بندی کنید. سیستم ممکن است متوجه شود که 40٪ از بازدیدکنندگان شما مردانی باشند که عاشق مطالب کمیک هستند و به طور کلی وبلاگ شما را عصرها میخوانند. در حالی که 20 درصد علاقهمند به مطالب علمی تخیلی باشند که معمولا در تعطیلات آخر هفته به بلاگ شما سر میزنند.
الگوریتم خوشهبندی، همچنین ممکن است هر گروه را به گروههای کوچکتر تقسیم کند. این ممکن است به شما کمک کند تا پستهای خود را برای هر گروه هدف قرار دهید.
تا ص 40 از 581
کاهش ابعاد
کاهش ابعاد دیتا با هدف کاهش بار محاسباتی و حجم اشغال شده توسط دیتا انجام میشود. در مسئله تخمین قیمت خودرو، برای مثال مقدار مسافت پیموده شده توسط خودرو با سال ساخت آن رابطه مستقیم دارد. بنابراین یکی از این دو مورد را میتوان حدف نمود.
تشخیص ناهنجاری یا anomaly detection
تشخیص مواردی از دیتا که به طرز غیرمعمولی تغییر مقدار داده باشند را Anomaly detection گویند. برای مثال تشخیص تراکنشهای غیرمعمولی در کارتهای اعتباری برای جلوگیری از کلاه برداری نمونهای از Anomaly detection است.
سیستم در هنگام یادگیری معمولا از دیتاهای نرمال تغذیه میکند و یاد میگیرد که آنها را تشخیص بدهد. بنابراین اگر یک نمونه جدید به آن داده شود (بعد از آموزش) میتواند بگوید که آیا دیتای درستی بوده است یا نه.

یادگیری نوع Semi supervised
از آنجا که تعیین نوع دادهها یا labeling یک امر زمانبر و پرهزینه است، گاهی میتوان از روشی موسوم به Semisupervised برای یادگیری ماشین استفاده نمود. به طوری که از کل دادهها تنها تعدادی را Label میزنیم. برخی الگوریتمها میتوانند فرآیند یادگیری را با این شرایط انجام دهند.

روش یادگیری Reinforcement Learning
این روش بر مبنای حرکت کردن و امتیاز مثبت یا منفی گرفتن ، کار میکند. به طوری که اگر حرکت مثبت انجام شود، پاداش میگیرید، و اگر حرکت اشتباهی انجام دهد ، جریمه میشود. به این ترتیب سیستم ما به تدریج قویتر میشود و رفته رفته بهترین استراتژی را پیدا میکند. به محیط انجام کار Agent میگویند. DeepMind’s AlphaGo نمونه خوبی از یادگیری reiforcement learning است.
یادگیری آفلاین و آنلاین
معیار دیگری که در تشخیص نوع یادگیری ماشین به کار میرود ، این است که آیا الگوریتم این توانایی را دارد که همزمان با دریافت نمونه جدید، یادگیری خود را به روز رسانی کند یا نه.
نوع Batch یا Offline
در این نوع از یادگیری الگوریتم قادر به به روز رسانی آموختههای قبلی خود نیست. آنچه که میداند از گذشته و همان یک باری است که توسط دیتاهای آموزشی ، آموزش دیده است. به این روش آفلاین میگویند.
اگر بخواهیم چند نمونه جدید در سیستم خود داشته باشیم که الگوریتم فعلی درمورد آن آموزش ندیده باشد، چارهای نداریم جز اینکه کل سیستم را دوباره آموزش دهیم که امری زمانبر و پرهزینه است.
نوع آنلاین:
در مقابل این نوع سیستم ، نوع آنلاین وجود دارد که برای مدیریت نمونههای جدید نیاز به آموزش مجدد کل سیستم وجود ندارد. برای سیستمهایی که جریان اطلاعات به صورت پیوسته وجود دارد، از این نوع الگوریتم استفاده میشود. برای مثال در بحث قیمت سهام و بازار بورس که قیمتها به صورت لحظهای به روز میشوند.
تا ص 47 از 581
چالشهای موجود در ماشین لرنینگ
bad algorithm و bad data دو مورد هستند که در ماشین لرنینگ چالش بحساب میآیند.
1- کم بودن تعداد دیتای آموزشی:
حتی در مسائل ساده نیز وجود هزاران دیتا برای یادگیری الزامی است.
2- دیتای آموزشی مناسب:
در شکل زیر نشان داده شده است که اگر دیتای آموزشی به صورت مطلوب از کشورهای مختلف انتخاب نشده باشد، خط چین آبی رنگ بعنوان معادله پیشبینی کننده معرفی خواهد شد. در صورتی که اگر نقاط قرمز (سایر کشورها) نیز در دیتای آموزشی قرار گیرند، خط مشکی بعنوان خط پیش بینی کننده خواهد بود. (که صحیح است). به این موضوع Nonrepresentative Training Data گویند که منظور چوشش دهنده بودن دیتای آموزشی می باشد.

3-Sampling Bias
مثال معروف آن پیش بینی انتخابات ریاست جمهوری آمریکا در سال 1936 بود. موضوع این بود که به حدود 10 میلیون نفر ایمیل ارسال شد و بر اساس آن نتایج انتخابات پیش بینی شد. بایاس در موارد زیر وجود داشت:
1- برای انتخاب نفرات برای ارسال پرسش نامه از مجلات ، لیست اعضای باشگاه ها و چند مورد دیگر استفاده شده بود که پوشش دهنده کل جامعه نبود.
2- از این تعداد تنها 25 درصد جواب داده بودند.
Poor-Quality Data
بخش زیادی از کار دیتاساینتیست ها به Data Cleaning میگذرد. از رایج ترین های poor Quality Data میتوان به موارد زیر اشاره کرد:
1- outliers
2- missing values
Irrelevant Features یا فیچر نامربوط
به بررسی این موضوع feature engineering گویند که شامل موارد زیر میشود:
- Feature selection که سعی میکند مهمترین فیچرها از میان فیچرهای موجود را انتخاب کند.
- Feature extraction که از ترکیب فیچرهای موجود برای تولید فیچر بهتر استفاده میکند.
- تولید فیچر جدید با جمع آوری دیتای جدید
الگوریتم بد:
Overfitting the Training Data یعنی زمانی که اگر دیتای آموزشی را بعنوان ورودی به سیستم بدهیم، هیچ گونه خطایی نداشته باشیم و تمام پیش بینیها درست باشند، اما در دیتای جدید نتوانیم پیشبینی درستی کنیم.
Underfitting the Training Data این مورد دقیقا برعکس مورد قبلی است. یعنی سیستم ما پیش بینی های بسیار اشتباهی دارد. برای حل این مسئله موارد زیر میتواند به اصلاح کمک کند:
1- انتخاب مدل بهتر با پارامترهای بیشتر
2- انتخاب فیچرهای بهتر برای آموزش دادن الگوریتم (feature engineering)
3- کاهش hyperparameters
تا ص 59
Testing and Validating
یک راه برای آزمایش کردن این است که مدل ساخته شده خود را روانه بازار کنیم و بر اساس نظر مشتریان، دقت آن را بسنجیم. اما این ممکن است برای ما هزینه زیادی داشته باشد. اما یک روش این است که دیتای موجود را به دو قسمت test و train تقسیم کنیم و با تعدادی از نمونه ها که سیستم تا کنون آن ها را ندیده است، سیستم خود را ارزیابی کنیم. و خطای موجود که به آن generalization error یا out of sample error میگویند را محاسبه کنیم.
اگر خطای ما در هنگام کار با دیتای train کم باشد، اما خطای generalization زیاد باشد ، یعنی سیستم دچار overfit شده است.
معمولا نسبت 80 درصد به 20 درصد بعنوان نسبت مطلوب برای مقدار دیتای test و train در نظر گرفته می شود. هرچند این عدد به تعداد داده ها بستگی دارد. برای مثال اگر کل داده ها برابر با 10 میلیون باشد، حتی اگر 1 درصد را برای داده test در نظر بگیریم، معادل 100000 نمونه خواهد بود که عدد بزرگی برای بدست آوردن مقدار خطای generalization است.
Hyperparameter Tuning and Model Selection
یکی از روشهای کاهش خطای generalization استفاده از مقادیر متعدد hyperparameter و انتخاب مدلی است که کمترین خطا را دارد. گاهی ممکن است خطای generalization ما در حدود 5 درصد باشد اما در دیتای واقعی این مقدار به 15 درصد برسد. دلیل ممکن است که به دفعات مقدار خطای generalization را روی یک دیتا ست اندازه گیری کرده و مدل با کمترین خطا را انتخاب کرده ایم. این دلیلی نمیشود که مدل انتخابی بر روی دیتای واقعی نیز مقدار خطای مشابهی داشته باشد.
یک روش مناسب براب حل این مسئله به نام holdoud validation وجود دارد. در این روش یک دیتاست را کنار میگذاریم (هلد اوت میکنیم) و با آن هر تعداد مدل را که بخواهیم ارزیابی میکنیم و بهترین را انتخاب میکنیم.
اطلاعات بیشتر: صفحه 61
پایان فصل اول