Блог им. afecn19

Блеск и нищета нейросети. Part 5.

Продолжу изучение нейросетей. Для тех кто случайно наткнулся на этот пост, но не хочет ковырять предшествующие поясняю.
  Был сгенерирована табличка в 50 тысяч строк и 103 столбцов. Один столбец это даты, еще один — таргет, который мы пытаемся предсказать (событие 1 и событие 0). 101 столбец изображают фичи, из которых 100 случайные величины от 1 до 10, а одна осмысленная (Week) принимает значение от 1 до 5. Для week от 1 до 4 равновероятно событие 1 и 2, для Week = 5 вероятность события 1 = 60%, 2 = 40%.
 «Шо за фигня аффтор?!». Фигня не фигня, а я моделирую свое виденье рынка и своего подхода к поиску рабочих стратегий. Виденье рынка предполагает что рынок рандомно блуждает значительную часть времени (в моему случаи 80% времени), а оставшееся его можно описать несколькими хорошими фичами. Ну как описать? Не на 100%, ну а где то процентов на 60. Сравните с детерминированным подходом ученых столетней давности — «если нам дать все фичи и много много вычислительных мощностей мы вам все посчитаем, с точностью в 100% и для любого мгновения времени!». Понятно что после этого появилось много других идей, нелинейная динамика к примеру, которая именно предполагает принципиальную невозможность прогнозирования, а не потому что нам чего то в данных недодали. Ну и наконец постановка задачи: у нас есть 101 фича, и нам с помощью инструментов ML надо получить такой прогноз события 1, который бы бился с заложенной нами неэффектиностью. И тут не помогут завывания нейросетей-что мы «фичи кривые заложили, на которых совершенно невозможно работать!», что «просто рынок изменился!, не имезнился мы бы огого!». Нам совершенно плевать на accuracy на трейне и даже на тесте. Мы как тот глупый учитель, который может не очень то и соображает зато у которого на клочке  бумажки записан правильный ответ, а напротив него ученик, в очечках, но у которого почему то при всех сплетнях что он в уме может перемножить трехзначные цифры, при сложения 1+1, получается то 5, то 6 то -32. Не, конечно вариант что мальчик в очечках не так уж и не прав возможен, может он считал в невклидовых метриках к примеру, или перемножать он умеет а вот что такое складывание ему просто не сказали.
  Ну минута лирики закончилась, что у нас в итоге? В итоге у нас нейросеть совершеннейшим образом облажалась, запутавшись в 100 рандомных фичах и совершенно не заметив ту самую единственную стоящую. Что мы можем? Можем облегчить задачу уменьшив число рандомных фичей со 100 до 10 (10+1) а затем до 2 (2+1), а можно оставить нейросеть наедине со стоящей фичей (0+1), для смеха. А можем дать нейросетке работать не 50 тысячах примерах, а на нескольких миллионах.
  Правильный ответ по Week:
Названия строк Колич    target 
1 8254 0,50
2 8206 0,50
3 8145 0,50
4 8380 0,50
5 8231 0,60

  Напомню нейросетка 100+1 предсказала событие 1 (с разбивкой по Week) так:

Названия строк Колич    target
1 4548 0,51
2 4944 0,51
3 5189 0,52
4 5803 0,52
5 6095 0,61
Общий итог 26579 0,54

  Нейросеть 10+1:

Названия строк Колич    target
1 3997 0,50
2 5216 0,49
3 6417 0,49
4 7435 0,50
5 7762 0,60
Общий итог 30827 0,52

 2+1

Названия строк Колич    target
1 3608 0,49
2 2749 0,50
3 4065 0,50
4 7099 0,50
5 7773 0,60
Общий итог 25294 0,53


0+1

Названия строк Колич    target
3 1715 0,51
4 8380 0,50
5 8231 0,60
Общий итог 18326 0,55

  По мере уменьшения числа рандомных фичей, результаты типа улучшаются. Уменьшая число рандомных фичей, мы ограничиваем нейросеть в возможности фантазировать в поисках фальшивых закономерностей, и одновременно тыкаем ее носом в правильный ответ. Апофеоз наступает в последним примере. Я не разу не специалист в нейросеть, все это досужие фантазии от меня, но в ироническом стиле опишу как скрипит мозгами нейросеть: «так, мне чего то сунули. таргет, а вот фичи… ой, фича! почему то 1 фича… хмм… к чему бы это?! ну ладно, таргет у нас принимает два значения, причем на выборке событие 1 в 52% случаях. То есть если мы будем постоянно предсказывать событие 1, то у нас будет точность 52%. Ура! ну ладно попробуем что то выжать из фичи чтобы повысить точность....». Вот так я очеловечил рассуждения нейросети, то есть придал ей способность мыслить. А все потому что я заметил одну очень интересную штуку-в последнем примере нейросеть правильно отнесла все Week=5 к событию 1. Но после этого остались week от 1 от 4, и нейросеть могла поровну каждому варианту накидать по событию 1 и событию 2. Но она так не сделала. Она «поняв» что Week=5 дает повышенную вероятность события 1, стала повышать вероятность события 1 для Week=4 и Week=3, как ближе стоящему к  Week=5, и уменьшать для Week=1 и Week=2. RF (бустинг) не может экстраполировать, она может только брать примеры из трейни, и осуществлять разбивку, а если на тесте встретить неизвестное из трейни значение фичи, то тупик-с. И разбивку Бустинг осуществил так:

