Блог им. afecn19

Чувствительность методов ML к размеру обучающей выборки. Part 6.

В прошлом тексте я пробовал «помочь», нейросете уменьшив число рандомных фичей. Сейчас попробую помочь увеличив число примеров. Может наша сверточная сеть покажет что то вменяемое если увеличить число примеров до миллиона? Это задача на моем компьютере требует совершенно других затрат времени, так что я вчера запустил машинку обучаться, а сам пошел спать. Обучался на 50 эпохах, увеличивая данные от 10 тысяч до 50 тысяч (увеличивая обьем на 10 тысяч), и от 100 тысяч до 900 тысяч (с шагом +100 тысяч).
  Результаты порадовали. Я не буду в 5 раз пересказывать логику «исследования», но убрав week=5 мы должны (ну как должны!? вообще то нам никто ничего не должен) получить равновероятный прогноз события 1 и события 0. Ниже на графике эту норму в 50% изображает серая линия. Красная это прогноз события=1, синяя событие=0, ось Х число примеров на обучающей выборке в тысячах. 

  Чувствительность методов ML к размеру обучающей выборки. Part 6.
  И пусть девочка кинет в меня камне если тут нет сходимости. 
  Но это динамика при увеличении обучающей выборки от 100 тысяч до 900 тысяч, а вот если сюда присовокупить от 10 тысяч до 50, тут все не так очевидно:

Чувствительность методов ML к размеру обучающей выборки. Part 6.

У меня следующее обьяснение: нейросеть большая фантазерка, в том смысле что способна найти в числах даже то чего там и нет. Но с другой стороны нельзя сложить из букв «п», «ж», «о», «а» слово вечность, поэтому когда обучающая выборка очень маленькая фантазии нейросети ограниченны. По мере роста обучающей выборки, нейросеть начинает находить все больше и больше черных кошек в черной комнате, которых там нет, и так до размера выборки в 100 тысяч примеров. По мере дальнейшего размера выборки фантазию нейросети начинает ограничивать реальность-сложно аппроксимировать 101 фичей данные размером в сотни тысяч. Ну это ИМХО. 
  Поставив week = 5 мы должны получить другой тип сходимости. Пробую обьяснить-если нейросеть правильно все разобрала, а именно поняла что единственная значимая фиxа это week и именно при week = 5, то число событий 1 она должна как можно чаще закидывать в week = 5. Смотрим:

Чувствительность методов ML к размеру обучающей выборки. Part 6.
Линия обозначает как часто прогнозировалось событие 1 при week=5, видим как по мере увеличения обучающей выборки нейросеть все уверенней делает правильный выбор. Опять зовем девочку готовую кинуть камень, если тут нет сходимости к 100%.
  Впрочем у нас есть еще один трюк. Ведь можно с разной долей уверенности делать прогноз. Нейросеть нам одинаково спрогнозирует событие 1, даже если его вероятность она оценивает в 50,0000001% и 55%, но степени уверенности разные. Если поработать не с абсолютными прогнозами а вероятностными вылазит очень много интересных вещей.
Что на 2 таблицах ниже: вероятность это уверенности с какой нейросеть предсказывает событие 1, а столбцы 1,2 ..5 это дни недели. Данные в процентах по строкам. Давайте подумаем. Если нейросетка раскусила что при week=5, вероятность события 1 выше, большей уверенностью предсказывать событие 1 при week=5, а при прочих week она будет сигнализировать о своей неуверенности низкими процентами вероятности.    

