Lesson 12 - 回归
1 回归到底是什么?
回归这个术语本身并没有很贴切的反映它所处理的事, 在最初的时候, 回归是指父代如果是一个很高的人,那么他的子代的身高往往会regress回归到总体中的平均值, 所以他其实是指回归到平均值的意思. 但是到目前它的定义已经发生了变化.
所以将其称为数值模型可能更好的理解, 也即使用数据创建一个模型,以根据一组数值输入预测数值输出, 换句话说, 从一堆数据中找到最适合的一个f(x)
这个过程也成为拟合(fit), 然后再给这个函数一个输入, 以期望获得一个输出.
![](https://img.haomeiwen.com/i12735209/510ff23b48f2c3f8.png)
如果从逻辑学的角度来讲
拟合过程也即induction(归纳)
拟合的函数即归纳出来的rule
给定输入预测输出也即deduction(演绎)
2
我们正式开始之前 , 首先回顾一下 , 机器学习的概念和回归如何拟合到机器学习中 , 由于机器学习现在是很热门的话题 所以你可能听说过 , 实际上这并不是新话题 , 它只是对存在已久的事物进行打包的新方式 , 机器学习的两个基本分支 , 分别是监督学习和非监督学习 , 监督学习表示我们使用输入数据 预测数据的标记 , 这种机器学习类型的例子 , 包括使用信用卡交易数据 预测欺诈交易 , 或使用消费者金融数据 预测到期不还贷的可能性 , 或使用街区特征预测房价
![](https://img.haomeiwen.com/i12735209/7e1f195d987c55b4.png)
机器学习的另一个主要分支是非监督学习 , 在这种机器学习类型中 , 根据常见特点你对给定数据创建聚类 , 这些数据并不像监督机器学习技巧中存在标记 , 常见非监督问题包括对相似消费者细分进行分组 , 或者对覆盖类似话题的文档进行分组 , 机器学习还包含其他方法 但这是两种主要方法 , 事实证明 , 线性回归和逻辑回归都属于监督式机器学习分支
3
简单线性回归
在这些例子中 , 我们只会对比两个定量变量 , 最简单形式的回归 , 我们只对两个变量的关系感兴趣 , 例如价格和销售量 , 温度和湿度 身高和体重 , 学习时长和考试分数
![](https://img.haomeiwen.com/i12735209/e23ff1b9b7f0dc28.png)
散点图是视觉化这些关系的常见方法 , 这个轴上的变量称为反应变量(Response variable)或因变量(dependent) , 而这个轴上的变量称为解释变量(Explanatory variable)或自变量(independent), 这个反应变量是我们想要预测的 , 而解释变量用于预测反应变量
![](https://img.haomeiwen.com/i12735209/96b32aaa975a8cb5.png)
在价格和销售量的例子中 , 我们更容易控制价格 , 而销售量我们想通过价格来预测 , 因此我们认为价格是解释变量 而销售量是反应变量 , 在线性回归中 我们通过将数据拟合到一条直线中做到这点 , 在我们深入探究回归前 , 首先仔细观察一下 , 散点图和所谓的相关系数
4 散点图
如果你要对比两个定量变量 , 例如价格与销售量 , 或身高与体重 , 这种分析最常见的绘图是散点图
![](https://img.haomeiwen.com/i12735209/1bb2e7b36d00d8c7.png)
这些图可以用于对两个变量关系的强度和方向进行视觉化
![](https://img.haomeiwen.com/i12735209/6db7fa6b9b0eb481.png)
这是极强正相关的例子 , 即随着一个变量增加 另一个变量也增加
![](https://img.haomeiwen.com/i12735209/c87a1a06e6169161.png)
这个是极强负相关的例子 , 即随着一个变量增加 另一个变量减少
![](https://img.haomeiwen.com/i12735209/dd4b73805987bcf4.png)
由于这些点彼此更加分散 , 这会弱化关系
所以为了识别关系的强弱 , 我们不能过于关注与关系相关的斜率 , 一般来说 我们认为
- 强度是弱 , 中度或强
- 方向是正或负
用于获取这两方面的值 , 称为相关系数 , 或者用小写字母 r
来表示 相关系数 , 用于说明线性关系的强度和方向 , 相关系数通常在-1 到 1之间
![](https://img.haomeiwen.com/i12735209/1bc91c76ed54e3a2.png)
如果非常接近 1 或 -1 , 则关系较强 , 负数表示负相关 , 整数表示正相关
虽然有几种不同的方法可以测量两个变量之间的相关性,但最常见的方法是Pearson的相关系数。
5 相关系数
观察相关系数时 存在一些经验规则 , 然而这是高度场依存的衡量方法 , 在社会科学领域 , 由于人类是复杂的 很难找到极强的关系 , 所以某个领域的相关系数界限 , 可能与我们发现的 , 环境关联性非常不同 , 所以这只是一种经验规则
![](https://img.haomeiwen.com/i12735209/84589ad834d9dba6.png)
- 如果相关系数位于 1 到 0.7 之间 , 或者位于 -1 到 -0.7 之间 , 可以认为是强关联
- 如果是在 0.7 到 0.3 之间 , 或者位于 -0.7 到 -0.3 之间 , 可以认为是中度关联
- 如果绝对值低于 0.3 , 可以认为是弱关联
记住相关系数为负并不代表弱关联
![](https://img.haomeiwen.com/i12735209/3685cdf9eee50040.png)
另外绘图可以帮助 , 我们更好地了解两个变量的关系 , 如果我们根据安斯库姆四重奏得到两个图 , 会发现这两个数据集的相关系数相同 , 但是看起来却相差甚远
Correlation Coefficients
Correlation coefficients provide a measure of the strength and direction of a linear relationship.
We can tell the direction based on whether the correlation is positive or negative.
A rule of thumb for judging the strength:
![](https://img.haomeiwen.com/i12735209/6b20e35fb9fcd43d.png)
Calculation of the Correlation Coefficient
![](https://img.haomeiwen.com/i12735209/dcedf024a21c32b3.png)
It can also be calculated in Excel and other spreadsheet applications using CORREL(col1, col2), where col1
and col2
are the two columns you are looking to compare to one another.
6
我们拟合直线和一些点时 , 通常使用两个值进行定义 , 即截距和斜率
截距告诉我们解释变量为 0 时 , 反应变量的预测值 , 我们通常使用这种符号表示法表示总量和样本截距的值 , β0 表示参数 b0 表示统计量
![](https://img.haomeiwen.com/i12735209/835ba526db00e14f.png)
斜率表明每增加一个单位 反应变量的预计变化 , 引起解释变量的增加 , 同样 以符号表示总量 , 和样本斜率值是这样的 , β1 表示参数 , b1 表示统计量
![](https://img.haomeiwen.com/i12735209/97126c60b26f0447.png)
我们一旦拟合了直线和这些点 , 就利用这个方程进行定义 , 直线起始的这个点是截距值 , 即x 等于 0 时的值 , 如果我们像这样 沿着 x 轴增加 1 , 那么这条直线沿着 y 轴的变化是斜率值
![](https://img.haomeiwen.com/i12735209/baa89ae3cdc82aa8.png)
符号表示法的最后一个重要注释, 通常你在回归中会看到 , 这样的 y 和 Y-hat 值 , 实际上这表示两个不同的内容 , Y-hat 值表示我们从拟合直线中得到的数字 , 而 y 表示实际数据点
7
在双变量案例中 , 我们想要找到一条直线能够 , 让我们很好地利用解释变量预测反应变量
- 用于发现最佳直线的主要算法是最小二乘回归算法 ,
- 选择直线的方法是 , 对拟合直线和每个点之间的垂直距离平方的总和进行最小化
让我们来看一下原理 , 设想这是相同的点集 , 我们想要拟合这两条直线 , 我们通过观察这些距离 , 决定应该选择两条直线中的哪一条
![](https://img.haomeiwen.com/i12735209/36f3e957db6d462a.png)
但是如果我们只用这些值的总和 , 正负数可以会最后抵消掉每条直线 , 所以我们不是简单求和而是对这些距离的平方求和 , 然后找到最小化的一条直线
![](https://img.haomeiwen.com/i12735209/e93966db00478490.png)
我们可以这样以符号表示差异 , 然后目标是最小化这个函数 ,
![](https://img.haomeiwen.com/i12735209/050dc9031d95442e.png)
也就是说 对于数据集中的每个点 , 观察预计值和实际值的距离 , 进行平方 然后求和
![](https://img.haomeiwen.com/i12735209/d46b96496bc12d99.png)
如果有条直线得到的值比其他值更小 , 那么这就是我们想要使用的直线
你可能会想 我们为什么选择这个函数呢? , 为什么不使用绝对值 而是使用平方呢? , 为什么不使用指数将所有值变成整数呢? , 实际上许多函数可供选择 进行优化 , 但是它的数学特性 让这个特殊的函数很不错 , 一些函数基于微积分理论 一些只是基于传统理论 , 大多数情况下 你实际上自己无法 , 计算这些值 但是软件可以做到 , 例如你在 Python 中默认完成的事情 , 这样可能很好地适用于大部分数据集 , 如果你决定想以不同方式将这个问题最优化 , 你可以自己编写一个程序
How Do We Determine The Line of Best Fit?
You saw in the last video, that in regression we are interested in minimizing the following function:
![](https://img.haomeiwen.com/i12735209/b5705519d86de8b8.png)
It turns out that in order to minimize this function, we have set equations that provide the intercept and slope that should be used.
If you have a set of points like the values in the image here:
![](https://img.haomeiwen.com/i12735209/ed5196a04c1ad1f0.png)
In order to compute the slope and intercept, we need to compute the following:
![](https://img.haomeiwen.com/i12735209/d0d60c4515465bbf.png)
8
在这个视频中 我们在 Python 中寻找拟合数据的线性模型 , 将会使用 statsmodel 库
![](https://img.haomeiwen.com/i12735209/2a0a909f3bb72e55.png)
在我们拟合模型前 , 我们需要为截距增加一列 , 很遗憾 statsmodels 无法自动实现 , 只有极少见的情况下你不想要增加截距 (Here is a post on the need of an intercept in nearly all cases of regression.)
这里我们使用 OLS 方法表示 Y 和一些变量 X , OLS 代表普通最小二乘法 , 这就是我们想要使用的方法 , 首先我们提供了 Y , 以及 X 变量列表
![](https://img.haomeiwen.com/i12735209/2a9583d59ee7c33c.png)
然后我们使用这个方法拟合模型 , 最后存储结果并查看摘要
![](https://img.haomeiwen.com/i12735209/2568f2c0cd637eda.png)
在接下来一些概念中 , 我们将要学习如何解释 , 这个输出结果中的一些最重要信息
9 如何解释结果?
目前你已经了解如何在 Python 中拟合线性模型 , 解释根据拟合直线得到的结果非常重要 , 你可能注意到通过 Python 检索到的线性模型摘要 ,提供了大量信息, 现在我们来看下这部分结果
![](https://img.haomeiwen.com/i12735209/3e129bbbb122c9c2.png)
这里的区域告诉我们拟合的模型 , 这里是截距 这里是斜率 , 我们可以这样创建线性模型 , 预测房价等于 9,588 加上 348 乘以房屋面积 , 所以如果房屋面积为 0 , 我们可以预测这个模型会花费 9,588 , 面积每增加一个单位 , 我们预测房价会增加 348 ,
![](https://img.haomeiwen.com/i12735209/1394cc7e39560c20.png)
另外这些是 p 值 , 在回归中 p 值通常用于测试 , 截距或斜率的参数是否等于 0 和零假设 比如像是这样 , 在备择假设的默认情况下 , Python 和其他软件使用不等号 ≠ 计算 p 值
![](https://img.haomeiwen.com/i12735209/07357d2a2e8604c3.png)
这些 p 值可以让我们迅速查看 , 特定变量是否有利于预测反应变量 , 这里截距的 p 值不如面积有用 , 表明从统计意义上讲 面积比价格更重要
因此,如果斜率不等于零(替代假设为真),我们有证据表明附加到该系数的x变量与响应具有统计上显着的线性关系。这反过来表明x变量应该帮助我们预测响应(或者至少比在模型中没有它更好)。
这对下节课我们同时观察 , 许多系数很有帮助
10 Does the Line Fit the Data Well?
理解回归中两个变量关系的 , 最常用技巧之一 , 是你之前见过的相关系数
输出结果的这一部分提供了各种其他衡量方法 , 有利于理解直线如何较好地拟合数据
![](https://img.haomeiwen.com/i12735209/89726769ef4a78c4.png)
由于SSE也即误差平方和,对于数据量的大小可能会存在拟合不好的现象,因此下面的方法可能会更好.
其中 R 平方值是最常见的一种衡量方法
从根本上说这个值越接近 1 , 模型拟合得越好 , 这个值越接近 0 , 拟合度越差
![](https://img.haomeiwen.com/i12735209/26b9f8bf6fe7925e.png)
这个值实际上是相关系数的平方因此而得名 , 你将会经常听到将 R 平方值解释为 , 反应变量中的变异量 , 有多少反应变量可以根据解释变量进行理解 , 这里我们可以说房价 67.8% 的可变性 , 通过房屋面积进行解释 , 剩下 33% 的可变性 , 在于房屋的特征 而不是面积
![](https://img.haomeiwen.com/i12735209/4d18136c9d41e99d.png)
在下节课中 , 你将学习为什么直接使用输出结果中的值具有误导性
11
概括
在本课程中,您学习了简单的线性回归。本课程的主题包括:
-
简单线性回归是关于建立一条模拟两个定量变量之间关系的线。
-
了解相关系数。您了解到这是一种可以告知您线性关系的强度和方向的度量。
-
可视化简单线性回归的最常用方法是使用散点图。
-
一条线由截距和斜率定义,您可以使用Python中的statsmodels库找到它。
-
学习了斜率,截距和Rsquared值的解释。