线性判别分析(LDA)是一种有监督的数据降维方法。
图解
投影后类内方差最小,类间方差最大。
伪代码
LDA算法 |
---|
输入:$D={(x_1,y_1), (x_2,y_2), …,((x_m,y_m))}, x_i \in R^n, y_i \in {C_1,C_2,…,C_k} $ |
输出:$D, x_i \in R^d, y_i \in {C_1,C_2,…,C_k}$ |
1.计算类内散度矩阵$S_w = \sum\limits_{i=1}^{k}S_{w_i} = \sum\limits_{i=1}^{k}\sum\limits_{x \in X_i}(x-\mu_i)(x-\mu_i)^T$ |
2.计算类间散度矩阵$S_b = \sum\limits_{i=1}^{k}m_i(\mu_i-\mu)(\mu_i-\mu)^T,m_i$表示第$i$类示例数 |
3.计算$S_w^{-1}S_b$ |
4.计算$S_w^{-1}S_b$最大的$d$个特征值和对应的特征向量$(w_1,w_2,…,w_d)$,得到投影矩阵$W$ |
5.对样本集中的每一个样本特征$x_i$,转化为新的样本$z_i=W^Tx_i$ |
6.得到输出样本集$D’={(z_1,y_1), (z_2,y_2), …,((z_m,y_m))}$ |