LDA

LDA

算法输入与目的

有很多有标签的高纬数据,他们的格式为列向量:

$$
x = [x_1,x_2,x_3…]^T
$$

我们想要找到一个高纬空间到一维空间的映射,其中$w$是一个列向量

$$
y=w^T x
$$

使得我们在这个新的维度上,能够完成分类,类内紧凑,类间松散

模型建立

假设映射后类别i的数据集合为:

$$
Y_i = {y_1,y_2,y_3…}
$$

分别根据求映射后数据集合的期望

$$
\tilde{m_i}=\frac{1}{n_i}\sum_{y\in Y_i}y
$$

和方差

$$
\tilde{S_i}^2 = \sum_{y \in Y_i}(y-\tilde{m_i})^2
$$

模型建立,把类中心点间的方差作为分子,把类内方差和作为分母,我们的目标就是最大化整个分式

$$
\tilde{m}=\frac{1}{n}\sum n_i*\tilde{m_i}
\\max\quad J(w)=\frac{ \sum n_i(\tilde{m_i}-\tilde{m})^2}{\sum{\tilde{s_i}^2}}
$$

变形

假设映射前类别i的数据集合为:

$$
D_i = {x_1,x_2,x_3…}
$$

为了能够同时描述类内距离和类间距离,我们需要对映射后的各类集合求期望和方差

$$
m_i=\frac{1}{n_i}\sum_{x\in D_i}x
$$

则映射后的期望为

$$
\tilde{m_i}=\frac{1}{n_i}\sum_{y\in Y_i}y=\frac{1}{n_i}\sum_{x\in D_i}w^Tx=w^T\frac{1}{n_i}\sum_{x\in D_i}x=w^Tm_i
$$

$$
S_i = \sum_{x \in D_i}(x-m_i)(x-m_i)^T
$$

则映射后的方差

$$
\begin{aligned}
\tilde{S_i}^2&= \sum_{y \in Y_i}(y-\tilde{m_i})^2
\&= \sum_{x \in D_i}(w^Tx-w^Tm_i)^2
\&=\sum_{x \in D_i}(w^T(x-m_i))(w^T(x-m_i))
\&=\sum_{x \in D_i}(w^T(x-m_i))
((x-m_i)^Tw)
\&=w^TS_iw
\end{aligned}
$$

模型

$$
\tilde{m}=\frac{1}{n}\sum n_i\tilde{m_i}=w^T\frac{1}{n}\sum n_im_i=w^Tm
$$

模型的分子

$$
\begin{aligned}
\&\sum n_i(\tilde{m_i}-\tilde{m})^2
\=&\sum n_i(w^Tm_i-w^Tm)^2
\=&w^T(\sum n_i(m_i-m)(m_i-m)^T) w
\end{aligned}
$$

模型总结

$$
\begin{aligned}
&S_B=\sum n_i(m_i-m)(m_i-m)^T
\&S_W=\sum S_i
\&\max\quad J(w)=\frac{ w^TS_Bw}{w^TS_ww}
\end{aligned}
$$

拉格朗日乘子法求极值

J(w)的值与w的长度无关,只和w的方向有关,我们不妨固定分子为1,则变为了

$$
\max\quad J_2(w)=w^TS_Bw\quad,\quad w^TS_ww=1
$$

构建拉格朗日函数,并使用标量对列向量求导法则,求偏导

$$
L(w,\lambda) = w^TS_Bw+\lambda(1-w^TS_ww)
$$

一个求导法则:($x$是列向量,$A$是方阵)

$$
\begin{aligned}
&\frac{\partial x^TAx}{\partial x} = (A^T+A)x
\end{aligned}
$$

开始求导

$$
\begin{aligned}
&\frac{\partial L}{\partial w}=(S_B+S_B^T)w-\lambda(S_w+S_w^T)w=0
\end{aligned}
$$

其中S_B和S_w是对称矩阵

$$
\begin{aligned}
&2S_Bw-2\lambda S_ww=0
\\to&S_Bw=\lambda S_ww
\\to&(S_w^{-1}S_B)w=\lambda w
\end{aligned}
$$

因此$w$取矩阵$S_w^{-1}S_B$的特征向量即可


LDA
http://fightinggg.github.io/fluid/Q5VXIG.html
作者
fightinggg
发布于
2020年2月18日
许可协议