如何处理神经网络中二进制和连续输入的混合?


14

我正在R中使用nnet软件包来尝试构建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,因为它无法正确解释二进制输入。要么,要么我需要给它不同的参数。

有任何想法吗?


1
使用二进制或分类数据作为神经网络输入的标准方法是将字段扩展为指标向量。例如,如果您的字段可以取值1,2或3,则将1扩展为[1,0,0],2-> [0,1,0]和3-> [ 0,0,1]。实值输入通常保持原样。
user1149913 2012年

1
既然您提到了这一点,我似乎确实想起了在寻找答案时在某处阅读过的内容。因此,由于信息源位于csv文件中,因此我实际上需要添加列以适应每个二进制输入的新字段吗?例如,如果卧室的输入范围是0-4,则使用上面的示例,我将另外创建4列(总共5列,因为“ 0”卧室表示工作室),而3BR公寓将表示为0,0,0,1 ,0?
克里斯·阿姆斯特朗(ChrisArmstrong)

Answers:


8

处理这种情况的一种方法是重新缩放输入,以使它们的方差在大致相同的范围内。通常会为回归建模提供此建议,但实际上它适用于所有涉及以不同尺度衡量的变量的建模情况。这是因为二进制变量的方差通常与连续变量的方差非常不同。Gelman和Hill(2006)建议将连续输入重新缩放两个标准偏差,以获得与(未缩放)二进制输入的奇偶校验。该建议还反映在一篇论文博客文章中

对于神经网络,更具体的建议是对二进制输入(即-1和1)使用“效果编码”,而不是“虚拟编码”(0和1),并采取使连续变量居中的附加步骤。这些建议来自Warren Sarle 的广泛的常见问题解答,特别是“为什么不将二进制输入编码为0和1?”部分。和“我应该标准化输入变量吗?” 要点是一样的:

输入的贡献将在很大程度上取决于其相对于其他输入的可变性。

至于无序分类变量-您必须将它们分解为二进制指示符。否则,它们根本就没有意义。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.