Машинное обучение в трейдинге: теория, модели, практика и алготорговля - страница 4

 
Alexey Burnakov:

НС очень хорошо справилась.

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

Доказательств, что НС с чем-то справилась я не вижу.

Переобучение - всемирное зло в науке и в частности при построении модели.

Поэтому необходима ошибка для трех наборов:

  • набора обучения. Вполне подойдет то, как это понимает rattle (OOB, test, validation)
  • набор, который находится вне, в смысле по датам, набора обучения.
  • еще один набор, который находится вне, в смысле по датам, набора обучения. 

Последние два набора без перемешивания, так как они поступают в терминале, баз за баром. 

На всех трех наборах должна быть примерно одинаковая ошибка. При этом Вам придется зафиксировать набор предикторов, которые Вы берете при обучении модели. 

 
Alexey Burnakov:


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

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

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

 
СанСаныч Фоменко:

Доказательств, что НС с чем-то справилась я не вижу.

Переобучение - всемирное зло в науке и в частности при построении модели.

Поэтому необходима ошибка для трех наборов:

  • набора обучения. Вполне подойдет то, как это понимает rattle (OOB, test, validation)
  • набор, который находится вне, в смысле по датам, набора обучения.
  • еще один набор, который находится вне, в смысле по датам, набора обучения. 

Последние два набора без перемешивания, так как они поступают в терминале, баз за баром. 

На всех трех наборах должна быть примерно одинаковая ошибка. При этом Вам придется зафиксировать набор предикторов, которые Вы берете при обучении модели. 

Давайте так. Не смотря на то, что это не входит в часть задания. Я выкладываю валидационную выборку, на которой следует прогнать обученную модель и замерить точность предсказания output.

Но повторю, что это не обязательно. Заметьте, что валидацию составил снова я на основе заложенной закономерности.

Файлы:
 

Заложенная в данные закономерность:

 

Количество по полю input_19 output
input_1 input_3 input_5 input_7 input_9 input_11 0 1 сумма предикторов четность
1 1 1 1 1 1 143 6 ИСТИНА
1 1 1 1 1 2 100 7 ЛОЖЬ
1 1 1 1 2 1 121 7 ЛОЖЬ
1 1 1 1 2 2 119 8 ИСТИНА
1 1 1 2 1 1 114 7 ЛОЖЬ
1 1 1 2 1 2 124 8 ИСТИНА
1 1 1 2 2 1 105 8 ИСТИНА
1 1 1 2 2 2 102 9 ЛОЖЬ
1 1 2 1 1 1 101 7 ЛОЖЬ
1 1 2 1 1 2 131 8 ИСТИНА
1 1 2 1 2 1 122 8 ИСТИНА
1 1 2 1 2 2 114 9 ЛОЖЬ
1 1 2 2 1 1 111 8 ИСТИНА
1 1 2 2 1 2 98 9 ЛОЖЬ
1 1 2 2 2 1 123 9 ЛОЖЬ
1 1 2 2 2 2 112 10 ИСТИНА
1 2 1 1 1 1 128 7 ЛОЖЬ
1 2 1 1 1 2 114 8 ИСТИНА
1 2 1 1 2 1 111 8 ИСТИНА
1 2 1 1 2 2 126 9 ЛОЖЬ
1 2 1 2 1 1 143 8 ИСТИНА
1 2 1 2 1 2 95 9 ЛОЖЬ
1 2 1 2 2 1 108 9 ЛОЖЬ
1 2 1 2 2 2 117 10 ИСТИНА
1 2 2 1 1 1 112 8 ИСТИНА
1 2 2 1 1 2 132 9 ЛОЖЬ
1 2 2 1 2 1 92 9 ЛОЖЬ
1 2 2 1 2 2 134 10 ИСТИНА
1 2 2 2 1 1 110 9 ЛОЖЬ
1 2 2 2 1 2 114 10 ИСТИНА
1 2 2 2 2 1 120 10 ИСТИНА
1 2 2 2 2 2 108 11 ЛОЖЬ
2 1 1 1 1 1 109 7 ЛОЖЬ
2 1 1 1 1 2 133 8 ИСТИНА
2 1 1 1 2 1 99 8 ИСТИНА
2 1 1 1 2 2 115 9 ЛОЖЬ
2 1 1 2 1 1 123 8 ИСТИНА
2 1 1 2 1 2 116 9 ЛОЖЬ
2 1 1 2 2 1 131 9 ЛОЖЬ
2 1 1 2 2 2 119 10 ИСТИНА
2 1 2 1 1 1 96 8 ИСТИНА
2 1 2 1 1 2 120 9 ЛОЖЬ
2 1 2 1 2 1 111 9 ЛОЖЬ
2 1 2 1 2 2 99 10 ИСТИНА
2 1 2 2 1 1 132 9 ЛОЖЬ
2 1 2 2 1 2 110 10 ИСТИНА
2 1 2 2 2 1 93 10 ИСТИНА
2 1 2 2 2 2 106 11 ЛОЖЬ
2 2 1 1 1 1 100 8 ИСТИНА
2 2 1 1 1 2 127 9 ЛОЖЬ
2 2 1 1 2 1 127 9 ЛОЖЬ
2 2 1 1 2 2 101 10 ИСТИНА
2 2 1 2 1 1 119 9 ЛОЖЬ
2 2 1 2 1 2 120 10 ИСТИНА
2 2 1 2 2 1 99 10 ИСТИНА
2 2 1 2 2 2 106 11 ЛОЖЬ
2 2 2 1 1 1 133 9 ЛОЖЬ
2 2 2 1 1 2 97 10 ИСТИНА
2 2 2 1 2 1 100 10 ИСТИНА
2 2 2 1 2 2 116 11 ЛОЖЬ
2 2 2 2 1 1 119 10 ИСТИНА
2 2 2 2 1 2 118 11 ЛОЖЬ
2 2 2 2 2 1 102 11 ЛОЖЬ
2 2 2 2 2 2 128 12 ИСТИНА
 
