Обяснихме как моделите за машинно обучение могат да прогнозират цените на акциите в предишна публикация. Използвайки усъвършенствани модели на изкуствен интелект, като например дългосрочна памет (LSTM), ние ще демонстрираме как да използваме усъвършенствания изкуствен интелект. Както показахме в предишна публикация, моделите LSTM са използвани за създаване на модели за генериране на естествен език (NLG).

Моделиране с LSTM

Изкуствените повтарящи се невронни мрежи (RNN) с връзки за обратна връзка се използват в дълбокото обучение за конструиране на дълги краткосрочни спомени (LSTM). Освен че обработва отделни точки от данни, като изображения, той може да обработва и цели поредици от данни, като реч или видео. LSTM могат да се използват за разпознаване на несегментиран, свързан почерк, за разпознаване на реч, за откриване на аномалии и за анализ на времеви серии.

Има много точки от данни, необходими за моделите LSTM, и те са скъпи от изчислителна гледна точка. Графичните процесори обикновено се използват за обучение на LSTM модели, а не за централни процесори. Лесно е да обучавате LSTM модели с Tensorflow.

Борсова цена LSTM модел

Събиране на данни

За да предвидим почасовата цена на акциите, ще изградим LSTM модел. Ще можете да следвате заедно с анализа, тъй като той е възпроизводим. Зареждането на данните е първата стъпка. Като използваме тикера AMZN като пример, ще прегледаме почасовите цени на затваряне от 2019–06–01 до 2021–01–07.

Подгответе данните

Като функции в нашите данни за влака, стойностите за преглед назад ще бъдат отбелязани като „lb“, което означава стойности на забавяне. В този пример lb е зададен на 10. Използвайки MinMaxScaler() на Scikit-Learn, мащабираме набора от данни за „влак“. В този пример първите 90% от наблюденията ще се съхраняват като набор от данни за влак, а останалите 10% ще се съхраняват като тестов набор от данни

Изход:

Създайте модела LSTM

Ето модела LSTM, който ще използваме.

Изход:

Прогнози

Използвайки наборите от данни за влак и тест, нека получим прогнозите:

Тест

При набора от данни за влака моделът изглежда работи перфектно, а при тестовия набор от данни изглежда много добър. Трябва да подчертаем обаче, че моделът предвижда едно наблюдение напред. Това означава, че използва предишните 10 наблюдения като вход за всяко ново наблюдение. Тъй като основно искаме да предвидим много наблюдения напред, това е малко безполезно в реалния живот. В Python нека да видим как можем да постигнем това.

Предвидете N стъпки предварително

В резултат на тази логика ще можем да предвидим N стъпки напред, като добавим новите прогнозирани стойности към входа на модела. Нашата прогноза ще включва 251 наблюдения, колкото тези в тестовия набор от данни.

Заключение

Въпреки успеха на модела при прогнозиране на едно наблюдение напред, той се провали, когато се опитахме да предвидим N наблюдения напред. Ние „умножаваме грешката“, защото нашите характеристики са предвиждания, които съдържат грешки. Освен това нито един модел не може да предвиди n наблюдения в бъдеще.

Бонус

Според модела N стъпки напред не могат да бъдат предвидени. Цените на акциите не следват модел. Използвайки периодични серии като косинус, нека видим как се представят LSTM моделите

Коментари

Беше възможно моделите LSTM точно да предскажат 300 наблюдения напред чрез улавяне на функцията косинус перфектно.