Estoy usando el paquete nnet en R para intentar construir un ANN para predecir los precios inmobiliarios de condominios (proyecto personal). Soy nuevo en esto y no tengo experiencia en matemáticas, así que por favor, descuida conmigo.
Tengo variables de entrada que son binarias y continuas. Por ejemplo, algunas variables binarias que originalmente eran sí / no se convirtieron a 1/0 para la red neuronal. Otras variables son continuas como Sqft
.
He normalizado todos los valores para que estén en una escala de 0-1. ¿Tal vez Bedrooms
y Bathrooms
no debería normalizarse ya que su rango es solo 0-4?
¿Estas entradas mixtas presentan un problema para el ANN? He obtenido buenos resultados, pero después de un examen más detallado, los pesos que el ANN ha elegido para ciertas variables no parecen tener sentido. Mi código está abajo, ¿alguna sugerencia?
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)
ACTUALIZACIÓN: Según los comentarios a continuación sobre la separación de las entradas binarias en campos separados para cada clase de valor, mi código ahora se ve así:
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)
Los nodos ocultos en el código anterior son 12, pero he intentado un rango de nodos ocultos de 3 a 25 y todos dan peores resultados que los parámetros originales que tenía anteriormente en el código original publicado. También lo he intentado con salida lineal = verdadero / falso.
Supongo que necesito alimentar los datos a nnet de una manera diferente porque no está interpretando la entrada binaria correctamente. O eso, o necesito darle diferentes parámetros.
¿Algunas ideas?