机器学习从入门到进阶⑦丨双对数回归模型

在本系列的内容中,我们已经讨论了简单线性回归模型,多变量回归模型以及选择最优化模型的方法。


费尔南多现在已经构建了一个更好的模型。


机器学习从入门到进阶⑦丨双对数回归模型


price = -55089.98 + 87.34 engineSize + 60.93 horse power + 770.42 width


但是,费尔南多还有更多想法:

  • 如何使用常见的比较单位来估算价格变化?
  • 发动机大小、马力和宽度所预测的价格有多大弹性?

  • 在本篇内容中,我们将解决这些问题。本文将介绍双对数回归模型(log-log regression model)。

    概述


    为了理解双对数回归模型,我们首先来了解一下导数(derivative)、对数(logarithm)、指数(exponential)以及弹性(elasticity)的概念。

    导数

    回到高中,导数可以说是数学教的最有意思的概念之一。


    导数是一种表示变化的方式——函数在某个点上的变化量。


    如变量y是x的函数,则将y定义为:

    y = f(x)


    则求y对x的导数,表示为:

    dy/dx = df(x)/dx = f'(x)


    其含义是:

    y相对于x变化的变化,
    即:如果x变化,y会有多少变化?


    这正是费尔南多需要的,他想知道,受其他变量的变化的影响,价格又会有怎样的变化。


    之前提到,多元回归模型的一般形式如下:


    y = β0 + β1.x1 + β2.x2 + …+ βn.xn +


    费尔南多建立的模型如下:

    price = β0 + β1.发动机大小
    即,将价格作为发动机大小的函数。


    费尔南多用发动机大小对汽车价格求导。那是不是只是通过发动机大小的变化,就能体现出价格的变化?


    并不是这么简单。线性模型是用来表达线性关系的,如下:

    y = mx + c


    如果计算y对x的导数,则会给得出:

    dy/dx = m . dx/dx + dc/dx

  • 发动机大小本身的变化的导数始终为1,即dx/dx = 1
  • 一个常数与其他任何变量相关的变化的导数始终为0,因为它是一个常数,其值从不改变,即dc/dx = 0

  • 那么公式就变成了:

    dy/dx = m


    在发动机大小上应用价格导数,将只能得到发动机大小的系数。


    如何进行转换呢?接下来认识两个数学概念——指数和对数。

    指数

    指数是一种具有两个运算符的函数,底数(b)和指数(n)。其被定义为b^n,形式如下:

    f(x) = b^x

    底数可以是任何的正数,欧拉数(e)是统计中常用的基数。


    在几何上,指数关系具有以下的结构:


    机器学习从入门到进阶⑦丨双对数回归模型

  • x的增长不会使得y相应增长,直到达到某个阈值
  • 到达阈值后,x的小幅增长,会使y急速的上升
  • 对数

    对数是一个有趣的概念。在回归模型中,对数具有一定特征。对数的基本属性是它的底数,典型的底数有2、10和e。

    如:

  • 多少个2相乘等于8?2 × 2 × 2 = 8,即答案是 3
  • 也可以表示为 log2(8) = 3

  • 以2为底数的8的对数为3。


    对数和指数都有一个常用的底数,被称为欧拉数(e),其近似值为 2.71828。统计学中经常会用到e。以e为底数的对数称为自然对数。


    对数也有很好的变换能力,对数可以将指数关系变换为线性关系。例如下图显示了y和x之间的指数关系:


    机器学习从入门到进阶⑦丨双对数回归模型

    如果将对数应用于x和y,则log(x)和log(y)之间的关系是线性的,看起来像这样:


    机器学习从入门到进阶⑦丨双对数回归模型

    弹性

    弹性是衡量一个变量对另一个变量变化的响应程度。假设我们有一个函数:Q = f(P),那么Q的弹性定义为:

    E = P/Q × dQ/dP

  • dQ/dP是P变化所引起的Q的平均变化
  • 结合在一起

    现在让我们把导数、对数和指数这三个数学概念放在一起看。它们间的关系规则如下:

  • e的对数是1,即log(e)= 1
  • 指数的对数是指数乘以底数
  • log(x)的导数是:1 / x

  • 例如,一个函数y可以表示为:

  • y = b^x
  • 则log(y) = x log (b)

  • 那么这对线性回归模型来说意味着什么呢?我们是否可以灵活运用导数、对数和指数,重写线性模型方程,以得出由x的变化所引起的y的变化率呢?


    首先,将y和x之间的关系定义为指数关系。

    1. y = α x^β
    2. 首先将其表示为双对数函数:
      log(y)= log(α)+β.log(x)
    3. 方程y = α x^β看起来并不像是回归模型:y =β0+β1.x1。当β0= log(α)、β1=β,这个等式可以重写为:log(y)=β0+β1.log(x1)
    4. 但它如何表达弹性关系呢?我们求相对于x的log(y)的导数,可得:
  • d. log(y)/ dx = β1. log(x1)/dx
  • => 1/y . dy/dx = β1 . 1/x => β1 = x/y . dy/dx
  • β1的方程就是弹性。

  • 构建模型


    搞清楚了这些概念后,让我们看看费尔南多如何重构模型:

    机器学习从入门到进阶⑦丨双对数回归模型

    log(价格) = β0 + β1. log(发动机大小) + β2. log(马力) + β3. log(车宽)


    他希望根据发动机大小、马力和车辆宽度的变化,来估算汽车价格的变化。


    经过对模型的训练,最终得到了如下的参数:


    机器学习从入门到进阶⑦丨双对数回归模型

    该模型的方程是:


    log(价格) = -21.6672 + 0.4702.log(发动机大小) + 0.4621.log(马力) + 6.3564 .log(宽)


    对该模型的解释如下:

  • 所有系数都很重要
  • 调整R平方值为0.8276,说明该模型解释了82.76%的数据变化
  • 如果发动机大小增加4.7%,汽车价格将增加10%
  • 如果马力增加4.62%,汽车价格将增加10%
  • 如果汽车的宽度增加6%,汽车价格将增加1%

  • 模型评估


    费尔南多现在建好了双对数回归模型,接下来该通过训练和测试数据来评估模型的表现。


    他之前已经将数据分成了训练集和测试集。对基于训练数据创建的模型来说,测试数据是不可见的数据。在测试数据上的表现,才是对模型的真正考验。


    机器学习从入门到进阶⑦丨双对数回归模型

    在训练数据上,模型表现很好,调整R平方值为0.8276,说明该模型可以解释82.76%的训练数据变化。为了使模型可以最终被接受,需要在测试数据上也有良好表现。


    经过对模型的测试,计算得出0.8186的调整R平方值。这相当不错,意味着即使对于不可见的数据,模型也能解释81.86%的变化。


    请注意,该模型估算的是log(价格),即价格的对数,而不是价格本身。想要估算汽车价格,需要进行转换。


    即将log(价格)作为底数e的指数。

    e^log(价格) = 价格


    结语


    前几篇文章中,统计学习奠定了基础,假设检验讨论了零假设和替代假设,简单线性回归模型简化了回归,之后进入多变量回归模型的世界,又讨论了模型选择方法。而在这篇文章中,我们介绍了双对数回归模型。


    到目前为止,构建的回归模型只涉及数值自变量。下一篇文章将讨论交互关系和定性变量的概念。


    翻译:TalkingData

    作者:Pradeep Menon

    来源:Mudium

    原文链接:https://towardsdatascience.com/data-science-simplified-part-7-log-log-regression-models-499ecd1495f0

    展开阅读全文

    页面更新:2024-04-15

    标签:对数   费尔   进阶   模型   底数   导数   线性   变量   函数   发动机   弹性   入门   大小   机器   概念   指数   关系   价格   游戏

    1 2 3 4 5

    上滑加载更多 ↓
    推荐阅读:
    友情链接:
    更多:

    本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

    © CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
    闽公网安备35020302034903号

    Top