پیش بینی قیمت سهام با کتابخانه کرس (Keras) – راهنمای کاربردی

LSTM در پیشبینی برای مسائل دارای توالی بسیار قدرتمند عمل میکند، زیرا قادر به ذخیرهسازی اطلاعات گذشته است. در مساله پیشبینی قیمت بورس، این ویژگی بسیار مهم محسوب میشود زیرا قیمت پیشین سهام برای پیشبینی قیمت آینده آن عاملی حیاتی محسوب میشود.
در این راهنما، چگونگی شروع پیشبینی سریهای زمانی با مدلهای LSTM آموزش داده میشود. دادههای بازار سهام انتخاب خوبی برای این کار محسوب میشوند زیرا منظم و به طور گسترده برای افراد گوناگون موجود هستند. توصیه میشود از این مدل به عنوان یک پیشنهاد اقتصادی یا برای انجام تجارت شخصی استفاده نکنید (چون در صورت ارائه خروجیهای غلط، زیان مالی در پی دارد).
مقدمهای بر LSTM
LSTMها در مسائل پیشبینی توالی بسیار قدرتمند عمل میکنند، زیرا قادر به ذخیرهسازی اطلاعات گذشته هستند. این امر در مساله پیشبینی قیمت سهام عاملی مهم محسوب میشود، زیرا قیمت پیشین آن در پیشبینی قیمت آینده نقشی حیاتی ایفا میکند.
بارگذاری مجموعه داده
گام بعدی، بارگذاری مجموعه دادههای آموزش و انتخاب ستونهای Open و High است که در مدلسازی مورد استفاده قرار خواهند گرفت.
head مجموعه داده برای دریافت چکیدهای از نوع دادههای موجود در مجموعه دادهای که قرار است با آن کار شود مورد بررسی قرار میگیرد.

هممقیاس کردن ویژگیها
ساخت دادهها با گام زمانی
LSTM، از دادهها انتظار دارد تا در قالب مشخصی باشند، که معمولا آرایههای سهبُعدی است. کار با ساخت دادهها در ۶۰ «گام زمانی» (Time Step) و تبدیل آنها به یک آرایه با استفاده از NumPy انجام میشود.
سپس، دادهها به یک آرایه سهبُعدی با نمونههای X_train، تعداد ۶۰ گام زمانی و یک ویژگی در هر گام تبدیل میشوند.
ساخت LSTM
به منظور ساخت LSTM، نیاز به «وارد کردن» (import) تعدادی از ماژولها از کرس است که در ادامه بیان شدهاند.
- Sequential برای مقداردهی اولیه شبکه عصبی
- Dense برای افزودن یک لایه شبکه عصبی به شدت متصل (Densely Connected)
- LSTM برای افزودن لایه
- Dropout برای افزودن لایه dropout که از «بیش برازش» (Overfitting) جلوگیری میکند.
لایه LSTM اضافه میشود و بعدا چند لایه Dropout برای پیشگیری از بیشبرازش اضافه میشوند. لایه LSTM با آرگومانهای زیر افزوده میشود.
- ۵۰ واحد که ابعاد فضای خروجی است.
- return_sequences=True که تعیین میکند آخرین خروجی در توالی خروجی بازگردانده شود و یا کل توالی
- input_shape به عنوان شکل مجموعه داده آموزش
هنگام تعریف لایه Dropout، مقدار ۰.۲ تعیین میشود که به معنای آن است که ٪۲۰ از لایهها رها میشوند (dropping). پس از آن، یک لایه Dense اضافه میشود که خروجی یک واحد را تعیین میکند. سپس، مدل با استفاده از بهینهساز محبوب Adam کامپایل و هزینه به عنوان mean_squarred_error تعیین میشود. این کار به منظور محاسبه «میانگین مربعات خطا» (Mean Squared Error) است. سپس، مدل برای اجرا روی ۱۰۰ «دوره» (epoch) و اندازه دسته ۳۲ برازش میشود. باید به خاطر داشت که بسته به حافظه کامپیوتر، این کار دقایقی به طول خواهد انجامید.
پیشبینی سهام آینده با استفاده از مجموعه آزمون
ابتدا باید «مجموعه آزمون» (Test Set) را ایمپورت کرد که برای انجام پیشبینیها استفاده خواهند شد.
به منظور پیشبینی قیمتهای آینده سهام، نیاز به انجام چند کار پس از بارگذاری مجموعه آزمون است که در ادامه بیان شدهاند.
- ادغام «مجموعه آموزش» (Training Set) و مجموعه تست روی محور ۰
- تنظیم گام زمانی روی ۶۰ (چنانکه پیشتر مشاهده شد.)
- استفاده از MinMaxScaler برای تبدیل مجموعه داده جدید
- شکلدهی مجدد مجموعه داده به صورتی که پیشتر بیان شد.
پس از انجام پیشبینی، از inverse_transform برای بازگشت قیمتهای سهام در فرمت نرمال قابل خواندن استفاده میشود.
ترسیم نمودار نتایج
در نهایت، از Matplotlib برای بصریسازی نتایج قیمت سهام پیشبینی شده و قیمت سهام واقعی استفاده میشود.

