Как смоделировать нейронную сеть с помощью каретки, R

Итак, у меня есть набор данных, на котором я выполняю алгоритмы машинного обучения. Я выполнил MLR, пошаговую регрессию, SVM и случайный лес для набора данных размером 180 x 160. Я моделирую одну переменную по сравнению со 159 другими переменными с 179 случаями. Это все регрессионное моделирование. Я использую пакет каретки, в котором я использую функцию train для 10-кратной перекрестной проверки 10 раз с различными алгоритмами машинного обучения. Мне посоветовали прочитать статью, в которой вместо этого использовались модели нейронных сетей и были получены лучшие результаты, поэтому я пытался найти способ сделать то же самое, но с моделью нейронной сети.

Я видел, как сделать следующее: -

model <- train(RT..seconds.~., data = cadets, method = "AMORE", trControl = ctrl)

но это не работает. Мне сказали, что это не сработает, так как функция поезда еще не упаковала AMORE. Поэтому я решил использовать вместо этого nnet: -

model <- train(RT..seconds.~., data = cadets, method = "nnet", trControl = ctrl)

который работал. Однако значение RMSE, которое я получил, было 171, и когда я посмотрел на мои предсказанные и наблюдаемые значения, все предсказанные значения были всего 1 с 0,9999. Кто-нибудь знает, что я делаю не так?

Благодарность!


person user2062207    schedule 07.02.2014    source источник
comment
Я не думаю, что использовать NN в наборе данных 180x160 - хорошая идея.   -  person Hong Ooi    schedule 07.02.2014
comment
вы пробовали указать skip=TRUE в команде nnet?   -  person George Dontas    schedule 07.02.2014
comment
Я только что попробовал, сделал: - 'cadets.nn ‹- train (RT..seconds. ~., Data = cadets, method = nnet, trControl = ctrl, skip = TRUE)', и я получил тот же RMSE значение, с прогнозируемыми значениями, равными 1 или 0   -  person user2062207    schedule 07.02.2014


Ответы (1)


Вам необходимо использовать параметр linout = TRUE для функции nnet:

model <- train(RT..seconds.~., data = cadets, 
               method = "nnet", trControl = ctrl,
               linout = TRUE)

Если вы этого не сделаете, будет использована сигмоидальная функция активации, и все прогнозы будут привязаны к [0, 1].

person topepo    schedule 08.02.2014
comment
Спасибо, вроде есть работа! Хотя ответы, которые я получаю, похожи на сгруппированные (например, между 8 разными числами), но черт возьми, он все еще работает, спасибо - person user2062207; 09.02.2014