Названия строк Коли     target
1 4891 0,49
2 4947 0,50
3 4739 0,49
4 5017 0,51
5 8224 0,60
Общий итог 27818 0,53
он правильно указал на Week=5, но для него что Week=1, что Week=2, что Week=3, что Week=4 это все одна равновероятная каша, он их не отличает, поэтому он раскидал событие 1 ровненько. А нейросеть так:

Названия строк Колич    target
3 1715 0,51
4 8380 0,50
5 8231 0,60
Общий итог 18326 0,55


и возможно я фантазирую, но тут нейросеть демонстрирует возможности экстраполяции, то есть рассудочной деятельности. Так что получается что бустинг это как калькулятор, который точно посчитает что вам надо, но никаких шаг вправо шаг влево, а нейросети как  это как человек-гуманитарий которого попросили на экзамене что то там посчитать. Считать он не умеет, поэтому если ему накидают кучу цифр он запутается, и получит ответ кривой и косой, но так зато у него есть какая никакая логика, суждения, мыслительный процесс, и жизненный опыт он может прикинуться больным или может предположить что «если 5 это хорошо, о все что рядом с 5 тоже неплохо, а вот все что далеко от 5 это не очень». Так что покачиваясь в кресле можно порассуждать на тему «а что то в этих нейросетях есть».
И я опять попробую изобразить как нейросеть рассуждала после того как обнаружила что в week=5 что то есть: «оке, при пятере че то там есть. оке, когда week=5, кинем туда все события 1. ну вот у нас осталось еще куча других примеров, с ними то что делать?! как как раскидать по week&! ааа… ну понятно, что ближе к week=5?! week=4! вот и кинем все оcтальные события 1 в week-4! сколько еще остается событий 1?! 1715 штук! оке, кинем их все в week=3!» Впрочем очень может быть что все это мои больные фантазии
★4
10 комментариев
А нейросеть  это  MLP ??? или что то  другое ???
Нищета. Это псевдонаука, которая была выброшена на помойку в 60-х

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

Вы опускаете подробности того, что делаете, поэтому мне трудно уследить за ходом Вашей мысли...

 

Насколько понимаю, в МЛ всё очень просто: какая утилити, такой и ответ. Не может быть чисто случайно, что Вы задали какую-то «неправильную» утилити?

 

Например, Вы можете ввести в утилити штраф за лишние предикторы (критерий типа AIC). Тогда сеть няпряжется и постарается подавить лишние факторы, оставив только самый значимый...

avatar
Автор, 50000 строк — это очень мало, а 100 фич — это довольно таки много. Конкретная реализация всего этого набора случайных величин не будет идеально ровной, в ней неизбежно будут довольно сильные случайные флуктуации — и нейросеть их обязательно найдёт. Ей пофиг, она не думает, она просто старается найти функцию в многомерном пространстве такую, которая попадает в минимум функции ошибок.

Вот представь сколько есть способов взять проекцию 100-мерного пространства на скажем 50-мерное или 10-мерное подпространство. Простая комбинаторная интуиция подсказывает нам, что очень дофига )) и в этом очень дофига есть довольно много таких подпространств, в которых (совершенно случайно!) происходят гораздо более интересные перекосы, чем твой week с его 60/40 ))

Отсюда локальный вывод — надо считать статистическую значимость как-то.

Пафос Респектыч, а кто спорит? так все и есть. Только вот RF и бустинг может
avatar
Марат, так и я не спорю, просто делюсь опытом. В чистом виде если брать RF и бустинг это те же йайца вид сбоку — они тоже радостно найдут эти случайно возникшие перекосы. Надо брать подвыборки (бэггинг), строить отдельно модели на них, анализировать чему где какая модель научилась… много возни короче.
Пафос Респектыч, ну вот для этого я и написал последние 5-6 постов. И RF  с GB вовсе не грустят что выборка 50 тысяч а фичей 101 а нейросеть-да.
avatar
Марат, наверное в таком примере со всего одной «информативной» фичей деревьям учиться проще, потому что они делят пространство гиперплоскостями перпендикулярными осям, перебирая все оси по очереди. Человек бы так же попробовал проанализировать — взял бы и посчитал матожидания и дисперсии таргета относительно каждой фичи, может быть даже построил бы сто маленьких точечных графичков и быстро понял, что переменная week чуть лучше других. Но как только структура многомерного распределения становится чуть сложнее, случайный шум быстро скрывает от них всю информативную часть.
Пафос Респектыч, и опять не спорю, все так. Но мы ведь все это хотим использовать не из любви к чистому искусству, а для извлечения прибыли. А задача перед трейдером часто именно так и стоит: вот 100 фич, из них надо выбрать несколько которые имеют информативную ценность. Так что RF замечательно заменяет годы ручного труда трейдера. Нейросети могут дать гораздо больше, и я осмелюсь предположить показал на цифрах это в своем примере, но как известно недостатки это продолжение наших достоинств, то есть можно сказать и наоборот
avatar

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

....все тэги



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