Марат
Марат личный блог
17 ноября 2019, 17:40

Нейросети. Part 4.

Напомню был сгенерирован DateFrame со 100 бессмысленными фичами и одной осмысленной, для проверки могет ML или не могет. Как оказалось GradientalBoosting могет и еще как, RF могет, но хуже. Что покажут нейросети? Нейросетей много, архитектур много, настраивать их не просто, я предложил решить задачу нейросети со следующей архитектурой:

model = Sequential()
model.add(Convolution1D(input_shape = (101, 1),
nb_filter=16,
filter_length=4,
border_mode='same'))

model.add(BatchNormalization())
model.add(LeakyReLU())
model.add(Dropout(0.5))

model.add(Convolution1D(nb_filter=8,
filter_length=4,
border_mode='same'))

model.add(BatchNormalization())
model.add(LeakyReLU())
model.add(Dropout(0.5))
model.add(Flatten())
model.add(Dense(64))
model.add(BatchNormalization())
model.add(LeakyReLU())
model.add(Dense(2))
model.add(Activation('softmax'))

  Тут все как положено — сверточная нейросеть, модная функция активации ReLU, широкой рукой накиданные Dropoutы и BatchNormalization, несколько слоев чтобы похвастаться не просто об обучении, а о глубоком обучении. Обучал на 100, 500 и 1500 эпохах. При увеличении числа эпох росла accuracy на train и на test, далеко превосходя заложенную accuracy ряда. При попытках использовать обученную нейросетку для прогноз получался один большой пфук.
По табличке:

Названия строк Колич    target
1 5480 0,56
-1 3280 0,45
Общий итог 8760 0,52

 
кажется что нейросеть не безнадежна, то где она указывала в прогнозе на событие 1, это событие происходило в 56% случаях, там где предсказала что событие 1 не произойдет, точность составила 55%. Кажется ничего так. Но как мы помним единственная осмысленная фича это Week, и весь юмор ситуации в том что нейросеть строили прогноз на основе махинация с рандомными рядами.

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

Вот прогноз события 1 с разбивой по Week. Если бы нейросеть сообразила что все дело в этой фиче а остальные просто мусор, то число прогнозов события 1 для week=5 значительно превосходила бы то же самое для остальных значений week, но как мы видим это не так, да их побольше но разве что на чуть чуть. Использование порога в 55% принципиально ничего не поменяло:

Названия строк Колич    target
1 16326 0,55
1 2517 0,52
2 2917 0,52
3 3067 0,53
4 3703 0,53
5 4122 0,62
Общий итог 16326 0,55

  Вывод очень простой-мы скормили нейросетке 100 фальшивых фич и 1 реальную. Нейросеть не смогла найти настоящую, вместо этого она с упоением придумала липовые зависимости между фальшивками (причем каким то образом стругая эти зависимости, прогнозы каким то образом оказывались лучше чем простое подбрасывание монетки). То есть можно предположить, что если вы попробуете закинуть в нейросетку много много фичей для прогноза на фондовом рынке, из которых многие не имеют никакого значения, в надежде что нейросетка то разберется, что стоящее, а что мусор, то ничего подобного-нейросетка из многих многих бессмыслиц способна найти псевдо связи, а до той или тех стоящих  фичей дало даже не дойдет! Вот вам и наглядная демонстрация почему нейсросетки на фондовом рынке не могут.
 
11 Комментариев
  • Roman Resner
    17 ноября 2019, 18:03
    Ахаха, ну то что у тебя не получилось, не значит что ни у кого не получится. Кстати, ты видимо плохо диплёрнинг учил, а иначе знал бы, что совершенно точно доказано, что любую задачу можно представить в виде одноуровневой нейронной сети и вопрос только в правильно количестве нейронов.  Название теоремы этой позабыл уже. 
  • По
    17 ноября 2019, 18:35
    Теорема Черча, опровергающая возможность создания нейронной сети.
  • Активный Инвестор
    17 ноября 2019, 19:09
    нейрологика на стороне bye-side плохо работает, потому что там большая часть информации — это фейк… на стороне sell-side нейрологика работает прекрасно уже много лет
  • Ынвестор
    17 ноября 2019, 21:16
      Ну все-таки правильную фичу они нашли. А так конечно при 100 разных фичах (по типу орел-решка) при сотнях тысяч измерений вероятность что какая-то фича покажет положительный результат — она ОЧЕНЬ велика. Вероятность 20(!!!) подряд выпадения решки — один на миллион. Вроде бы крайне мала. А теперь прикиньте когда вы кидаете 100 монет по 100 тысяч раз.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн