Principal Component Analysis(PCA)
概念
- 去中心化(零均值化): 将输入的特征减去特征的均值, 相当于特征进行了平移, $$x_j - ar x_j$$
- 归一化(标准化): 将输入的特征减去特征的均值, 得到的差在除以特征的标准差, $${{x_j-ar x_j}over{std(x_j)}}$$在进行PCA之前, 一定要进行零均值化或者标准化
用途
- 数据压缩(Data Compression)
- 数据可视化(Data Visualization)
- 提高算法执行效率
PCA实现步骤
- 数据零均值化或者标准化
- 计算样本矩阵的协方差矩阵Covariance, $$Sigma={1over{m}}sum_{i=1}^{m} x{(i)}x{(i)T}$$
- 计算协方差矩阵的特征向量eigenvectors, $$[U, S, V] = svd(sigma)$$U即为特征向量矩阵
- 选择保留的特征, $$Ureduce = U(:, 1:k)$$
- 将Ureduce转为样本, (Z = Ureduce^TX)
数据还原
- 将被PCA处理过的数据尽可能的还原成原始数据
- 按照数学公式应该为(X^{(i)}_{approx} = (Ureduce^T)^{-1}Z^{(i)}), 但是实际中, 采用估计的, (X^{(i)}_{approx}=UreduceZ^{(i)})
PCA实现补充
- 如何选择k变量, 即保留的特征数量
- 设k从1开始递增迭代到PCA算法中
- 还原数据得到(X_{approx})
- 比较$${{{1over{m}}sum_{i=1}m(x{(i)}-x{(i)}_{approx})2}over{{1over{m}}sum_{i=1}mx{(i)T}x^{(i)}}}le0.01$$
- 如果小于0.01, 则表示当k取(hat k)时, 我们保留了原始数据的99%
什么时候考虑PCA
- 在一开始处理数据的时候, 应该尽量使用原始数据, 当是在不行的时候再使用PCA处理