Нейронные сети работают хуже, чем RandomForest - PullRequest
0 голосов
/ 30 октября 2018

У меня есть проблема классификации, цель состоит из 5 классов, 15 функций (все непрерывно) и 1 миллион для данных обучения, 0,5 миллиона для данных проверки. например,

shape of X_train = (1000000,15)
shape of X_validation = (500000,15)

Сначала я использовал Случайный Лес, который может получить 88% среднего. Точность.

После этого я попробовал множество архитектур нейронных сетей, лучшая из которых получила ~ 80% средней. Точность как в отношении данных обучения, так и данных проверки, что было хуже, чем в случайном лесу (Я не знаю много о разработке архитектуры нейронной сети)

Ниже приведена лучшая из моих архитектур NN. (~ 80% средняя точность)

model = Sequential()
model.add(Dense(1000, input_dim=15, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(900, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(800, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(700, activation='relu'))
model.add(Dropout(0.1))
model.add(Dense(600, activation='relu'))
model.add(Dense(5, activation='softmax'))#output layer
adadelta = Adadelta()
model.compile(loss='categorical_crossentropy', optimizer=adadelta, metrics=['accuracy'])

Размер партии = 128 и эпох = 100

Я прочитал этот вопрос . Ответ указывает на то, что NN нуждается в объеме данных и некоторой регуляции. Я думаю, что мой размер данных достаточно хорош, и я также пробовал более высокую скорость отсева и регуляцию L2, но все еще не работает. В чем может быть проблема?

Это биологические данные, о которых я не знаю, поэтому сожалею, что не могу их объяснить. Я составил график распределения функций, как показано ниже, все функции находятся в диапазоне от 0 до 3 enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...