Как правильно сформировать входные значения для НС. - страница 10

 
TheXpert писал (а) >>

Да неважно, сорри если неправ.

Попытаюсь, фсётаки, более детально объяснить что такое эта перекрёстная проверка, если не понятен тот пост. Допустим, тренируем сеть на минимальную ошибку. Допустим, при тренироки сети на 2007 получили промежуточный результ 0.5, проверили на 2008, тут 0.8. Запоминается эта сеть и тренируем дальше. Далее, на 2007 получили 0.4, проверяем на 2008 - 0.7. Прошлая сеть выкидывается и запоминается эта сеть и тренируем дальше. Далее, на 2007 - 0.3, на 2008 - 0.6. Прошлая сеть выкидывается и запоминается эта сеть и тренируем дальше. На 2007 - 0.2, на 2008 - 0.8. Эта сеть не запоминается, а остаётся предыдущая. И тренируется дальше. Если не удасться на 2008 получить меньше чем 0.6, то остаётся та сеть, которая на 2008 имеет 0.6 и на 2007 0.3, а не та которая на 2007 имеет 0.2 и меньше. По сути, дальнейшая тренировка сети - это переобучение. Таким образом осуществляется уход от перетренировки, хотя и это не всегда спасает.

И как вы видите, форвард тестинг тут ни при чём......)))))

 
TheXpert писал (а) >>

...

А насчет кода -- Нейросолюшен или Нейрошел 2 портируют код на MQL4? Я напишу пару функций, которые, думаю, окажутся полезны для здешних обитателей, а может и для меня. Тем более написать сотню строк кода -- это час времени.

Нет. Через импорт dll/def или переписывания с "с".

Я напишу пару функций, которые, думаю, окажутся полезны для здешних обитателей, а может и для меня. Тем более написать сотню строк кода -- это час времени.

Особенно, если они будут посвящены "1. Подготовка входных данных. (смещение средних, декорреляция, выравнивание ковариации).", то очень здорово, а если ... еще одна реализация НС на MQL4, то ...

Я, например, никогда не мог понять, как можно реализовать красивые слова "значимость входов", "кросс-корреляция входов" в коде (под рукой нет Ежова, чтобы вставить еще больше красивых слов). Т.е формулы/алгоритмы я знаю, но чтобы OHLC, шумы или наоборот фильтры ДЦ, да и просто "дискретные величины", когда минутки - смешно, а денвки - поздно. :)

 
SergNF писал (а) >>

Нет. Через импорт dll/def или переписывания с "с".

Особенно, если они будут посвящены "1. Подготовка входных данных. (смещение средних, декорреляция, выравнивание ковариации).",

Именно так

Я, например, никогда не мог понять, как можно реализовать красивые слова "значимость входов", "кросс-корреляция входов" в коде (под рукой нет Ежова, чтобы вставить еще больше красивых слов). Т.е формулы/алгоритмы я знаю, но чтобы OHLC, шумы или наоборот фильтры ДЦ, да и просто "дискретные величины", когда минутки - смешно, а денвки - поздно. :)

А что такого? Формулам пофиг, дают им данные с минутки или недельные.

 
LeoV писал (а) >>

Попытаюсь, фсётаки, более детально объяснить что такое эта перекрёстная проверка, если не понятен тот пост. Допустим, тренируем сеть на минимальную ошибку. Допустим, при тренироки сети на 2007 получили промежуточный результ 0.5, проверили на 2008, тут 0.8. Запоминается эта сеть и тренируем дальше. Далее, на 2007 получили 0.4, проверяем на 2008 - 0.7. Прошлая сеть выкидывается и запоминается эта сеть и тренируем дальше. Далее, на 2007 - 0.3, на 2008 - 0.6. Прошлая сеть выкидывается и запоминается эта сеть и тренируем дальше. На 2007 - 0.2, на 2008 - 0.8. Эта сеть не запоминается, а остаётся предыдущая. И тренируется дальше. Если не удасться на 2008 получить меньше чем 0.6, то остаётся та сеть, которая на 2008 имеет 0.6 и на 2007 0.3, а не та которая на 2007 имеет 0.2 и меньше. По сути, дальнейшая тренировка сети - это переобучение. Таким образом осуществляется уход от перетренировки, хотя и это не всегда спасает.

И как вы видите, форвард тестинг тут ни при чём......)))))

Другими словами, тренировка/оптимизация заканчивается не тогда, когда ошибка минимальна на тренировочной выборке, а раньше, когда ошибка начинает возрастать на тестовой выборке.

 
Erics писал (а) >>

Другими словами, тренировка/оптимизация заканчивается не тогда, когда ошибка минимальна на тренировочной выборке, а раньше, когда ошибка начинает возрастать на тестовой выборке.

Ну вообщем да. Потому что по теории, величина ошибки на тестовой выборке, сначала падает при уменьшении ошибки на тренировочной выборке, а потом начинает возрастать, хотя ошибка на тренировочной выборке всё-равно продолжает уменьшаться. И весь фокус заключается в том, что нужно поймать эту впадину. Это и есть смысл перетренировки(для сетей) или переоптимизации(для ТС).

 
LeoV писал (а) >>

Ну вообщем да. Потому что по теории, величина ошибки на тестовой выборке, сначала падает при уменьшении ошибки на тренировочной выборке, а потом начинает возрастать, хотя ошибка на тренировочной выборке всё-равно продолжает уменьшаться. И весь фокус заключается в том, что нужно поймать эту впадину. Это и есть смысл перетренировки(для сетей) или переоптимизации(для ТС).

 
sergeev писал (а) >>

Абсолютно верно. Только одно небольшое замечание. Когда кривая уже идёт вверх, там тоже могут быть минимумы, но они уже по идее(по теории) должны быть больше чем первый минимум. Хотя иногда бывает и меньше(на практике), но это редко.

 

А вот картинка по переобученности

 
LeoV писал (а) >>

Абсолютно верно. Только одно небольшое замечание. Когда кривая уже идёт вверх, там тоже могут быть минимумы, но они уже по идее(по теории) должны быть больше чем первый минимум. Хотя иногда бывает и меньше(на практике), но это редко.

Хорошее замечание.

Вообще теории в этой ветке сказано уже очень много (можно кандидатскую защищать по нашему форуму :). 

А разум теперь жаждит практических опытов и знаний.

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

Спасибо.

 
sergeev писал (а) >> Если есть возможность, то пусть практики поделяться своими наработками в анализе и составлении входных значений. То есть конкретных примеров.

Входные значения - тоже вопрос не простой. Что подавать на вход сети зависит от многих факторов -

1. Какой тип нейросети используется.

2. Что мы хотим получить от нейросети - цену или направление движения или точки переворота или следующую свечу или ещё что-нибудь.

Поэтому нужно сначала определиться с этими вопросами, а потом решать вопрос со входами.