Оценки для RF получили, под капот заглянули, хотелось бы теперь и ручками все проверить-посмотреть. Тем более что косяк у RF есть, он единственную смысловую фичу ставил не в вершине дерева, а только второй а порой и третьей после случайно сгенерированной. То есть примерно половина событий сразу криво отсекалось.
Выгрузил в excell сгруппировал и получил примерно такое:
Названия строк |
Коли |
target |
1 |
40861 |
0,52 |
-1 |
355 |
0,53 |
Общий итог |
41216 |
0,52 |
А это, кто не понял-крах! Это как нейросетка которая в качестве прогноза завтрашней цены показывает последнюю цену из теста. Вот и здесь та же история-RF просто 40861 раз из 41216 (99% случаев) спрогнозировал 1, потому что единица в выборке встречалась в 52% случаях. То есть RF поступил как поц на рынке, который увидел что рынок в среднем чаще растет и решил постоянно ставить на рост, при том что у меня был зашита вполне конкретная зависимость.
Но горевать не будем, потому что насколько убого себя показал RF, настолько блестяще показал себя GradientBoostingClassifier:
Названия строк |
Коли |
target |
1 |
27818 |
0,53 |
-1 |
13398 |
0,50 |
Общий итог |
41216 |
0,52 |
Сразу видно что GradientBoosting тупо не ставит постоянно на единичку, он явно что то нащупал. С дополнительной разбивкой по дням недели:
Названия строк |
Коли |
target |
1 |
27818 |
0,53 |
1 |
4891 |
0,49 |
2 |
4947 |
0,50 |
3 |
4739 |
0,49 |
4 |
5017 |
0,51 |
5 |
8224 |
0,60 |
-1 |
13398 |
0,50 |
1 |
3363 |
0,51 |
2 |
3259 |
0,50 |
3 |
3406 |
0,50 |
4 |
3363 |
0,50 |
5 |
7 |
0,43 |
Общий итог |
41216 |
0,52 |
Видно что GradientBoosting четко отнес все пятницы к событиям 1 (8224 раза против 7), а все остальные дни недели оценил как 60 на 40 в пользу события 1. Верно было бы если он оценил 50 на 50, но по сравнению с идиотом RF это огромный прогресс. Если взять порог в >55%, то получится еще красивей:
Названия строк |
Коли |
1 |
7053 |
2 |
1 |
4 |
2 |
5 |
7050 |
Общий итог |
7053 |
То есть с таким порогом у нас точность прогноза составит 99,5% пр полноте 85,72%. То есть мы выловили 85,72% осмысленных событий, и при этом делая прогноз, были точны в 99,5% случаев. Можно констатировать что GradientBoosting без особых настроек выловил практически все. А вот RF запутался в 100 случайных фичах и делал наивные прогнозы. Думаю именно в этом причина того что RF, на реальных данных и с осмысленными фичами, показавший себя лучше GradientBoosting, при засланных казачках потерялся и не смог решить заданную ему головоломку. Если помочь RF, и уменьшить число рандомных фичей и использовать порог, то он оживает и показывает вразумительные результаты.
to be continued…
Врут все пациенты. (доктор Хауз).
Буду благодарен