点头出品 ,必属精品!!!嘿嘿嘿( ̄y▽, ̄)╭
一、降维概述
降维是指将训练数据中的样本从高维空间转到低维空间。那么降维有什么好处呢?当然是好处多多,首先高维空间中的搜索更加困难,其次高维空间下使得模型泛化能力弱,降维往往能去除那些不重要的特征减少泛化误差,但同时会有一些损失,增大了训练误差,能够解决过拟合问题,最后低维空间能增加数据可读性,利于发掘数据的有意义的结构。
主要作用:
1.减少冗余特征,降低数据维度。
2.有利于数据可视化
缺点:损失一些数据信息
二、主要的降维算法
1. 奇异值分解(SVD)
SVD可以将一个矩阵分解为三个矩阵的乘积:
- 一个正交矩阵\(U\)
- 一个对角矩阵\(\Sigma\)
- 一个正交矩阵\(V\)的转置\(V^T\)
SVD的基本形式如下:
其中,A是m行n列的矩阵,U是m行m列的正交矩阵,\(\Sigma\)是m行n列的对角矩阵,\(V^T\)是n行n列的正交矩阵。
U中的每个特征向量都被称为左奇异向量,\(\Sigma\)中主对角线元素被称为奇异值,V中的每个特征向量被叫做右奇异向量。
对角矩阵起到一个拉伸的作用,正交矩阵起到旋转的作用。
至于U和V怎么来的这里就不详细写了,V是\(A^TA\)得到的,U是\(AA^T\)得到的,他们的特征值相同,并且是\(\Sigma\)中的奇异值。
2. 主成分分析(PCA)
主成分分析即保留主要的成分,省略不重要的成分。观察上图,如果我们要将二维降维至一维,可以投影到那个坐标轴更好呢?我们很容易认为投影到\(F_1\)轴上更好,因为投影到这个轴上样本的损失最小,因此我们的目的就是降维时保留的信息尽可能的多。
如果需要PCA将n维降到k维,那么第一步就是均值归一化(Z-score标准化),去除不同量纲带来的影响(max-min标准化会改变数据分布,而Z-score并不会,它只是为了不同量纲的数据具有可比性),第二步就是计算协方差矩阵\(\Sigma\),其特征向量就是我们要得到的主成分,那么我们就有两种方法求解协方差矩阵。
(1)基于SVD分解协方差矩阵实现PCA算法
不用多说了吧,从图中来看就是从m降到了n维,损失了U和\(\Sigma\)中的部分信息。
(2)基于特征值分解协方差矩阵实现PCA算法
SVD求解协方差矩阵适用所有矩阵,但是特征值分解只适用于正交且不具有多个重根的矩阵,限制较大。
由于PCA追求降维后最大化保留数据内在信息,并且通过衡量投影方向上数据的方差大小来衡量该方向的重要性,但这样方法对于以后数据的区分会造成影响,反而会使本来容易分离的数据混淆在一起,因此使用PCA后再进行分类的效果不好,因此这时候可以选择LDA降维,它往往将数据投影到一条分离数据的直线或超平面上,即按照轴\(F_2\)进行降维。
3. t分布领域嵌入(t-SNE)
明天再弄。
标签:协方差,数据,矩阵,学习,降维,监督,PCA,Sigma From: https://www.cnblogs.com/WangChe/p/17062258.html