我正在使用 R 中的 nnet 包尝试构建一个人工神经网络来预测公寓(个人项目)的房地产价格。我是新手,没有数学背景,所以请和我一起裸露。
我有二进制和连续的输入变量。例如,一些原本是/否的二进制变量被转换为神经网络的 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 的一系列隐藏节点,结果都比我在上面发布的原始代码中的原始参数更差。我也试过线性输出=真/假。
我的猜测是我需要以不同的方式将数据提供给 nnet,因为它没有正确解释二进制输入。要么,要么我需要给它不同的参数。
有任何想法吗?