【问题标题】:Training a multilayer perceptron in Weka在 Weka 中训练多层感知器
【发布时间】:2021-12-15 10:19:02
【问题描述】:

我正在使用 Weka 来实现分类算法。我正在处理多层感知器。我在训练模型时有一些疑问。我使用了 Weka 中已有的玩具数据集。数据集的名称是contact-lenses.arffweather.nominal.arff

我附上一些截图。

]

我使用的是5折交叉验证方法。

根据 weka 中对隐藏层的定义,There are also wildcard values: 'a' = (attribs + classes) / 2, 'i' = attribs, 'o' = classes , 't' = attribs + classes.

对于第一个屏幕截图a 应该是(属性数量 + 类)/2 = (4+3)/2 = 7/2 = 3.5 = 4

所以我们可以看到隐藏层中的 4 个节点。

现在对于屏幕截图 3,(4+2)/2 = 3。但我们可以看到隐藏层中有 5 个节点。为什么实际节点和计算节点不匹配?

其次,如果我们考虑前两张截图,我们可以看到年龄在模型中使用了三个不同的值,即年轻、近视、远视。然而,spectacle-prescrip 属性有两个不同的值,即 myope 和 hypermetrope,但只有一个值 hypermetrope 用于训练模型。 myope 的其他值呢?对其他属性也提出了同样的疑问。

简要说明会有所帮助。

【问题讨论】:

    标签: machine-learning neural-network weka perceptron


    【解决方案1】:

    默认情况下,MultilayerPerceptronunsupervised NominalToBinary 过滤器应用于输入数据,这将增加非二元名义属性的属性数量。这解释了隐藏层中不同数量的节点。

    此外,二元标称属性可以仅使用单个节点建模(低于阈值的是一个标签,高于阈值的是另一个标签) - 而 NominalToBinary 的默认设置不会更改这些类型的属性。

    【讨论】:

    • 我没有明白你的意思。我从stats.stackexchange.com/questions/48100/… 找到了 NominalToBinary 传输方法。如果这是方法,它怎么能增加属性的数量?对于答案的第二部分,您能否更准确地解释一下?
    • 我在我的答案中链接了 NominalToBinary 过滤器的 Javadoc,让您可以阅读它。只需在预处理面板中选择该过滤器,然后查看输入数据会发生什么。一个神经节点(例如一个 sigmoid)有两个状态,就像一个二元属性 - 我不确定什么是不理解的......
    • 我无法理解我的问题的第二部分。为什么选择某个属性的某些答案而丢弃某个属性的其他答案?
    • 二进制属性att1 有两个值,例如AB。假设为att1=A 构建了一个节点,则在激活节点时选择标签A,在未激活时选择B。没有任何东西被丢弃,两个标签 = 两个状态(开/关)。
    • 我对模型进行了多次训练,但总是得到这组属性值。因此,您定义为未激活的部分(如 B),我从未将停用的一堆值作为激活的一堆值。
    猜你喜欢
    • 2023-03-29
    • 2013-06-18
    • 2014-11-04
    • 2017-06-12
    • 1970-01-01
    • 2021-07-13
    • 2017-03-18
    • 2018-09-16
    • 1970-01-01
    相关资源
    最近更新 更多