pca主成分分析结果解释_机器学习——PCA 主成分分析

PCA是一种无监督的降维算法,通过最大化方差保留数据的主要信息。它常用于数据可视化、数据压缩和特征提取。PCA寻找协方差矩阵的最大特征值对应的特征向量,这些向量定义了数据的新坐标系。在汽车数据集的例子中,通过PCA可以将数据从18维降至3维,并保持85%以上的方差。PCA可用于微阵列数据、异常检测和时间序列分析等领域。
摘要由CSDN通过智能技术生成

PCA

Created: Apr 26, 2020 4:40 PM

PCA 简介

PCA是一种降维算法

属性:

  • - 在数据集中保留了最多的信息,同时将数据转换到较低维的子空间
  • - 主要的成分彼此正交(方差最大)
  • - 有损数据压缩,特征提取和数据可视化等应用程序。
  • - 是一种无监督的学习

为什么要降维?

  • - 数据可视化

数据可视化中很难看到高维数据,所以你可以通过降维到低维空间,更好的绘制图像。

  • - 数据压缩

删除多余和嘈杂的数据,减少内存和硬盘存储,减少输入,可以加快算法的学习速度。

PCA标准

348fe9f3-7b13-eb11-8da9-e4434bdf6706.png
  • 投影数据的方差最大化:选择一条线,使数据分布最均匀
  • 或最小化投影误差:线性投影应使平均投影成本最小化,平均投影成本定义为数据点与其投影之间的均方距离

最大化投影方差

在信号领域,我们认为信号具有较大的方差,噪声具有较小的方差,信号与噪声的比称为信噪比,信噪比越大意味着数据的质量越好,由此我们不难引出,PCA的目标即最大化投影方差,也就是让数据在主轴上的投影方差最大。

- 给定一个矩阵X,例如

368fe9f3-7b13-eb11-8da9-e4434bdf6706.png

选择k

- 协方差矩阵(对称半正定)为

398fe9f3-7b13-eb11-8da9-e4434bdf6706.png

其实是希望你找到一个垂直的新的坐标系, 然后投影过去, 这里有两个问题。 第一问题: 找这个坐标系的标准或者目标是什么? 第二个问题, 为什么要垂直的, 如果不是垂直的呢?

第一问题就是特征值和特征向量,就是投影后方差最大, 协方差最小。

第二个问题?PCA和ICA区别

408fe9f3-7b13-eb11-8da9-e4434bdf6706.png

于是我们发现,x 投影后的方差就是协方差矩阵的特征值。我们要找到最大方差也就是协方差矩阵最大的特征值,最佳投影方向就是最大特征值所对应的特征向量,次佳就是第二大特征值对应的特征向量,以此类推。

举例:

468fe9f3-7b13-eb11-8da9-e4434bdf6706.png

计算Cx特征值为: lamda1 = 2, lamda2 = 2/5,特征值特征向量为

4e8fe9f3-7b13-eb11-8da9-e4434bdf6706.png

可验证A = (U)TCxU

降维

518fe9f3-7b13-eb11-8da9-e4434bdf6706.png
548fe9f3-7b13-eb11-8da9-e4434bdf6706.png

最小化回归误差

最大投影方差求解的是一条直线使得样本点投影到该直线上的方差最大,我们就可以联想到线性回归,也是求解一条直线。

578fe9f3-7b13-eb11-8da9-e4434bdf6706.png
5c8fe9f3-7b13-eb11-8da9-e4434bdf6706.png
5e8fe9f3-7b13-eb11-8da9-e4434bdf6706.png

PCA算法

  • - 数据预处理,均值归一化

从每个数据维度中减去平均值。 这将产生一个平均值为零的数据集,减去均值将简化方程,从而简化方差和协方差的计算。 方差和协方差值不受平均值影响

  • - 计算协方差矩阵
618fe9f3-7b13-eb11-8da9-e4434bdf6706.png
  • - 计算特征向量和特征值
658fe9f3-7b13-eb11-8da9-e4434bdf6706.png
  • - 选择前K个主要成分

1、按特征值从高到低对特征向量进行排序

2、选择解释最多方差(例如方差的95%)的前k个特征向量

678fe9f3-7b13-eb11-8da9-e4434bdf6706.png

- 生成新的数据集

选择了要保留在数据中的主成分(特征向量)并形成基本向量,就可以将数据点投影到由前k个主成分定义的超平面(子空间)上。

6a8fe9f3-7b13-eb11-8da9-e4434bdf6706.png
6d8fe9f3-7b13-eb11-8da9-e4434bdf6706.png

sklearn PCA

使用PCA分析汽车数据

import pandas as pdimport numpy as npfrom sklearn.decomposition import PCAfrom sklearn.preprocessing import StandardScalerfrom sklearn.ensemble import RandomForestClassifierfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import confusion_matrix, accuracy_scorefrom helper_functions import do_pca, scree_plot, plot_components, pca_resultsfrom IPython import displayimport test_code2 as timport matplotlib.pyplot as pltimport seaborn as sns%matplotlib inlinedf = pd.read_csv('./data/cars.csv')df.head()
7b8fe9f3-7b13-eb11-8da9-e4434bdf6706.png
df.describe()
808fe9f3-7b13-eb11-8da9-e4434bdf6706.png

数据集中总共有387两,总共有18个特征。

将数据集缩小到3维

pca, X_pca = do_pca(3, df)pca_results(df, pca)
838fe9f3-7b13-eb11-8da9-e4434bdf6706.png

第一个成分对与以下项目相关的项目具有积极的权重:是油耗gas mileage MPG

第一个成分所解释的可变性为:0.4352

第二部分的最大权重与什么有关:sports cars,

由前三个组成部分解释的总和”:0.7053

计算要保留多少分量才能解释原始数据中至少85%的特征

#Code to find number of components providing more than # 85% of variance explainedfor comp in range(3, df.shape[1]):    pca, X_pca = do_pca(comp, df)    comp_check = pca_results(df, pca)    if comp_check['Explained Variance'].sum() > 0.85:        break        num_comps = comp_check.shape[0]print("Using {} components, we can explain {}% of the variability in the original data.".format(comp_check.shape[0],comp_check['Explained Variance'].sum()))

Using 6 components, we can explain 0.8682000000000001% of the variability in the original data.

888fe9f3-7b13-eb11-8da9-e4434bdf6706.png

PCA用来干嘛?

  • - PCA用于微阵列数据。
  • - PCA用于异常检测。
  • - 时间序列数据的PCA。

参考:[https://zhuanlan.zhihu.com/p/77151308](https://zhuanlan.zhihu.com/p/77151308)

[https://www.zhihu.com/question/30094611/answer/275172932](https://www.zhihu.com/question/30094611/answer/275172932)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值