مرکز آموزش و رقابت برنامه نویسی پایتون

۵ مطلب با کلمه‌ی کلیدی «یادگیری ماشین با پایتون» ثبت شده است

رگرسیون – ویژگی ها و برچسب ها

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

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

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

در ادامه باید تعدادی از کتابخانه­ها را 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 , ستونی جدید برای برچسب ایجاد می نماییم.

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


۰ نظر موافقین ۰ مخالفین ۰

آموزش یادگیری ماشین با پایتون- مقدمه ای بر رگرسیون

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

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


پیشنیاز : Scikit-learnو Pandas, matplotlib

(اگر نسخه علمی  از پیش کامپایل شده پایتون مثل ACtivePython را ذز اختیار دارید پس نیازی به نصب کتابخانه­های numpy,Scipy,Scikit-learn,Matplotlib,pandas نیست در غیر این صورت آنها را به صورت جداگانه نصب نمایید)

همچنین علاوه بر نصب کتابخانه­های فوق , کتابخانه quandl  را نیز نصب نمایید. (به qو یا Q هنگام import کتابخانه quandl توجه نمایید!!)

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

با داشتن معادله خط میتوان داده­های جدیدی که درآینده دریافت می­شوند را تخمین و پیش بینی نمود. به طور مثال فرض کنید در شکل بالا محور افقی نشاندهنده زمان (تاریخ) و محور Y عمودی نشان دهنده قیمت باشد. بنابراین با داشتن معادله خط می­توان قیمتها را در اینده پیش بینی نمود.

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

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

از آنجایی که مثال پرکاربرد رگرسیون, پیش بینی ارزش سهام است پس می­توان با مثال زیر شروع کرد:

در ابتدا به داده احتیاج داریم. گاهی اوقات بدست آوردن این داده­ها کار آسانی است اما گاهی باید اطلاعات مدنظر خود را از بین داده­های موجود بیرون کشید مشابه کاری که در این مثال انجام شده است:  

در اینجا از اطلاعات ساده موجود پیرامون ارزش و تعداد سهام در کتابخانه Quandle استفاده خواهیم کرد که قبلا توسط google جمع آوری شده است.

در متن بالا Q در کلمهQuandle  باید با حروف کوچک نوشته شود.

در حال حاضر این اطلاعات در اختیار ماست: همانطور که مشاهده می­کنید حجم آنها برای شروع کمی زیاد است.

همانطور که قبلا در مقدمه هم توضیح داده شد, در یادگیری ماشین بخشی وجود دارد که هدف آن کاهش میزان داده­های ورودی است. در این مثال خاص چند ستون داریم که بسیاری ازآنها زاید و تکراری بوده و تنها یک زوج از آنها ثابت بوده و تغییر نمیکند. احتمالا همه با این موضوع موافقیم که داشتن همزمان داده های Regular و داده­های Adjusted امر مطلوبی نیست. ستون­­های Adjasted مطلوبترین اطلاعات را در اختیار ما قرار می­دهند در حالی که ستونهای regular حاوی اطلاعات روزانه بوده که شاید خیلی مفید نباشند. مثلا سهام دارای بخشی به نام stock splits(تقسیم سهام) میباشد که ممکن است یک سهم به 2 سهم تقسیم شود و ارزش سهام نصف شده در حالی که ارزش آن شرکت نصف نشود. ستون­های adjusted به مرور و در گذر زمان برای stock splits تنظیم می­شوند از اینرو به منظور تحلیل داده­ها بسیار قابل اعتمادتر هستند. حالا بهتر است کمی پیش برویم و نمونه کوچکی از داده ها را دقیق تر بررسی کنیم:

دراینجا فقط ستون­های adjusted و همچنین ستون volume (تعداد سهام )راداریم. لازم است پیرامون نکاتی مهم بحث شود:

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

·         شما به داده های با معنی احتیاج دارید. حال چگونه متوجه خواهید شد که این داده­ها با معنی هستند یا خیر؟ بهترین پاسخ برای این سوال این است که از فکر و مغز خود استفاده کنید و در مورد آن فکر کنید.

