Есть проблема в том что оригинальные классы типа фактор, а результат в матрице конвертируется в соответствующие факторам порядковые номера. Поэтому в конце сравнение идёт через as.numberic().
Что бы всё работало нормально с факторами, нужно predictionMatrix создавать как data.frame, но после этого у меня функция rbind выдавала варнинги, нужно что-то ещё менять, я не разбирался что там не так.
Несколько мыслей по коду:
1. Не нужно применять конструкцию for() без крайней необходимости. Есть чудесная альтернатива foreach() которая кроме высокой скорости выполнения позволяет распараллелить вычисления между доступными ядрами.
2. Ансамбль моделей имеет смысл и дает результат только если модели имеют значительные отличия. Два варианта: один набор данных - разные модели (RF, DT, SVM); однв модель - разные наборы данных. Пример по последнему варианту ниже
1. Не нужно применять конструкцию for() без крайней необходимости. Есть чудесная альтернатива foreach() которая кроме высокой скорости выполнения позволяет распараллелить вычисления между доступными ядрами.
2. Ансамбль моделей имеет смысл и дает результат только если модели имеют значительные отличия. Два варианта: один набор данных - разные модели (RF, DT, SVM); однв модель - разные наборы данных. Пример по последнему варианту ниже
Выбираем модели с лучшими показателями и дальше работаем с ними.
Выбираем модели с лучшими показателями и дальше работаем с ними.
Вот тут и кроется беда.
А лучшие показатели на каких данных посчитаны?
Почему спрашиваю, потому что вконты вовсю пытаются понять, как выбрать модель (из множества моделей), используя данные обучения и тестирования. А тут у вас так прямо: берем лучшие показатели и работаем с ними.
Почему спрашиваю, потому что вконты вовсю пытаются понять, как выбрать модель (из множества моделей), используя данные обучения и тестирования. А тут у вас так прямо: берем лучшие показатели и работаем с ними.
Исходный набор делится на train/test стратифицировано. На train обучаем на тест соответственно тестируем. Неужели из кода непонятно?
Исходный набор делится на train/test стратифицировано. На train обучаем на тест соответственно тестируем. Неужели из кода непонятно?
Удачи
Попробую rminer::holdout, спасибо за пример. Вообще, из опыта, если подбирать модель и её параметры так чтобы получить лучший результат на тестовой выборке - то модель в итоге будет показывать действительно хороший результат на тестовой выборке. Но при этом результат обычно очень низок на новых данных. Я говорю конкретно о данных с форекса, в других областях это есть вполне нормальный подход. Не надеюсь что rminer::holdout для форекса что-то кардинально изменит.
Dr.Trader: Попробую rminer::holdout, спасибо за пример. Вообще, из опыта, если подбирать модель и её параметры так чтобы получить лучший результат на тестовой выборке - то модель в итоге будет показывать действительно хороший результат на тестовой выборке. Но при этом результат обычно очень низок на новых данных. Я говорю конкретно о данных с форекса, в других областях это есть вполне нормальный подход. Не надеюсь что rminer::holdout для форекса что-то кардинально изменит.
Вот и я о том. А он не понял.
На форексе хороший тест не означает хорошую работу вне выборки. Вот и бьются люди. А тут прямо так - берем лучшие результаты (и мастером подгонку). По-доброму )
Dr.Trader: то модель в итоге будет показывать действительно хороший результат на тестовой выборке. Но при этом результат обычно очень низок на новых данных. Я говорю конкретно о данных с форекса,
Alexey Burnakov:
На форексе хороший тест не означает хорошую работу вне выборки. Вот и бьются люди.
Рынок ходит против своей же статистики, это теория которую я подтвердил практикой, это единственная известная мне теория которая дает ответы на все вопросы начиная от того почему модель не работает на новых данных и заканчивая почему вообще все теряют деньги на рынке...
почему вам так сложно это принять?
неужели багаж старых знаний и привычек на столько сильно подавляет восприятие новой информации?
зачем так сильно концентрироваться на модели если разница в производительности между моделями в пределах от 0,5% до 5%
никакая модель тут не поможет ведь суть в самих данных
уже не раз кидал эту картинку, но тем не менее.....
Всмотритесь! это разница кумулятивных прогнозов на бай и на сел от двух сетей cum(buy.signal) - cum(sell.signal), в идеале если наша модель хороша то синий график должен коррелировать с ценой, это значит что сеть хорошо понимает данные и адекватно на них реагирует, по факту что мы видим????????
Нельзя сказать что модель не понимает данные, ведь корреляция хоть и обратная но структура идентичная, но с направлением беда, те рынок ходит против прогнозов те против статистики на которой сеть обучилась в прошлом...
А теперь скажите мне какая модель справиться с этим? какая кросвалидацыя тут поможет? любое обучение модели с последующей проверкой на out of sample (новых данных) будет ничто иное как подгонка модели которая хорошо работает на out of sample и не более того.. И вы при тренировке моделей сами это постоянно видите, что на абсолютно новых данных модель всегда сливает, ну видите же??? согласитесь!! Я вам даю ответ почему так происходит
А это график с данными на которых проходило само обучение, или тут только тест на новых данных? Если нарисовать график для обоих периодов времени сразу, и для тренировочного, и для тестового, то на первой (тренировочной) части данных будет полное совпадение синего и серого графика, а с началом новых данных - произойдёт резкий переход в обратную корреляцию?
Если всё было бы так просто, то достаточно обучить любую модель, и просто инвертировать её предсказания. Это не работает к сожалению. Обучить модель дающую 0% точности на новых данных так-же сложно как и добиться точности 100%. По дефолту, например подбрасывая монетку точность будет 50%, и уйти на пару десятков процентов в любую сторону это задача одинаковой сложности. Проблема не в том что модели дают противоположный результат, а в том что на каких-то барах результат будет правильный, на каких-то других - неправильный, и всё это рандомно и без возможности отфильтровать только правильные результаты.
И почему вы от прогноза B отнимаете прогноз S? Может быть стоит делать наоборот, S-B? Тогда и корреляция внезапно станет правильной.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Вы случайно не клерк в брокерской канторе старого образца?
Просветите пожалуйста "как надо", полагаю Ваш "секретный метод" это торговать машки(рандом) и удваиваться при проигрыше, так?)))
На комиссию жить придется господа, только на комиссию...
Создание комитета, и тестирование:
Есть проблема в том что оригинальные классы типа фактор, а результат в матрице конвертируется в соответствующие факторам порядковые номера. Поэтому в конце сравнение идёт через as.numberic().
Что бы всё работало нормально с факторами, нужно predictionMatrix создавать как data.frame, но после этого у меня функция rbind выдавала варнинги, нужно что-то ещё менять, я не разбирался что там не так.
Несколько мыслей по коду:
1. Не нужно применять конструкцию for() без крайней необходимости. Есть чудесная альтернатива foreach() которая кроме высокой скорости выполнения позволяет распараллелить вычисления между доступными ядрами.
2. Ансамбль моделей имеет смысл и дает результат только если модели имеют значительные отличия. Два варианта: один набор данных - разные модели (RF, DT, SVM); однв модель - разные наборы данных. Пример по последнему варианту ниже
Выбираем модели с лучшими показателями и дальше работаем с ними.
Удачи
Несколько мыслей по коду:
1. Не нужно применять конструкцию for() без крайней необходимости. Есть чудесная альтернатива foreach() которая кроме высокой скорости выполнения позволяет распараллелить вычисления между доступными ядрами.
2. Ансамбль моделей имеет смысл и дает результат только если модели имеют значительные отличия. Два варианта: один набор данных - разные модели (RF, DT, SVM); однв модель - разные наборы данных. Пример по последнему варианту ниже
Выбираем модели с лучшими показателями и дальше работаем с ними.
Удачи
Выбираем модели с лучшими показателями и дальше работаем с ними.
Вот тут и кроется беда.
А лучшие показатели на каких данных посчитаны?
Почему спрашиваю, потому что вконты вовсю пытаются понять, как выбрать модель (из множества моделей), используя данные обучения и тестирования. А тут у вас так прямо: берем лучшие показатели и работаем с ними.
Вот тут и кроется беда.
А лучшие показатели на каких данных посчитаны?
Почему спрашиваю, потому что вконты вовсю пытаются понять, как выбрать модель (из множества моделей), используя данные обучения и тестирования. А тут у вас так прямо: берем лучшие показатели и работаем с ними.
Исходный набор делится на train/test стратифицировано. На train обучаем на тест соответственно тестируем. Неужели из кода непонятно?
Удачи
Хотелось бы видеть Вас почаще. Не пропадайте.
Исходный набор делится на train/test стратифицировано. На train обучаем на тест соответственно тестируем. Неужели из кода непонятно?
Удачи
Попробую rminer::holdout, спасибо за пример. Вообще, из опыта, если подбирать модель и её параметры так чтобы получить лучший результат на тестовой выборке - то модель в итоге будет показывать действительно хороший результат на тестовой выборке. Но при этом результат обычно очень низок на новых данных. Я говорю конкретно о данных с форекса, в других областях это есть вполне нормальный подход. Не надеюсь что rminer::holdout для форекса что-то кардинально изменит.
то модель в итоге будет показывать действительно хороший результат на тестовой выборке. Но при этом результат обычно очень низок на новых данных. Я говорю конкретно о данных с форекса,
Рынок ходит против своей же статистики, это теория которую я подтвердил практикой, это единственная известная мне теория которая дает ответы на все вопросы начиная от того почему модель не работает на новых данных и заканчивая почему вообще все теряют деньги на рынке...
почему вам так сложно это принять?
неужели багаж старых знаний и привычек на столько сильно подавляет восприятие новой информации?
зачем так сильно концентрироваться на модели если разница в производительности между моделями в пределах от 0,5% до 5%
никакая модель тут не поможет ведь суть в самих данных
уже не раз кидал эту картинку, но тем не менее.....
Всмотритесь! это разница кумулятивных прогнозов на бай и на сел от двух сетей cum(buy.signal) - cum(sell.signal), в идеале если наша модель хороша то синий график должен коррелировать с ценой, это значит что сеть хорошо понимает данные и адекватно на них реагирует, по факту что мы видим????????
Нельзя сказать что модель не понимает данные, ведь корреляция хоть и обратная но структура идентичная, но с направлением беда, те рынок ходит против прогнозов те против статистики на которой сеть обучилась в прошлом...
А теперь скажите мне какая модель справиться с этим? какая кросвалидацыя тут поможет? любое обучение модели с последующей проверкой на out of sample (новых данных) будет ничто иное как подгонка модели которая хорошо работает на out of sample и не более того.. И вы при тренировке моделей сами это постоянно видите, что на абсолютно новых данных модель всегда сливает, ну видите же??? согласитесь!! Я вам даю ответ почему так происходит
А это график с данными на которых проходило само обучение, или тут только тест на новых данных? Если нарисовать график для обоих периодов времени сразу, и для тренировочного, и для тестового, то на первой (тренировочной) части данных будет полное совпадение синего и серого графика, а с началом новых данных - произойдёт резкий переход в обратную корреляцию?
Если всё было бы так просто, то достаточно обучить любую модель, и просто инвертировать её предсказания. Это не работает к сожалению.
Обучить модель дающую 0% точности на новых данных так-же сложно как и добиться точности 100%. По дефолту, например подбрасывая монетку точность будет 50%, и уйти на пару десятков процентов в любую сторону это задача одинаковой сложности. Проблема не в том что модели дают противоположный результат, а в том что на каких-то барах результат будет правильный, на каких-то других - неправильный, и всё это рандомно и без возможности отфильтровать только правильные результаты.
И почему вы от прогноза B отнимаете прогноз S? Может быть стоит делать наоборот, S-B? Тогда и корреляция внезапно станет правильной.