Обсуждение статьи "Random Decision Forest в обучении с подкреплением" - страница 6

 
mov:

Добрый день,

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

1.Мне показалось не совсем верным что допустим при SELL случайное значение задается на всем интервале 0..1, ведь мы уже знаем что продажи убыточны

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

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

Первая попытка уйти от этого

Идея: при 100 пунктах и выше взятой прибыли- 1, если меньше - равномерно растет (в данном случае от 0.61). Припер пдля продажи, для покупки аналогично с другими уровнями. Теоретически для более сильного тренда - более высокое вознаграждение. Результата улучшились, но чуть сильнее чем стат. погрешность. При этом файл с деревом для тех же условий значительно уменьшился в размере. Судя по всему такая своеобразная сортировка результатов позволила более просто описать правила.

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

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

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

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

По выделенному не понял, что значит загрубить оценку одного дерева? Имеется в виду, что в кач-ве меток классов вы подаете только 0 и 1? В таком случае можно предположить, что дисперсия значений внутри модели уменьшилась и кач-во повысилось, как следствие. Потому что изначально алгоритм задумывался на большое кол-во итераций, но на практике получается что это не обязательно и такое загрубление, может быть, и правильно.

 
Igor Makanu:

а насколько реально этот, любезно предоставленный код автором статьи, обучить простейшим паттернам из 3-5 баров?

ЗЫ: хм, чет под алкоголем пишу как на алиэкспресс китайцу продавцу )))

Все реально, подаете на вход паттерны из 3-5 баров

 
Maxim Dmitrievsky:

Все реально, подаете на вход паттерны из 3-5 баров

буду краток.... как?

 
Igor Makanu:

буду краток.... как?

руками )

 
Maxim Dmitrievsky:

По выделенному не понял, что значит загрубить оценку одного дерева? Имеется в виду, что в кач-ве меток классов вы подаете только 0 и 1?

Да, проверка проводилась с одним деревом и метками 0 и 1. (На ансамбле подобных деревьев результат еще выше)
 
mov:
Да, проверка проводилась с одним деревом и метками 0 и 1. (На ансамбле подобных деревьев результат еще выше)
Извините, естественно с одним лесом деревьев (подразумеваю всегда лес, а на бытовом уровне говоря дерево, буду избавляться от этой привычки)
 
mov:
Извините, естественно с одним лесом деревьев (подразумеваю всегда лес, а на бытовом уровне говоря дерево, буду избавляться от этой привычки)

Да, понял. Но лесу тоже можно задать 1 дерево или вытащить ф-ю его построения. Не знаю только зачем надо.

 

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

Кроме того, я был протестирован, увеличив число от 50 до 100 и заметил, что лучшие результаты заключаются в итерациях в пределах от 20 до 25 итераций, и ничего больше, чем это не имеет смысла.

Но я должен согласиться с тем, что результаты периода RSI с различными комбинациями.

hnd1 = iRSI (_Symbol, 0,8, PRICE_CLOSE);

hnd2 = iRSI (_Symbol, 0,16, PRICE_CLOSE);

hnd3 = iRSI (_Symbol, 0,24, PRICE_CLOSE);


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

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

Мне просто интересно узнать результаты того, что произойдет с результатами, если мы подадим от 20 до 30 значений индикаторов в качестве входных данных для агента и попросим агента автоматически тренироваться.

 
FxTrader562:

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

Кроме того, я был протестирован, увеличив число от 50 до 100 и заметил, что лучшие результаты заключаются в итерациях в пределах от 20 до 25 итераций, и ничего больше, чем это не имеет смысла.


Мне просто интересно узнать результаты того, что произойдет с результатами, если мы подадим от 20 до 30 значений индикаторов в качестве входных данных для агента и попросим агента автоматически тренироваться.

В сети есть результаты экспериментов, 100 деревьев - наилучшее распознавание, 20-50 - если необходимо предсказание, я пробовал при 100, предсказательность ухудшается.

Пробовал 15-19 индикаторов на входе в расчете что при изменении обстановки лес при обучении выберет лучшие. Уже при 10 и выше результаты перестают расти. Учтите что при построении леса для каждого дерева используется лишь половина входов (в данной реализации леса). Вроде теоретически для задач классификации (как утверждают) лучше корень из числа входов (а не половина), но сам не пробовал.

 
mov :

The network has the results of experiments, 100 trees - the best recognition, 20-50 - if prediction is necessary, I tried at 100, predictability is getting worse.

I tried 15-19 indicators at the entrance in the calculation that if the situation changes the forest will choose the best when training. Already at 10 and above the results of cease to grow. Note that when building a forest, only half of the inputs are used for each tree. It seems that theoretically for classification problems (as they say) is the root of the number of inputs (rather than half) is better, but he did not try.

Thank you for your reply.

However, I want to know what happens if we can all know (15 to 20 indicators) at once and NOT using only the few indicators for the agent, but we should use all indicators. And then, train the agent for the past 1 year so that the agent can develop the best policy using all indicators. I mean that we should determine the current state of the agent at every candle close with more indicator values.

Till now what I have noticed so far is that one loss is wiping out the series of small profits due to lack of proper exit conditions. So both entry and exit conditions need to be fine tuned.

Can you please provide me one example code of an indicator without fuzzy logic and where to put the indicator in the current implementation of the code? 

I tried to add the indicators inside OnTick () function, but it did not help much. I am looking for a complete sample code of the current version of the EA without fuzzy logic.