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

 
Andrey Dik:

Я же ранее описывал свой подход по разделению на 3 класса (sell, забор, buy). К классу "забор" относятся все случаи, которые противоречат друг другу или не могут быть разделены по классам buy и sell. Получается как раз 3-10% приходятся на buy и sell. Прелесть этого подхода в том, что при работе на незнакомых данных (реал) со временем сеть перестаёт распознавать рыночные ситуации, начинает всё чаще относить их к "забор", то есть постепенно перестаёт торговать. Это лучше во сто крат, чем начинать ошибаться со входом всё больше и больше со временем.

Но всё без толку, никому не надо, никто не слушает.  

Что есть забор? когда сетка на бай говорит бай и сетка на сел говорит сел? 

Это тот же тернаник Решетова 

 
Andrey Dik:

Я же ранее описывал свой подход по разделению на 3 класса (sell, забор, buy).

Это уже реализовано в jPrediction. Поэтому он и называется не бинарным (двуклассовым), а тернарным (трёхклассовым) классификатором.

Реализовано весьма тривиально:

  1. Тренировка: обучаем два бинарных классификатора на двух непересекающихся частях выборки.
  2. Кроссвалидация: тестирование бинарников на тех участках, на которых они не обучались.
  3. Классификация: если показания обоих бинарных классификаторов совпадают, то в качестве результата берём значение выхода любого из них. Если показания бинарников различаются - получаем на выходе: "сидеть на заборе и курить бамбук".

До этого предполагалось применить "велосипедный" метод:

  1. Обучаем бинарный классификатор на одной половинке выборки
  2. Тестируем на второй половинке выборки
  3. С помощью ROC анализа повышаем один из порогов для увеличения чувствительности, а второй порог понижаем для увеличения специфичности.
  4. Классификация: Если классифицируемый паттерн выше порога чувствительности - покупаем. Если паттерн ниже порога специфичности - продаём. Если паттерн между обоими порогами - сидим на заборе и курим бамбук.

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

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

 
mytarmailS:

Что есть забор? когда сетка на бай говорит бай и сетка на сел говорит сел? 

Это тот же тернаник Решетова 

Нет. Ссылку давать не буду, ищите.
 
Yury Reshetov:

Это уже реализовано в jPrediction. Поэтому он и называется не бинарным (двуклассовым), а тернарным (трёхклассовым) классификатором.

Реализовано весьма тривиально:

  1. Тренировка: обучаем два бинарных классификатора на двух непересекающихся частях выборки.
  2. Кроссвалидация: тестирование бинарников на тех участках, на которых они не обучались.
  3. Классификация: если показания обоих бинарных классификаторов совпадают, то в качестве результата берём значение выхода любого из них. Если показания бинарников различаются - получаем на выходе: "сидеть на заборе и курить бамбук".

До этого предполагалось применить "велосипедный" метод:

  1. Обучаем бинарный классификатор на одной половинке выборки
  2. Тестируем на второй половинке выборки
  3. С помощью ROC анализа повышаем один из порогов для увеличения чувствительности, а второй порог понижаем для увеличения специфичности.
  4. Классификация: Если классифицируемый паттерн выше порога чувствительности - покупаем. Если паттерн ниже порога специфичности - продаём. Если паттерн между порогами - сидим на заборе и курим бамбук.

Однако вышеуказанный "велосипед" даёт больше ложных сигналов по сравнению с классификацией двумя бинарниками, но зато проще в реализации.

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

Есть и ещё способ, который Вы не учли. Выход один с нейронки, но область значений условно делится на три области. Я делал как [-1.5...1.5]. Серединная область значений [-1.0...1.0] и есть "забор". Получается, что чем более знакомая ситуация для нейронки, тем больше она возбуждается и значения склоняются к крайним значениям сильнее. Значения за диапазоном [-1.0...1.0] являются соответствующими сигналами на Buy и Sell.

Но народ по прежнему продолжает терзать бинарную классификацию. 

 
Andrey Dik:

Есть и ещё способ, который Вы не учли. Выход один с нейронки, но область значений условно делится на три области. Я делал как [-1.5...1.5]. Серединная область значений [-1.0...1.0] и есть "забор".

Не я не учёл, а Вы невнимательно прочитали. См.  двупороговый "велосипедный" метод с одним бинарником п. 3 и п. 4, цитирую:

Yury Reshetov:
...

До этого предполагалось применить "велосипедный" метод:

  1. Обучаем бинарный классификатор на одной половинке выборки
  2. Тестируем на второй половинке выборки
  3. С помощью ROC анализа повышаем один из порогов для увеличения чувствительности, а второй порог понижаем для увеличения специфичности.
  4. Классификация: Если классифицируемый паттерн выше порога чувствительности - покупаем. Если паттерн ниже порога специфичности - продаём. Если паттерн между порогами - сидим на заборе и курим бамбук.
...
 
Yury Reshetov:

Проблема вашего подхода в том что изначально (еще перед тернарной фильтрации  сигналов бай/сел) ваши МО обучаются на данных которые могут объяснить дай бог на 5% из всех данных, понимаете? те еще до тернарной фильтрации МО уже обучен на шуме и выходы у него соответсвующие 

Andrey Dik:

 думаю тут та же история...

 ==================================

Мой способ вообще не использует МО в принятии решений, и не пытается объяснить всю выборку, а только то что  он посчитал сильной стат. закономерностью,  и если таких данных будет всего 0,01% от всех данных то только они и останутся...

 
Andrey Dik:

...

Но народ по прежнему продолжает терзать бинарную классификацию. 

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

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

 
Yury Reshetov:

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

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

Ну да, согласен, так и есть.

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

 
mytarmailS:

Проблема вашего подхода в том что изначально (еще перед тернарной фильтрации  сигналов бай/сел) ваши МО обучаются на данных которые могут объяснить дай бог на 5% из всех данных, понимаете? те еще до тернарной фильтрации МО уже обучен на шуме и выходы у него соответсвующие

Не говорите ерунды. В jPrediction реализован алгоритм понижения размерности входов, чтобы не получить на выходе модель, которая обучалась на шумных или малозначимых предикторах. Т.е. производится выбор из множества моделей с различными комбинациями предикторов, из которых останется только та, что имеет наилучшую обобщающую способность.
 
mytarmailS:

Понимаете? мы пытаемся разделить всю выборку на классы бай и сел, и тем самым мы хотим предсказать абсолютно каждое движение на рынке, но наши предикторы на столько галимые что объективно могут предсказать только  ~3% от всех движений, так что нам нужно? нам нужно попытаться забрать хотя бы эти 3% а все остальное неразделимое просто выкинуть потому что это и есть тот самый мусор на входе/шум который надо отсеять/причина переобучения итп... называйте как хотите, все будет правильно...

Вижу что вы понимаете причину проблем. Но я пытаюсь решить её иначе чем вы предлагаете.

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

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

Причина обращения: