Блог им. afecn19
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 |
Gravizapa, Колмогорова, не? Я вообще ни одним местом не специалист в дипленинге. А если вам есть что рассказать или показать-так милости просим, расскажите, покажите
Аппроксимация[править | править код]
Основная статья: АппроксимацияНейронные сети могут аппроксимировать непрерывные функции. Доказана обобщённая аппроксимационная теорема[18]: с помощью линейных операций и каскадного соединения можно из произвольного нелинейного элемента получить устройство, вычисляющее любую непрерывную функцию с некоторой наперёд заданной точностью. Это означает, что нелинейная характеристика нейрона может быть произвольной: от сигмоидальной до произвольного волнового пакета или вейвлета, синуса или многочлена. От выбора нелинейной функции может зависеть сложность конкретной сети, но с любой нелинейностью сеть остаётся универсальным аппроксиматором и при правильном выборе структуры может достаточно точно аппроксимировать функционирование любого непрерывного автомата.
SergeyJu, я об этом тоже подумал, ведь для дней недели от 1 до 4 верность прогноза была 52-53%. Однако по этой логике получается что чуть некорректно сгенерированные случайные ряды он обнаружил, а ряд где явно указанно на перкос в событиях (60% на 40%) — нет. Нелогичненько
Не, теоретически это возможно. Но когда начнёшь и осознаешь несоизмеримость этой затеи, остаётся только искать смайлик рука-лицо
Прежде чем создавать нейросети для торговли, горе-кулибинам от ML следует оценить, чем их сеть будет лучше имеющихся аналогов (собственная голова). Если ничем, то и результат будет такой же — никакой.