СанСаныч Фоменко:

Доказательств, что НС с чем-то справилась я не вижу.

Нейронка эту задачу решила, в атачменте лог c кодом из Rattle. В коде пара изменений при вызове нейронки - я увеличил максимальное число итераций, и убрал связи которые идут с инпута сразу на выход минуя средний слой (skip=TRUE). А то эти два ограничения всё портят.

Я сделал валидацию на новом файле, ошибки в обоих случаях почти 0% (есть одна единственная ошибка при валидации из второго файла).

Но поскольку НС как чёрный ящик, логику решения узнать нельзя. Можно посмотреть на веса, определить среднее абсолютное значение к каждому входу, и нарисовать диаграмму. И узнать что 1, 3, 5 ,7, 9, 11 важнее остального. Но при этом остальные входы тоже почему-то используются, нулевых весов нигде нету. То есть получается наоборот, сначала проходит обучение, затем мы можем определить важные входы.

Файлы:
 
Dr.Trader:

Нейронка эту задачу решила, в атачменте лог c кодом из Rattle. В коде пара изменений при вызове нейронки - я увеличил максимальное число итераций, и убрал связи которые идут с инпута сразу на выход минуя средний слой (skip=TRUE). А то эти два ограничения всё портят.

Я сделал валидацию на новом файле, ошибки в обоих случаях почти 0% (есть одна единственная ошибка при валидации из второго файла).

Но поскольку НС как чёрный ящик, логику решения узнать нельзя. Можно посмотреть на веса, определить среднее абсолютное значение к каждому входу, и нарисовать диаграмму. И узнать что 1, 3, 5 ,7, 9, 11 важнее остального. Но при этом остальные входы тоже почему-то используются, нулевых весов нигде нету. То есть получается наоборот, сначала проходит обучение, затем мы можем определить важные входы.

Так и есть . Остальные входы это шум. Вот минус многих методов - шумовые переменные не удаляются полностью.

Возможно, надо учить дольше и с меньшим шагом.

Но в целом, браво. НС решила сложную задачу.
 
СанСаныч Фоменко:

Доказательств, что НС с чем-то справилась я не вижу.

Переобучение - всемирное зло в науке и в частности при построении модели.

Поэтому необходима ошибка для трех наборов:

  • набора обучения. Вполне подойдет то, как это понимает rattle (OOB, test, validation)
  • набор, который находится вне, в смысле по датам, набора обучения.
  • еще один набор, который находится вне, в смысле по датам, набора обучения. 

Последние два набора без перемешивания, так как они поступают в терминале, баз за баром. 

На всех трех наборах должна быть примерно одинаковая ошибка. При этом Вам придется зафиксировать набор предикторов, которые Вы берете при обучении модели. 

Разве очевидное нуждается в доказательстве? В процессе обучения веса входов несущих противоречивые данные снизились, т.е. можно сказать, что заблокировалось поступление противоречивых данных.

Проблема переобучения в данном случае отсутствует, потому-что обученную сеть не используют ни для каких других целей. 

Вот насколько целесообразно использовать такой метод, вот это - вопрос. Не тяжеловата ли артиллерия. 

 
Dmitry Fedoseev:

Вот насколько целесообразно использовать такой метод, вот это - вопрос. Не тяжеловата ли артиллерия. 

Можете попробовать иной способ. Но мне кажется средство соответствует проблеме.
 
Alexey Burnakov:
Можете попробовать иной способ. Но мне кажется средство соответствует проблеме.
Справляется с задачей, и хорошо справляется. Но всегда интересно, а может есть, что эффективней и проще. 
 
Dmitry Fedoseev:
Справляется с задачей, и хорошо справляется. Но всегда интересно, а может есть, что эффективней и проще. 
Пока не попробуете не поймёшь. Обычные включения и исключения не сработают. А что еще?
Причина обращения: