为什么要降维?
高维情形下,样本数据稀疏,距离计算困难。
为什么能进行降维?
收集的数据虽是高维但与学习任务密切相关的也许仅仅是某个低维分布
无监督降维:
PCA
最大重构性:找到一个超平面使得样本点在这个超平面的投影尽量分开。
PCA也可以看作是逐一筛选方差最大方向;对协方差矩阵XX^T特征分解,取最大特征值及其特征向量;在去掉该特征值以及特征向量后,继续取最大特征值;
关于PCA的几个问题:
-
投影方向应该取多少才好?
根据博客https://blog.youkuaiyun.com/michael__corleone/article/details/79680183中所说,选取特征值和占总特征值的80% -
PCA为什么需要去中心化?
根据方差公式,如果没有事先进行去中心化后,在计算过程中也会去减去均值,增大计算复杂度
注意点:(1)特征根的大小决定了我们感兴趣信息的多少。即小特征根往往代表了噪声,但实际上,向小一点的特征根方向投影也有可能包括我们感兴趣的数据; (2)特征向量的方向是互相正交(orthogonal)的,这种正交性使得PCA容易受到Outlier的影响(3)PCA适用于非监督的学习的不带标签(带标签的样本,往往用LDA降维)的样本降维,特别是小样本问题。广义认为,这类样本属性之间的相关性很大,通过映射,将高维样本向量映射成属性不相关的样本向量。(4) PCA是一个去属性相关性的过程,这里的相关性主要指的是线性相关性
python代码:
from numpy import *
def loaddata(filename):
fr=open(filename)
stringArr=[line.strip().split('\t') for line in fr.readlines()]
datArr=[map(float,line)for line in