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_i*m_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\)的特征向量即可