В предыдущих сообщениях я рассмотрел сбор данных о ценах, их очистку и создание последовательностей скользящих окон. Следующим шагом в моем проекте прогнозирования акций является обучение модели машинного обучения на этих данных.
Я начну с простой линейной модели, а затем перейду к более сложной архитектуре нейронной сети.
Создание линейной модели
Используя 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!