استفاده از مدل Keras LSTM برای پیش بینی روند سهام
همانطور که موسسات مالی شروع به پذیرش هوش مصنوعی می کنند، یادگیری ماشین به طور فزاینده ای برای کمک به تصمیم گیری در معاملات مورد استفاده قرار می گیرد. اگرچه دادههای سهام فراوانی برای آموزش مدلهای یادگیری ماشینی وجود دارد، نسبت نویز بالا به سیگنال و عوامل متعددی که بر قیمت سهام تأثیر میگذارند، از جمله دلایلی هستند که پیشبینی بازار را دشوار میکنند. در عین حال، این مدلها نیازی به دستیابی به سطوح بالایی از دقت ندارند، زیرا حتی دقت 60 درصد نیز میتواند بازدهی قابل قبولی داشته باشد. یکی از روشهای پیشبینی قیمت سهام، استفاده از شبکه عصبی حافظه کوتاهمدت (LSTM) برای پیشبینی سری زمانی است.
LSTM: توضیح مختصر
LSTM ها یک نسخه بهبود یافته از شبکه های عصبی بازگشتی (RNN) هستند. RNN ها مشابه یادگیری انسان هستند. وقتی انسان ها فکر می کنند، ما هر ثانیه فکر خود را از صفر شروع نمی کنیم. به عنوان مثال، در جمله "باب بسکتبال بازی می کند"، می دانیم که باب فردی است که بسکتبال بازی می کند، زیرا ما در هنگام خواندن جملات اطلاعاتی در مورد کلمات گذشته حفظ می کنیم. به طور مشابه، RNN ها شبکه هایی با حلقه هایی هستند که به آنها اجازه می دهد تا قبل از رسیدن به خروجی نهایی از اطلاعات گذشته استفاده کنند. با این حال، RNN ها فقط می توانند اطلاعات قبلی اخیر را به هم متصل کنند و با افزایش فاصله زمانی نمی توانند اطلاعات را به هم متصل کنند. اینجاست که LSTM ها وارد عمل می شوند. LSTM ها نوعی از RNN هستند که اطلاعات را در دوره های زمانی طولانی به خاطر می آورند و آنها را برای پیش بینی قیمت سهام مناسب تر می کند. برای توضیح فنی LSTM اینجا را کلیک کنید.
واردات / داده های اولیه
برای شروع پروژه خود، numpy را برای انجام محاسبات علمی، پانداها را برای بارگذاری و اصلاح مجموعه دادهها، و matplotlib را برای رسم نمودارها وارد میکنیم.
پس از انجام واردات لازم، داده ها را در مورد قیمت سهام گذشته Tata Global Beverage بارگیری می کنیم. از میان داده ها، مقادیر ستون های اول و دوم (به ترتیب "Open" و "High") را به عنوان مجموعه داده آموزشی خود انتخاب می کنیم. ستون "باز" نشان دهنده قیمت افتتاحیه سهام در آن روز و ستون "بالا" نشان دهنده بالاترین قیمت سهام است که در آن روز رسیده است.
برای نگاهی به مجموعه داده ای که استفاده می کنیم، می توانیم سر را بررسی کنیم که پنج ردیف اول مجموعه داده ما را به ما نشان می دهد.
«پایین» نشاندهنده پایینترین قیمت سهم در روز است، «آخرین» نشاندهنده قیمتی است که آخرین معامله برای یک سهم در آن انجام شده است."بستن" نشان دهنده قیمت سهام است که در روز به پایان رسیده است.
عادی سازی داده ها
عادی سازی در حال تغییر مقادیر ستون های عددی در مجموعه داده ها به یک مقیاس مشترک است که به عملکرد مدل ما کمک می کند. برای مقیاس کردن مجموعه داده های آموزش از minmaxscaler Scikit-Learn با شماره های بین صفر و یک استفاده می کنیم.
ترکیب Timesteps در داده ها
ما باید داده های خود را به صورت یک آرایه سه بعدی به مدل LSTM وارد کنیم. ابتدا قبل از استفاده از NUMPY ، داده ها را در 60 TimeSteps ایجاد می کنیم تا آن را به یک آرایه تبدیل کنیم. سرانجام ، ما داده ها را به یک آرایه سه بعدی با نمونه X_Train ، 60 جدول زمانی و یک ویژگی در هر مرحله تبدیل می کنیم.
ایجاد مدل LSTM
قبل از اینکه بتوانیم LSTM را توسعه دهیم ، باید چند واردات از Keras ایجاد کنیم: پی در پی برای اولیه سازی شبکه عصبی ، LSTM برای اضافه کردن لایه LSTM ، ترک تحصیل برای جلوگیری از بیش از حد با لایه های ترک تحصیل ، و متراکم برای اضافه کردن یک لایه شبکه عصبی متراکم.
لایه LSTM با آرگومان های زیر اضافه می شود: 50 واحد ابعاد فضای خروجی است ، Return_مان = صحیح برای جمع آوری لایه های LSTM ضروری است ، بنابراین لایه LSTM متعاقب آن دارای یک ورودی توالی سه بعدی است و Input_shape شکل آموزش استمجموعه داده
مشخص کردن 0. 2 در لایه ترک تحصیل به این معنی است که 20 ٪ از لایه ها کاهش می یابد. به دنبال لایه های LSTM و ترک تحصیل ، لایه متراکم را اضافه می کنیم که خروجی یک واحد را مشخص می کند. برای کامپایل مدل خود از Adam Optimizer استفاده می کنیم و ضرر را به عنوان Mean_squared_error تنظیم می کنیم. پس از آن ، ما مدل را برای 100 دوره (دوره ها تعداد دفعاتی است که الگوریتم یادگیری در کل مجموعه آموزش کار می کند) با اندازه دسته ای از 32 استفاده می کنیم.
پیش بینی در مجموعه آزمون
ما با وارد کردن مجموعه آزمون شروع می کنیم
قبل از پیش بینی قیمت سهام آینده ، ما باید مجموعه آزمون را تغییر دهیم (شباهت های مربوط به ویرایش هایی که در مجموعه آموزش انجام داده ایم): مجموعه آموزش و مجموعه آزمایش را در محور 0 ادغام کنید ، 60 را به عنوان زمان بار دیگر تنظیم کنید ، از minmaxscaler استفاده کنید، و داده های تغییر شکلسپس ، معکوس_Transform قیمت سهام را با فرمت قابل خواندن عادی قرار می دهد.
ترسیم نتایج
بعد از تمام این مراحل ، می توانیم از Matplotlib برای تجسم نتیجه قیمت سهام پیش بینی شده خود و قیمت واقعی سهام استفاده کنیم.
در حالی که امتیاز دقیق از قیمت پیش بینی شده ما همیشه نزدیک به قیمت واقعی نبود ، مدل ما هنوز نشانگر روندهای کلی مانند بالا رفتن یا پایین آمدن است. این پروژه به ما می آموزد که LSTM ها در پیش بینی سری Times می توانند تا حدودی مؤثر باشند.