Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 189
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Если взять практически любую книгу по datamining, то обязательно описаны процедуры по удалению коррелированных предикторов.
Взаимодействующие предикторы не обязатльно будут коррелировать... Они взаимодействуют на целевку....
А наличие взаимодействия дает результаты вида:
> summary(lm(data = train_sample_list[[1]], price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16))
Call:
lm(formula = price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16,
data = train_sample_list[[1]])
Residuals:
Min 1Q Median 3Q Max
-0.035970 -0.000824 0.000001 0.000847 0.027278
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.883e-05 3.146e-05 1.234 0.21714
price_diff_lag_11 4.828e-02 9.092e-03 5.310 1.12e-07 ***
price_diff_min_lag_16 -3.055e-02 1.141e-02 -2.678 0.00743 **
price_diff_lag_11:price_diff_min_lag_16 -3.520e+00 3.515e-01 -10.014 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.0024 on 10465 degrees of freedom
Multiple R-squared: 0.01611, Adjusted R-squared: 0.01583
F-statistic: 57.11 on 3 and 10465 DF, p-value: < 2.2e-16
Все предикторы значимы (и их взаимодействие). Ф-статистика офигенная...
Взаимодействующие предикторы не обязатльно будут коррелировать... Они взаимодействуют на целевку....
А наличие взаимодействия дает результаты вида:
> summary(lm(data = train_sample_list[[1]], price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16))
Call:
lm(formula = price_future_lag_diff_6 ~ price_diff_lag_11 * price_diff_min_lag_16,
data = train_sample_list[[1]])
Residuals:
Min 1Q Median 3Q Max
-0.035970 -0.000824 0.000001 0.000847 0.027278
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3.883e-05 3.146e-05 1.234 0.21714
price_diff_lag_11 4.828e-02 9.092e-03 5.310 1.12e-07 ***
price_diff_min_lag_16 -3.055e-02 1.141e-02 -2.678 0.00743 **
price_diff_lag_11:price_diff_min_lag_16 -3.520e+00 3.515e-01 -10.014 < 2e-16 ***
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
Residual standard error: 0.0024 on 10465 degrees of freedom
Multiple R-squared: 0.01611, Adjusted R-squared: 0.01583
F-statistic: 57.11 on 3 and 10465 DF, p-value: < 2.2e-16
Все предикторы значимы (и их взаимодействие). Ф-статистика офигенная...
Vizard_:
Данные не скину ...
Нет данных, значит и обсуждать нечего.
Отдыхай...те!
Юр, ну ты хоть не тупи) Просто забыл кто тебе в 9г.сказал что ты сеть не правильно сконфигурировал, а с полианалист можно вытаскивать формулу)))
Нет никаких притензий и секретов, юзаю стандартные инструменты дм, иногда с небольшими правками. Если интересны лишь реферамбы, слушай,
но реалии немного другие... Предыдущий экперимент был на реальных даных. Сделал на простых-исскуственных. Первый набор распознан абсалютно
правильно. Подмешал ........ Ответ должен быть 100%, но jPrediction 11 настолько акуенный "ии", что умудрился выдать))) Короче дорабатывай,
приблуда пока не рабочая. Данные не скину, понтуешься дохера, сам допрешь... Версии на 20 мож еще гляну, если "рекламма" будет как сегодня)))
Ну, может быть, просто у меня было другое представление о значении слова "взаимодействие".
Есть ясные правила трактовки взаимодействий в линейных моделях. Они немного посложнее трактовки линейной комбинации: https://www.r-bloggers.com/interpreting-interaction-coefficient-in-r-part1-lm/
Но чтобы найти значимые взаимодействия надо перекопать много комбинаций. Вот это засада.
А ты в курсе что при нескольких оптимизация получается всегда разный результат. Это же оптимизация, если бы она всегда приходила к однозначному ответу было бы конечно хорошо но уж больно странно, попробуй прооптимизировать несколько раз, еверен что 8 из 10 раз получиш свои 100% Так что как то так....
Да он даже не догадывается, что генеральная выборка перед тренировкой разбивается на части случайным образом: одни паттерны попадают в обучающую часть, другие в тестовую. И при такой разбивке вполне может оказаться, что некоторые паттерны, необходимые для уточнения закономерностей, скучиваются в тестовой части и не представлены в обучающей. А поскольку алгоритм тренируется только на обучающей части и не обладает телепатическими способностями, чтобы узнать, что находится в части тестовой, то при вычислении обобщающей способности будут иметь место ошибки. Т.е. ничего удивительного не происходит.
А вот когда паттерны, которые должны уточнять закономерности, оказываются равномерно распределёнными по разным частям выборки, то обучающая способность бывает более высокой по сравнению с вышеописанным случаем.
Т.е. раз на раз не приходится и любая случайность рано или поздно может проявить себя с нежелательной стороны.
Вполне не исключено, что можно найти метод, с помощью которого генеральная выборка будет делиться на части не случайно, а детерминировано? Но пока, как показывает опыт, всякая детерминированность при разделении выборки чревата подгонкой с последующим переобучением.
Вполне не исключено, что можно найти метод, с помощью которого генеральная выборка будет делиться на части не случайно, а детерминировано? Но пока, как показывает опыт, всякая детерминированность при разделении выборки чревата подгонкой с последующим переобучением.
Может быть нужно делать обучение несколько раз и при этом каждый раз делить выборку случ. образом? А уже из этого готового набора обученных моделей выбирать и вообще оценивать можно насколько модель годная.
Это уже реализовано в jPrediction, т.е. на разных ядрах CPU параллельно вычисляются несколько разных разбиений выборки (два бинарных классификатора - это один террарный на одно свободное ядро). Процессор получается загруженным на 100%. Проблема в том, что количество ядер в CPU ограниченно, поэтому вероятность неравномерного распределения паттернов можно только уменьшить, но свести их на нет весьма проблематично. Разве только если обучать модели на суперкомпьютерах, а не на персоналках.
Например, если вычислять модели на китайском суперкомпьютере Tianhe-2, то там 3 120 000 ядер. Вероятность неравномерности распределения паттернов по частям выборки будет ничтожно малой. Если вычислять модели на 4-х ядерной персоналке (да ещё и пару ядер зарезервировать под другие задачи), то ничего удивительного, что рано или поздно можно будет нарваться на неравномерность.
Это уже реализовано в jPrediction, т.е. на разных ядрах CPU параллельно вычисляются несколько разных разбиений выборки (два бинарных классификатора - это один террарный на одно свободное ядро). Процессор получается загруженным на 100%. Проблема в том, что количество ядер в CPU ограниченно, поэтому вероятность неравномерного распределения паттернов можно только уменьшить, но свести их на нет весьма проблематично. Разве только если обучать модели на суперкомпьютерах, а не на персоналках.
Например, если вычислять модели на китайском суперкомпьютере Tianhe-2, то там 3 120 000 ядер. Вероятность неравномерности распределения паттернов по частям выборки будет ничтожно малой. Если вычислять модели на 4-х ядерной персоналке (да ещё и пару ядер зарезервировать под другие задачи), то ничего удивительного, что рано или поздно можно будет нарваться на неравномерность.
То есть, это полезно делать. Значит вместо 4-х разбиений, очевидно что это мало, нужно делать 40 разбиений. Для 4-х ядер будет в 10 раз дольше считаться, но полагаю, что временем можно пожертвовать в пользу робастности.
"Если это можно сделать и если от этого будет толк, то это нужно сделать". (c) Папо Карло Альбертович.