Weka LinearRegression胜过MultilayerPerceptron ......我做错了什么?

时间:2015-11-02 13:15:10

标签: machine-learning statistics neural-network weka

此代码可以正常工作,但不是很好,因为它无法解释某些非线性例如函数极值的二次行为

    LinearRegression finalClassifier = new LinearRegression();      
    finalClassifier.buildClassifier(adjInstances);
    double predictedValue = finalClassifier.classifyInstance(finalInstance);

并且此代码产生完全虚假的结果

    MultilayerPerceptron finalClassifier = new MultilayerPerceptron();      
    finalClassifier.buildClassifier(adjInstances);
    double predictedValue = finalClassifier.classifyInstance(finalInstance);

我相信MultilayerPerceptron应该总是优于LinearRegression。只有某些函数形状是LinearRegression无法处理的(例如f(x)= x ^ 2),这对于MultilayerPerceptron神经网络来说是一块蛋糕。

所以我可能错误地使用了API,或者对MultilayerPerceptron的可接受输入有一些未记录的要求。它可能是什么?

我的数据实例包含20个数字和名义属性的组合,例如:

A01 750
A02 1
A03 1
A04  true
A05  false
A06  false
A07  false
A08  false
A09  true
A10  false
A11  true
A12  false
A13  false
A14  false
A15  true
A16  false
A17  false
A18  false
A19  Yes
A20 34

1 个答案:

答案 0 :(得分:4)

您可以回答的问题的唯一部分是

  

我相信MultilayerPerceptron应该总是优于LinearRegression。只有某些函数形状是LinearRegression无法处理的(例如f(x)= x ^ 2),这对于MultilayerPerceptron神经网络来说是一块蛋糕。

这简直是假的。为什么LR可以更好?

  1. 您的数据可以用线性模型很好地表示,在这种情况下,MLP可能会过度拟合,而LR将很有效。这是一个非常常见的错误观念 - 更复杂的模型不是更好的"如果您的关系很复杂,它们只是简单的要求,但对于简单的问题 - 复杂的模型会失败即可。
  2. 你的身材不合适。 LR很容易适应,实际上,没有正则化(岭回归)它是最简单的可能模型之一,你实际上有一个封闭形式解决方案(OLS方法)和否超参数即可。然而,即使是最简单的MLP,你也没有任何保证最佳解决方案的训练方法,你必须适合多个超参数(隐藏的数量,激活函数,学习率) ,动量率,......)。在现实生活中,你几乎从不很好地训练神经网络,它实际上是NN的最大问题 - 它们极难被训练,因此它们永远不会被没有经验的机器学习者使用。还有许多其他的回归量可供没有深入了解该领域的人使用,例如SVR,Ridge回归(及其核心版本)。
  3. 如果提供的代码是您的实际代码,那么结果的最可能原因是上面的第二点 - 您不能简单地说'#34;为我构建一个神经网络!"并期望它运作良好,它不会这样工作:)