Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
В 1-м комментарии к видео обратите внимание что нужно явно указать версию tensorflow 2.10.0
Спасибо, имею ввиду
Там ведь нет смысла экспериментировать, поскольку такой прогноз не отличается от наивного (в качестве прогноза берется значение предыдущей цены закрытия). В этом случае действительно получается почти самая маленькая ошибка обучения (среднеквадратичная), ничего не говорящая о предсказательной способности модели. Скорее, обучающий пример по ONNX, что даже сложную архитектуру можно легко перенести а терминал. Не знаю что курили авторы той статьи, по исследованию нейросетевых архитектур для прогнозирования временных рядов :) здесь либо оценка нужна корректная, либо классификация вместо регрессии.
Объясните, пожалуйста, пример с картинки, где задействованы остальные 20% тестовых свечей. Это форвард? Почему прогноз почти полностью совпадает с фактическими ценами (судя по картинке, как две машки, только одна сдвинута на бар), а в тестере какая-то печаль?
Объясните, пожалуйста, пример с картинки, где задействованы остальные 20% тестовых свечей. Это форвард? Почему прогноз почти полностью совпадает с фактическими ценами (судя по картинке, как две машки, только одна сдвинута на бар), а в тестере какая-то печаль?
Вы сами ответили на свой вопрос, что получается запаздывающая МАшка в качестве прогноза (обычно с единичным сдвигом назад). Это известный прикол при обучении через стандартные метрики, они минимизируются именно с таким результатом.
Выше добавил ссылку где почитать про другие метрики.https://stackoverflow.com/questions/65316205/implementation-os-nmae-as-metric-with-keras
Вы сами ответили на свой вопрос, что получается запаздывающая МАшка в качестве прогноза (обычно с единичным сдвигом назад). Это известный прикол при обучении через стандартные метрики, они минимизируются именно с таким результатом.
Выше добавил ссылку где почитать про другие метрики.Статья нужна на эту тему.
Статья нужна на эту тему.
Видимо, метрики из энергетики тоже не подходят :) я не знаю хорошего решения, поэтому перешел на классификацию.
В Google по запросу best forecast metric выводится MAPE ( Mean absolute percentage error)
Для явного использования метрик в оптимизации моделей keras их нужно указывать явно в виде loss функции, а не как в #13.
Реализацию более 100 регрессионных метрик на Python можно найти здесь (Akaike Information Criterion, Aitchison distance, Amemiya's Adjusted R-squared, Amemiya's Prediction Criterion, Bias as and given by Gupta, Bayesian Information Criterion, Brier score, Pearson correlation coefficient, Centered root-mean-square (RMS) difference, Decomposed MSE developed by Kobayashi and Salam...)
Пример с оптимизацией по метрике MAPE (вместо мат.функций numpy нужно использовать keras, т.к. тензоры)
# example from https://github.com/AtrCheema/SeqMetrics/blob/master/SeqMetrics/_rgr.py
# Mean Absolute Percentage Error (MAPE)
# The MAPE is often used when the quantity to predict is known to remain way above zero_.
# It is useful when the size or size of a prediction variable is significant in evaluating the accuracy of a prediction_.
# It has advantages f scale-independency and interpretability.
# However, it has the significant disadvantage that it produces infinite or undefined values for zero or close-to-zero actual values_.
# .. _zero:
# https://doi.org/10.1016/j.neucom.2015.12.114 // Mean Absolute Percentage Error for regression models
# .. _prediction:
# https://doi.org/10.1088/1742-6596/930/1/012002 // Forecasting Error Calculation with Mean Absolute Deviation and Mean Absolute Percentage Error
# .. _values:
# https://doi.org/10.1016/j.ijforecast.2015.12.003 // A new metric of absolute percentage error for intermittent demand forecasts
from keras import backend as K
def MAPE_metric(y_true, y_pred):
return (K.mean(K.abs((y_true - y_pred) / (y_true+1e-8)) * 100))
#define the model
model = Sequential()
model.add(Conv1D(filters=256, kernel_size=2,activation='relu',padding = 'same',input_shape=(120,1)))
model.add(MaxPooling1D(pool_size=2))
model.add(LSTM(100, return_sequences = True))
model.add(Dropout(0.3))
model.add(LSTM(100, return_sequences = False))
model.add(Dropout(0.3))
model.add(Dense(units=1, activation = 'sigmoid'))
model.compile(optimizer='adam', loss=MAPE_metric , metrics = [MAPE_metric])
как выглядит ее оптимизация
прогнозный график:
Однако при использовании MAPE при оптимизации здесь также получился сдвиг.
Возможно, нужно рассматривать более сложные направления оптимизаций в виде произведений метрик.
Тема требует детального исследования.
В Google по запросу best forecast metric выводится MAPE ( Mean absolute percentage error)
Для явного использования метрик в оптимизации моделей keras их нужно указывать явно в виде loss функции, а не как в #13.
Реализацию более 100 регрессионных метрик на Python можно найти здесь (Akaike Information Criterion, Aitchison distance, Amemiya's Adjusted R-squared, Amemiya's Prediction Criterion, Bias as and given by Gupta, Bayesian Information Criterion, Brier score, Pearson correlation coefficient, Centered root-mean-square (RMS) difference, Decomposed MSE developed by Kobayashi and Salam...)
Однако при использовании MAPE при оптимизации здесь также получился сдвиг.
Возможно, нужно рассматривать более сложные направления оптимизаций в виде произведений метрик.
Тема требует детального исследования.
ИМХО, проблема всегда не в метрике, а в структуре выбранных для прогнозирования данных - в данном случае просто для примера был взят самый "прямолинейный" набор отсчетов. Попробуйте, например, сэмплировать вектора через пространство вложения (брать отсчеты с шагом где автокорреляция ряда пропадает) - получите более похожий на реальный прогноз - это означает не только отсутствие МА-подобной задержки, но и то, что он будет иногда сильно ошибаться ;-).
Если выкусить и склеить части ряда без новостного фона, результат должен быть приемлемым.
ИМХО, проблема всегда не в метрике, а в структуре выбранных для прогнозирования данных - в данном случае просто для примера был взят самый "прямолинейный" набор отсчетов. Попробуйте, например, сэмплировать вектора через пространство вложения (брать отсчеты с шагом где автокорреляция ряда пропадает) - получите более похожий на реальный прогноз - это означает не только отсутствие МА-подобной задержки, но и то, что он будет иногда сильно ошибаться ;-).
Для этого нужны более сложные процессы предобработки данных и отдельное рассмотрение темы. Похоже что очень многое здесь зависит от характера взаимосвязей между данными (у рынков они сложны).
Насколько я понимаю, если нет новой информации (или ее роль незначительна в смысле линейных преобразований Optimum Signal Processing, 1.4 Correlation Cancelling 1.5 Gram-Schmidt Orthogonalization), то наилучшим прогнозом будет прошлое значение (однако если она правильно учтена, то сильно ошибаться он не должен, хотя тут нужны опыты).
По метрикам ("направлениям" оптимизации весов сети) я думаю нужно разбираться (для финансовых временных рядов), вопрос требует отдельной статьи.
Приглашаем всех поделиться своим опытом.
Любой проект машинного обучения состоит из трех этапов:
Использование ONNX моделей в мкл решает вопрос с внедрением. Правда не всех моделей и не совсем просто.
Обучение и оптимизация моделей решается отдельным процессом в Питоне.
Но из всех вышеперечисленных, первый этап - самый трудоемкий, сильно творческий и самый важный. И как раз его на мкл реализовать пока невозможно. Не считаем же примитивное шкалирование за препроцессинг. А народная мудрость гласит: "Мусор на входе - мусор на выходе". Слишком много нужно дополнительно разработать и внедрить в МКЛ для полноценного использования МО только на МКЛ. Нельзя объять необъятное, тем более, что оно постоянно расширяется.
Поэтому для выполнения препроцесса либо делать его в другом ЯП (кто какой освоил R/Python/Julia и т.д.) либо пробовать конвертировать и его в ONNX.
Польза от внедрения ONNX пока только в том, что научимся конвертировать, создавать, упрощать и оптимизировать модели ONNX. Может в будущем пригодится.