1.简单线性回归
1.1 什么是简单线性回归
kNN算法属于分类(Classification),即label为离散的类别型(categorical variable),如:颜色类别、手机品牌、是否患病等。
而简单线性回归是属于回归(regression),即label为连续数值型(continuous numerical variable),如:房价、股票价格、降雨量等。
那么什么是简单线性回归?
所谓简单,是指只有一个样本特征,即只有一个自变量;所谓线性,是指方程是线性的;所谓回归,是指用方程来模拟变量之间是如何关联的。
简单线性回归,其思想简单,实现容易(与其背后强大的数学性质相关。同时也是许多强大的非线性模型(多项式回归、逻辑回归、SVM)的基础。并且其结果具有很好的可解释性。
1.2 求解思路
假设我们找到了最佳拟合的直线方程:y = ax + b
则对于每个样本点 x i x^i xi,根据我们的直线方程,预测值为: y ^ i = a x i + b \hat{y}^i=ax^i+b y^i=axi+b
直线方程能够尽可能地拟合真实情况,也就是说真值 y i y^i yi和预测值 y ^ i \hat{y}^i y^i的差距尽量小。只有所有的样本的误差都小,才能证明我们找出的直线方程拟合性好。
通常来说,为了防止正误差值和负误差值相抵的情况,使用绝对值来表示距离: ∣ y i − y i ^ ∣ |y^i-\hat{y^i}| ∣yi−yi^∣,但是在线性回归中,我们需要找极值,需要函数可导,而 y = ∣ x ∣ y=|x| y=∣x∣不是一个处处可导的函数,因此很自然地想到可以使用: ( y i − y i ^ ) 2 (y^i-\hat{y^i})^2 (yi−yi^)2
考虑所有样本,我们推导出: ∑ i = 1 m ( y i − y i ^ ) 2 \begin{matrix} \sum_{i=1}^m (y^i-\hat{y^i})^2 \end{matrix} ∑i=1m(yi−yi^)2
因此我们目标是:已知训练数据样本x、y ,找到a和b的值,使 ∑ i = 1 m ( y i − a x i − b ) 2 \begin{matrix} \sum_{i=1}^m (y^i-ax^i-b)^2 \end{matrix} ∑i=1m(yi−axi−b)2尽可能小,从而得出最佳的拟合方程。
1.3一种基本推导思路
建模过程,其实就是找到一个模型,最大程度的拟合我们的数据。 在简单线回归问题中,模型就是我们的直线方程:y = ax + b 。
要想最大的拟合数据,本质上就是找到没有拟合的部分,也就是损失的部分尽量小,就是损失函数(loss function)(也有算法是衡量拟合的程度,称函数为效用函数(utility function)): ∑ i = 1 m ( y i − a x i − b ) 2 \begin{matrix} \sum_{i=1}^m (y^i-ax^i-b)^2 \end{matrix} ∑i=1m(yi−axi−b)2
因此,推导思路为:
1.通过分析问题,确定问题的损失函数或者效用函数;
2.然后通过最优化损失函数或者效用函数,获得机器学习的模型
近乎所有参数学习算法都是这样的套路,区别是模型不同,建立的目标函数不同,优化的方式也不同。
回到简单线性回归问题,目标:
已知训练数据样本x、y ,找到a和b的值,使 ∑ i = 1 m ( y i − a x i − b ) 2 \begin{matrix} \sum_{i=1}^m (y^i-ax^i-b)^2 \end{matrix} ∑i=1m(yi−axi−b)2尽可能小
这是一个典型的最小二乘法问题(最小化误差的平方)
通过最小二乘法可以求出a、b的表达式: a = ∑ i = 1 m ( y i − y ˉ ) ( ( x i − x ˉ ) ∑ i = 1 m ( x i − x ˉ ) 2 b = y ˉ − a x ˉ a=\frac{\begin{matrix} \sum_{i=1}^m (y^i-\bar{y})((x^i-\bar{x}) \end{matrix}}{\begin{matrix} \sum_{i=1}^m (x^i-\bar{x})^2 \end{matrix}} \qquad b=\bar{y}-a\bar{x} a=∑i=1m(xi−xˉ)2∑i=1m(yi−yˉ)((xi−xˉ)b=yˉ−axˉ
2. 最小二乘法
2.1 由损失函数引出一堆“风险”
2.1.1 损失函数
在机器学习中,所有的算法模型其实都依赖于最小化或最大化某一个函数,我们称之为“目标函数”。
最小化的这组函数被称为“损失函数”。什么是损失函数呢?
损失函数描述了单个样本预测值和真实值之间误差的程度。用来度量模型一次预测的好坏。
损失函数是衡量预测模型预测期望结果表现的指标。损失函数越小,模型的鲁棒性越好。
常用损失函数有:
-
0-1损失函数:用来表述分类问题,当预测分类错误时,损失函数值为1,正确为0
L ( Y , f ( X ) ) = { 1 , Y ≠ f ( X ) 0 , Y = f ( X ) L(Y, f(X)) = \begin{cases} 1, \quad Y\not=f(X) \\ 0, \quad Y=f(X) \end{cases} L(Y,f(X))={1,Y=f(X)0,Y=f(X) -
平方损失函数:用来描述回归问题,用来表示连续性变量,为预测值与真实值差值的平方。(误差值越大、惩罚力度越强,也就是对差值敏感)
L ( Y , f ( X ) ) = ( Y − f ( X ) ) 2 L(Y, f(X)) =(Y-f(X))^2 L(Y,f(X))=(Y−f(X))2 -
绝对损失函数:用在回归模型,用距离的绝对值来衡量
L ( Y , f ( X ) ) = ∣ Y − f ( X ) ∣ L(Y, f(X)) =|Y-f(X)| L(Y,f(X))=∣Y−f(X)∣ -
对数损失函数:是预测值Y和条件概率之间的衡量。事实上,该损失函数用到了极大似然估计的思想。P(Y|X)通俗的解释就是:在当前模型的基础上,对于样本X,其预测值为Y,也就是预测正确的概率。由于概率之间的同时满足需要使用乘法,为了将其转化为加法,我们将其取对数。最后由于是损失函数,所以预测正确的概率越高,其损失值应该是越小,因此再加个负号取个反。
L ( Y , f ( X ) ) = − log P ( Y ∣ X ) L(Y, f(X)) =-\log P(Y|X) L(Y,f(X))=−logP(Y∣X)
以上损失函数是针对于单个样本的,但是一个训练数据集中存在N个样本,N个样本给出N个损失,如何进行选择呢?
这就引出了风险函数。
2.1.2 期望风险
期望风险是损失函数的期望,用来表达理论上模型f(X)关于联合分布P(X,Y)的平均意义下的损失。又叫期望损失/风险函数。
R e x p ( f ) = E p [ L ( Y , f ( X ) ) ] = ∫ X x Y L ( y , f ( x ) ) F ( x , y ) d x d y R_{exp}(f)=E_p[L(Y,f(X))]=\int_{XxY}L(y,f(x))F(x,y)\mathrm{d}x\mathrm{d}y Rexp(f)=Ep[L(Y,f(X))]=∫XxYL(y,f(x))F(x,y)dxdy
2.1.3 经验风险
模型f(X)关于训练数据集的平均损失,称为经验风险或经验损失。
其公式含义为:模型关于训练集的平均损失(每个样本的损失加起来,然后平均一下)
R e x p ( f ) = 1 N ∑ i = 1 N L ( y i , f ( x i ) ) R_{exp}(f)=\frac{1}{N}\sum_{i=1}^N L(y_i,f(x_i)) Rexp(f)=N1∑i=1NL(yi,f(xi))
经验风险最小的模型为最优模型。在训练集上最小经验风险最小,也就意味着预测值和真实值尽可能接近,模型的效果越好。公式含义为取训练样本集中对数损失函数平均值的最小。
min f ∈ F 1 N ∑ i = 1 N L ( y i , f ( x i ) ) \min\limits_{f\in F}\frac{1}{N}\sum_{i=1}^N L(y_i,f(x_i)) f∈FminN1∑i=1NL(yi,f(xi))
2.1.4 经验风险最小化和结构风险最小化
期望风险是模型关于联合分布的期望损失,经验风险是模型关于训练样本数据集的平均损失。根据大数定律,当样本容量N趋于无穷时,经验风险趋于期望风险。
因此很自然地想到用经验风险去估计期望风险。但是由于训练样本个数有限,可能会出现过度拟合的问题,即决策函数对于训练集几乎全部拟合,但是对于测试集拟合效果过差。因此需要对其进行矫正:
- 结构风险最小化:当样本容量不大的时候,经验风险最小化容易产生“过拟合”的问题,为了“减缓”过拟合问题,提出了结构风险最小理论。结构风险最小化为经验风险与复杂度同时较小。
min f ∈ F 1 N ∑ i = 1 N L ( y i , f ( x i ) ) + λ J ( f ) \min\limits_{f\in F}\frac{1}{N}\sum_{i=1}^N L(y_i,f(x_i))+\lambda J(f) f∈FminN1i=1∑NL(yi,f(xi))+λJ(f)
通过公式可以看出,结构风险:在经验风险上加上一个正则化项(regularizer),或者叫做罚项(penalty) 。正则化项是J(f)函数的复杂度再乘一个权重系数(用以权衡经验风险和复杂度)
2.1.5 小结
1、损失函数:单个样本预测值和真实值之间误差的程度。
2、期望风险:是损失函数的期望,理论上模型f(X)关于联合分布P(X,Y)的平均意义下的损失。
3、经验风险:模型关于训练集的平均损失(每个样本的损失加起来,然后平均一下)。
4、结构风险:在经验风险上加上一个正则化项,防止过拟合的策略。
2.2 最小二乘法
2.2.1 什么是最小二乘法
最小二乘法源于法国数学家阿德里安的猜想:
对于测量值来说,让总的误差的平方最小的就是真实值。这是基于,如果误差是随机的,应该围绕真值上下波动。
即:
ϵ
=
∑
(
y
−
y
i
)
2
最
小
⇒
真
值
y
\epsilon=\sum(y-y_i)^2最小\Rightarrow真值y
ϵ=∑(y−yi)2最小⇒真值y
为了求出这个二次函数的最小值,对其进行求导,导数为0的时候取得最小值:
d
d
y
ϵ
=
d
d
y
∑
(
y
−
y
i
)
2
=
2
∑
(
y
−
y
i
)
=
2
(
(
y
−
y
1
)
+
(
y
−
y
2
)
+
(
y
−
y
3
)
+
(
y
−
y
4
)
+
(
y
−
y
5
)
)
=
0
\frac{\mathrm{d}}{\mathrm{d}y}\epsilon=\frac{\mathrm{d}}{\mathrm{d}y} \sum(y-y_i)^2=2\sum(y-y_i)=2((y-y_1)+(y-y_2)+(y-y_3)+(y-y_4)+(y-y_5))=0
dydϵ=dyd∑(y−yi)2=2∑(y−yi)=2((y−y1)+(y−y2)+(y−y3)+(y−y4)+(y−y5))=0
进而:
5 y = y 1 + y 2 + y 3 + y 4 + y 5 ⇒ y = y 1 + y 2 + y 3 + y 4 + y 5 5 5y=y_1+y_2+y_3+y_4+y_5 \Rightarrow y=\frac{y_1+y_2+y_3+y_4+y_5}{5} 5y=y1+y2+y3+y4+y5⇒y=5y1+y2+y3+y4+y5
正好是算数平均数(算数平均数是最小二乘法的特例)。
这就是最小二乘法,所谓“二乘”就是平方的意思。
(高斯证明过:如果误差的分布是正态分布,那么最小二乘法得到的就是最有可能的值。)
2.2.2 线性回归中的应用
目标是,找到a和b,使得损失函数: ∑ i = 1 m ( y i − a x i − b ) 2 \begin{matrix} \sum_{i=1}^m (y^i-ax^i-b)^2 \end{matrix} ∑i=1m(yi−axi−b)2尽可能的小。
将简单线性问题转为最优化问题。下面对函数的各个位置分量求导,导数为0的地方就是极值:
J(a,b)对b进行求导:
KaTeX parse error: No such environment: align at position 7: \begin{̲a̲l̲i̲g̲n̲}̲ \frac{\partial…
然后mb提到等号前面,两边同时除以m,等号右面的每一项相当于均值。
m
b
=
∑
i
=
1
m
y
i
−
a
∑
i
=
1
m
x
i
mb=\begin{matrix} \sum_{i=1}^m y^i \end{matrix}-a \begin{matrix} \sum_{i=1}^m x^i \end{matrix}
mb=∑i=1myi−a∑i=1mxi
b
=
y
ˉ
−
a
x
ˉ
b=\bar y-a\bar x
b=yˉ−axˉ
现在J(a,b) 对 a进行求导:KaTeX parse error: No such environment: align at position 7: \begin{̲a̲l̲i̲g̲n̲}̲ \frac{\partial…
此时将对b进行求导得到的结果
b
=
y
ˉ
−
a
x
ˉ
b=\bar y-a\bar x
b=yˉ−axˉ 代入上式中,得到:
∑
i
=
1
m
(
y
i
−
a
x
i
−
y
ˉ
+
a
x
ˉ
)
x
i
=
0
\begin{matrix} \sum_{i=1}^m (y^i-ax^i-\bar y+a\bar x)x_i \end{matrix} = 0
∑i=1m(yi−axi−yˉ+axˉ)xi=0
将上式进行整理,最终我们通过最小二乘法得到a、b的表达式:
a
=
∑
i
=
1
m
(
y
i
−
y
ˉ
)
(
(
x
i
−
x
ˉ
)
∑
i
=
1
m
(
x
i
−
x
ˉ
)
2
b
=
y
ˉ
−
a
x
ˉ
a=\frac{\begin{matrix} \sum_{i=1}^m (y^i-\bar{y})((x^i-\bar{x}) \end{matrix}}{\begin{matrix} \sum_{i=1}^m (x^i-\bar{x})^2 \end{matrix}} \qquad b=\bar{y}-a\bar{x}
a=∑i=1m(xi−xˉ)2∑i=1m(yi−yˉ)((xi−xˉ)b=yˉ−axˉ