پروژه یادگیری ماشین - رگرسیون
پروژه یادگیری ماشین - رگرسیون
علمی
02 / 09 / 1399
نویسنده: مهدی زارع

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

اطلاعات بیشتر در مورد یادگیری ماشین را از اینجا بخوانید.

به طور کلی یادگیری ماشین به سه دسته عمده تقسیم میشود:

1. یادگیری نظارت شده

2. یادگیری بدون نظارت

3. یادگیری تقویتی

پروژه های این مقاله در حوزه یادگیری نظارت شده می باشد.

در ادامه میتوانید الگوریتم های پیاده سازی شده را به همراه جزئیات سه پروژه مشاهده کنید.

 

پیاده سازی الگوریتم ها:

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

پیاده سازی الگوریتم ها با یک ایده کلی انجام شده است: پیاده سازی دو مدل از یادگیری نظارت شده (رگرسیون لجستیک و رگرسیون خطی) در یک کلاس واحد. تمامی الگوریتم ها در یک ماژول قرار گرفته اند. از جمله الگوریتم های نوشته شده میتوان به موارد زیر اشاره کرد:

- مرحله پیش پردازش : الگوریتم های استاندارد سازی, نرمال سازی , تقسیم داده های آموزشی و تست و...

- الگوریتم های بهینه سازی : گرادیان کاهشی , معادله نرمال.

- سایر الگوریتم ها : توابع فرضیه , هزینه.

- توابع خطا یاب  : این توابع به درستی پردازش الگوریتم ها نظارت میکنند.

از این الگوریتم ها در پروژه های این مقاله استفاده شده است.

 

پروژه ها:

1. تخمین و پیش بینی انتشار گاز دی اکسید کربن ماشین های سواری

در اینجا هدف ما پیش بینی میزان انتشار گاز دی اکسید کربن خودرو های سواری با استفاده از یک پایگاه داده چند ماشین سواری در کانادا میباشد. این پایگاه داده، حاوی ویژگی هایی مانند تعداد سیلندر، حجم موتور، نام شرکت سازنده، مدل خودرو و... است. با بررسی ویژگی های خودرو های مختلف، به الگویی دست پیدا میکنیم که میتواند میزان انتشار گاز دی اکسید کربن را برای ماشین های جدید پیش بینی کند . قبل از شروع آموزش، کمی پایگاه داده را تحلیل میکنیم. در این مثال، صرفا یک تحلیل نموداری شامل نمودار های زیر ارائه شده است:

1.  نمودار هیستوگرام

2. نمودار میله ای

3. نمودار پراکندگی

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

2. دسته بندی دانش آموزان بر اساس نمراتشان

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

3. تحلیل و پیش بینی داده های بانک

بانک ها همواره با تحلیل داده ها سر و کار دارند. آن ها همیشه به دنبال یافتن الگوهای رفتاری مشتریان خود هستند تا بتوانند بهترین خدمات را به آن ها ارائه نمایند. از این رو در هر بانکی یک تیم علم داده وجود دارد که اطلاعات مشتریان را بررسی کرده و الگوهای آن ها را در می یابند. در این مثال به بخش سپرده گذاری بانکی پرداخته ایم. هدف ما این است که متوجه شویم با چه احتمالی یک مشتری بانک امکان دارد در همان بانک سپرده گذاری کند. برای این منظور از یک پایگاه داده شامل اطلاعات 45 هزار مشتری یک بانک پرتغالی در سال 2012 استفاده کرده ایم. این اطلاعات شامل سن ، شغل ، تحصیلات ، موجودی و... مشتریان می باشد.

 

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

1. دریافت اطلاعات جامع پایگاه داده ( تعداد داده ها، تعداد ویژگی ها، نام ویژگی ها، نوع متغیر ها، اطلاعات آماری ویژگی ها مانند میانگین و تعداد و چارک ها، نمایش سه داده اول و آخر و...)

2. گروه بندی پایگاه داده بر اساس یک ویژگی خاص و سپس بررسی آماری پایگاه داده:

به عنوان مثال کل پایگاه داده را بر اساس مشاغل مختلف گروه بندی میکنیم و سپس میانگین سایر ویژگی ها را حساب میکنیم. مثلا میانگین موجودی حساب معلمان

3. بررسی تعداد و پراکندگی برخی از ویژگی ها:

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

