Bayesian regression - Делал ли кто советник по этому алгоритму? - страница 51

 
Дмитрий:
А как определяете "лучшесть" комбинации?
Кроссвалидация с 5 итерациями. Но не обычная, которая случайно примеры выбирает, а адаптированная под временные ряды - с изоляцией примеров по времени. В блоге все описано.

Среднее значение целевой метрики по 5 тестовым фолдам указывает на лучшую комбинацию параметров обучения.

Затем после перебора обучается модель на Всей обучающей выборке и она проходит валидацию еще на одной выборке.
 
  • Я вот думаю, что бы мне еще поменять в эксперименте. Попробовал поменять логику индексации кейсов для кроссвалидации, улучшения не принесло.
  • Подумываю привести входы к дискретному виду.
  • Еще один вариант, это спуститься от сложной модели к более простой. Сложная модель - это ускоренные леса решений. Более простая - ускоренные линейно-регрессионные модели, где можно настроить также параметры регуляризации.
  • Но дело в том, что улучшить 55% точность до 60%, просто что-то меняя в плане дизайна, это сложно.
  • Построение комитета моделей тоже в лучшем случае даст долю процента улучшения. Дольше разрабатывать и обучать архитектуру.
  • Есть мысль посмотреть на важные предикторы и если они часто упираются в край окна (724 минуты), то можно расширить окно до суток 1440 минут. Но тогда в 2 раза уменьшится количество примеров, потому что брать их буду уже с шагом 1440 +- random term.
  • Еще можно прогнозировать другую целевку, например, пробитие уровня цены (тейк-профит / стоп-лосс) или общее "направление", например коэффициент линейной регрессии.
для всего нужно время. Но еще пару месяцев я точно посвящу эксперименту. Может, чего и выйдет.
 
Базовая проблема - это проблема перечня предикторов. Обосновав перечень предикторов можно переходить ко всему остальному.
 
СанСаныч Фоменко:
Базовая проблема - это проблема перечня предикторов. Обосновав перечень предикторов можно переходить ко всему остальному.
Спасибо. Я вот тоже склоняюсь к добавлению новых предикторов.
 
Alexey Burnakov:
Спасибо. Я вот тоже склоняюсь к добавлению новых предикторов.
Думаете, количество используемых Вами предикторов недостаточно? 
 
Алексей Тарабанов:
Думаете, количество используемых Вами предикторов недостаточно? 
Я не знаю точно.

Либо имеющиеся предикторы не несут достаточно информации,
Либо связи сильно меняются со временем и обобщающая способность падает
Либо сами предикторы меняют параметры распределения со временем.

По первому пункту, можно добавить еще, а сделать отбор самых лучших всегда можно.
По остальным пунктам может помочь обработка данных, но не на сто процентов.

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

Вот если бы я видел, что на тесте большая точность, а на валидацию она резко падает, при этом эксперимент построен правильно, значит нестационарны зависимости.
 
Alexey Burnakov:
Я не знаю точно.

Либо имеющиеся предикторы не несут достаточно информации,
Либо связи сильно меняются со временем и обобщающая способность падает
Либо сами предикторы меняют параметры распределения со временем.

По первому пункту, можно добавить еще, а сделать отбор самых лучших всегда можно.
По остальным пунктам может помочь обработка данных, но не на сто процентов.

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

Вот если бы я видел, что на тесте большая точность, а на валидацию она резко падает, при этом эксперимент построен правильно, значит нестационарны зависимости.
Скорее всего - да.
 
Alexey Burnakov:
Я не знаю точно.

Либо имеющиеся предикторы не несут достаточно информации,
Либо связи сильно меняются со временем и обобщающая способность падает
Либо сами предикторы меняют параметры распределения со временем.

По первому пункту, можно добавить еще, а сделать отбор самых лучших всегда можно.
По остальным пунктам может помочь обработка данных, но не на сто процентов.

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

Вот если бы я видел, что на тесте большая точность, а на валидацию она резко падает, при этом эксперимент построен правильно, значит нестационарны зависимости.

Уже писал, повторю.

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

Итак.

Берем некий набор предикторов, не менее 50, а лучше больше сотни.

Все наборы предикторов с которыми я имел дело (т.е. я не претендую на обобщение) можно разделить на две части:

  • часть предикторов, которые имеют отношение к целевой переменной 
  • часть предикторов, которые не имеют отношение к целевой переменной - шум

Очень аккуратно пишу "отношение" и совершенно сознательно не употребляю какие-либо термины.

Пример предикторов:

  • машка - НЕ имеет отношение к целевой переменной ЗЗ
  • отклонение цены от машки имеет отношение к целевой переменной ЗЗ

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

Проблема наличия этих двух групп предикторов в первоначальном наборе предикторов состоит в том, что стандартные инструменты определения ВАЖНОСТИ  не работают. Поэтому необходимы некоторые средства, а их я разработал и использую, которые позволяют грубо отсеять шумовые предикторы. Следует отметить, что здесь нет однозначности. Алгоритм дает порознь количественную оценку для действительных и номинальных предикторов. Меньше 2 (некая относительная величина) - шум точно. От 2 до 3: можно пользоваться,но лучше не надо....

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

