Weka训练Multilayer Perceptron时隐藏层节点与属性取值疑问
隐藏层节点数与公式计算不匹配的原因
你计算时直接使用了原始属性的数量,但Weka Multilayer Perceptron官方定义里的attribs指代的是经过标称属性编码后的输入层神经元总数量,而非原始属性个数:
- 第一张截图使用的
contact-lenses.arff的属性编码后总特征数代入(attribs + classes)/2计算后结果为3.5,向上取整为4,和显示结果吻合; - 第三张截图使用的
weather.nominal.arff的输入属性多为多取值标称属性,One-Hot编码后输入特征数远高于4,代入公式计算后结果向上取整为5,和实际显示的节点数一致。如果确认编码后特征数代入公式仍不匹配,可检查是否手动修改了隐藏层参数,没有使用默认的a通配符。
部分属性取值未出现在模型中的原因
该现象是标称属性虚拟编码(Dummy Encoding)的正常特性:
对于有n个取值的标称属性,Weka默认会选择1个取值作为基准参考组,仅对剩余的n-1个取值生成对应的编码特征输入模型。比如spectacle-prescrip的两个取值中,myope被选为基准组,仅生成hypermetrope对应的特征,myope作为默认值不会单独在模型节点中显示,并非没有参与训练。
如果模型训练时启用了L1正则化(权重衰减),部分对分类结果贡献极低的特征会被惩罚到权重趋近于0,模型可视化时会省略这类无贡献的连接,也会看起来对应属性取值没有参与训练。
内容的提问来源于stack exchange,提问作者Encipher
相关产品推荐
相关产品推荐

