Hello大家好,我是飞燕,目前还是一名在校大学生,对机器学习,深度学习,计算机视觉非常感兴趣。在基本结束了大学本科的数学课程学习之后,开始自学机器学习有关知识,选择了被广泛推荐的《机器学习》(西瓜书)作为入门书籍,在这里把自己学习过程,学习笔记,自认为较为重要的书中的知识点和自己的一些想法写成博客,与大家一起学习讨论,同时也是对自己学习历程的一个记录。这是飞燕第一次写技术性博客,有错误或者不足之处恳请各位批评指出。
《机器学习》笔记——回归
1. 线性回归 (Linear Regression)
线性回归想必大家都不陌生,早在高中的时候就已经有接触过相关问题。飞燕还记得高中的时候一道线性回归的题值10分,结果算错了就全错了,印象特别深刻。高中的时候老师给出的线性回归表达式有两种:
{
b
^
=
∑
i
=
1
n
(
x
i
−
x
‾
)
(
y
i
−
y
‾
)
∑
i
=
1
n
(
x
i
−
x
‾
)
2
=
∑
i
=
1
n
x
i
y
i
−
n
x
‾
y
‾
∑
i
=
1
n
x
i
2
−
n
x
‾
2
a
^
=
y
‾
−
b
^
x
‾
(1)
\left\{ \begin{aligned} \hat{b} &= \frac{\sum\limits_{i = 1}^{n}(x_i-\overline{x})(y_i-\overline{y})}{\sum\limits_{i = 1}^{n}(x_i-\overline{x})^2} = \frac{\sum\limits_{i = 1}^{n}x_iy_i-n\mathop{\overline{x}}\overline{y}}{\sum\limits_{i = 1}^{n}x_i^2-n\overline{x}^2}\\\hat{a} &= \overline{y}-\hat{b}\overline{x}\tag{1} \end{aligned} \right.
⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧b^a^=i=1∑n(xi−x)2i=1∑n(xi−x)(yi−y)=i=1∑nxi2−nx2i=1∑nxiyi−nxy=y−b^x(1)
y
=
b
^
x
+
a
^
(2)
y = \hat{b}x+\hat{a}\tag{2}
y=b^x+a^(2)
(高中的时候纯手算这个真的是噩梦啊)
这是一维自变量的最小二乘法表示公式,若x为向量
x
=
(
x
1
,
x
2
,
.
.
.
,
x
n
)
\boldsymbol{x} = (x_1,x_2,...,x_n)
x=(x1,x2,...,xn)
则(2)式可重写为
f
(
x
)
=
w
1
x
1
+
w
2
x
2
+
.
.
.
.
.
.
+
w
n
x
n
+
b
f(\boldsymbol{x}) = w_1x_1+w_2x_2+......+w_nx_n+b
f(x)=w1x1+w2x2+......+wnxn+b
用向量法表示为
f
(
x
)
=
w
T
x
+
b
f(\boldsymbol{x}) = \boldsymbol{w}^T\boldsymbol{x} + b
f(x)=wTx+b
这就是线性回归最终得到的拟合函数表达式。其中我参数b为误差,通常服从正态分布。将其标准化之后可得
b
−
μ
σ
∼
N
(
0
,
1
)
\frac{b-\mu}{\sigma}\sim N(0, 1)
σb−μ∼N(0,1)
运用参数估计中的极大似然估计(MLE)有
L
(
w
)
=
∏
i
=
1
n
p
(
y
(
i
)
∣
x
(
i
)
;
w
)
=
∏
i
=
1
n
1
2
π
e
−
(
y
(
i
)
−
w
T
x
(
i
)
)
2
2
L(\boldsymbol{w}) = \prod\limits_{i = 1}^{n}p(y^{(i)}|x^{(i)};w) = \prod\limits_{i = 1}^{n} \frac{1}{\sqrt{2\pi}}e^-\frac{(y^{(i)}-\boldsymbol{w}^Tx^{(i)})}{2}^2
L(w)=i=1∏np(y(i)∣x(i);w)=i=1∏n2π1e−2(y(i)−wTx(i))2
为了计算方便,我们常常将上述等式取对计算
l
(
w
)
=
n
ln
1
2
π
−
1
2
∑
i
=
1
n
(
y
(
i
)
−
w
T
x
(
i
)
)
2
l(\boldsymbol{w}) = n\ln\frac{1}{\sqrt{2\pi}}-\frac{1}{2}\sum\limits_{i = 1}^{n}(y^{(i)}-\boldsymbol{w}^Tx^{(i)})^2
l(w)=nln2π1−21i=1∑n(y(i)−wTx(i))2
该式中减号之前的部分为常数,接下来计算中可不考虑。故当
l
(
w
)
l(\boldsymbol{w})
l(w) 取最大时,只需要对目标函数求最小值即可
l
o
s
s
(
y
i
^
,
y
i
)
=
J
(
w
)
=
1
2
∑
i
=
1
n
(
y
(
i
)
−
w
T
x
(
i
)
)
2
loss(\hat{y_i},y_i) = J(\boldsymbol{w}) = \frac{1}{2}\sum\limits_{i = 1}^{n}(y^{(i)}-\boldsymbol{w}^Tx^{(i)})^2
loss(yi^,yi)=J(w)=21i=1∑n(y(i)−wTx(i))2
这个式子其实就是今后常常会用到的模型性能度量指标之一——均方误差,通常要使其最小。也可以将上式写为矩阵式:
w
^
∗
=
a
r
g
m
i
n
w
^
(
y
−
w
^
X
)
T
(
y
−
w
^
X
)
\boldsymbol{\hat{w}^*} = \mathop{argmin}\limits_{\boldsymbol{\hat{w}}}(\boldsymbol{y}-\boldsymbol{\hat{w}}\boldsymbol{X})^T(\boldsymbol{y}-\boldsymbol{\hat{w}}\boldsymbol{X})
w^∗=w^argmin(y−w^X)T(y−w^X)
通过高中知识可知,要求一个函数的最值或极值常用方法为求导,在导函数等于0处的驻点逐一判断是否为最值获极值。
那么我们可以令
f
(
w
^
)
=
(
y
−
w
^
X
)
T
(
y
−
w
^
X
)
f(\boldsymbol{\hat{w}}) = (\boldsymbol{y}-\boldsymbol{\hat{w}}\boldsymbol{X})^T(\boldsymbol{y}-\boldsymbol{\hat{w}}\boldsymbol{X})
f(w^)=(y−w^X)T(y−w^X),并对
w
^
\boldsymbol{\hat{w}}
w^求偏导并令其等于0
∂
f
∂
w
^
=
2
X
T
(
X
w
^
−
y
)
=
0
\frac{\partial f}{\partial \boldsymbol{\hat{w}}} = 2\boldsymbol{X}^T(\boldsymbol{X}\boldsymbol{\hat{w}}-\boldsymbol{y}) = 0
∂w^∂f=2XT(Xw^−y)=0
若矩阵
(
X
X
T
)
(\boldsymbol{XX}^T)
(XXT)满秩,则上式可解得
w
^
∗
=
(
X
T
X
)
−
1
X
T
y
\boldsymbol{\hat{w}}^* = (\boldsymbol{X^TX})^{-1}\boldsymbol{X}^T\boldsymbol{y}
w^∗=(XTX)−1XTy
这也是最小二乘法的矩阵表达形式。
小结:
(1)线性回归的loss函数可以为均方误差,其表达式为
l
o
s
s
(
y
i
^
,
y
i
)
=
J
(
w
)
=
1
2
∑
i
=
1
n
(
y
(
i
)
−
w
T
x
(
i
)
)
2
loss(\hat{y_i},y_i) = J(\boldsymbol{w}) = \frac{1}{2}\sum\limits_{i = 1}^{n}(y^{(i)}-\boldsymbol{w}^Tx^{(i)})^2
loss(yi^,yi)=J(w)=21i=1∑n(y(i)−wTx(i))2
(2)将均方误差写为矩阵式并对
w
^
\boldsymbol{\hat{w}}
w^求偏导等于零可以得到最小二乘法的矩阵式
w
^
∗
=
(
X
T
X
)
−
1
X
T
y
\boldsymbol{\hat{w}}^* = (\boldsymbol{X^TX})^{-1}\boldsymbol{X}^T\boldsymbol{y}
w^∗=(XTX)−1XTy
将其带入最终的拟合函数表达式可得
f
(
x
^
i
)
=
x
^
i
(
X
T
X
)
−
1
X
T
y
f(\boldsymbol{\hat{x}}_i) = \boldsymbol{\hat{x}}_i(\boldsymbol{X^TX})^{-1}\boldsymbol{X}^T\boldsymbol{y}
f(x^i)=x^i(XTX)−1XTy
这就是线性回归最终所学得的模型。
(3)线性回归是最简单的回归形式之一,但其有丰富的变化,并且在处理一些简单的回归问题上可以得到较好的效果。另外,线性回归也是其他很多回归的基础,比如接下来要介绍的Logistic回归。
2. Logistic回归 (Logistic Regression)
Logistic回归是在线性回归的基础上,将线性回归所得到的结果映射到一个非线性空间当中。为了达成这个目的,我们需要引入一种类似激活函数的东西。在Logistic回归里,这个函数就是大名鼎鼎的Sigmoid函数。
Sigmoid函数表达式为
y
=
1
1
+
e
−
z
y = \frac{1}{1+e^{-z}}
y=1+e−z1
Sigmoid函数图像如下
在Sigmoid函数表达式中,y就是我们最后的输出结果,若y为正例的概率,则1-y则为反例概率,二者相比再取对的结果被称为“对数几率”。
ln
y
1
−
y
\ln\frac{y}{1-y}
ln1−yy
上式与线性回归的结果相结合可有
ln
y
1
−
y
=
θ
T
x
+
b
\ln\frac{y}{1-y} = \boldsymbol{\theta}^T\boldsymbol{x}+b
ln1−yy=θTx+b
该式输出的结果就是”对数几率”,同时也是Logistic回归的输出结果。
那么问题来了,式中参数
θ
\boldsymbol{\theta}
θ如何得到呢?其实我们可以照葫芦画瓢,参照线性回归的形式,使用MLE来进行参数估计。
L
(
θ
)
=
∏
i
=
1
n
p
(
y
=
1
∣
x
)
y
(
i
)
p
(
y
=
0
∣
x
)
(
1
−
y
(
i
)
)
L(\boldsymbol{\theta}) = \prod\limits_{i = 1}^{n}p(y = 1|\boldsymbol{x})^{y^{(i)}} p(y = 0|\boldsymbol{x})^{(1-y^{(i)})}
L(θ)=i=1∏np(y=1∣x)y(i)p(y=0∣x)(1−y(i))
取对化简有
l
(
θ
)
=
∑
i
=
1
n
(
−
y
(
i
)
θ
T
x
i
^
+
ln
(
1
+
e
θ
T
x
i
^
)
)
l(\boldsymbol{\theta}) = \sum\limits_{i = 1}^{n}(-y^{(i)}\boldsymbol{\theta}^T\boldsymbol{\hat{x_i}}+\ln(1+e^{\boldsymbol{\theta}^T\boldsymbol{\hat{x_i}}}))
l(θ)=i=1∑n(−y(i)θTxi^+ln(1+eθTxi^))
这就是Logistic回归当
y
∈
(
0
,
1
)
y\in(0,1)
y∈(0,1)时的目标函数(loss函数),同样,对其求偏导等于0后可以有最终函数的表达式。
如果y为离散型变量,即
y
=
{
−
1
当
x
i
为
反
例
1
当
x
i
为
正
例
y = \left\{ \begin{aligned} -1~~~~~当x_i为反例\\1~~~~~当x_i为正例 \end{aligned} \right.
y={−1 当xi为反例1 当xi为正例
y
i
^
=
{
p
i
y
i
=
1
−
p
i
y
i
=
−
1
\hat{y_i} = \left\{ \begin{aligned} p_i~~~~~y_i = 1\\ -p_i~~~~~y_i = -1 \end{aligned} \right.
yi^={pi yi=1−pi yi=−1
令
p
i
=
1
1
+
e
−
θ
T
x
i
p_i = \frac{1}{1+e^{-\boldsymbol{\theta}^Tx_i}}
pi=1+e−θTxi1,同样通过极大似然估计有
l
o
s
s
(
y
i
,
y
i
^
)
=
∑
i
=
1
n
ln
(
1
+
e
−
y
i
θ
T
x
i
)
loss(y_i,\hat{y_i}) = \sum\limits_{i = 1}^{n}\ln(1+e^{-y_i\boldsymbol{\theta}^Tx_i})
loss(yi,yi^)=i=1∑nln(1+e−yiθTxi)
小结:
(1)Logistic时以线性回归为基础,将线性回归的结果通过Sigmoid函数映射到非线性空间中的方法。
(2)Logistic回归的目标函数为
l
o
s
s
(
y
i
,
y
i
^
)
=
∑
i
=
1
n
(
−
y
(
i
)
θ
T
x
i
^
+
ln
(
1
+
e
θ
T
x
i
^
)
loss(y_i,\hat{y_i}) = \sum\limits_{i = 1}^{n}(-y^{(i)}\boldsymbol{\theta}^T\boldsymbol{\hat{x_i}}+\ln(1+e^{\boldsymbol{\theta}^T\boldsymbol{\hat{x_i}}})
loss(yi,yi^)=i=1∑n(−y(i)θTxi^+ln(1+eθTxi^)
(3)Logistic回归常用于分类问题,可以直接对分类可能性建模,不需要实现假设数据分析。同时Logistic回归给出的结果并不是具体的“类别”,而是该样本属于该类别的近似概率。此外,Logistic回归的目标函数具有很好的数学性质,在很多优化算法都可以直接求最优解。
3. 岭回归与LASSO回归 (Ridge Regression and LASSO Regression)
岭回归与LASSO回归都是再线性回归的基础上加上一个正则项,其目的是为了防止回归模型过拟合。其中LASSO回归加上的是L1正则项(L2-Normalization),岭回归加上的是L2正则项(L2-Noarmalization)。我们来看看这两个的目标函数。
岭回归:
J
(
θ
)
=
1
2
∑
i
=
1
n
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
+
λ
∑
j
=
1
n
θ
j
2
J(\boldsymbol{\theta}) = \frac{1}{2}\sum\limits_{i = 1}^{n}(y^{(i)}-\boldsymbol{\theta}^Tx^{(i)})^2+\lambda\sum\limits_{j=1}^{n}\boldsymbol{\theta_j}^2
J(θ)=21i=1∑n(y(i)−θTx(i))2+λj=1∑nθj2
LASSO回归:
J
(
θ
)
=
1
2
∑
i
=
1
n
(
y
(
i
)
−
θ
T
x
(
i
)
)
2
+
λ
∑
j
=
1
n
∣
θ
j
∣
J(\boldsymbol{\theta}) = \frac{1}{2}\sum\limits_{i = 1}^{n}(y^{(i)}-\boldsymbol{\theta}^Tx^{(i)})^2+\lambda\sum\limits_{j=1}^{n}|\boldsymbol{\theta_j}|
J(θ)=21i=1∑n(y(i)−θTx(i))2+λj=1∑n∣θj∣
其中
λ
\lambda
λ表示正则项参与度,是一个超参数,需要用梯度下降等方法调参。关于梯度下降,飞燕将在之后的番外篇里详细讲一下这个东西,因为这个东西真的非常非常重要!
正则化防止过拟合的原因
这里以岭回归为例,为了描述方便,我们将岭回归的目标函数简写为
C
=
C
0
+
λ
∑
θ
2
C = C_0 + \lambda\sum\boldsymbol{\theta}^2
C=C0+λ∑θ2
对其求偏导
∂
C
∂
θ
=
∂
C
0
∂
θ
+
2
λ
∑
θ
\frac{\partial C}{\partial \theta} = \frac{\partial C_0}{\partial \theta} + 2\lambda\sum\boldsymbol{\theta}
∂θ∂C=∂θ∂C0+2λ∑θ
我们在使用梯度下降(这里以SGD为例)确定超参数
λ
\lambda
λ的时候就有
θ
i
=
θ
i
−
α
∂
C
0
∂
θ
−
2
α
λ
θ
i
=
(
1
−
2
λ
)
θ
i
−
α
∂
C
0
∂
θ
\boldsymbol{\theta_i} = \boldsymbol{\theta_i}-\alpha\frac{\partial C_0}{\partial \theta}-2\alpha\lambda\boldsymbol{\theta_i} = (1-2\lambda)\boldsymbol{\theta_i}-\alpha\frac{\partial C_0}{\partial \theta}
θi=θi−α∂θ∂C0−2αλθi=(1−2λ)θi−α∂θ∂C0
其中
α
\alpha
α为学习率。因为
λ
>
0
\lambda>0
λ>0,所以称上述方法为权重衰减,可以有效减小系数。系数减小了,单个特征影响总体的因素就变小了,最后结果就基本不会出现因为一个特征改变而大幅改变的情况,因此可以有效防止过拟合。
下期预告: 决策树与随机森林
参考文献
- [1] 周志华 《机器学习》
- [2] [中英字幕]吴恩达机器学习系列课程
下期预告: 决策树与随机森林
好啦以上内容就是本节的主要内容,第一次写技术博客,希望大家多多指教。我是飞燕,我们下期再见~
转载请注明出处