Вероятность 1 2 3 4 5 Итого
50% 25,29% 25,67% 25,31% 21,72% 2,00% 100,00%
51% 23,13% 24,75% 24,81% 23,75% 3,57% 100,00%
52% 20,07% 22,71% 25,08% 26,04% 6,10% 100,00%
53% 16,84% 19,95% 23,65% 28,10% 11,45% 100,00%
54% 13,14% 16,62% 22,41% 28,39% 19,44% 100,00%
55% 10,50% 13,24% 17,41% 26,74% 32,11% 100,00%
56% 6,58% 9,57% 13,90% 23,08% 46,87% 100,00%
57% 4,29% 6,92% 9,65% 17,16% 61,98% 100,00%
58% 2,40% 3,66% 6,82% 14,01% 73,11% 100,00%
59% 1,04% 2,11% 3,88% 7,44% 85,53% 100,00%
60% 0,91% 1,06% 1,63% 5,71% 90,69% 100,00%
61% 0,21% 0,41% 0,82% 3,49% 95,08% 100,00%
62% 0,11% 0,11% 0,74% 2,31% 96,74% 100,00%
63% 0,38% 0,19% 0,57% 1,15% 97,70% 100,00%
64% 0,00% 0,00% 0,32% 0,96% 98,72% 100,00%
65% 0,00% 0,00% 0,00% 0,67% 99,33% 100,00%
66% 0,00% 0,00% 0,00% 0,00% 100,00% 100,00%
67% 0,00% 0,00% 0,00% 0,00% 100,00% 100,00%
68% 0,00% 0,00% 0,00% 0,00% 100,00% 100,00%
69% 0,00% 0,00% 0,00% 0,00% 100,00% 100,00%
70% 0,00% 0,00% 0,00% 0,00% 100,00% 100,00%
             
             
Вероятность 1 2 3 4 5 Итого
50% 20,49% 19,38% 20,02% 19,49% 20,61% 100,00%
51% 19,51% 19,99% 20,35% 20,62% 19,51% 100,00%
52% 18,78% 19,72% 20,06% 20,84% 20,59% 100,00%
53% 17,45% 19,63% 19,80% 21,35% 21,78% 100,00%
54% 16,59% 19,22% 18,91% 23,16% 22,12% 100,00%
55% 16,57% 17,45% 19,90% 21,79% 24,28% 100,00%
56% 15,80% 16,82% 20,66% 21,30% 25,41% 100,00%
57% 13,67% 15,76% 18,62% 25,45% 26,50% 100,00%
58% 13,80% 14,46% 19,89% 25,40% 26,45% 100,00%
59% 13,40% 18,51% 20,52% 23,49% 24,08% 100,00%
60% 13,18% 13,53% 18,45% 25,83% 29,00% 100,00%
61% 10,28% 15,17% 19,79% 24,42% 30,33% 100,00%
62% 12,11% 12,11% 16,80% 28,52% 30,47% 100,00%
63% 8,67% 14,67% 18,00% 31,33% 27,33% 100,00%
64% 16,00% 13,00% 10,00% 31,00% 30,00% 100,00%
65% 12,50% 12,50% 16,07% 23,21% 35,71% 100,00%
66% 5,71% 17,14% 22,86% 14,29% 40,00% 100,00%
67% 5,00% 10,00% 15,00% 50,00% 20,00% 100,00%
68% 28,57% 7,14% 7,14% 21,43% 35,71% 100,00%
69% 0,00% 28,57% 14,29% 14,29% 42,86% 100,00%
70% 0,00% 33,33% 0,00% 0,00% 66,67% 100,00%
71% 50,00% 0,00% 0,00% 50,00% 0,00% 100,00%
72% 0,00% 0,00% 0,00% 0,00% 100,00% 100,00%

Первая таблица прогнозы полученные при обучении от 100 тысяч примеров, ниже до 50 тысяч. Видим что размер опять решает-чем лучше мы накормили свою нейросетку, тем лучше она вычленяет week=5. Вверху сеть четко указывает что при уверенности в 50% в своем прогнозе события 1, нейросеть 98%  (100% -2%) относит их на week от 1 до 4, в то время как в нижней таблице размытая каша, нейросеть четко не отличает что где, когда и зачем. И если смотреть с другого конца таблиц, например уверенность в 60%: вверху нейросеть уже относит такой уверенный прогноз для  week=5 в 90,69% случаях, в то время как скудно обученная нейросеть, опять мнется-у ней week=5 составляет долю всего в 29%.
  Как мы можем это использовать? А очень просто, мы говорим-нам не нужны прогнозы если нейросеть сама в них уверенна только на 50% с хвостиком. Мы хотим рассматривать прогнозы только начиная от 55% уверенности. Оке. Выкидываем, получаем для нейросети обученной на выборках от 100 тысяч:
 
Названия строк 1 2 3 4 5 Общий итог
2001 0,60% 3,21% 11,10% 28,42% 56,67% 100,00%
2002 1,59% 3,76% 7,75% 17,94% 68,96% 100,00%
2003 4,25% 6,91% 10,21% 17,56% 61,07% 100,00%
2004 4,46% 6,97% 11,10% 17,40% 60,06% 100,00%
2005 4,14% 6,88% 10,39% 16,73% 61,86% 100,00%
2006 4,89% 7,03% 10,98% 17,40% 59,70% 100,00%
2007 4,35% 6,69% 11,04% 17,49% 60,43% 100,00%
2008 4,78% 6,65% 9,52% 16,32% 62,72% 100,00%
2009 3,04% 4,68% 8,55% 15,76% 67,97% 100,00%
Общий итог 3,88% 6,19% 10,16% 17,78% 61,99% 100,00%
  
