PCA算法
- PCA—本质上是将投影后的数据尽可能分散(方差最大),高维数据在低维空间上面(各个维度线性无关)的投影
- 参考网址PCA讲解
-
算法实现的流程
- 给定m条n维的数据
- 将数据排列为n*m的矩阵
- 将矩阵中每行元素分别减去每行的均值(零均值化)
- 求出协方差矩阵
- 求出协方差矩阵对应的特征值与特征向量
- 将特征值的大小按行进行排序,取前k列组成矩阵P
- 通过 Y = PX 对数据进行降维
LDA算法
-
LDA算法流程
输入:数据集 D = ( x 1 , y 1 x_1,y_1 x1,y1),( x 2 , y 2 x_2,y_2 x2,y2),( x 3 , y 3 x_3,y_3 x3,y3)···( x m , y m x_m,y_m xm,ym),其中,任意样本 x i x_i xi为n维向量y = { C 1 , C 2 , C 3 ⋅ ⋅ ⋅ C n C_1,C_2,C_3···C_n C1,C2,C3⋅⋅⋅Cn},降维到的维度为d
输出:降维后的数据集 D ′ D' D′1)计算类内散度矩阵 S w S_w Sw
2)计算类间散度矩阵 S b S_b Sb
3)计算矩阵; S w − 1 S b S_w^{-1}S_b Sw−1Sb
4)计算矩阵 S w − 1 S b S_w^{-1}S_b Sw−1Sb 的特征值与特征向量,按从小到大的顺序选取前 d个特征值和对应的 d个特征向量 ,得到投影矩阵 W W W
5)对样本集中的每一个样本特征 x i x_i xi,转化为新的样本 z i = W T x z_i = W^{T}x zi=WTx
6)得到输出样本集 D = ( z 1 , y 1 z_1,y_1 z1,y1),( z 2 , y 2 z_2,y_2 z2,y2),( z 3 , y 3 z_3,y_3 z3,y3)···( z m , y m z_m,y_m zm,ym)
小结:
- LDA算法既可以用来降维,也可以用来分来,但是目前来说,LDA主要用于降维,在进行与图像识别相关的数据分析时,LDA是一个有力的工具。下面总结一下LDA算法的优缺点。
共同点
- 都是用于降维
- 都用的是矩阵分解的思想
- 使用对象必须符合高斯分布
不同点
- LDA是有监督学习,可以使用先验知识,类内散度矩阵呢与类间散度矩阵
- PCA不能用于数据方差不明显的情况
- PCA降维没有维度限制