【问题标题】:Puzzled by Linear Regression Results from Spark ML and Tensorflow对 Spark ML 和 Tensorflow 的线性回归结果感到困惑
【发布时间】:2017-06-12 13:41:44
【问题描述】:

我运行了这个程序:https://github.com/backstopmedia/tensorflowbook/blob/master/chapters/04_machine_learning_basics/linear_regression.py

我在上面程序的第 55 行之后添加了 "print("w=", W.eval(), "b=", b.eval())"。我得到的结果是:

w= [[ 3.5245235 ] [1.50171268]] b = 1.14499

所以 y=3.5245235x1 + 1.50171268x2 +1.14499。

我使用和上面程序相同的数据(文件格式后附),运行程序https://github.com/apache/spark/blob/master/examples/src/main/java/org/apache/spark/examples/ml/JavaLinearRegressionWithElasticNetExample.java 结果是:

系数:[0.3827266230806965,5.1690760222564425] 截距:82.22008153614573 迭代次数:6 目标历史:[0.5,0.41583549697777683,0.15548328325638935,0.15439025905767773,0.15432368309706285,0.15432368309449543]

所以 y=0.3827266230806965x1+5.1690760222564425x2 + 82.22008153614573。

我很困惑同一个问题的结果为何如此不同?我使用Spark程序的数据格式是:

354 1:84 2:46 190 1:73 2:20 405 1:65 2:52 263 1:70 2:30 451 1:76 2:57 302 1:69 2:25 288 1:63 2:28 385 1:72 2:36 402 1:79 2:57 365 1:75 2:44 209 1:27 2:24 290 1:89 2:31 346 1:65 2:52 254 1:57 2:23 395 1:59 2:60 434 1:69 2:48 220 1:60 2:34 374 1:79 2:51 308 1:75 2:50 220 1:82 2:34 311 1:59 2:46 181 1:67 2:23 274 1:85 2:37 303 1:55 2:40 244 1:63 2:30

【问题讨论】:

    标签: apache-spark machine-learning tensorflow linear-regression


    【解决方案1】:

    答案很简单,火花模型不是线性回归。

    线性回归最小化 || y - Wx ||_2^2

    Spark 模型是弹性网,它最小化 || y - Wx ||_2^2 + a1 || W ||_2^2 + a2 || W ||_1

    如果您希望此 spark 代码成为线性回归删除正则化项:

      .setRegParam(0.3)
      .setElasticNetParam(0.8);
    

    并增加迭代次数以确保收敛。

    【讨论】:

    • 不确定,我删除了这两行和 .setMaxIter(1000)。似乎没有多大帮助:系数:[0.4173620987945001,5.21659080879135] 截距:77。98253861487616 numIterations:1 ObjectiveHistory:[0.0]
    • 如果我们看这个:tempforum.neas-seminars.com/Attachment4373.aspx,我认为 Spark ML 的结果是正确的,正如@lejlot 所建议的那样。任何人都可以修复 tensorflow 代码吗?
    【解决方案2】:

    Tensorflow on simple linear regression。代码有同样的问题。修复将与那里的答案相同。此外,learning_rate 太小(将其设置为 0.001),步数需要为 100000。选择这些初始值非常技术性(一位专家与我谈过这个问题)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-27
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-14
      • 2011-11-13
      相关资源
      最近更新 更多