Я использую пакет nnet в R, чтобы попытаться построить ANN для прогнозирования цен на недвижимость для квартир (личный проект). Я новичок в этом и не имею математического образования, поэтому, пожалуйста, держись со мной.
У меня есть входные переменные, которые являются двоичными и непрерывными. Например, некоторые двоичные переменные, которые изначально были да / нет, были преобразованы в 1/0 для нейронной сети. Другие переменные являются непрерывными, как Sqft
.
Я нормализовал все значения по шкале 0-1. Может быть Bedrooms
и Bathrooms
не следует нормализовать, поскольку их диапазон составляет всего 0-4?
Эти смешанные входы представляют проблему для ANN? Я получил хорошие результаты, но при ближайшем рассмотрении веса, которые ANN выбрал для определенных переменных, кажется, не имеют смысла. Мой код ниже, какие-либо предложения?
ANN <- nnet(Price ~ Sqft + Bedrooms + Bathrooms + Parking2 + Elevator +
Central.AC + Terrace + Washer.Dryer + Doorman + Exercise.Room +
New.York.View,data[1:700,], size=3, maxit=5000, linout=TRUE, decay=.0001)
ОБНОВЛЕНИЕ: Основываясь на комментариях ниже относительно разделения двоичных входных данных на отдельные поля для каждого класса значений, мой код теперь выглядит следующим образом:
ANN <- nnet(Price ~ Sqft + Studio + X1BR + X2BR + X3BR + X4BR + X1Bath
+ X2Bath + X3Bath + X4bath + Parking.Yes + Parking.No + Elevator.Yes + Elevator.No
+ Central.AC.Yes + Central.AC.No + Terrace.Yes + Terrace.No + Washer.Dryer.Yes
+ Washer.Dryer.No + Doorman.Yes + Doorman.No + Exercise.Room.Yes + Exercise.Room.No
+ New.York.View.Yes + New.York.View.No + Healtch.Club.Yes + Health.Club.No,
data[1:700,], size=12, maxit=50000, decay=.0001)
Скрытых узлов в приведенном выше коде 12, но я пробовал диапазон скрытых узлов от 3 до 25, и все они дают худшие результаты, чем исходные параметры, которые я имел выше в исходном опубликованном коде. Я также попробовал это с линейным выводом = true / false.
Я предполагаю, что мне нужно передать данные в nnet другим способом, потому что он неправильно интерпретирует двоичный ввод. Либо так, либо мне нужно дать ему другие параметры.
Есть идеи?