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

 
StatBars писал (а) >>

Я не разрабатываю НС, сейчас занимаюсь поиском оптимальных входов и выходов для построения обучающей выборки, я считаю правильная выборка важнее чем НС, вариантов НС на различных языках в сети куча...

Правильно. Архитектуру при наличии нормальных входов подобрать уже не проблема. Можно сказать: Входы - все, архитектура - ничто.


Вот, господа подобрали нормальные входы и получили соответствующие результаты c МTC "Сombo" :




--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Это при работе советника постоянным лотом. ММ я ему пока не прикручивал.
ответить 11.05.2008 14:17 zxc
Valio:

Попробовал и я прилодить руку с сему чуду. Парился неделю, и в базовой версии и дорабытывал алгоритм и несколько своих функций в basicTradingSystem вставлял - т.е. переделывал "базовую БТС" на языке автора. Результаты по прогону на истории - фантастические: прибылность от 8 до 12, мат.ожидание около 1000, но это правда с моим индюком. тестировал на 1Н по еврэ, отрезок около полугода. На след. месяц после - результат

"На след. месяц после - результат" ???

Valio, так какой-же результат у Вас получается в форварде? Очень интересно!

Просто я тоже переделал этого советника, и поначалу прибыльность по евре при оптимизации за год (даже не за полгода, а за год) по Н1 зашкаливала за 18 (и выше)!!! А вот форварды оказались, мягко говоря, не очень...

Сейчас, после очередной доработки, прибыльность при оптимизации стала ниже (около 10), но зато теперь достойно держит форвард (более 3-х месяцев). В форварде на участке более 3-х месяцев прибыльность составляет более 2,5. Продолжаю заниматься, думаю может получиться очень интересный эксперт.

ответить
 
Reshetov писал (а) >>

Правильно. Архитектуру при наличии нормальных входов подобрать уже не проблема. Можно сказать: Входы - все, архитектура - ничто.


Вот, господа подобрали нормальные входы и получили соответствующие результаты c МTC "Сombo" :

В чем-то я с вами согласен. Но, архитектура сети играет большую роль ... например RBF-сети куда лучше позволяют решать некоторые задачи интерполяции.

 
rip писал (а) >>

В чем-то я свами согласен. Но, архитектура сети играет большую роль ... например RBF-сети куда лучше позволяют решать некоторые задачи интерполяции.

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


Т. ч. не тратьте впустую время на интерполяции и архитектуры. Тем паче, что интерполяцию и аппроксимацию можно выполнить различными иными методами и гораздо проще и намного точнее.


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


Для постройки дома наиболее важен фундамент, а не отделка. Хотя отделка и выглядит привлекательней фундамента.


Так и архитектура НС. Она конечно же добавляет функциональности, но только в том случае, если входы адекватны. Если неадекватны, то штукатурка дом от разрушения не спасет, коли фундамент разрушится.

 
Reshetov писал (а) >>

Для постройки дома наиболее важен фундамент, а не отделка. Хотя отделка и выглядит привлекательней фундамента.

Так и архитектура НС. Она конечно же добавляет функциональности, но только в том случае, если входы адекватны. Если неадекватны, то штукатурка дом от разрушения не спасет, коли фундамент разрушится.

Ок, согласен - сигналы входа и выхода важны. Это постановка задачи, которая определяет архитектуру НС. Классификация паттернов, это одна из них.

Скажем почему сигналом входа не может быть определение знака следующего бара + определение экстремумов этого же бара? Чем плохо?


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

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

 
Reshetov писал (а) >>

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

Т. ч. не тратьте впустую время на интерполяции и архитектуры. Тем паче, что интерполяцию и аппроксимацию можно выполнить различными иными методами и гораздо проще и намного точнее.


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


Для постройки дома наиболее важен фундамент, а не отделка. Хотя отделка и выглядит привлекательней фундамента.


Так и архитектура НС. Она конечно же добавляет функциональности, но только в том случае, если входы адекватны. Если неадекватны, то штукатурка дом от разрушения не спасет, коли фундамент разрушится.

Абсолютно согласен. Как мне сказал один уважаемый товарищ(Стив Вард) - "Ищите входы" )))))

 
TheXpert писал (а) >>

Стоять!!! У меня уже есть готовая либка на VC++.

Только вот там есть 2 проблемы:

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

2. что-то с адаптивным шагом.


Зачем велосипед делать? Тем более там

1. MLP с возможностью создания древовидной структуры.

2. std::valarray + агрессивная оптимизация операций для ускорения подсчета

3. есть адаптивный шаг

4. паттерны с автонормированием.

5. широкие возможности для расширения.



Ы ?

Да, это все очень хорошо., спасибки за предложение. Но как говорится лучше один раз, зато сам :)

Я за эти выходные реально для себя очень много понял.

Особенно, когда удалось свести число циклов с 10е7 до порядка 10е4.

Сделал я это двумя путями.

1. Нейрон, с самой большой ошибкой корректируетсяс удвоенной скоростью. (пытался его заменят на нейрон с минимальной ошибкой - хуже)

