可视化 PCA 变换

Python 中的无监督学习

Benjamin Wilson

Director of Research at lateral.io

降维

  • 存储与计算更高效
  • 去除信息量低的"噪声"特征
  • …这些特征会影响分类、回归等预测任务
Python 中的无监督学习

主成分分析

  • PCA = 主成分分析(Principal Component Analysis)
  • 基础的降维技术
  • 第一步"去相关"(本节)
  • 第二步降维(后续)
Python 中的无监督学习

PCA 使数据与坐标轴对齐

  • 旋转样本使其与坐标轴对齐
  • 平移样本使均值为 0
  • 不丢失信息

带旋转坐标轴的葡萄酒数据散点图

Python 中的无监督学习

PCA 遵循 fit/transform 模式

  • PCA 是一个 scikit-learn 组件,如 KMeansStandardScaler
  • fit() 从数据学习变换
  • transform() 应用已学得的变换
  • transform() 也可用于新数据
Python 中的无监督学习

使用 scikit-learn 的 PCA

  • samples = 两个特征的数组(total_phenolsod280
[[ 2.8   3.92]
 ...
 [ 2.05  1.6 ]]
from sklearn.decomposition import PCA

model = PCA() model.fit(samples)
PCA()
transformed = model.transform(samples)
Python 中的无监督学习

PCA 特征

  • 变换后的行对应样本
  • 列是"PCA 特征"
  • 行给出该样本的 PCA 特征值
print(transformed)
[[  1.32771994e+00   4.51396070e-01]
 [  8.32496068e-01   2.33099664e-01]
 ...
 [ -9.33526935e-01  -4.60559297e-01]]
Python 中的无监督学习

PCA 特征不相关

  • 数据集特征常相关,如 total_phenolsod280
  • PCA 使数据与坐标轴对齐
  • 得到的 PCA 特征线性不相关("去相关")

带旋转坐标轴的葡萄酒数据散点图

Python 中的无监督学习

皮尔逊相关系数

  • 衡量特征间的线性相关性
  • 取值在 -1 到 1 之间
  • 0 表示无线性相关

相关系数 0.7、0、-0.7 的三幅散点图

Python 中的无监督学习

主成分

  • "主成分"= 方差最大的方向
  • PCA 将主成分与坐标轴对齐

葡萄酒数据散点图,2 个红箭头显示主成分方向(旋转坐标轴)

Python 中的无监督学习

主成分

  • 可在 PCA 对象的 components_ 属性中获取
  • 每一行定义相对均值的位移
print(model.components_)
[[ 0.64116665  0.76740167]
 [-0.76740167  0.64116665]]
Python 中的无监督学习

Passons à la pratique !

Python 中的无监督学习

Preparing Video For Download...