از نمودار مشهود است که قیمتهای واقعی سهام هنگامی افزایش یافتهاند که مدل نیز پیشبینی کرده که افزایش مییابند. این مساله نشان میدهد که LSTM ابزاری قدرتمند برای تحلیل سریهای زمانی و دادههای ترتیبی است.
نتیجهگیری
اینها روشهایی هستند که میتوان آنها را روی مجموعه داده استفاده شده در این مطلب اعمال و نتایج آن را با Keras LSTM مقایسه کرد.
اگر نوشته بالا برای شما مفید بوده، آموزشهای زیر نیز به شما پیشنهاد میشوند:
- مجموعه آموزشهای آمار، احتمالات و دادهکاوی
- مجموعه آموزشهای برنامه نویسی پایتون (Python)
- مجموعه آموزشهای یادگیری ماشین و بازشناسی الگو
- مجموعه آموزشهای شبکههای عصبی مصنوعی
- مجموعه آموزشهای هوش محاسباتی
- آموزش برنامهنویسی R و نرمافزار R Studio
- مجموعه آموزشهای برنامه نویسی متلب (MATLAB)
^^
مطالب مجله فرادرس را در جستجوی گوگل سریعتر ببینید














اینکه قیمت غیرایستا هست مشکلی نداره برای استفاده در lstm؟ داده های غیرایستا مثل درصد تغییر قیمت بجای خود قیمت بهتر نیست برای استفاده ؟
با سلام
خواستم بدونم الگوریتم LSTM فقط یک رشته از پرامترها رو به عنوان ورودی در نظر میگیره یا میشه مثل MLP چند ورودی بهش داد و یک خروجی ازش گرفت؟؟
با سلام
لطفا راه ارتباطی معرفی می کنید، در مورد پایان نامه ام چندتا سوال دارم.
ممنون
سلام
چند سوال داشتم :
1- بازه زمانی میتواند در زیر یک ثانیه نیز عمل کرده و کارایی داشته باشد ؟
2- تشخیص پارامترهای open , close و … فقط برای یک نماد است یا میتوان چندین نماد را همزمان بررسی گکرد ؟
3- آیا برنامه نویسی در mql5 بهتر است یا استفاده از توابع و کتابخانه های پایتون ؟
با تشکر
سلام یعنی با این کار میشه قیمت های سهام در چند روز اینده پیش بینی کرد؟؟
با سلام؛
از همراهی شما با مجله فرادرس سپاسگزاریم. هدف از الگوریتمهای پیشبینی این است که بر اساس دادههای موجود، به پیشبینی پیرامون دادههای جدید بپردازند. دادههای مربوط به سهام را میتوان به عنوان سری زمانی یا نوعی دیگر از داده در نظر گرفت. در این حالت نیز هدف آن است که بر اساس دادههای موجود از گذشته تاکنون، امکان پیشبینی برای دادههای بعدی فراهم شود. هر پیشبینی یک میزان خطای مشخص دارد و در هر نوع از مسائل، امکان پذیرش یک آستانه خطای مشخص وجود دارد تا گفته شود که نتایج مدل قابل پذیرش هستند. اینکه در بحث پیشبینی قیمت سهام، بیتکوین یا دیگر موارد الگوریتمها تا این لحظه توانستهاند نتیجه مناسب و نهایی را در اختیار قرار دهند، موضوعی محل بحث است. ولیکن در همین لحظه نیز الگوتریدینگ در جریان است و رباتهای زیادی در حال انجام معاملات بدون دخالت انسان هستند که نتایج سودآفرینی دارند.
با سپاس.