机器学习常用算法快速推导
先逼逼几句:
\quad
该模块会随着我学习的深入不断地增加完善,并且细化分类,但是因为是简略的推导,所以需要提前学习有关知识再来看才有用。
\quad
在入门机器学习算法时,想必会对算法的分类产生疑惑,为啥明明都是降维,有的是线性有的是核空间,有的是流形有的不是,这些都依据什么呢?笔者就叙述下自己的观点,也希望评论区能给予指正。
机器学习的分类
流形学习
\quad
在高维数据
X
∈
R
m
X \in \R^m
X∈Rm中,可能数据是由低维数据
Y
∈
R
c
Y \in \R^c
Y∈Rc通过函数f变换而来的,即:
X
=
f
(
Y
)
X=f(Y)
X=f(Y),这样通过函数f进行变换升高维度,会使得数据具有流形特征,如果单纯依靠数据在原始空间的距离进行分类,就会导致数据的流形丢失,导致可能出现分类错误。
举个例子:
\quad
选取
f
(
x
)
=
(
x
−
5
)
2
−
5
f(x)=(x-5)^2-5
f(x)=(x−5)2−5可以出现下面的数据:
{
1
,
2
,
3
,
5
,
6
,
7
}
→
{
(
1
,
1
)
,
(
2
,
4
)
,
(
3
,
−
1
)
,
(
5
,
−
5
)
,
(
6
,
−
4
)
,
(
7
,
−
1
)
}
\{\ 1,2,3,5,6,7\ \}\rightarrow \{ (1,1), (2,4),(3,-1),(5,-5),(6,-4),(7,-1)\}
{ 1,2,3,5,6,7 }→{(1,1),(2,4),(3,−1),(5,−5),(6,−4),(7,−1)}
\quad
假设我们已知类别为:[1,2,3],[5,6,7],很明显,这是依据x轴近邻关系来划分的。
\quad
那么若是使用二维的数据进行欧氏距离的测定来分类新的数据(3.5,-2.75)真实标签为:第一类。
\quad
可是因为前三近邻的是第一类,第二类,第二类,会发现该数据被预测为第二类了,这就分类错误了。因此流形学习是试图通过数据的真实标签与近邻情况,去预测函数f,然后用
f
−
1
f^{-1}
f−1去降维,一次保留数据的流形结构。
线性降维
\quad 线性降维依赖于公式 Y = U T X Y=U^TX Y=UTX,使得数据通过投影矩阵U,将原始数据矩阵X投影到新空间中,然后进行预测。了解线性代数后你应该知道矩阵U实际上就是目标空间的投影轴的向量组成的,而矩阵乘法本身就是线性运算,因此投影是线性投影,所以该类型算法被称为线性降维。
核空间
\quad 核空间假设数据通过核函数投影到了高维(非线性)空间,然后给出该空间的性质(两个数据的内积),来替代常规运算中的向量的内积。这样描述十分抽象,但是后面我总结核空间算法后就能看懂这句话了。
线性降维
主成分分析(PCA)
介绍
\quad
PCA是通过协方差矩阵引入约束条件:
1.投影轴相互正交(
U
T
U
=
I
U^TU=I
UTU=I)
2.最大化数据在投影轴上的方差/散度(max
t
r
(
U
T
X
X
T
U
)
tr(U^TXX^TU)
tr(UTXXTU))。
\quad PCA的目的就是让数据重新投影在新的线性空间中,且每个轴上数据的投影都尽可能彼此远离。PCA不依赖数据的分类标签,是一种优秀的无监督学习算法。
推导
a r g m a x t r ( U T X X T U ) s . t . U T U = I J ( U ) = t r ( U T X X T U ) − λ t r ( U T U − I ) δ J δ U = 2 X X T U − 2 λ U = 0 U 是 X X T 的前 c 大特征值对应的特征向量所构成的矩阵 arg \ max \ tr(U^TXX^TU) \ s.t. \ U^TU=I \\ J(U)=tr(U^TXX^TU)-\lambda tr(U^TU-I) \\ \frac{\delta J}{\delta U}=2XX^TU-2\lambda U=0 \\ U是XX^T的前c大特征值对应的特征向量所构成的矩阵 arg max tr(UTXXTU) s.t. UTU=IJ(U)=tr(UTXXTU)−λtr(UTU−I)δUδJ=2XXTU−2λU=0U是XXT的前c大特征值对应的特征向量所构成的矩阵
线性鉴别分析(LDA)
介绍
\quad
LDA是通过散度矩阵进行约束:
1.最大化类间散度矩阵
S
b
S_b
Sb
2.最小化类内散度矩阵
S
w
S_w
Sw
\quad LDA是基于数据真实标签,通过将数据投影到新线性空间并使得数据同类之间距离尽可能近,异类之间尽可能远的算法。LDA是基础的监督式学习算法。
推导
m i n t r ( U T S w U ) a n d max t r ( U T S b U ) a r g m a x t r ( U T S b U ) s . t . ( U T S w U ) = c o n s J ( U ) = t r ( U T S b U ) − λ ( t r ( U T S w U ) − 1 ) δ J δ U = 2 S b U − 2 λ S w U = 0 S w − 1 S b U = λ U U 是 S w − 1 S b 的前 c 大特征值对应的特征向量所构成的矩阵 min \ tr(U^TS_wU) \ and \max tr(U^TS_bU) \\ arg \ max \ tr(U^TS_bU) \ s.t. \ (U^TS_wU)=cons\\ J(U)=tr(U^TS_bU)-\lambda (tr(U^TS_wU)-1)\\ \frac{\delta J}{\delta U}=2S_bU-2\lambda S_wU=0\\ S_w^{-1}S_bU=\lambda U\\ U是S_w^{-1}S_b的前c大特征值对应的特征向量所构成的矩阵 min tr(UTSwU) andmaxtr(UTSbU)arg max tr(UTSbU) s.t. (UTSwU)=consJ(U)=tr(UTSbU)−λ(tr(UTSwU)−1)δUδJ=2SbU−2λSwU=0Sw−1SbU=λUU是Sw−1Sb的前c大特征值对应的特征向量所构成的矩阵
线性回归(LR)
介绍
\quad
高中学的最小二乘法就是线性回归的一种,最小二乘法
(
y
−
f
(
x
)
)
2
(y-f(x))^2
(y−f(x))2来确定f,而线性回归将y,f,x都变成了矩阵形式:
m
i
n
∑
i
=
1
n
(
y
i
−
U
T
x
i
)
T
(
y
i
−
U
T
x
i
)
min \ \sum_{i=1}^n(y_i-U^Tx_i)^T(y_i-U^Tx_i)
min ∑i=1n(yi−UTxi)T(yi−UTxi),有时候还会添加正则项防止过拟合,求解有两种方式:
1.梯度下降法。梯度下降法求解速度快,但是只能逼近最优解。
2.求导法。求导速度略慢,但是结果精确。
推导
1.求导法
a
r
g
m
i
n
∑
i
=
1
n
(
y
i
−
U
T
x
i
)
T
(
y
i
−
U
T
x
i
)
=
t
r
(
(
Y
−
U
T
X
)
T
(
Y
−
U
T
X
)
)
J
(
U
)
=
t
r
(
(
Y
−
U
T
X
)
T
(
Y
−
U
T
X
)
)
δ
J
δ
U
=
2
X
X
T
U
−
2
X
Y
T
=
0
U
=
(
X
X
T
)
−
1
X
Y
T
arg \ min \ \sum_{i=1}^n(y_i-U^Tx_i)^T(y_i-U^Tx_i)=tr((Y-U^TX)^T(Y-U^TX))\\ J(U)= tr((Y-U^TX)^T(Y-U^TX))\\ \frac{\delta J}{\delta U}=2XX^TU-2XY^T=0\\ U=(XX^T)^{-1}XY^T
arg min i=1∑n(yi−UTxi)T(yi−UTxi)=tr((Y−UTX)T(Y−UTX))J(U)=tr((Y−UTX)T(Y−UTX))δUδJ=2XXTU−2XYT=0U=(XXT)−1XYT
2.梯度下降法
U
t
+
1
=
U
t
−
a
∗
δ
J
δ
U
U
t
+
1
=
U
t
−
X
(
X
T
U
−
Y
T
)
∗
a
U_{t+1}=U_{t}-a*\frac{\delta J}{\delta U}\\ \quad\\ U_{t+1}=U_{t}-X(X^TU-Y^T)*a
Ut+1=Ut−a∗δUδJUt+1=Ut−X(XTU−YT)∗a
由于步长a为常数时不好确定,因此令步长为变量。希望每次步进都在当前状态下使得预测值与实际值的距离最近,因此有约束条件:
m
i
n
t
r
(
(
Y
−
U
t
+
1
T
X
)
T
(
Y
−
U
t
+
1
T
X
)
)
m
i
n
t
r
(
(
Y
−
(
U
t
−
δ
J
δ
U
∗
a
)
T
X
)
T
(
Y
−
(
U
t
−
δ
J
δ
U
∗
a
)
T
X
)
)
min \ tr((Y-U_{t+1}^TX)^T(Y-U_{t+1}^TX))\\ min \ tr((Y-(U_t-\frac{\delta J}{\delta U}*a)^TX)^T(Y-(U_t-\frac{\delta J}{\delta U}*a)^TX))
min tr((Y−Ut+1TX)T(Y−Ut+1TX))min tr((Y−(Ut−δUδJ∗a)TX)T(Y−(Ut−δUδJ∗a)TX))
而常数是不能直接与矩阵进行运算的,且
t
r
(
a
∗
X
)
=
a
∗
t
r
(
X
)
tr(a*X)=a*tr(X)
tr(a∗X)=a∗tr(X),令
J
=
t
r
(
(
Y
−
U
t
+
1
T
X
)
T
(
Y
−
U
t
+
1
T
X
)
)
,
P
=
δ
J
δ
U
J=tr((Y-U_{t+1}^TX)^T(Y-U_{t+1}^TX)),P=\frac{\delta J}{\delta U}
J=tr((Y−Ut+1TX)T(Y−Ut+1TX)),P=δUδJ,对a进行求导:
δ
J
δ
a
=
2
a
∗
t
r
(
X
T
P
P
T
X
)
+
t
r
(
P
T
X
Y
T
−
P
T
X
X
T
U
t
)
=
0
2
a
∗
t
r
(
X
T
P
P
T
X
)
=
t
r
(
P
T
X
(
X
T
U
t
−
Y
T
)
)
,
P
=
2
X
(
X
T
U
t
−
Y
T
)
2
a
=
t
r
(
1
2
P
T
P
)
t
r
(
X
T
P
P
T
X
)
a
=
∣
∣
P
∣
∣
2
4
∣
∣
P
T
X
∣
∣
2
\frac{\delta J}{\delta a}=2a*tr(X^TPP^TX)+tr(P^TXY^T-P^TXX^TU_t)=0\\ 2a*tr(X^TPP^TX)=tr(P^TX(X^TU_t-Y^T)),\quad P=2X(X^TU_t-Y^T)\\\\ 2a=\frac{tr(\frac{1}{2}P^TP)}{tr(X^TPP^TX)}\\ a=\frac{|| P ||^2}{4|| P^TX ||^2}
δaδJ=2a∗tr(XTPPTX)+tr(PTXYT−PTXXTUt)=02a∗tr(XTPPTX)=tr(PTX(XTUt−YT)),P=2X(XTUt−YT)2a=tr(XTPPTX)tr(21PTP)a=4∣∣PTX∣∣2∣∣P∣∣2
带回迭代方程:
U
t
+
1
=
U
t
−
X
(
X
T
U
t
−
Y
T
)
∣
∣
P
∣
∣
2
2
∣
∣
P
T
X
∣
∣
2
U_{t+1}=U_t-X(X^TU_t-Y^T)\frac{|| P ||^2}{2|| P^TX ||^2}
Ut+1=Ut−X(XTUt−YT)2∣∣PTX∣∣2∣∣P∣∣2
流形降维
局部保留投影法(LPP)
介绍
\quad LPP算法是经典的流形学习算法,该算法旨在通过学习高维空间中数据的近邻关系,再低维空间中尽可能保留