2. Если корректировка нейрона меньше некоторой минимальной (например 10е-6), то корректировка увеличивается в 10 раз.

Очень понравилось. :)

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

Тем более, что здесь важна скорость, а наращивание функциональности в ущерб скорости - непозволительно. На мой взгляд лучше писать сетку для конкретной задачи. Конечно, не без того, чтоб были нормальные объекты, и продуманная структура, но...

По поводу пункта 2 и 3 уже интересно. Можно как нибудь узнать используемые методы?

-----------------------------------

Прочитал я посты. Жаль,что воз и ныне там. :) Все только и делаю, что пишут КАК ВАЖНО СОСТАВИТЬ ВХОДЫ!!!.Архитектура ничто - входы - всё, Ищите входы. и т.д. 

А конкретики ноль. Может все таки гуру поделятся? А?

 
rip писал (а) >>

Что за либа?

Своя, было дело на RSDN выкладывал. До SourceForge дело не дошло, ну и ее еще доделать бы немного...

 
sergeev писал (а) >>

Сделал я это двумя путями.

1. Нейрон, с самой большой ошибкой корректируетсяс удвоенной скоростью. (пытался его заменят на нейрон с минимальной ошибкой - хуже)

2. Если корректировка нейрона меньше некоторой минимальной (например 10е-6), то корректировка увеличивается в 10 раз.

Очень понравилось. :)

Ага, прикольно, зашить что-ли у себя это дело?

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

Тем более, что здесь важна скорость, а наращивание функциональности в ущерб скорости - непозволительно. На мой взгляд лучше писать сетку для конкретной задачи. Конечно, не без того, чтоб были нормальные объекты, и продуманная структура, но...

Насчет скорости -- я сделал все возможное, думается, ускорить сам код в моей либе можно максимум процентов на 3-5. И это будет непросто :).

По поводу пункта 2 и 3 уже интересно. Можно как нибудь узнать используемые методы?

2. "Язык С++", Бьерн Страуструп, искать агрессивная оптимизация, суть в уменьшении операций копирования.

3. Конспект лекций В.А. Головко, попробуйте поискать его работы или погуглить на тему "адаптивный шаг обучения", сейчас не могу дать конкретной ссылки.

5. Расширение не в ущерб скорости, шаблоны рулят :) .

 
sergeev писал (а) >>

-----------------------------------

Прочитал я посты. Жаль,что воз и ныне там. :) Все только и делаю, что пишут КАК ВАЖНО СОСТАВИТЬ ВХОДЫ!!!.Архитектура ничто - входы - всё, Ищите входы. и т.д.

А конкретики ноль. Может все таки гуру поделятся? А?

Если конкретнее, то могу подсказать, как искать адекватные входы.


Берем простейший перцептрон (см. Как найти прибыльную торговую стратегию) и цепляем ему на вход некие индюки и их комбинации. То, что даст наибольший профитфактор на этом самом перцептроне, т.е. наилучшую подгонку при тестировании с постоянным лотом (без ММ), с достаточной долей вероятности пройдет форвард-тесты на более изощренной архитектуре. Почему, легко объяснить. Ведь перцептрон - это линейная классификация. А значит на входах мы получим линейную сепарабельность по паттернам. Архитектурой добавим классификацию по нелинейным параметрам и получим улучшенный результат.


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


Ну и еще на закуску. Если сетка обучается, то ни в коем случае ее нельзя обучать до конца. Она должна всегда быть недоучкой. Например, для полного обучения нужно 1000 эпох, делим на 3 и получаем примерно 300 эпох. Этого вполне достаточно. Почему? Если мы полностью будем переобучать сеть, то она будет пригодна только для стационарной среды. А финансовые инструменты - нестационарные переключаемые среды. Т.е. она может за некоторое время только частично перейти из одного стационарного состояния в другое, при этом по большей части оставаясь в прежнем состоянии. А может и вернуться к прежнему состоянию. Поэтому полное переобучение сетки - голимая подгонка под какую-то временную переключаемую среду.


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



 
Reshetov писал (а) >> Ну и еще на закуску. Если сетка обучается, то ни в коем случае ее нельзя обучать до конца. Она должна всегда быть недоучкой. Например, для полного обучения нужно 1000 эпох, делим на 3 и получаем примерно 300 эпох. Этого вполне достаточно. Почему? Если мы полностью будем переобучать сеть, то она будет пригодна только для стационарной среды. А финансовые инструменты - нестационарные переключаемые среды. Т.е. она может за некоторое время только частично перейти из одного стационарного состояния в другое, при этом по большей части оставаясь в прежнем состоянии. А может и вернуться к прежнему состоянию.
Я бы еще усилил этот совет: делим на 10. Почему-то вспоминается ветка о стохастическом резонансе. Обучение сетки до конца может загнать целевую функцию в глубокий минимум, т.е. в устойчивое состояние. Устойчивые состояния вообще не характерны для финансовых рынков. Там - квазиустойчивые, т.е. такие, которые готовы в любой момент под влиянием даже незначительного "шума" перерасти в катастрофу (тренд). Но это так, философские размышления...
Причина обращения: