Regression Analysis Model(Regression Analysis)
Author : Benjamin142857
回归分析(Regression Analysis):一种统计学上分析数据的方法,目的在于了解两个或多个变数间是否相关、相关方向与强度,并建立数学模型以便观察特定变数来预测研究者感兴趣的变数。
难度评估::star::star:
回归分析主要算法:
- 线性回归(Linear Regression)
- 局部加权线性回归(Locally weighted linear regression)
- 多项式回归(Polynomial Regression)
- 逐步回归(Step Regression)
- 岭回归(Ridge Regression)
- 套索回归(Lasso Regression)
- 弹性网回归(ElasticNet)
常用于:回归,预测标签为连续数值的数据
线性回归(Linear Regression, LR)
普通线性回归较为简单,就是用一个线性函数来拟合数据分布,比如对于一个一维的样本,即用 $y = θ_0+θ_1x$ (直线)来拟合数据点分布,对于一个二维样本,即用$z = θ_0+θ_1x + θ_2y$ (平面)来拟合数据点分布,高维的样本 $y = θ_0+θ_1x_1 + θ_2x_2 + …. + θ_nx_n$ 以此类推,但高维的样本无法完全可视化数据点的分布情况,所以较难直观理解。
线性回归虽然简单基础,但其思想很重要!!!
方法:
- 梯度下降法
- 最小二乘法
LR-梯度下降法
我们要求得线性回归模型
$h_θ(x) = θ_0+θ_1x_1 + θ_2x_2 + …. + θ_nx_n$
对于每个样本点 $(i)$ 如下 ,前面的1是为了矩阵相乘方便形成$θ_0$
$x^{(i)}$ = $$\left[\begin{matrix}1& x_1& x_2&\dots & x_n\end{matrix}\right]$$
回归系数
$θ$ = $$\left[\begin{matrix}θ_0& θ_1& θ_2&\dots & θ_n\end{matrix}\right]$$
对于每一个样本,预测值与实际值的差就是
$h_θ(x^{(i)}) - y^{(i)} $
$h_θ(x) = θx^T = θ_0+θ_1x_1 + θ_2x_2 + …. + θ_nx_n$
现在我们就是要求每个样本点 “预测值与实际值的差” 的总和要尽可能的小(设这里为m个样本),那我们就要构造一个以 $θ$ 为自变量的损失函数(注意此时是以 $θ$ 为自变量),设纬度为$n+1$。
其实损失函数就是均方误差MSE,而乘个 $\frac{1}{2}$ 是为了后面的求偏导方便平方的消去。
$J(θ) = \frac{1}{2m}\sum_{i=1}^m(h_θ(x^{(i)}) - y^{(i)})^2$
假设二维下的损失函数长这样
我们随机取一个点 $(θ_0, θ_1, …., θ_n)$作为我们的起点。为什么要随机取?这样说吧,梯度下降的过程就像在一副地图内寻宝,先随机一个初始地方,然后在这个地方附近慢慢寻找宝藏,而要找的宝藏就是藏在最底最深的部分(就是我们要求的最小值)。
对于二维损失函数,假设我们取到了如图的黑点处 $(θ_0, θ_1)$,但显然他对应的损失函数值不是我们最想要的点,我们想要能使损失函数最小的点应该是红色那个,那要如何从我们现在的随机起点(黑点)去到红点的呢?
先补充一下,上述我们说到 “寻宝” 一般只能在初始点附近找,但其实如果仅进行这一次“寻宝” (梯度下降),一般只能找到 “这地图里这一块区域的宝藏” (局部最优解),而未必能那么幸运一下就找到 “地图的最大宝藏” (全局最优解),因为你不能保证你的是在出生点在哪的,所以我们要进行很多次“寻宝”,“寻宝”的次数越多越有可能找到最终宝藏(全局最优解),因为都把地图挖个遍了,具体区别请看BGD 与 SGD 。
那对于每次梯度下降,我们先需要求得该点的梯度,若对梯度概念不太清楚,请看梯度。对损失函数的每个$θ_j$进行求偏导, 其实就是损失函数降次,消去1/2,并提出对应的$x_j$系数:
$\frac{\partial J}{\partial θj} = \frac{1}{m}\sum{i=1}^m(h_θ(x^{(i)})-y^{(i)})x_j^{(i)}$
- 现在求出的梯度是个向量!是个向量!是个向量!对于我们例子中的二维样本,其梯度就是一个二维向量($\frac{\partial J}{\partial θ_0} $, $\frac{\partial J}{\partial θ_1} $),大概直观的感觉就是如图的箭头(emmm画功不好,但其实它是平行于xoy平面的,自行脑补一下),从黑点指向此点坡度最大的方向。
梯度下降就是我们逆着这个梯度,就是沿梯度的反方向走,所以我们要对整组回归系数进行更新,就是要用对应的上一个回归系数减去对应梯度的量,其实就是减它的偏导,更新公式如下。
$θ{j(new)} = θ{j(old)} - α · \frac{\partial J}{\partial θ_j}$
式子中的 $α$ 是指“学习率”,大致的意思是限制一下你往梯度反方向走的步距。我们都知道用求偏导求出来的梯度是个长短不一的向量,其实我们只需要它的方向,它的长度是不定的。所以我们给这个方向梯度向量乘上一个$α$,其实就相当于改变这个向量的长度,而方向是不变的。
从图中可看出,如果这个梯度过大,很可能会直接越过那个“凹槽”,跳到对岸,然后下一步又是这样,就会在那里跳来跳去,半天都不下降一点。
所以一般学习率 $α$ 会很低从而让它慢慢慢慢往下走,但如果太低的话,计算量又会非常大,因为迭代很久都没有下降一点
对于例子中的回归系数,更新如下
$θ0$方向: $θ{0(new)} = θ_{0(old)} - α · \frac{\partial J}{\partial θ_0}$
$θ1$方向: $θ{1(new)} = θ_{1(old)} - α · \frac{\partial J}{\partial θ_1}$
假如更新了一次后,我们新的点($θ{0}$, $θ{1}$)从黑色点走到了粉色的点,再更新一次,从粉色的点走到了黄色,然后一直这样迭代下去,最终会里凹槽的最低点越来越近,也就是我们想要的损失函数最优解(局部最优或全局最优)的回归系数($θ{0}$, $θ{1}$)
那迭代应该什么时候结束呢?一般有三个参照,任选其一即可:
迭代直到 $θ_j$ 的变化幅度不大
迭代直到 $ \frac{\partial J}{\partial θ_j} $足够小
迭代次数足够多
用最终求得的那组回归系数$θ$ = $$\left[\begin{matrix}θ_0& θ_1& θ_2&\dots & θn\end{matrix}\right]$$,就能构建我们想要的线性回归模型$hθ(x) = θ_0+θ_1x_1 + θ_2x_2 + …. + θ_nx_n$,代入数据点就可以进行回归预测了。
LR-最小二乘法
- 1
- 2
- 。。。。。
LR-梯度下降 VS 最小二乘
局部加权线性回归(Locallly Weights Linear Regression, LWLR)
普通线性回归较为简单,就是用一个线性函数来拟合数据分布,比如对于一个一维的样本,即用 $y = θ_0+θ_1x$ (直线)来拟合数据点分布,对于一个二维样本,即用$z = θ_0+θ_1x + θ_2y$ (平面)来拟合数据点分布,高维的样本 $y = θ_0+θ_1x_1 + θ_2x_2 + …. + θ_nx_n$ 以此类推,但高维的样本无法完全可视化数据点的分布情况,所以较难直观理解。
方法:
- 梯度下降法
- 最小二乘法