До 50 тысяч:
Названия строк 1 2 3 4 5 Общий итог
2001 11,20% 16,93% 21,54% 24,46% 25,86% 100,00%
2002 11,04% 15,56% 19,73% 24,27% 29,40% 100,00%
2003 12,63% 15,61% 18,64% 22,72% 30,40% 100,00%
2004 12,75% 15,40% 19,03% 22,04% 30,78% 100,00%
2005 12,70% 15,19% 18,72% 21,91% 31,48% 100,00%
2006 13,39% 15,98% 18,97% 21,97% 29,69% 100,00%
2007 13,12% 15,77% 18,87% 22,51% 29,74% 100,00%
2008 13,72% 15,89% 18,46% 22,08% 29,85% 100,00%
2009 12,55% 14,86% 18,58% 23,21% 30,79% 100,00%
Общий итог 12,54% 15,77% 19,25% 22,81% 29,63% 100,00%

  Так какой можно сделать вывод? Нейросети оказались вовсе не так безнадежны, и если им дать обучиться на выборке где то начиная от 200 тысяч примеров, то они начинают сносно выделяют верную фичу из 100 рандомных, показывая при пороге в 55% precision (точность) где то в 57% (при максимуме в 60%) и recall (наполненность) в 90%. До GB не дотягивает, но можно пофантазировать что если взять 2, 3, 10 млн примеров, то нейросеть наконец то все разложит по полочкам. 

Для GB я тоже потестил при обучении от 100 до 900 тысяч примеров и сравнил с нейросеткой:

  GB   Нейросеть
  0 1   1 0
100          
1 53,75% 46,25%   43,43% 56,57%
2 53,76% 46,24%   64,38% 35,62%
3 53,54% 46,46%   82,30% 17,70%
4 54,05% 45,95%   92,54% 7,46%
5 0,79% 99,21%   97,20% 2,80%
200          
1 49,93% 50,07%   36,74% 63,26%
2 52,58% 47,42%   52,03% 47,97%
3 54,95% 45,05%   66,08% 33,92%
4 55,23% 44,77%   81,28% 18,72%
5 0,09% 99,91%   98,82% 1,18%
300          
1 46,79% 53,21%   40,75% 59,25%
2 47,83% 52,17%   50,54% 49,46%
3 53,59% 46,41%   60,13% 39,87%
4 54,02% 45,98%   72,65% 27,35%
5 0,00% 100,00%   97,86% 2,14%
400          
1 50,10% 49,90%   40,17% 59,83%
2 52,51% 47,49%   48,50% 51,50%
3 52,31% 47,69%   58,78% 41,22%
4 48,34% 51,66%   69,53% 30,47%
5 0,00% 100,00%   97,36% 2,64%
500          
1 48,49% 51,51%   39,28% 60,72%
2 50,79% 49,21%   47,34% 52,66%
3 52,02% 47,98%   57,25% 42,75%
4 52,11% 47,89%   68,84% 31,16%
5 0,00% 100,00%   97,35% 2,65%
600          
1 47,69% 52,31%   44,24% 55,76%
2 47,64% 52,36%   53,09% 46,91%
3 48,49% 51,51%   62,79% 37,21%
4 47,60% 52,40%   73,60% 26,40%
5 0,00% 100,00%   98,43% 1,57%
700          
1 47,09% 52,91%   43,58% 56,42%
2 47,52% 52,48%   52,16% 47,84%
3 49,31% 50,69%   62,25% 37,75%
4 48,82% 51,18%   74,11% 25,89%
5 0,00% 100,00%   98,57% 1,43%
800          
1 44,25% 55,75%   45,19% 54,81%
2 46,73% 53,27%   52,02% 47,98%
3 46,67% 53,33%   60,71% 39,29%
4 46,94% 53,06%   73,27% 26,73%
5 0,00% 100,00%   98,92% 1,08%
900          
1 48,62% 51,38%   40,78% 59,22%
2 49,66% 50,34%   48,14% 51,86%
3 48,69% 51,31%   60,06% 39,94%
4 49,75% 50,25%   74,76% 25,24%
5 0,00% 100,00%   99,31% 0,69%


Ну тут все понятно. GB начиная с выборки в 300 тысяч примеров показывает 100% результат: все события 1 кидает в week=5, а для всех остальных раскидывает события поровну, в то время как нейросетка чего то пытается нащупать.
Таки дела

