پیش بینی قیمت cryptocurrency با استفاده از یادگیری عمیق

ساخت وبلاگ

یک ماشین کامل یادگیری ماشین در دنیای واقعی با استفاده از شبکه های عصبی LSTM.

محبوبیت ارزهای رمزنگاری شده در سال 2017 به دلیل چندین ماه متوالی از رشد نمایی سرمایه در بازار آنها افزایش یافته است. قیمت ها در ژانویه سال 2018 بیش از 800 میلیارد دلار به اوج خود رسید.

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

در این وبلاگ ، من یک فرایند چهار مرحله ای را برای پیش بینی قیمت cryptocurrency طی می کنم:

  1. دریافت داده های رمزنگاری در زمان واقعی.
  2. داده ها را برای آموزش و آزمایش آماده کنید.
  3. قیمت Cryptocurrency را با استفاده از شبکه عصبی LSTM پیش بینی کنید.
  4. نتایج پیش بینی را تجسم کنید.

چالش

برای پیش بینی قیمت های cryptocurrency با استفاده از تمام ویژگی های معاملاتی مانند قیمت ، حجم ، مقادیر باز ، بالا و پایین موجود در مجموعه داده.

مجموعه داده ها را می توان از وب سایت CryptoCompare بارگیری کرد که در اینجا یافت می شود.

مجموعه داده شامل 5 ویژگی است. جزئیات مربوط به آنها به شرح زیر است:

  1. قیمت نزدیک - این قیمت نزدیک بازار برای آن روز خاص است.
  2. قیمت بالا - این بالاترین قیمت ارز برای روز است.
  3. قیمت پایین - این کمترین قیمت برای آن روز برای ارز است.
  4. قیمت باز - این قیمت باز بازار برای آن روز است.
  5. حجم - حجم ارز که برای آن روز در تجارت است

کد کجاست؟

بدون آزار و اذیت زیاد ، بیایید با کد شروع کنیم. پروژه کامل در GitHub را می توان در اینجا یافت.

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

من از نرخ ارز دلار استفاده کرده ام و داده های زمان واقعی را در یک قاب داده Pandas ذخیره کرده ام. من از روش to_datetime () برای تبدیل زمان رشته رشته به شیء زمان تاریخ پایتون استفاده کردم. این امر ضروری است زیرا اشیاء زمان تاریخ در پرونده به عنوان یک شیء رشته خوانده می شوند. انجام عملیات مانند تفاوت زمان در یک رشته و نه یک شیء زمان تاریخ بسیار آسان است.

بیایید ببینیم که چگونه مجموعه داده با تمام ویژگی های معاملاتی مانند قیمت ، حجم ، باز ، بالا ، پایین به نظر می رسد.

در مرحله بعد ، من داده ها را به دو مجموعه تقسیم کردم - مجموعه آموزش و مجموعه آزمایش به ترتیب با داده های 80 ٪ و 20 ٪. تصمیمی که در اینجا گرفته شده فقط برای هدف این آموزش است. در پروژه های واقعی ، همیشه باید داده های خود را به آموزش ، اعتبار سنجی ، آزمایش (مانند 60 ٪ ، 20 ٪ ، 20 ٪) تقسیم کنید.

اکنون بیایید قیمت های cryptocurrency را به دلار به عنوان تابعی از زمان با استفاده از کد زیر ترسیم کنیم:

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

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

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

من با تهیه یک تابع برای تهیه داده ها به فرمت ادامه دادم تا بعداً در شبکه عصبی تغذیه شود. من از همان مفهوم تقسیم داده ها به دو مجموعه استفاده کردم - مجموعه آموزش و مجموعه آزمایش با داده 80 ٪ و 20 ٪ به ترتیب همانطور که در کد زیر نشان داده شده است:

این کار با استفاده از دروازه های ویژه کار می کند تا به هر لایه LSTM اجازه دهد تا از لایه های قبلی و لایه فعلی اطلاعاتی کسب کند. داده ها از طریق چندین دروازه (مانند دروازه فراموش ، دروازه ورودی و غیره) و توابع مختلف فعال سازی (مانند عملکرد TANH ، عملکرد RELU) می روند و از طریق سلولهای LSTM منتقل می شوند. مزیت اصلی این امر این است که به هر سلول LSTM اجازه می دهد تا الگوهای لازم را برای مدت مشخصی به خاطر بسپارند. نکته قابل توجه این است که LSTM می تواند اطلاعات مهم را به خاطر بسپارد و در عین حال اطلاعات بی ربط را فراموش کند. معماری LSTM در زیر نشان داده شده است:

حالا بیایید مدل را بسازیم. از مدل متوالی برای انباشت همه لایه ها (ورودی ، پنهان و خروجی) استفاده می شود. شبکه عصبی شامل یک لایه LSTM و به دنبال آن 20 ٪ لایه ترک تحصیل و یک لایه متراکم با عملکرد فعال سازی خطی است. من با استفاده از آدم به عنوان بهینه ساز و میانگین خطای مربع به عنوان عملکرد از دست دادن ، از مدل پیروی کردم.

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

اکنون بیایید مدل را با استفاده از ورودی های x_train و برچسب های y_train آموزش دهیم.

من از میانگین خطای مطلق (MAE) به عنوان متریک ارزیابی استفاده کردم. دلیل انتخاب MAE بر روی خطای میانگین مربع Root (RMSE) این است که MAE قابل تفسیر تر است. RMSE خطای متوسط را به تنهایی توصیف نمی کند و از این رو درک آن بسیار دشوارتر است. از آنجا که ما می خواهیم این مدل حتی برای مخاطبان غیر فنی به راحتی توضیح داده شود ، Mae به نظر می رسد انتخاب بهتری است.

خطای مطلق

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

مقدار MAE 0. 029311972877135727 خوب به نظر می رسد. در آخر ، بیایید قیمت های واقعی و پیش بینی شده را با استفاده از کد زیر ترسیم کنیم:

نتیجه گیری

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

پلتفرم های تجاری...
ما را در سایت پلتفرم های تجاری دنبال می کنید

برچسب : نویسنده : مریم کاویانی بازدید : <-PostHit-> تاريخ : شنبه 6 خرداد 1402 ساعت: 12:55