4. نمودار هیستوگرام برخی از ویژگی ها

5. نمودار دایره ای پراکندگی مقادیر مختلف هر ویژگی به همراه درصد

6. بررسی میزان سپرده گذاری دسته های مختلف.

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

این کار به صورت نموداری نیز انجام شده است.

پس از بررسی پایگاه داده، نوبت به ساخت و آموزش مدل یادگیری ماشین می باشد.

نکته: به دلیل کند بودن الگوریتم گرادیان کاهشی، آموزش مدل را با استفاده از کتابخانه های آماده یادگیری ماشین انجام داده ایم.

 

مراحل آموزش مدل:

- پیش پردازش :

1. تبدیل ویژگی های غیر عددی به عددی:

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

2. انتخاب 25 ویژگی موثر تر:
انتخاب ویژگی های موثر تر به سرعت یادگیری کمک شایانی میکند. به عنوان مثال در بحث سپرده گذاری، میزان تاثیر موجودی حساب یک فرد، بسیار بیشتر تاثیر تاریخ افتتاح حساب او در بانک می باشد. بنابراین سعی میکنیم که فقط ویژگی هایی را پردازش نماییم که تاثیر بیشتری بر سپرده گذاری افراد دارند. البته این کار ممکن است کمی دقت یادگیری را کاهش دهد.

3. استاندارد سازی داده ها:

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

4. تقسیم داده ها به مجموعه آموزش و مجموعه تست

5. تبدیل پایگاه داده بانک از یک پایگاه داده نامتوازن به یک پایگاه داده متوازن.

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

- آموزش:

6. انتخاب مدل رگرسیون لجستیک:
با توجه به اینکه این مسئله از نوع کلاس بندی دو کلاسی می باشد، از رگرسیون لجستیک استفاده کرده ایم. رگرسیون لجستیک برای دسته بندی دو کلاسی و یا چند کلاسی استفاده می شود.

7. آموزش داده های مجموعه آموزشی

8. پیش بینی داده های جدید ( داده های تست)

9. بررسی دقت پیش بینی

 

تمامی فایل های پروژه را می توانید از اینجا مشاهده کنید.

https://github.com/ThisIsMahdiZare/machineLearning_f

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

اطلاعات بیشتر در مورد یادگیری ماشین را از اینجا بخوانید.

به طور کلی یادگیری ماشین به سه دسته عمده تقسیم میشود:

1. یادگیری نظارت شده

2. یادگیری بدون نظارت

3. یادگیری تقویتی

پروژه های این مقاله در حوزه یادگیری نظارت شده می باشد.

در ادامه میتوانید الگوریتم های پیاده سازی شده را به همراه جزئیات سه پروژه مشاهده کنید.

 

پیاده سازی الگوریتم ها:

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

پیاده سازی الگوریتم ها با یک ایده کلی انجام شده است: پیاده سازی دو مدل از یادگیری نظارت شده (رگرسیون لجستیک و رگرسیون خطی) در یک کلاس واحد. تمامی الگوریتم ها در یک ماژول قرار گرفته اند. از جمله الگوریتم های نوشته شده میتوان به موارد زیر اشاره کرد:

- مرحله پیش پردازش : الگوریتم های استاندارد سازی, نرمال سازی , تقسیم داده های آموزشی و تست و...

- الگوریتم های بهینه سازی : گرادیان کاهشی , معادله نرمال.

- سایر الگوریتم ها : توابع فرضیه , هزینه.

- توابع خطا یاب  : این توابع به درستی پردازش الگوریتم ها نظارت میکنند.

از این الگوریتم ها در پروژه های این مقاله استفاده شده است.

 

پروژه ها:

1. تخمین و پیش بینی انتشار گاز دی اکسید کربن ماشین های سواری

در اینجا هدف ما پیش بینی میزان انتشار گاز دی اکسید کربن خودرو های سواری با استفاده از یک پایگاه داده چند ماشین سواری در کانادا میباشد. این پایگاه داده، حاوی ویژگی هایی مانند تعداد سیلندر، حجم موتور، نام شرکت سازنده، مدل خودرو و... است. با بررسی ویژگی های خودرو های مختلف، به الگویی دست پیدا میکنیم که میتواند میزان انتشار گاز دی اکسید کربن را برای ماشین های جدید پیش بینی کند . قبل از شروع آموزش، کمی پایگاه داده را تحلیل میکنیم. در این مثال، صرفا یک تحلیل نموداری شامل نمودار های زیر ارائه شده است:

