J'utilise le package nnet dans R pour tenter de construire un ANN pour prédire les prix immobiliers des condos (projet personnel). Je suis nouveau dans ce domaine et je n'ai pas de formation en mathématiques, alors s'il vous plaît, mettez-moi à nu.
J'ai des variables d'entrée qui sont à la fois binaires et continues. Par exemple, certaines variables binaires qui étaient à l'origine oui / non ont été converties en 1/0 pour le réseau neuronal. D'autres variables sont continues comme Sqft
.
Échantillon de données d'entrée
J'ai normalisé toutes les valeurs pour qu'elles soient sur une échelle de 0-1. Peut Bedrooms
- être et Bathrooms
ne devrait pas être normalisé puisque leur plage n'est que de 0 à 4?
Ces intrants mixtes posent-ils un problème pour l'ANN? J'ai obtenu de bons résultats, mais en y regardant de plus près, les poids que l'ANN a choisis pour certaines variables ne semblent pas avoir de sens. Mon code est ci-dessous, des suggestions?
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)
MISE À JOUR: Sur la base des commentaires ci-dessous concernant la répartition des entrées binaires dans des champs séparés pour chaque classe de valeur, mon code ressemble maintenant à:
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)
Les nœuds cachés dans le code ci-dessus sont 12, mais j'ai essayé une gamme de nœuds cachés de 3 à 25 et tous donnent des résultats pires que les paramètres d'origine que j'avais ci-dessus dans le code d'origine publié. Je l'ai également essayé avec une sortie linéaire = vrai / faux.
Je suppose que j'ai besoin de fournir les données à nnet d'une manière différente, car cela n'interprète pas correctement l'entrée binaire. Soit ça, soit je dois lui donner différents paramètres.
Des idées?