В предыдущих сообщениях я рассмотрел сбор данных о ценах, их очистку и создание последовательностей скользящих окон. Следующим шагом в моем проекте прогнозирования акций является обучение модели машинного обучения на этих данных.

Я начну с простой линейной модели, а затем перейду к более сложной архитектуре нейронной сети.

Создание линейной модели

Используя PyTorch, я создал линейную модель, взяв случайную взвешенную комбинацию входных функций:

coefs = torch.rand(num_features) # Initialize random coefficients
predictions = inputs * coefs # Weight inputs  
loss = torch.abs(predictions - targets) # Calculate loss

Это дает базовую линейную зависимость между входными данными и целями.

Обучение моделей

Я обучил модель, оптимизировав коэффициенты для минимизации потерь с помощью градиентного спуска:

loss.backward() # Calculate gradients
coefs.sub_(lr * coefs.grad) # Update weights

Повторение этого в течение эпох привело к обученной модели, которая эффективно представляет линейные отношения в данных.

Анализ модели

Визуализация окончательных коэффициентов дает представление о важности функции:

Я также оценил точность модели, сравнив прогнозы с фактическими целями с помощью следующих результатов:

Mean Absolute Error: 6.34
Mean Squared Error: 53.02

Есть возможности для повышения точности.

Дальнейшие шаги

Хотя линейная модель обладает некоторой предсказательной силой, LSTM должен лучше работать с данными временных рядов.

Вперед и вверх — проверим внедрение LSTM!