Отсеяв шумовые предикторы, а в моих набора их было около 80%(!), берем остаток перечня предикторов и к нему начинаем применять инструменты из R для определения важности переменных. Реальное количество предикторов, используемых для обучения модели - примерно половина от НЕ шумовых предикторов, т.е. примерно 10% от первоначального набора.

Важность предикторов определяю в окне. При движении окна перечень предикторов из базовых 20% все время меняется. Т.е. при построении модели используется 12-15 предикторов, но они разные при движении окна вслед за котировкой. 

 

А из-за чего весь сыр-бор?

А дело в том, что очистка набора предикторов от шумовых приводит к построению НЕ переобученных моделей.

В цифрах.

На полном наборе предикторов удается построить модели с ошибкой предсказания 3%-5%! Причем, любые алгоритмы, которые делят выборку на части,  так называемые "вне выборки" - ООВ, подтверждают этот результат. Это очень хорошо видно в raatle, который всегда делить исходную выборку на части и очень радует результатами.

Но.

Если в исходной выборке имеются шумовые предикторы, то если взять настоящую "вне выборки", т.е., например, выборка для обучения с 01.06.2015 по 01.01.2016, а затем посчитать на выборке после 1 января, то запросто вместо 3%-5%  можно получить ошибку и в 50% и в 70%!  Причем чем дальше начало "вне выборки" отстоит от 1 января, тем хуже результат.

МОДЕЛЬ ПЕРЕОБУЧЕНА 

Если очистить первоначальный набор от шумовых предикторов, то результаты следующие и одинаковые для  randomforest, ada SVM, а также ряда других моделей - т.е модель ничего не решала в моих случаях, то результаты следующие: ошибка предсказания около 30% на любых наборах. За счет применения инструментов R по определению важности предикторов можно еще уменьшить ошибку примерно до 25%. Улучшить этот результат для целевой переменной ЗЗ не удалось.

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

Уже писал, повторю.

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

Итак.

Берем некий набор предикторов, не менее 50, а лучше больше сотни.

Все наборы предикторов с которыми я имел дело (т.е. я не претендую на обобщение) можно разделить на две части:

  • часть предикторов, которые имеют отношение к целевой переменной 
  • часть предикторов, которые не имеют отношение к целевой переменной - шум

Очень аккуратно пишу "отношение" и совершенно сознательно не употребляю какие-либо термины.

Пример предикторов:

  • машка - НЕ имеет отношение к целевой переменной ЗЗ
  • отклонение цены от машки имеет отношение к целевой переменной ЗЗ

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

Проблема наличия этих двух групп предикторов в первоначальном наборе предикторов состоит в том, что стандартные инструменты определения ВАЖНОСТИ  не работают. Поэтому необходимы некоторые средства, а их я разработал и использую, которые позволяют грубо отсеять шумовые предикторы. Следует отметить, что здесь нет однозначности. Алгоритм дает порознь количественную оценку для действительных и номинальных предикторов. Меньше 2 (некая относительная величина) - шум точно. От 2 до 3: можно пользоваться,но лучше не надо....

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

Отсеяв шумовые предикторы, а в моих набора их было около 80%(!), берем остаток перечня предикторов и к нему начинаем применять инструменты из R для определения важности переменных. Реальное количество предикторов, используемых для обучения модели - примерно половина от НЕ шумовых предикторов, т.е. примерно 10% от первоначального набора.

Важность предикторов определяю в окне. При движении окна перечень предикторов из базовых 20% все время меняется. Т.е. при построении модели используется 12-15 предикторов, но они разные при движении окна вслед за котировкой. 

 

А из-за чего весь сыр-бор?

А дело в том, что очистка набора предикторов от шумовых приводит к построению НЕ переобученных моделей.

В цифрах.

На полном наборе предикторов удается построить модели с ошибкой предсказания 3%-5%! Причем, любые алгоритмы, которые делят выборку на части,  так называемые "вне выборки" - ООВ, подтверждают этот результат. Это очень хорошо видно в raatle, который всегда делить исходную выборку на части и очень радует результатами.

Но.

Если в исходной выборке имеются шумовые предикторы, то если взять настоящую "вне выборки", т.е., например, выборка для обучения с 01.06.2015 по 01.01.2016, а затем посчитать на выборке после 1 января, то запросто вместо 3%-5%  можно получить ошибку и в 50% и в 70%!  Причем чем дальше начало "вне выборки" отстоит от 1 января, тем хуже результат.

МОДЕЛЬ ПЕРЕОБУЧЕНА 

Если очистить первоначальный набор от шумовых предикторов, то результаты следующие и одинаковые для  randomforest, ada SVM, а также ряда других моделей - т.е модель ничего не решала в моих случаях, то результаты следующие: ошибка предсказания около 30% на любых наборах. За счет применения инструментов R по определению важности предикторов можно еще уменьшить ошибку примерно до 25%. Улучшить этот результат для целевой переменной ЗЗ не удалось.

Спасибо.

 

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

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

 

ЗЫ: попробую кроме важности переменных из леса решений также применить свой доморощенный метод, основанный на функции взаимной информации. Потом покажу результаты. 

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


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


Вопрос: SVM учитывает взаимодействия между переменными или там просто сумма взвешенных индивидуальных компонентов?
Причина обращения: