文章目录
一、理论篇
1、回归分析
线性回归是利用数理统计中的回归分析,来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,是机器学习最基础的算法之一。
• 回归模型就是通过建立方程模拟两个或者多个变量之间的某种关联。
• 被预测的变量叫做因变量(输出:标签)。
• 被用来进行预测的变量叫做自变量(输入:特征)。
• 一元(单变量)回归模型包含一个自变量和一个因变量(两个变量的关系用一条直线来拟合)。
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_θ(x)=θ_0+θ_1x
hθ(x)=θ0+θ1x其中,
θ
0
θ_0
θ0称之为截距,
θ
1
θ_1
θ1称之为斜率。
• 如果包含两个以上的自变量,则称作多元(多变量)回归模型。
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
.
.
.
+
θ
n
x
n
=
∑
i
=
1
n
θ
i
x
i
h_θ(x)=θ_0+θ_1x_1+θ_2x_2...+θ_nx_n=\sum_{i=1}^{n}θ_ix_i
hθ(x)=θ0+θ1x1+θ2x2...+θnxn=i=1∑nθixi
2、一元线性回归
【例子】房价预测:根据下面的数据,我们可以在平面坐标系中画出散点图,并建立一元线性回归模型
h
θ
(
x
)
=
θ
0
+
θ
1
x
h_θ(x)=θ_0+θ_1x
hθ(x)=θ0+θ1x。
建立好模型之后,当我们下次将输入变量“房子的尺寸”传递给模型时,就可以预测出“房子的价格”。
3、代价函数
线性回归模型的建立,就是要使得预测结果
h
θ
(
x
)
h_θ(x)
hθ(x)接近于真实结果
y
y
y,即
h
θ
(
x
)
≌
y
h_θ(x)≌y
hθ(x)≌y。
那么如何来确定
θ
θ
θ的值,使得
h
θ
(
x
)
h_θ(x)
hθ(x)尽可能接近
y
y
y的值呢?均方误差是回归中常用的性能度量,即:
J
(
θ
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
2
J(θ)=\cfrac{1}{2m}\sum_{i=1}^{m}(h_θ(x_i)-y_i)^2
J(θ)=2m1i=1∑m(hθ(xi)−yi)2我们可以选择参数
θ
θ
θ的值,试图让均方误差最小化。
★极大似然估计(概率角度阐释)★
4、梯度下降法
有了模型的性能度量——代价函数,我们如何去求解代价函数,使其取得最小值呢?——梯度下降法。
【用梯度下降法来下山】假如你在山顶想要到山底(最小值),只需每一步都往下走,不断地走肯定能到达山底。但如果你想以最快的速度到达山底,怎么办呢?你只需要每一步都找到下坡最快的地方,即每一步都走某个方向,比走其他方向离最小值更近。而这个下坡最快的方向,就是梯度的负方向。
【例子】假如我们有下面三个样本点,我们建立一个一元回归模型去拟合这些数据。
为了方便理解,简化计算,我们这里令
θ
0
=
0
θ_0=0
θ0=0,则我们建立的模型为
h
θ
(
x
)
=
θ
1
x
h_θ(x)=θ_1x
hθ(x)=θ1x,我们取不同的
θ
1
θ_1
θ1,可以得到代价
J
(
θ
1
)
J(θ_1)
J(θ1)与
θ
1
θ_1
θ1之间的关系如下图:
我们会发现,当
θ
1
=
1
θ_1=1
θ1=1时,代价函数
J
(
θ
1
)
J(θ_1)
J(θ1)取得最小值,应用下面的梯度下降法可以帮助我们求解。
对于上面的例子,我们首先建立模型的方程
h
θ
(
x
)
h_θ(x)
hθ(x)和并求得代价函数
J
(
θ
0
,
θ
1
)
J(θ_0,θ_1)
J(θ0,θ1);
然后初始化
θ
0
,
θ
1
θ_0,θ_1
θ0,θ1,利用梯度下降通过
J
(
θ
0
,
θ
1
)
J(θ_0,θ_1)
J(θ0,θ1)对
θ
0
,
θ
1
θ_0,θ_1
θ0,θ1求偏导来寻找下降方向,并且以迭代的方式来更新权值
θ
0
,
θ
1
θ_0,θ_1
θ0,θ1,直到
J
(
θ
0
,
θ
1
)
J(θ_0,θ_1)
J(θ0,θ1)到达一个全局最小值,或局部极小值。
当
J
(
θ
)
J(θ)
J(θ)为凸函数时,梯度下降法相当于让参数
θ
θ
θ不断向
J
(
θ
)
J(θ)
J(θ)的最小值位置靠近移动。
上面公式中,学习率 α α α也叫作步长,当学习率选得太大,则误差函数不会收敛;当学习率选得太小,则误差函数需要很长时间收敛。因此,需要设置好适当的学习率。
4、多元线性回归
当
y
y
y值的影响因素不是唯一时,采用多元线性回归模型。
对于多元线性回归模型,我们同样可以利用上面讲解的梯度下降法求解。
6、标准方程法
梯度下降法的缺陷:如果函数为非凸函数,有可能找到的并非全局最优值,而是局部最优值。因此我们已引入另一种方法:标准方程法。
【标准方程法】
对于多元线性回归,我们可以把代价函数写成向量的的形式:
对向量
w
w
w求偏导:
【梯度下降法VS标准方程法】
7、多项式回归
假如我们不是要找直(或者超平面),而是一个需要找到一个用多项式所表示的曲线(或者超曲面),例如二次曲线: y = a t 2 + b t + c y=at^2+bt+c y=at2+bt+c
多项式回归可以写成下面这种形式: h θ ( x ) = θ 0 + θ 1 x + θ 2 x 2 + θ 3 x 3 + . . . + + θ n x n h_θ(x)=θ_0+θ_1x+θ_2x^2+θ_3x^3+...++θ_nx^n hθ(x)=θ0+θ1x+θ2x2+θ3x3+...++θnxn
8、特征缩放
以房价问题为例,假设我们使用两个特征,房屋的尺寸和房间的数量,尺寸的值为 0-2000 平方英尺,而房间数量的值则是 0-5,以两个参数分别为横纵坐标,绘制代价函数的等高线图能,看出图像会显得很扁,梯度下降算法需要非常多次的迭代才能收敛。
当特征的数值差了几个数量级时,梯度下降法会收敛得很慢,因此我们需要进行特征缩放。主要有以下两种方法:
(1)标准化:用每个维度的特征减去该特征的均值
μ
μ
μ,再除以该维度的标准差
σ
σ
σ;
z
=
x
−
均
值
标
准
差
【
将
z
缩
放
到
以
0
为
中
心
而
方
差
为
1
的
区
间
中
】
z=\cfrac{x-均值}{标准差}【将z缩放到以0为中心而方差为1的区间中】
z=标准差x−均值【将z缩放到以0为中心而方差为1的区间中】
(2)规范化:用每个维度的特征减去该特征的最小值,再除以该特征的最大值与最小值之差。
z
=
x
−
最
小
值
最
大
值
−
最
小
值
【
将
z
缩
放
为
0
−
1
】
z=\cfrac{x-最小值}{最大值-最小值}【将z缩放为0-1】
z=最大值−最小值x−最小值【将z缩放为0−1】
【特征缩放前后对比图】
9、BGD、SGD和MBGD的比较
梯度下降法又被称为批量梯度下降法(Batch Gradient Descent,BGD),其每次更新参数时需要全部数据。与批量梯度下降法完全相反的是随机梯度下降法(Stochastic Gradient Descent,SGD),其每次更新参数时只需随机选取训练集中的一个数据。由于SGD每次随机选取一个数据来更新参数,因此它的收敛过程不是一条平滑曲线(对应的误差函数图形也不是单调递减的而是上下振动的),但SGD最终会收敛到BGD解的附近,虽然不是最优解,但也差不多。要节约时间,必然要牺牲精度!SGD可以并行计算从而节约大量时间。
BGD和SGD是两个极端,我们还有一种折中的办法:小批量梯度下降法(Mini-Batch Gradient Descent,MBGD),这种方法既不会太慢,也不会太随机。
10、正则化回归
线性回归能够有效地解决许多问题,但是当将它应用到某些特定的机器学习应用时,会遇到过拟合的问题,可能会导致它们效果很差。
过拟合:当一个模型太复杂时,通常会造成“过拟合”现象,此时需要加正则化项来降低模型的复杂度;
欠拟合:当一个模型太简单时,通常会造成“欠拟合”现象,此时需要去正则化项来降低模型的复杂度。
如果我们有非常多的特征,我们通过学习得到的假设可能能够非常好地适应训练集(代价函数可能几乎为 0),但是可能会不能推广到新的数据。
下图是一个回归问题的例子:
第一个模型是一个线性模型,欠拟合,不能很好地适应我们的训练集;第三个模型是一个四次方的模型,过于强调拟合原始数据,而丢失了算法的本质:预测新数据。我们可以看出,若给出一个新的值使之预测,它将表现的很差,是过拟合,虽然能非常好地适应我们的训练集但在新输入变量进行预测时可能会效果不好;而中间的模型似乎最合适。
分类问题中也存在这样的问题:
就以多项式理解,
x
x
x的次数越高,拟合的越好,但相应的预测的能力就可能变差。
防止过拟合的办法:
(1)减少特征:丢弃一些不能帮助我们正确预测的特征。可以是手工选择保留哪些特征,或者使用一些模型选择的算法来帮忙(例如 PCA);
(2)增加数据量;
(3)正则化。
上面的回归问题中如果我们的模型是:
h
θ
(
x
)
=
θ
0
+
θ
1
x
1
+
θ
2
x
2
2
+
θ
3
x
3
3
+
θ
4
x
4
4
h_θ(x)=θ_0+θ_1x_1+θ_2x_2^2+θ_3x_3^3+θ_4x_4^4
hθ(x)=θ0+θ1x1+θ2x22+θ3x33+θ4x44
从这个过拟合的例子我们可以知道,正是那些高次项导致了过拟合的产生,所以如果我们能让这些高次项的系数接近于 0 的话,我们就能很好的拟合了。
为了避免让模型过拟合,最直观的解决办法就是让模型参数的绝对值变小,具体来说,就是在原来误差函数(均方误差函数)的基础上加一个惩罚函数,得到的总误差函数如下: 总 误 差 函 数 = 均 方 误 差 函 数 + 惩 罚 函 数 总误差函数=均方误差函数+惩罚函数 总误差函数=均方误差函数+惩罚函数(第一项使训练误差变小,第二项使参数绝对值变小)
所以我们要做的就是在一定程度上减小这些参数
θ
θ
θ的值,这就是正则化的基本方法。我们决定要减少
θ
3
θ_3
θ3和
θ
4
θ_4
θ4的大小,我们要做的便是修改代价函数,在其中
θ
3
θ_3
θ3和
θ
4
θ_4
θ4设置一点惩罚。
这样做的话,我们在尝试最小化代价时也需要将这个惩罚纳入考虑中,并最终导致选择较小一些的
θ
3
θ_3
θ3和
θ
4
θ_4
θ4。
修改后的代价函数如下:
min
θ
1
2
m
[
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
2
+
1000
θ
3
2
+
10000
θ
4
2
]
\min_{θ}^{} \cfrac{1}{2m}[\sum_{i=1}^{m}(h_θ(x_i)-y_i)^2+1000θ_3^2+10000θ_4^2]
θmin2m1[i=1∑m(hθ(xi)−yi)2+1000θ32+10000θ42]
通过这样的代价函数选择出的
θ
3
θ_3
θ3和
θ
4
θ_4
θ4对预测结果的影响就比之前要小许多。假如我们有非常多的特征,我们并不知道其中哪些特征我们要惩罚,我们将对所有的特征进行惩罚,并且让代价函数最优化的软件来选择这些惩罚的程度。这样的结果是得到了一个较为简单的能防止过拟合问题的假设:
J
(
θ
)
=
1
2
m
[
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
2
+
λ
∑
j
=
1
n
θ
j
2
]
J(θ)=\cfrac{1}{2m}[\sum_{i=1}^{m}(h_θ(x_i)-y_i)^2+λ\sum_{j=1}^{n}θ_j^2]
J(θ)=2m1[i=1∑m(hθ(xi)−yi)2+λj=1∑nθj2]
其中
λ
λ
λ又称为正则化参数。 注:根据惯例,我们不对
θ
0
θ_0
θ0进行惩罚。经过正则化处理的模型与原模型的可能对比如下图所示:
如果选择的正则化参数
λ
λ
λ过大,则会把所有的参数都最小化了,导致模型变成
h
θ
(
x
)
=
θ
0
h_θ(x)=θ_0
hθ(x)=θ0,也就是上图中红色直线所示的情况,造成欠拟合。
那为什么增加的一项
λ
∑
j
=
1
n
θ
j
2
λ\sum_{j=1}^{n}θ_j^2
λ∑j=1nθj2可以使
θ
θ
θ的值减小呢?
因为如果我们令
λ
λ
λ的值很大的话,为了使代价函数尽可能的小,所有的
θ
θ
θ的值(不包括
θ
0
θ_0
θ0)都会在一定程度上减小。
但若
λ
λ
λ的值太大了,那么
θ
θ
θ(不包括
θ
0
θ_0
θ0)都会趋近于 0,这样我们所得到的只能是一条平行于
x
x
x轴的直线。
所以对于正则化,我们要取一个合理的
λ
λ
λ的值,这样才能更好的应用正则化。
正则化代价函数:
总误差函数的目的就是平衡“模型拟合训练数据的质量”和“参数绝对值的大小”,而调和参数
λ
λ
λ就是起这个作用。如果我们称线性回归为基本回归,那么
①当
λ
=
0
λ=0
λ=0时,正则化回归变成了基本回归,它们的参数就是基本回归的参数(没有惩罚函数);
②当
λ
→
∞
λ→∞
λ→∞时,正则化回归的参数都变成零(如果参数不为零,那么惩罚函数的值为无穷大);
③当
λ
λ
λ为
0
−
∞
0-∞
0−∞时,则正则化的参数在零和基本回归的参数之间。
当
λ
λ
λ很大时(极端情况是
λ
→
∞
λ→∞
λ→∞),模型过于简单,因为很多参数都为零,这时候模型的偏差很大,方差很小;当
λ
λ
λ很小时(极端情况是
λ
=
0
λ=0
λ=0),模型过于复杂,因为很多参数都不为零,这时候模型的偏差很小,方差很大。因此,调和参数可以控制模型的复杂度。
当惩罚函数为
L
2
L_2
L2范数函数时,
L
2
L_2
L2正则化回归又被叫作“岭回归”;当惩罚函数为
L
1
L_1
L1范数函数时,
L
1
L_1
L1正则化回归又被叫作“套索(LASSO)回归”。
10.1 岭回归
岭回归最早是用来处理特征数多于样本的情况,现在也用于在估计中加入偏差,从而得到更好的估计。同时也可以解决多重共线性的问题。岭回归是一种有偏估计。
10.2 LASSO回归
• Tibshirani(1996)提出了Lasso(The Least Absolute Shrinkage and Selectionator operator)算法。
• 通过构造一个一阶惩罚函数获得一个精炼的模型;通过最终确定一些指标(变量)的系数为零(岭回归估计系数等于0的机会微乎其微,造成筛选变量困难),解释力很强。
• 擅长处理具有多重共线性的数据,与岭回归一样是有偏估计 。
10.3 LASSO与岭回归
左边的菱形(LASSO回归)和每个轴相交的地方都有“角”出现,这些“角”比“非角”更容易和均方误差函数等值线相碰,因此,LASSO回归的解容易为零。
右边的圆形(岭回归)没有“角”,它很难和均方误差等值线在坐标轴相碰,因此,岭回归的解不容易为零。
LASSO回归和岭回归都可以处理过拟合问题,因为它们都加了一个惩罚函数,用来控制模型参数的绝对值的大小。但是LASSO回归的参数结果一些是零,而岭回归的参数结果很小却不会为零。
如果所有特征都能在一定程度上解释标签,那么岭回归优于LASSO回归,因为岭回归永远不会算出值为零的参数。如果只有部分特征和标签相关,那么LASSO优于岭回归,因为LASSO回归会算出值为零的参数,这些零参数对应的特征就会被舍弃,而非零参数对应的特征就被选择了。LASSO可以用来做特征选择。