美文网首页
深度学习回归和OLS的对比

深度学习回归和OLS的对比

作者: 多多爸 | 来源:发表于2021-08-28 01:31 被阅读0次

    照着R语言和深度学习第三章 “3.6预测房价:一个回归的例子” 做了一遍,用同样的数据又跑了一遍OLS作对比,算是对深度学习多了点理解。

    1. 数据

    数据来自1970年代中期波士顿,内生变量是郊区房屋的价格中位数,外生变量包括房屋特征、住房所在区域的特征等13个变量。书里没有具体说明数据来源,也没有变量名或者标签,估计是截面数据,否则应该包括年份变量。训练样本404个,测试样本102个。

    2. 模型设置

    • 层和网络
      • 一共三层
      • 前两层输出都是64,使用relu激活
      • 第三层输出为1,没有定义激活函数(即默认为线性模型)
    • 优化器:rmsprop
    • 损失:均误方差(MSE,mean squared error,与OLS的目标函数一样)
    • 监控目标:平均绝对误差(MAE,mean absolute error)。监控MSE结果应该不会差很多,选择MAE大概是为了和内生变量单位保持一致,比MSE更容易解释。

    3. 模型训练

    • 因为是小样本,采取了K折验证(K = 4)
    • 在每轮训练中
      • 迭代次数为100(epochs = 100)
        • 迭代次数远高于前两个例子,大概是因为样本量太小
      • 每批样本为1 (batch_size = 1)
        • 不知道batch_size的设置原则,以及这里为什么设置成1,后面的章节需要注意一下这个问题
        • 查了一下,batch_size = 1会影响收敛速度
      • 模型跑下来,四折平均MAE为2.8左右,高于书里的2.38
    • 按照书里将迭代次数设为500又跑了一次,花了很多时间(10分钟的样子),远高于第三章的前两个例子(上万样本、张量展开后需要1G 空间)
      • 精确度表现确实好了一些,但仍然不如书上的数字
      • MAE最低点的位置跟书上差不多,都在120次迭代出现

    4. 测试

    • epochs = 80, batch_size = 16
    • MAE是3左右,比书里高了0.5,是个不小的差距
    • 试过epochs = 100/120, batch_size = 4/8,MAE也只降到2.8
    • 降低batch_size特别影响速度

    5. OLS模型

    为了保持可比性,也是用训练样本跑的回归,然后使用回归系数对测试样本进行预测,然后计算MAE,结果为3.3,就是说精度比深度学习方法低了10%。

    为了省事,没有用K折方法,由于K折验证降低样本量,估计使用K折或者bootstrap会进一步降低精度。

    由于不知道自变量的定义,无法采用更有效的模型,比如传统的房价模型会把某几个变量做交叉或者做二次项,这类模型会获得更高的精度,用这些更好的模型作对比会更有意义,毕竟深度学习模型是高度非线性的。曾经用美国的数据跑过,调一下模型可以使R平方从65%提高到80%,那么把精度再提高10%也许不算难事。

    6. 结论与若干细节

    1. 研究问题的影响
      住房市场是很成熟的市场,每个变量的影响在交易过程中已经被考虑得很充分,也就是说市场已经给每个变量制定了合理的价格。这些价格的形成来自买家与卖家(也许还有中介)的讨价还价过程,也就是来自人的计算。人在讨价还价时不会做特别复杂的计算,非常可能就是靠大脑中的线性模型计算,比如100平米的房子比50平米贵两倍。这种情况下,OLS和深度学习取得相同的效果是可以理解的。
      但这不是说深度学习是多此一举,更好的解释是,如果真实的模型是线性的,那么深度学习这个黑箱最终给出的也是个线性模型。对于更复杂的市场,或许深度学习更有优势。
    2. 样本量的影响
      即便真实的世界定价是非线性的,想从几百个样本当中提取复杂的非线性关系,恐怕也不容易。
    3. 运行速度
      大概是batch_size的影响,深度学习跑得很慢,而OLS基本上是一个命令搞定,回车敲下去,立刻出结果。再一次,样本量如果够大(再大的样本OLS还是非常快),batch_size设置大一些,速度可能不再是个问题,而且还可能获得OLS抓不到的效应。
    4. 对世界的理解
      OLS可以看到每个变量的影响,而且还需要我们思考变量是否内生,以确定因果关系。深度学习目的却只在预测,无法提供对世界的理解。经济学知识(以及其他社会科学知识)和计量经济学方法,对于理解世界来说,仍然不可缺少。好的深度学习模型仍然需要和专业知识合作——至少输入哪些变量、生成哪些新变量还是需要专家来决定吧。
      现在我明白了Susan Athey为什么会结论机器学习,或者AI,并不能用来揭示因果关系,只是在模型选择上提供帮助。
    5. 几个细节问题
      (1)为了让模型跑得更快,深度学习通常会把因变量进行标准化变换,每个变量增加1,意味着增加一个标准差。如果是在OLS当中做这种变换,回归系数的解释需要跟着调整。但深度学习并不在意回归系数,只要因变量不做标准化,预测结果的单位是保持不变的。(当然OLS的预测也不会跟着因变量标准化而变化。)
      (2)OLS通常要考虑的内生性、样本选择等问题,原因是一旦出现上述问题,对系数的估计会出现不一致——也就是说样本一旦改变,估计结果会发生显著变化。机器学习虽然不考虑这些问题,但通过使用测试样本,可以对估计结果一致性做出反应,也就是说过拟合。或许机器学习方法能够为计量的结果提供一些参考,这个问题就有待计量经济学家去回答了。

    Update

    (2021.9.23)
    TensorFlow for R网站给出了波士顿房价变量说明,所给的代码也比书里更详细,值得读。

    相关文章

      网友评论

          本文标题:深度学习回归和OLS的对比

          本文链接:https://www.haomeiwen.com/subject/bbbviltx.html