مترجم : آزاده رضازاده همدانی

ویدئوهای آموزش یادگیری ماشین یا پایتون [کلیک کنید]

در دنباله آموزش­های یادگیری ماشین, مثال رگرسیون بر روی داده­های ارزش سهام را ادامه می­دهیم: کدهایی که در مرحله قبل نوشتیم به صورت زیر است:

در ادامه باید تعدادی از کتابخانه­ها را import کنیم:

·         numpy: داده ها را به آرایه ( numpy Array ) تبدیل کرده تا بتوان آنها را در اختیار scikit-learn قرار داد.

·         ماژول پیش پردازش Preprocessing و اعتبارسنجی CrossValidation: که بیشتر در طول کدنویسی در مورد آنها توضیح خواهیم داد. اما به طور خلاصه کافی است بدانید که پیش پردازش, مرحله پاکسازی و مقیاس بندی داده­ها قبل از شروع عملیات یادگیری ماشین و اعتبار سنجی فاز آزمایش نتایج حاصل از اجرای الگوریتم یادگیری ماشین است.

·         الگوریتم linear Regression : همان الگوریتم رگرسیون خطی است.

·         Svm: الگوریتم یادگیری ماشین به کار رفته برای نمایش نتایج

تا این مرحله داده­های سودمند را دریافت کرده­ایم اما واقعا یادگیری ماشین چگونه کار میکند؟ در یادگیری بانظارت, مجموعه­ای از ویژگی­ها Features و برچسب­ها Labels را داریم. ویژگی­ها, خصوصیات توصیفی هر نمونه و برچسب, کلاسی است که در واقع نمونه به آن تعلق دارد و قرار است توسط یادگیری ماشین, پیش­بینی شود.  یکی از مثال­های رایج در رگرسیون, پیش­ بینی ارزش حق بیمه اشخاص است. شرکت بیمه اطلاعاتی از جمله سن, سوابق تخلفات رانندگی, سوابق سوء پیشینه و میزان اعتبار بانکی شخص را جمع آوری میکند. البته این داده­ها را از طریق اطلاعات مشتریان گذشته دریافت کرده تا حق بیمه مطلوب را پیش بینی نماید. در این مثال مشخصات هر مشتری به عنوان ویژگی­ها و حق بیمه به عنوان برچسب مرتبط با هر مشتری در نطر گرفته می­شود.

در مورد مثال بالا ویژگی­ها و برچسب چگونه تعیین می­شود؟ از آنجایی که هدف پیش بینی قیمت است آیا قیمت به عنوان برچسب در نطر گرفته می­شود؟ ویژگی­ها چطور؟ ویژگی­ها عبارتند از : قیمت فعلی, درصد high-low و درصد نوسانات تغییرات. قیمت آینده Future price به عنوان برچسب در این مثال در نظر گرفته می­شود.

حال کمی جلوتر برویم و خطوطی جدید را اضافه نماییم:

در اینجا ابتدا ستونی را به عنوان ستون پیش بینی(forecast_col) تعیین می­کنیم. سپس کلیه مقادیر نامعتبر NAN(not a number) را با مقدار99999-  جایگزین می­نماییم. از آنجایی که نمیتوان یک داده ناقص با مقادیر نامعتبر را به دسته­بند یادگیری ماشین ارسال کرد لذا راهکار­های متعددی برای حذف داده­های ناقص وجود دارد. از جمله: جایگزینی مقادیر نامعتبر با مقدار 99999-  که داده را به منزله یک داده پرت تلقی می­کند. و همچنین حذف کلیه داده­های ناقص. اما این کار احتمال از دست دادن حجم عطیمی از اطلاعات مفید را ایجاد می­کند.

بر خلاف مجموعه داده مربوط به ارزش و تعداد سهام که شامل داده­های کامل و بدون نقصی می­باشد, مجموعه داده­های دنیای واقعی بسیار ناقص و نامعتبر و یا به اصطلاح کثیف Messy می­باشند. اما شما لزوما نیازی به تضمین صحت همه داده­ها نخواهید داشت و حتی میتوانید شرط ببندید که داده­های واقعی مورد استفاده در الگوریتم یادگیری ماشین حتما دارای نقص­هایی می­باشند. بنابراین باید مراحل آموزش و آزمایش نتایج را به ظور زنده بر روی داده­های واقعی یکسان با تمام ویژگی­های آنها انجام داد.

در نهایت تعداد مواردی که میخواهیم پیش­بینی کنیم تعیین می­شود (forecast_out) .در بسیاری موارد به طور مثال پیش بینی حق بیمه, "در همان لحظه", تنها به یک عدد نیاز داریم درحالی که اصولا بدنبال پیش­بینی تعداد مشخصی از داده­ها هستیم.  معمولا هدف, پیش بینی %1  تعداد کل رکورد­های موجود در دیتاست در آینده است. این بدین معنی است که مثلا با داشتن 100 روز ارزش سهام ,هدف, پیش بینی ارزش سهام در یک روز آینده است. پس آنچه ا که می­خواهید, مشخص کنید! اگر تمایل به پیش بینی قیمت فردا را دارید مقدار forecast-out=1 خواهد بود. و اگر مقدار forecast-out=10 باشد یعنی شما قابلیت پیش بینی قیمتها تا ده روزآینده (یک هفته و نیم آینده) را خواهید داشت.

در مثال اولیه مجموعه ای از مقادیر فعلی را به عنوان ویژگی و قیمت آینده (منظور از آینده %1  تعداد داده­های موجود در دیتاست می­باشد )را به عنوان برچسب در نظر گرفتیم. از آنجایی که همه ستون­های فعلی را به عنوان ویژگی در نظر گرفته ایم لذا با یک عملیات ساده موجود در کتابخانه pandas , ستونی جدید برای برچسب ایجاد می نماییم.

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