P.S. Отвечая на вопрос в чем вывод: я в процессе, но пока получается вывод такой-для моей постановки задач в трейдинге, нейросети вообще нафиг не нужны. Им нужно кучу данных, они путаются, они нервные как барышни, они фантазерки, придумывают чего нет. А вот RF и GB просты и надежны как калькуляторы. При этом нейросети (теоретически!) не нуждаются в предварительной и очень утомительной работе с фичами, а RF/GB без этого ну никак. И если нейросети реально имеют какой то рассудок, они могут сделать прогноз на основе «творческой» работы с данными, то RF/GB работают в рамках примеров, ни шаг влево ни шаг вправо, никаких экстраполяций. Так что нейросетки действительно могут творить, то чего мы даже не предполагаем и не задумываем… и как знать, может то что нейросетки показывают нам фигу при попытке внедрить их на фондовом рынке, это их сигнал-«бегите безумцы, тут ловить нечего!»
★4
16 комментариев
И что делать, если событий несколько тысяч? 
Имхо, применять гораздо более топорные методы.
avatar
SergeyJu, думаю для RF и GB вообще без разницы, что миллион события что 10. Это же калькуляторы 
avatar
Вывод? Больше информативных фич -> болше миллионов точек данных -> больше дней и ночей пыхтения вычислителем (= нужен датацентр). Плохо без датацентра кароч ))
avatar
oerlikon, Отвечая на вопрос в чем вывод: я в процессе, но пока получается вывод такой-для моей постановки задач в трейдинге, нейросети вообще нафиг не нужны. Им нужно кучу данных, они путаются, они нервные как барышни, они фантазерки, придумывают чего нет. А вот RF и GB просты и надежны как калькуляторы. При этом нейросети (теоретически!) не нуждаются в предварительной и очень утомительной работе с фичами, а RF/GB без этого ну никак. И если нейросети реально имеют какой то рассудок, они могут сделать прогноз на основе «творческой» работы с данными, то RF/GB работают в рамках примеров, ни шаг влево ни шаг вправо, никаких экстраполяций. Так что нейросетки действительно могут творить, то чего мы даже не предполагаем и не задумываем… и как знать, может то что нейросетки показывают нам фигу при попытке внедрить их на фондовом рынке, это их сигнал-«бегите безумцы, тут ловить нечего!»
avatar
нейросети нужны зависимости, тогда она их найдет ))
а вообще в целом рекомендую смотреть теорию — там есть способы улучшить сходимость обучения: базовая функция нейрона, количество  обучающих примеров, перетасовка примеров при каждом обучении и еще были рекомендации (счас не припомню). когда изучал сетки много полезного было на этом ресурсе basegroup.ru/
avatar
sis12qw, они им дают данные, которые уже кем то переварены и высраны. А потом несчастная нейронная сеть, оснащенная передовыми методами и розеткой 220, тщетно пытается синтезировать из говна питательные элементы. Почему так происходит? Да потому что «архитекторы» исходят из ложных предпосылок, что ручные трейдеры на этих данных что-то зарабатывают.
avatar
Позволю в некоторых моментах с вами не согласиться. 
По поводу не дотягивают то RF и GB — тут очень сильно будет влиять структура сети, т.е. ее нужно правильно подобрать, а это та еще магия, хотя можно попробовать автоМЛ для генерации структуры.
Так же странно, что Вы решили, что нейросети не нуждаются в работе с фичами. Я бы сказал, работы даже больше нужно, одна нормализация бывает многого стоит.
И еще вопрос, Вы пишите: "… сверточная сеть". Вы используете CNN (convolutional neural network)? 
avatar
Что только не придумают люди, это просто ппц, лучше ищите что то простое или учитесь искать)
avatar
нейросеть большая фантазерка, в том смысле что способна найти в числах даже то чего там и нет. Но с другой стороны нельзя сложить из букв «п», «ж», «о», «а» слово вечность, поэтому когда обучающая выборка очень маленькая фантазии нейросети ограниченны. По мере роста обучающей выборки, нейросеть начинает находить все больше и больше черных кошек в черной комнате, которых там нет

Вообще говоря, это не так. При росте уравнений и сохранении количества неизвестных — число фантазий, наоборот, уменьшается. Тут у вас что-то другое, явно. 


 Нейросеть нам одинаково спрогнозирует событие 1, даже если его вероятность она оценивает в 50,0000001% и 55%, но степени уверенности разные. 

Только если ваша нейросеть — персептрон. Для стандартных сетей это не верно, их функция прогноза приблизительно:
1 от + inf.
0.5 от 0 и
0 от — inf.

Всё зависит от активирующей функции.
avatar
Человек так устроен, что ему лень самому думать, вот и пытаемся придумать себе инструмент,  который бы всё за нас делал, но так бывает только в сказках.
Машковский Евгений, лень двигатель прогресса )

avatar
Машковский Евгений, У Лема был рассказ как решили построить супер комп, который бы думал и решал все проблемы. И этот комп думал-думал, затем построил другой комп, побольше, чтобы переложить решение на него. Ну а тот- следующий. В итоге имитация деятельности но решения так и нет.
1967 год вроде, как раз расцвет моды на нейросети.
Сейчас просто перекапывают старый перегной.
avatar
А сетку попроще взять не пробовали?

PS: а меня достали эти ряды и я решил покербота поклепать… либо через CFR, либо, если не попрет, через какой-нить CNN… рюхаю вот… прикольно…
Что такое RF и GB?
avatar

теги блога Марат

....все тэги



UPDONW
Новый дизайн