نحوه استفاده از بهینه سازی یادگیری ماشین برای علائم تجاری با پایتون

  • 2022-05-7

ایجاد و برنامه نویسی یک استراتژی معاملاتی از ابتدا با استفاده از سیگنال های فنی تجارت و تکنیک های یادگیری ماشین. مدل های مورد استفاده در این پست درختان تصمیم گیری ، درختان جنگلی تصادفی ، K نزدیکتری ن-نوه (KNN) خواهند بود.

مقدمه

من محبوب ترین طبقه بندی کننده ها را با هم مقایسه می کنم و میانگین دقت ، دقت ، فراخوان هر یک از آنها را با یک روش اعتبار سنجی طبقه بندی شده KFOLD ارزیابی می کنم.

الگوریتم:

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

داده ها را بارگیری کنید

ما از کتابخانه Quantrautil به نام Q (https://pypi. org/project/quantrautil/) استفاده خواهیم کرد. ما تکنیک های mlearning دستگاه را بر روی داده های Netflix آزمایش خواهیم کرد و از Benchmark Spy (STF در فهرست SP500) استفاده خواهیم کرد.

ایجاد پیش بینی کننده ها

متغیرهای پیش بینی کننده ویژگی هایی هستند که ممکن است مربوط به رفتار بازار باشد. این داده ها می توانند شاخص های فنی ، داده های بازار ، داده های احساسات ، داده های وسعت ، داده های اساسی ، داده های دولت و غیره باشند. ما از کتابخانه Python Talib برای ایجاد این پیش بینی کننده ها استفاده خواهیم کرد

  • EMA (میانگین متحرک نمایی) ، ما علاقه مندیم که قیمت بالاتر از حد متوسط باشد و چه زمانی سریعترین میانگین بالاتر از کمترین میانگین است.
  • ATR (14) (میانگین محدوده واقعی با 14 روز) ، ما به آستانه ای که باعث ایجاد سیگنال می شود ، علاقه مند هستیم.
  • ADX (14) ، ما به آستانه ای که باعث ایجاد سیگنال می شود علاقه مندیم
  • RSI (14) ، ما به آستانه ای که باعث ایجاد سیگنال می شود علاقه مندیم.
  • MACD ، ما علاقه مندیم که سیگنال MACD بالاتر از MACD باشد.

سپس ویژگی های مورد استفاده برای مدل های یادگیری ماشین را معرفی می کنیم:

ایجاد متغیرهای هدف

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

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

بنابراین ، الگوریتم درخت تصمیم باید به ما کمک کند تا بهترین ترکیب شاخص ها را به همراه پارامترهای آنها انتخاب کنیم که حداکثر خروجی مورد انتظار را که هدف آن است به حداکثر برساند.

ما قصد داریم در اینجا متغیرهای هدف را برای تیک و معیار ایجاد کنیم.

بردار هدف با 1 و 0 تشکیل شده است.

1 به معنای بازده مثبت و 0 بازده منفی است. بنابراین این مسئله بهینه سازی یک طبقه بندی یادگیری نظارت شده است. برای جمع بندی، طبقه بندی وظیفه ای است که نیازمند استفاده از الگوریتم های یادگیری ماشینی است که یاد می گیرند چگونه یک برچسب کلاس را به نمونه هایی از حوزه مشکل اختصاص دهند. این مورد برای درک نحوه طبقه بندی بازده به عنوان "مثبت" یا "غیر مثبت" است.

سپس می‌توانیم ماتریس X ویژگی‌ها و بردار y هدف را برای استفاده در هر یک از مدل‌هایمان تعریف کنیم.

تقسیم داده ها

پس از پاکسازی داده‌ها (همیشه در مطالعه یادگیری ماشینی چنین است)، می‌توانیم از تقسیم داده‌ها برای تشخیص داده‌های آموزشی و داده‌های آزمایشی با استفاده از تابع train_test_split از sklearn استفاده کنیم.

سپس باید بهترین پارامترها را با استفاده از GridSearchCV برای هر مدل پیدا کنیم:

  • درختان تصمیم
  • درختان جنگل تصادفی
  • درختان اضافی
  • رگرسیون لجستیک
  • تحلیل تشخیصی خطی
  • K-نزدیکترین همسایه (K-NN)
  • بیز ساده لوح
  • AdaBoost
  • ماشین بردار پشتیبانی
  • افزایش گرادیان
  • رگرسیون لجستیک
  • تحلیل تشخیصی خطی
  • پرسپترون چند لایه

برخی از توضیحات برخی از یادگیری ماشین قبل از رفتن به نتایج.

منبع: وب سایت رسمی اسکلرن

توزیع گاوسی: رگرسیون لجستیک یک الگوریتم خطی است (با یک تبدیل غیر خطی در خروجی). یک رابطه خطی بین متغیرهای ورودی با خروجی را فرض می کند. تبدیل داده‌های متغیرهای ورودی شما که این رابطه خطی را بهتر نشان می‌دهد، می‌تواند به مدل دقیق‌تری منجر شود.

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

درختان تصمیم به شما کمک می کنند تا گزینه های خود را ارزیابی کنید. Decision Trees ابزارهای عالی برای کمک به شما در انتخاب بین چندین دوره عمل هستند.

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

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

SVM یا دستگاه بردار پشتیبانی یک مدل خطی برای طبقه بندی و مشکلات رگرسیون است. این می تواند مشکلات خطی و غیر خطی را حل کند و برای بسیاری از مشکلات عملی به خوبی کار کند. ایده SVM ساده است: الگوریتم یک خط یا یکپرپلن ایجاد می کند که داده ها را به کلاس ها جدا می کند. ما از هسته RBF استفاده خواهیم کرد: هسته عملکرد شعاعی فقط به ما کمک نمی کند تا از محاسبه چند ویژگی اضافی جلوگیری کنیم. فضای ویژگی RBF دارای تعداد نامحدودی از ابعاد است. این بدان معنی است که ما می توانیم از هسته برای ساختن مرزهای تصمیم گیری بسیار پیچیده استفاده کنیم. هرچه ابعاد بیشتر باشد ، شانس بهتری پیدا خواهیم کرد که به طور مرتب داده های ما را از هم جدا می کند.

Perceptron Multi-Layer (MLP) یک الگوریتم یادگیری تحت نظارت است که یک تابع F (⋅) را می آموزد: RM → RO با آموزش روی یک مجموعه داده ، جایی که M تعداد ابعاد ورودی است و O تعداد ابعاد برای خروجی است. با توجه به مجموعه ای از ویژگی های x = x1 ، x2 ،… ، xm و یک هدف y.

Bayes Naive Bayes نوعی از Bayes ساده لوح است که از توزیع عادی گاوسی پیروی می کند و از داده های مداوم پشتیبانی می کند. Bayes ساده لوح گروهی از الگوریتم های طبقه بندی یادگیری ماشین نظارت شده بر اساس قضیه Bayes است. این یک تکنیک طبقه بندی ساده است ، اما عملکرد بالایی دارد.

الگوریتم های تقویت کننده مجموعه ای از طبقه بندی کننده های ضعیف برای ایجاد یک طبقه بندی قوی هستند.

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

مدل های یادگیری ماشین

ما از کتابخانه Python Sklearn برای ساخت مدل طبقه بندی خود استفاده خواهیم کرد. در اینجا وارداتی که ما استفاده خواهیم کرد.

اول از همه ، ما می توانیم در بین مدل های طبقه بندی ، بهترین مدل ها جستجو کنیم.

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

سپس از عملکرد GridSearchCV برای جستجوی بهترین پارامترها در بین موارد موجود در تعریف هر برآوردگر استفاده می کنیم (برای اطلاعات بیشتر به وب سایت Sklearn مراجعه کنید).

GridSearchCV Scikit-Learn ما را جستجو می کند. تمام کاری که ما باید انجام دهیم این است که به آن بگوییم که ما می خواهیم با چه چیزی آزمایش کنیم و چه مقادیری را امتحان کنیم و با استفاده از اعتبارسنجی متقاطع ، ترکیب احتمالی مقادیر هایپرپارامتر را ارزیابی می کند.

پس از اتمام کار می توانیم تماس بگیریم:

ما بهترین پارامترها را با ویژگی best_params_ دریافت می کنیم و سپس می توانیم با استفاده از روش set_params () بهترین_پارام را تنظیم کنیم ()

تجزیه و تحلیل عملکرد

این گزارش پارامترهایی را نشان می دهد که به ما کمک می کند تا خوب بودن الگوریتم را ارزیابی کنیم:

  • صحت: نمره دقت کسری از مثبت و منفی واقعی نسبت به تعداد کل برچسب های اختصاص یافته است
  • دقت: کیفیت پیش بینی های ما را نشان دهید. این به ما می گوید که چه تعداد از مقادیری که پیش بینی می کردیم در یک کلاس خاص قرار بگیریم در واقع در آن کلاس هستند. در اصل ، این به ما می گوید که چگونه ما از نظر مثبت کاذب اجرا کردیم.
  • به یاد بیاورید: کیفیت پیش بینی های ما را نشان دهید. این به ما می گوید که چه تعداد از مقادیر موجود در هر کلاس برچسب صحیحی داده شده است ، بنابراین می گویند نحوه عملکرد نسبت به منفی های کاذب استفاده کنید.
  • F1-Score: میانگین هارمونیک دقت و فراخوان را نشان می دهد. این میانگین وزنی از مقیاس دقیق و فراخوان است که 1 بهترین و 0 بدترین است. این از میانگین هارمونیکی استفاده می کند ، به طوری که مقدار به تعداد کمتری نزدیکتر است و از بیش از حد عملکرد مدل در مواردی که یک پارامتر زیاد است و دیگری پایین است ، جلوگیری می کند.
  • پشتیبانی: به عنوان وزن برای محاسبه مقادیر متوسط دقت ، فراخوان و F-1 استفاده می شود.

هر چیزی بالاتر از 0. 5 معمولاً تعداد خوبی در نظر گرفته می شود.

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

چگونه می توان تابعی را ایجاد کرد که تمام مدل ها را در کتابخانه Sklearn برای طبقه بندی آزمایش کند

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

اجرای مثال لیستی از هر نام کوتاه الگوریتم ، میانگین دقت و دقت انحراف استاندارد را ارائه می دهد.

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

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.