上一次看《机器学习》已经是很久之前了,很多都记得模糊了,所以最近认真的再复习一遍。
一, 线性回归(Linear Regression)
线性回归是一种有监督模型,线性回归试图使用一个线性方程来对数据进行拟合从而达到比较好的预测输出(形如 y=w⃗ x+b y = w → x + b )。
首先给定数据集的表示形式
D={(x⃗ 1,y1),(x⃗ 2,y2),⋯,(x⃗ m,ym)} D = { ( x → 1 , y 1 ) , ( x → 2 , y 2 ) , ⋯ , ( x → m , y m ) }
其中 x⃗ i={xi1,xi2,xi3,⋯,xid},y∈R x → i = { x i 1 , x i 2 , x i 3 , ⋯ , x i d } , y ∈ R
那么我们的目标就是用:
y=f(x)=w⃗ Tx+b y = f ( x ) = w → T x + b 来对训练数据进行拟合
我们可以进一步简化形式,令 b b 融合到当中。 令 w⃗ ={w1,w2,⋯,wd,b},x⃗ ={xi1,xi2,xi3,⋯,xid,1} w → = { w 1 , w 2 , ⋯ , w d , b } , x → = { x i 1 , x i 2 , x i 3 , ⋯ , x i d , 1 }
那么我们的目标拟合方程 可以表示为 y=w⃗ x y = w → x
现在机器学习三要素的模型有了,但是我们还缺少目标函数和优化算法,我们先来确定目标函数。
在这里我们使用最常用的平方误差作为目标函数,即我们要优化的目标是
Min∑mi=1(f(xi)−yi)2 M i n ∑ i = 1 m ( f ( x i ) − y i ) 2 即 Min(W⃗ TX⃗ −y⃗ )T(W⃗ TX⃗ −y⃗ ) M i n ( W → T X → − y → ) T ( W → T X → − y → )
在这里我们要对上式求得使其最小的 W⃗ W → 值,那么对 W⃗ W → 进行求导得到
ddw⃗ =2(W⃗ TX⃗ −y⃗ )X d d w → = 2 ( W → T X → − y → ) X
令上式为零,可以得到最优解,但是因为涉及到矩阵求解,所以有必要讨论不同的情况。
(1)当 X⃗ TX⃗ X → T X → 为满秩矩阵或正定矩阵,上式有唯一解,唯一解为 w⃗ ∗=(X⃗ TX⃗ )−1X⃗ Ty⃗ w → ∗ = ( X → T X → ) − 1 X → T y →
(2)然而现实情况下, X⃗ TX⃗ X → T X → 往往不是满秩矩阵,这个时候能接触多个解,他们都能使得均方误差最小化,如何选择往往要取决于算法的归纳偏好(归纳偏好往往由正则化项表示)。
广义线性回归模型
在基本线性回归模型上存在有广义线性模型 y=g(w⃗ Tx⃗ +b) y = g ( w → T x → + b ) , g(⋅) g ( ⋅ ) 为联系函数,将基本线性模型的输出进行非线性的映射到输出空间。
二,逻辑回归(Logistic Regression)
在上一小节,描述了基本线性回归模型进行回归问题的解决,但是如果要做分类任务呢?
这个时候我们需要利用广义线性回归模型,如果我们将线性回归模型的输出利用一个单调可微(因为在优化算法中要求该联系函数为可微的才可以求解,至于为什么需要单调,我还表述不清楚)的联系函数做一个非线性的映射,那么我们就可以将分类标签和线性回归模型输出值联系,解决分类问题。
考虑基本的二分类任务,
D={(x⃗ 1,y1),(x⃗ 2,y2),⋯,(x⃗ m,ym)},x⃗ i={xi1,xi2,xi3,⋯,xid},y={0,1}或者y={−1,1} D = { ( x → 1 , y 1 ) , ( x → 2 , y 2 ) , ⋯ , ( x → m , y m ) } , x → i = { x i 1 , x i 2 , x i 3 , ⋯ , x i d } , y = { 0 , 1 } 或 者 y = { − 1 , 1 }
现在我们已经有了基本线性回归模型
y=w⃗ x⃗ +b
y
=
w
→
x
→
+
b
那么问题是我们应该怎么把线性回归模型的输出和二分类任务的标签值联系起来呢?
直观的来讲我们可以使用单位阶跃函数,也就是下面的映射
即预测值 f(x)>0,label=1;f(x)<0,label=0 f ( x ) > 0 , l a b e l = 1 ; f ( x ) < 0 , l a b e l = 0 这个函数是我们常见的阶跃函数(0.5视为过渡值,预测值为0的时候可以任意判别,这是与单位阶跃函数的唯一区别)。
但是这个直观的方式存在问题,它是非凸非连续的,不便于优化算法求解,因此我们可以考虑一个起到类似作用的替代的单调可微的函数,在这里我们选择Sigmoid函数(至于选择的原因在后面会进行说明),其形式如下
y=11+e−f(x) y = 1 1 + e − f ( x )
可以看出Sigmoid函数将线性回归函数的输出映射到一个 (0,1) ( 0 , 1 ) 范围内的实值,并且在0附近较为敏感,将Sigmoid作为联系函数 g(⋅) g ( ⋅ ) 代入得到:
f(x)=11+e−(w⃗ Tx+b) f ( x ) = 1 1 + e − ( w → T x + b )
上式可以作一个 变换为 lny1−y=w⃗ Tx+b ln y 1 − y = w → T x + b ,如果将y视为样本x为正样例的可能性,那么1-y其实是其反样例的可能性,两者的比值 y1−y y 1 − y 就是几率(odds),反映了x作为正样例的相对可能性,对其取对数,即对数几率。
这样可以看出我们其实是在用对数几率作为联系函数,实际上我们是在使用线性回归模型的预测结果去逼近真实标签的对数几率,因此被称为对数几率回归(注意虽然名字有回归,但是它是一个分类学习方法)
这这里这种方法主要有三个优点: (1)直接对分布的可能性进行建模,没有假设数据分布,避免了假设分布带来的问题;(2)不仅仅是预测类别而是得到近似概率的预测值,因此可以用在很多需要概率值的任务当中;(3)对率函数是任意阶可导的凸函数,有很好的数学性质,很多数值优化算法都可以直接对其进行最优值求解。
下面我们对对率回归模型进行参数估计,在这里我们使用最大似然估计。
P(y=1|x;w⃗ )=fw(x) P ( y = 1 | x ; w → ) = f w ( x )
P(y=0|x;w⃗ )=1−fw(x) P ( y = 0 | x ; w → ) = 1 − f w ( x )
首先得到概率函数为
P(y|x;w⃗ )=(fw(x))y∗(1−fw(x))1−y P ( y | x ; w → ) = ( f w ( x ) ) y ∗ ( 1 − f w ( x ) ) 1 − y
因为m个样本彼此相互独立,因此 他们的联合分布可以表示为各边际分布的乘积,取似然函数为
L(w⃗ )=∏mi=1P(yi|xi;w⃗ ) L ( w → ) = ∏ i = 1 m P ( y i | x i ; w → )
L(w⃗ )=∏mi=1(fw(xi))yi∗(1−fw(xi))1−yi L ( w → ) = ∏ i = 1 m ( f w ( x i ) ) y i ∗ ( 1 − f w ( x i ) ) 1 − y i
然后对其取对数得到
l(w⃗ )=∑mi=1yiln(fw(xi))+(1−yi)ln(1−fw(xi)) l ( w → ) = ∑ i = 1 m y i ln ( f w ( x i ) ) + ( 1 − y i ) ln ( 1 − f w ( x i ) )
在这里是要求上式的最大值,但是一般而言优化目标是求最小值,因此我们对上式求解其负值的最小值即可。
参数求解常用的方法是梯度下降法(GD)和牛顿法。在这里就不展开细节了。
PS. 为什么LR模型要使用Sigmoid函数?在这里因为公式过多,我就直接引用我在知乎看到的一篇回答了。
整体推导思路大概是这样的:
首先,我们在建模预测
Y|X
Y
|
X
,并认为
Y|X
Y
|
X
服从
bernoullidistribution
b
e
r
n
o
u
l
l
i
d
i
s
t
r
i
b
u
t
i
o
n
,所以我们只需要知道
P(Y|X)
P
(
Y
|
X
)
;其次我们需要一个线性模型,所以
P(Y|X)=f(wx)
P
(
Y
|
X
)
=
f
(
w
x
)
。接下来我们就只需要知道 f 是什么就行了。而我们可以通过最大熵原则推出的这个
f
f
,就是Sigmoid。
推导过程如下:
设 是我们的 LR 概率预测函数 f f ,那么它应该满足一下三个条件:
非负:
π(x)v≥0
π
(
x
)
v
≥
0
和为 1 :
∑kv=1π(x)v=1
∑
v
=
1
k
π
(
x
)
v
=
1
值越大越好,表明预测值和原标签越匹配:
max π(x(i))y(i)
m
a
x
π
(
x
(
i
)
)
y
(
i
)
对于二分类任务的 LR,
w
w
是权重系数,一般有,
π(x(i))1=11+e−w⋅x π ( x ( i ) ) 1 = 1 1 + e − w ⋅ x
但更一般的情况,我们认为用这种方式来表示更容易理解,对 k k 个分类的任务,表示第 v v 个分类的概率得分
π(x(i))v=ewv⋅x∑ku=1ewu⋅x π ( x ( i ) ) v = e w v ⋅ x ∑ u = 1 k e w u ⋅ x
那么,对于大小为 m 的数据集 xi,i=1,2,...,m x i , i = 1 , 2 , . . . , m ,概率预测函数 π(xi) π ( x i ) 的目的是为了让模型更加接近数据真实的情形,用公式可以这样来表达(前提是假设数据彼此之间相互独立):
然而上式累乘很容易造成数值的下溢,等价地,我们取它的对数形式,并求使其最大化的参数矩阵 w w ,目标函数如下:
对目标函数求 w w 的偏导数, ,有
在进行下一步之前,这里先停一下,对于 k k 分类的情形,系数矩阵的大小为 (n×k)T ( n × k ) T ,对应每个类别都会有一个概率得分,所以得分两种情形,预测值等于真实情况和不等于真实情况
①:当
u=yi
u
=
y
i
的时候:
∂∂wu,jπ(xi)yi=xjπ(xi)ui(1−π(xi)ui)
∂
∂
w
u
,
j
π
(
x
i
)
y
i
=
x
j
π
(
x
i
)
u
i
(
1
−
π
(
x
i
)
u
i
)
②:当
u≠yi
u
≠
y
i
的时候:
∂∂wu,jπ(xi)yi=−xjπ(xi)yiπ(xi)ui
∂
∂
w
u
,
j
π
(
x
i
)
y
i
=
−
x
j
π
(
x
i
)
y
i
π
(
x
i
)
u
i
继续,
令 ∂f(w)∂wu,j=0 ∂ f ( w ) ∂ w u , j = 0 ,得到如下等式,其中 I(u,yi) I ( u , y i ) 是指示函数:
最大熵原理
在李航老师的《统计学习方法》中,解释了最大熵原理是概率模型学习的一个准则,学习概率模型时,所有可能的概率模型中,熵最大的模型是最好的。(最大熵原理认为, 在所有可能的模型中,熵最大的模型)
到目前为止,我们已经得到了三个约束条件:
由最大熵原理,我们的目的是使模型函数的熵最大化, π() π ( ) 的熵等于,
由目标函数和三个约束条件,用拉格朗日乘数法可以轻松解决,建立拉格朗日函数如下:
令 ∂∂π(x(i))uL=0 ∂ ∂ π ( x ( i ) ) u L = 0 ,得
∂∂π(x(i))uL=λx(i)+β−log(π(x(i))u)−1 ∂ ∂ π ( x ( i ) ) u L = λ x ( i ) + β − l o g ( π ( x ( i ) ) u ) − 1
最终得到
log(π(x(i))u)=λ⋅x(i)+β−1 l o g ( π ( x ( i ) ) u ) = λ ⋅ x ( i ) + β − 1
更一般地,回到熟悉简单的二分类情形,
logy1−y=λ⋅x(i)+β−1 l o g y 1 − y = λ ⋅ x ( i ) + β − 1
解得,
y=11+eλ⋅x(i)+β−1 y = 1 1 + e λ ⋅ x ( i ) + β − 1
如果仍然觉得有困惑,可以看看原文中推导。
为什么 LR 模型要使用 Sigmoid 函数,背后的数学原理是什么? -李彬的回答 - 知乎
三,线性判别分析(Linear Discriminant Analysis,简称LDA)
LDA是一种经典的线性学习方法,最早由Fisher在 二分类的问题上提出,因此有时候也被叫做Fisher判别分析。
LDA的整体思想是非常直观的: 给定训练的样本集,设法将样本投影到同一条直线上,使得同类样例的投影点尽可能近,异类样例投影点尽可能远。当新的样本需要被分类时,将其投影到该直线上,根据投影点的位置来确定新样本的类别。该投影直线形式为
y=wTx
y
=
w
T
x
。
给定数据集
D={(xi,yi)}mi=1,yi∈{0,1}
D
=
{
(
x
i
,
y
i
)
}
i
=
1
m
,
y
i
∈
{
0
,
1
}
,
wTx
w
T
x
为投影点,
∑i
∑
i
为第i类样例的协方差矩阵,
μi
μ
i
为第i类样例的均值向量,
Xi
X
i
为第i类样例。
为了使得同类投影点距离尽可能小,即等效的让同类样例点的协方差尽可能小,即
wT∑0w+wT∑1w
w
T
∑
0
w
+
w
T
∑
1
w
尽可能小,而想让异类间距最大,则让
||wTμ0−−wTμ1||22
|
|
w
T
μ
0
−
−
w
T
μ
1
|
|
2
2
尽可能大,同时考虑两者就得到了我们最大化的目标。
J=||wTμ0–wTμ1||22wT∑0w+wT∑1w=wT(μ0−μ1)(μ0−μ1)TwwT(∑0−∑1)w
J
=
|
|
w
T
μ
0
–
w
T
μ
1
|
|
2
2
w
T
∑
0
w
+
w
T
∑
1
w
=
w
T
(
μ
0
−
μ
1
)
(
μ
0
−
μ
1
)
T
w
w
T
(
∑
0
−
∑
1
)
w
在这里我们将类内距离定义为类内散度矩阵即:
Sw=∑0+∑1=∑x∈X0(x−μ0)(x−μ0)T+∑x∈X1(x−μ1)(x−μ1)T
S
w
=
∑
0
+
∑
1
=
∑
x
∈
X
0
(
x
−
μ
0
)
(
x
−
μ
0
)
T
+
∑
x
∈
X
1
(
x
−
μ
1
)
(
x
−
μ
1
)
T
将类间距离定义为类间散度矩阵即为:
Sb=(μ0−μ1)(μ0−μ1)T
S
b
=
(
μ
0
−
μ
1
)
(
μ
0
−
μ
1
)
T
那么可以将最大化目标简化为
J=wTSbwwTSww
J
=
w
T
S
b
w
w
T
S
w
w
注意到我们最大化的目标分子分母都是
w
w
的二次项,因此最优解和的长度无关,因此我们可以令
wTSww=1
w
T
S
w
w
=
1
,那么我们优化目标变成了
minw−wTSbws.t.wTSww=1
m
i
n
w
−
w
T
S
b
w
s
.
t
.
w
T
S
w
w
=
1
因此我们可以使用拉格朗日法来进行求解,得到
w=S−1w(μ0−μ1)
w
=
S
w
−
1
(
μ
0
−
μ
1
)