1.  نمودار هیستوگرام

2. نمودار میله ای

3. نمودار پراکندگی

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

2. دسته بندی دانش آموزان بر اساس نمراتشان

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

3. تحلیل و پیش بینی داده های بانک

بانک ها همواره با تحلیل داده ها سر و کار دارند. آن ها همیشه به دنبال یافتن الگوهای رفتاری مشتریان خود هستند تا بتوانند بهترین خدمات را به آن ها ارائه نمایند. از این رو در هر بانکی یک تیم علم داده وجود دارد که اطلاعات مشتریان را بررسی کرده و الگوهای آن ها را در می یابند. در این مثال به بخش سپرده گذاری بانکی پرداخته ایم. هدف ما این است که متوجه شویم با چه احتمالی یک مشتری بانک امکان دارد در همان بانک سپرده گذاری کند. برای این منظور از یک پایگاه داده شامل اطلاعات 45 هزار مشتری یک بانک پرتغالی در سال 2012 استفاده کرده ایم. این اطلاعات شامل سن ، شغل ، تحصیلات ، موجودی و... مشتریان می باشد.

 

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

1. دریافت اطلاعات جامع پایگاه داده ( تعداد داده ها، تعداد ویژگی ها، نام ویژگی ها، نوع متغیر ها، اطلاعات آماری ویژگی ها مانند میانگین و تعداد و چارک ها، نمایش سه داده اول و آخر و...)

2. گروه بندی پایگاه داده بر اساس یک ویژگی خاص و سپس بررسی آماری پایگاه داده:

به عنوان مثال کل پایگاه داده را بر اساس مشاغل مختلف گروه بندی میکنیم و سپس میانگین سایر ویژگی ها را حساب میکنیم. مثلا میانگین موجودی حساب معلمان

3. بررسی تعداد و پراکندگی برخی از ویژگی ها:

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

4. نمودار هیستوگرام برخی از ویژگی ها

5. نمودار دایره ای پراکندگی مقادیر مختلف هر ویژگی به همراه درصد

6. بررسی میزان سپرده گذاری دسته های مختلف.

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

این کار به صورت نموداری نیز انجام شده است.

پس از بررسی پایگاه داده، نوبت به ساخت و آموزش مدل یادگیری ماشین می باشد.

نکته: به دلیل کند بودن الگوریتم گرادیان کاهشی، آموزش مدل را با استفاده از کتابخانه های آماده یادگیری ماشین انجام داده ایم.

 

مراحل آموزش مدل:

- پیش پردازش :

1. تبدیل ویژگی های غیر عددی به عددی:

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

2. انتخاب 25 ویژگی موثر تر:
انتخاب ویژگی های موثر تر به سرعت یادگیری کمک شایانی میکند. به عنوان مثال در بحث سپرده گذاری، میزان تاثیر موجودی حساب یک فرد، بسیار بیشتر تاثیر تاریخ افتتاح حساب او در بانک می باشد. بنابراین سعی میکنیم که فقط ویژگی هایی را پردازش نماییم که تاثیر بیشتری بر سپرده گذاری افراد دارند. البته این کار ممکن است کمی دقت یادگیری را کاهش دهد.

3. استاندارد سازی داده ها:

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

4. تقسیم داده ها به مجموعه آموزش و مجموعه تست

5. تبدیل پایگاه داده بانک از یک پایگاه داده نامتوازن به یک پایگاه داده متوازن.

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

- آموزش:

6. انتخاب مدل رگرسیون لجستیک:
با توجه به اینکه این مسئله از نوع کلاس بندی دو کلاسی می باشد، از رگرسیون لجستیک استفاده کرده ایم. رگرسیون لجستیک برای دسته بندی دو کلاسی و یا چند کلاسی استفاده می شود.

7. آموزش داده های مجموعه آموزشی

8. پیش بینی داده های جدید ( داده های تست)

9. بررسی دقت پیش بینی

 

تمامی فایل های پروژه را می توانید از اینجا مشاهده کنید.

https://github.com/ThisIsMahdiZare/machineLearning_f