请和我一起学习机器学习算法之线性回归
线性回归灵魂三问
- 什么是线性回归
所谓线性回归实际上就是利用已知的样本(已知数据),选择一个线性方程,并对其进行拟合,并通过拟合得到的方程来对未知的数据进行预测 - 线性回归能干什么
线性回归主要是用来预测,和判断合理性。 比如用身高预测体重,利用广告投入预测商品销售额等等。 - 线性回归的难点是什么
难点即是重点:变量选择(多元下的重线性)、预防过拟合、模型检验。
NOTE: 一元线性回归就不在这里赘述了,一般来说想学机器学习算法的人都有一定的数学基础。
线性回归数学分析
一般线性回归
1.公式定义
就我们所知道的那样,多元的线性方程如下。
h
θ
(
x
)
=
θ
0
x
0
+
θ
1
x
1
+
θ
2
x
2
+
.
.
.
+
θ
n
x
n
h_\theta(x)=\theta_0x_0+\theta_{1}x_1+\theta_{2}x_2+...+\theta_{n}x_n
hθ(x)=θ0x0+θ1x1+θ2x2+...+θnxn
其中
x
0
=
1
x_0=1
x0=1表示常数项。转化成向量表达为:
h
θ
(
x
)
=
Θ
T
X
h_\theta(x)=\Theta^TX
hθ(x)=ΘTX
Θ
、
X
\Theta、X
Θ、X为一个一行n+1列的向量。
我们用参数x表示描述一个事物的属性,用h(x)表示我们对给定属性的预测。我们希望我们的预测结果符合客观事实,并且可以作为对未知事物的推测。
要使结果符合客观事实,则我们希望我们的预测结果h(x)和实际实物的标签(比如预测的类别和实际的类别)的误差尽可能的小。于是…
2. 参数求解之梯度下降
现在我们可以将问题转化成我们熟悉的数学表达模式了:
问题:我们有m个已知的样本(
(
x
1
,
y
1
)
,
(
x
2
,
y
2
)
.
.
.
(
x
n
,
y
n
)
(\boldsymbol x^1,y^1),(\boldsymbol x^2,y^2)...(\boldsymbol x^n,y^n)
(x1,y1),(x2,y2)...(xn,yn)), 其中
x
(
i
)
x^{(i)}
x(i)是一个n+1维的列向量。求一组参数
(
θ
0
,
θ
1
,
.
.
.
,
θ
n
)
(\theta_0,\theta_1,...,\theta_n)
(θ0,θ1,...,θn),使得
1
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
\frac{1}{m}\sum_{i=1}^{m}(h_{\theta}(\boldsymbol x^i)-y^i)
m1∑i=1m(hθ(xi)−yi)最小。
实际上对于上面公式的的推导,我们默认使用了一种叫做误差平方和的代价函数(预测误差的代价损失,我们希望代价函数越小越好,表示我们使用这个模型的成本越低)。也就是说如果使用不同的代价函数,则得到的误差损失的表达是不同的。 代价函数可以表示为
J
(
θ
0
,
θ
1
,
.
.
.
,
θ
n
)
=
1
2
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
2
J(\theta_0,\theta_1,...,\theta_n)=\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(\boldsymbol x^i)-y^i)^2
J(θ0,θ1,...,θn)=2m1i=1∑m(hθ(xi)−yi)2
NOTE: 对于权值
1
2
m
\frac{1}{2m}
2m1 不必太过纠结,实际上应该是
1
m
\frac{1}{m}
m1,但是为了方便后续化简,添加了一个二分之一,实际上着这并不会影响我们对其参数进行求解。
接着就可以用梯度下降来优化这些参数了。对于初学者来说,可能对于像我这样的初学者来说,梯度下降不太好理解,但是在机器学习算法中,梯度下降是无处不在的。为了更加全面和完整,这里留个空位,到时如果有必要在专门来梳理一下梯度下降。
【梯度下降 】
θ j : = θ j − α ∂ ∂ θ j J ( θ 0 , θ 1 , . . . , θ n ) \theta_j:=\theta_j-\alpha \frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1,...,\theta_n) θj:=θj−α∂θj∂J(θ0,θ1,...,θn)
上面这个公式,就是使用梯度下降对参数进行更新,其中
α
\alpha
α表示学习速率,也就是沿着低度方向,向下迈进的步幅。
∂
∂
θ
j
J
(
θ
0
,
θ
1
,
.
.
.
,
θ
n
)
\frac{\partial}{\partial \theta_j}J(\theta_0,\theta_1,...,\theta_n)
∂θj∂J(θ0,θ1,...,θn)表示代价函数的梯度方向。
θ
j
:
=
θ
j
−
α
∂
∂
θ
j
{
1
2
m
∑
i
=
1
m
(
h
θ
(
x
i
)
−
y
i
)
2
}
\theta_j:=\theta_j-\alpha \frac{\partial}{\partial \theta_j}\{\frac{1}{2m}\sum_{i=1}^{m}(h_{\theta}(\boldsymbol x^i)-y^i)^2 \}
θj:=θj−α∂θj∂{2m1i=1∑m(hθ(xi)−yi)2}
加法的求导是可以分别求导的,所以我们可以对括号进行求导
∂
∂
θ
j
(
h
θ
(
x
i
)
−
y
i
)
2
)
=
2
⋅
x
j
⋅
(
h
θ
(
x
i
)
−
y
i
)
)
\frac{\partial}{\partial \theta_j}(h_{\theta}(\boldsymbol x^i)-y^i)^2) = 2 \cdot x_j \cdot (h_{\theta}(\boldsymbol x^i)-y^i))
∂θj∂(hθ(xi)−yi)2)=2⋅xj⋅(hθ(xi)−yi))
代入上面等式,(原来的引入的那个2,就是在这里消除掉的)
θ
j
:
=
θ
j
−
α
⋅
1
m
∑
i
=
1
m
(
x
j
⋅
(
h
θ
(
x
i
)
−
y
i
)
)
)
\theta_j:=\theta_j-\alpha \cdot \frac{1}{m} \sum_{i=1}^{m}(x_j \cdot (h_{\theta}(\boldsymbol x^i)-y^i)))
θj:=θj−α⋅m1i=1∑m(xj⋅(hθ(xi)−yi)))
我们通过随机一组参数,并且通过上面的梯度下降的方式直接求解,直到收敛。
3. 参数求解之正规方程
我们也可以通过直接解方程的方式获得最后优化参数。
为了很好的解释我们下面所描述的方程,请记得我们最初的向量表达:
h
θ
(
x
)
=
Θ
T
X
h_\theta(x)=\Theta^TX
hθ(x)=ΘTX
如果我们把各个学习样本的
y
i
y^i
yi 组成一个向量Y,则我们需要求解的方程就可以变成
min
θ
∑
i
=
1
m
(
Y
−
Θ
T
X
)
T
(
Y
−
Θ
T
X
)
\min_{\theta} \sum_{i=1}^{m}(Y-\Theta^TX)^T(Y-Θ ^TX)
θmini=1∑m(Y−ΘTX)T(Y−ΘTX)
对向量
Θ
\Theta
Θ求导(这里又是一个不好理解的点,倍感数学知识不够用啊)
∂
∂
Θ
∑
i
=
1
m
(
Y
−
Θ
T
X
)
T
(
Y
−
Θ
T
X
)
=
2
⋅
X
T
(
X
Θ
T
−
Y
)
\frac{\partial}{\partial \Theta}\sum_{i=1}^{m}(Y-\Theta^TX)^T(Y-Θ ^TX)=2 \cdot X^{T}(X \Theta^T-Y)
∂Θ∂i=1∑m(Y−ΘTX)T(Y−ΘTX)=2⋅XT(XΘT−Y)
令上式为0;当
(
X
T
X
)
−
1
(X^TX)^{-1}
(XTX)−1存在的时候,
Θ
T
=
(
X
T
X
)
−
1
X
T
Y
\Theta^T=(X^TX)^{-1}X^TY
ΘT=(XTX)−1XTY
如果不存在,则可以通过求伪逆的方式代替。
实际上如果从矩阵的映射的角度来分析的话,对于这个公式就好理解了,问题的关键是,但是矩阵的映射本身就不好理解。
4. 梯度下降和正规方程的对比
梯度下降 | 正规方程 |
---|---|
需要选择合适的学习率 | 不需选择学习率 |
需要多次迭代获得参数 | 一次计算直接获得参数 |
使用与特征值多的模型 | 适用于特征值小的模型 |
使用于各个类型 | 只使用于线性模型,其他模型不适合 |
正规方程由于需要求矩阵的逆,一般情况,求n介矩阵的逆需要N的三次方的算法复杂度,所以当n很大的时候(一般>10000)选择梯度下降模型
对数几率回归
在分类任务中,我们希望将线性模型产生的连续的值转化为离散的0、1值用来标记各个样本。理想中我们使用单位阶跃函数来实现,如下图的红色部分。但是由于单位阶跃函数不可微,不变与计算和使用,我们找到一个可以替代单位阶跃函数的 函数。而 对数几率函数(logistic function)就是这样一种函数。
对数几率函数是一种典型的"sigmoid 函数",所谓sigmoid 函数,就是长相是S型的函数,而对数几率函数就是其中的一种。
y
=
1
1
+
e
−
Θ
T
X
y=\frac{1}{1+e^{-\Theta^TX}}
y=1+e−ΘTX1
通过简单的化简:
ln
y
1
−
y
=
Θ
T
X
\ln \frac{y}{1-y}=\Theta^TX
ln1−yy=ΘTX
如果把y 考虑为正例的概率,而1-y则为反例的概率。两者的比例反映了x作为正例的相对可能性,称为“几率”。对几率取对数,则称为对数几率
实际上,y实际上使我们在X的样本存在条件下认为其为正例的概率,则可以考虑y为在x条件下的后验概率。
ln
p
(
y
=
1
∣
x
)
p
(
y
=
0
∣
x
)
=
Θ
T
X
\ln \frac{p(y=1|x)}{p(y=0|x)}=\Theta^TX
lnp(y=0∣x)p(y=1∣x)=ΘTX
则(直接计算解方程,这两货加起来为1)
p
(
y
=
1
∣
x
)
=
e
Θ
T
X
1
+
e
Θ
T
X
p
(
y
=
1
∣
x
)
=
1
1
+
e
Θ
T
X
p(y=1|x)=\frac{e^{\Theta^TX}}{1+e^{\Theta^TX}} \\ p(y=1|x)=\frac{1}{1+e^{\Theta^TX}}
p(y=1∣x)=1+eΘTXeΘTXp(y=1∣x)=1+eΘTX1
我们希望的是,每个样本属于自己标记的概率越大越好。
接下来是一段复杂的方法,对于对数回归,先到这里,了解即可。
线性判别分析
线性判别分析 (Linear Discriminant Analysis,简称 LDA) 思想非常朴素,设法将给定样例投影到一条直 线上 ,使得同类样例的投影点尽可能接近、 异类样例 的投影点尽可能远离;在对新样本进行分类时,将其投影到同样的这条直线上,再根据投影点的位置来确定新样本的类别. 如图
线性回归的变量选择
多元线性回归的核心问题应该是变量的选择。
变量选择
变量的选择也是模型的对比,我们希望用最小的变量数来获得最好的结果。
- AIC 准则
AIC准则是由日本统计学家Akaike与1973年提出的,全称是最小化信息量准则(Akaike Information Criterion)。它是拟合精度和参数个数的加权函数:
AIC=2(模型参数的个数)-2ln(模型的极大似然函数)
这个不是太好理解,比如说模型的最大似然函数是什么呢? 在线性模型中所谓的最大似然函数指的就是残差的倒数。
- BIC 准则
AIC为模型选择提供了有效的规则,但也有不足之处。当样本容量很大时,在AIC准则中拟合误差提供的信息就要受到样本容量的放大,而参数个数的惩罚因子却和样本容量没关系(一直是2),因此当样本容量很大时,使用AIC准则选择的模型不收敛与真实模型,它通常比真实模型所含的未知参数个数要多。BIC(Bayesian InformationCriterion)贝叶斯信息准则是Schwartz在1978年根据Bayes理论提出的判别准则,称为SBC准则(也称BIC),弥补了AIC的不足。
BIC = ln(n)(模型中参数的个数) - 2ln(模型的极大似然函数值)
- 基于误差的准则
当把预测当成主要任务和目标的时候,通过预测误差作为判断模型的指标
P
E
=
E
∣
∣
y
−
y
′
∣
∣
2
PE=E||y-y^{'}||^2
PE=E∣∣y−y′∣∣2
线性回归的训练
多分类的学习
核心思路是拆解法,将类别分界,通过一对一,一对多,多对多
一对一
两两分类,选择分类多的一种
一对多
一和其余分类,选择正例
多对多
先对种类分组,而后在分
类别不平衡的问题
现有技术大体上有三类做法:
-
第一类是直接对训练集里的反类样例进行"欠采样" (undersampling) ,即去除一些反倒使得正、反例数日接近7 然后再进行学习;
-
第二类是对训练集里的正类样例进行"过来样" (oversampling) ,即增加一些正例使得正、反例数目接近,然后再进行学习;
-
第三类则是直接基于原始训练集进行学习,但在用训练好的分类器进行预测时,将类别比例关系嵌入到其决策过程中,称为"阔值移动" (threshold-moving)