Estou usando o pacote nnet no R para tentar construir uma ANN para prever preços de imóveis para condomínios (projeto pessoal). Eu sou novo nisso e não tenho formação em matemática, então, por favor, fique comigo.
Eu tenho variáveis de entrada que são binárias e contínuas. Por exemplo, algumas variáveis binárias que eram originalmente sim / não foram convertidas em 1/0 para a rede neural. Outras variáveis são como contínuas Sqft
.
Eu normalizei todos os valores em uma escala de 0-1. Talvez Bedrooms
e Bathrooms
não deva ser normalizado, pois o intervalo é de apenas 0-4?
Essas entradas mistas apresentam um problema para a RNA? Eu obtive bons resultados, mas após uma análise mais detalhada, os pesos que a RNA escolheu para determinadas variáveis não parecem fazer sentido. Meu código está abaixo, alguma sugestão?
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)
ATUALIZAÇÃO: Com base nos comentários abaixo sobre a divisão das entradas binárias em campos separados para cada classe de valor, meu código agora se parece com:
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)
Os nós ocultos no código acima são 12, mas eu tentei um intervalo de nós ocultos de 3 a 25 e todos apresentam resultados piores que os parâmetros originais que eu tinha acima no código original postado. Eu também tentei com saída linear = true / false.
Meu palpite é que eu preciso alimentar os dados para nnet de uma maneira diferente, porque não está interpretando a entrada binária corretamente. Ou isso, ou eu preciso fornecer parâmetros diferentes.
Alguma ideia?