·         آیا قیمت­های گدشته نشان­دهنده قیمتهای آینده هستند؟ بعضی از افراد اینگونه فکر میکنند اما در گذر زمان  ثابت شده است که این تصور اشتباه است.

·         الگو­های گذشته چطور؟ آیا در پیش­بینی آینده موثر هستند؟ این نظریه تا حدودی می­تواند خوب باشد اما در کل هنوز ضعیف است.

·         در راستای بررسی الگوهای گدشته, آیا بررسی روابط بین تغییرات ارزش سهام و تعداد سهام (volume) در طول زمان به پیش­بینی ارزش سهام در آینده کمک خواهد کرد؟بله این دیدگاه تا حدودی نسبت به نظرات قبلی بهتر شده است.

پس همانطور که می­بینید داشتن داده بیشتر به منزله بهتر بودن داده نیست و هدف در یادگیری ماشین کسب مفیدترین داده­ها می­باشد. بدین منظور گاهی نیازاست تاتغییراتی بر روی اطلاعات خام اولیه صورت پذیرد.

میزان نوسانات روزانه مثلا کمترین تغییرات رادر نطر بگیرید. به نظر شما بهتر است داده ها به سادگی مطرح شده (Open, High, Low, Close)و یا به صورت نوسانات و درصد تغییرات( Close, Spread/Volatility, %change )؟ تصور من این است درصد تغییرات اطلاعات مفیدتری را به ما می­دهد.

بنابراین همانگونه که تاکنون مشاهده کردید همه داده­های موجود اطلاعات مفیذی را در اختیار شما قرار نمیدهند, بلکه باید قبل از در اختیار گذاشتن داده ها به صورت ورودی الگوریتم یادگیری ماشین, تغییراتی را بر روی آنها انجام دهید.

در این بخش مقدار (high-low)/low*100 محاسبه می­شودکه نشان­دهنده درصد انتشار بر اساس ارزش close  بوده و میزان نوسانات را اندازه­گیری می­کند:

در انتها درصد تغییرات روزانه محاسبه می­شود:

و چهار ستون زیر نمایش داده می­شود:

 


۰ نظر موافقین ۰ مخالفین ۰

دوره یادگیری ماشین با پایتون

به عنوان یکی از شاخه‌های وسیع و پرکاربرد هوش مصنوعی، یادگیری ماشین (Machine learning) به تنظیم و اکتشاف شیوه‌ها و الگوریتم‌هایی می‌پردازد که بر اساس آنها رایانه‌ها و سامانه‌ها توانایی تعلٌم و یادگیری پیدا می‌کنند

هدف یادگیری ماشین این است که کامپیوتر (در کلی‌ترین مفهوم آن) بتواند به تدریج و با افزایش داده‌ها کارایی بهتری در انجام وظیفه مورد نظر پیدا کند. گستره این وظیفه می‌تواند از تشخیص خودکار چهره با دیدن چند نمونه از چهره مورد نظر تا فراگیری شیوه گام‌برداری روبات‌های دوپا با دریافت سیگنال پاداش و تنبیه باشد.

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

در حوزه تحلیل داده، یادگیری ماشین و علم داده نیز، استفاده از پایتون بسیار قابل توجه است به طوری که این زبان پرکاربردترین زبان در حوزه علم داده و یادگیری ماشین می باشد:

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

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

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

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

📘 حجم کل جلسات : 3 GB

📘 زمان کل جلسات : 16 ساعت

📘 میزان تخفیف : 10000 تومان

📘 کد تخفیف (با حروف کوچک وارد کنید) : mchntwo

۰ نظر موافقین ۰ مخالفین ۰

نمودارهای مقایسه ای زبان های برنامه نویسی در حوزه یادگیری ماشین


۰ نظر موافقین ۰ مخالفین ۰

راهنمای سریع (Cheat Sheet) دستورهای پایتون برای علم داده - Scikit Learn

برای دانلود راهنمای سریع (Cheat Sheet) دستورهای پایتون برای علم داده میتوانید از طریق لینک زیر اقدام کنید.

دانلود


۰ نظر موافقین ۰ مخالفین ۰