主成分分析(PCA)方法步骤以及代码详解

主成分分析(PCA)方法步骤以及代码详解

前言

上一节我们了解到在构建神经网络模型,除了掌握如何搭建神经网络架构,了解参数具体含义,规避风险等方法。第一步是要对采用数据集的详细了解,无需接触任何神经网络代码,而是从彻底检查数据开始。这一步是非常关键的一步,往往我们在数据处理的某一个步骤会一定程度上的影响实验结果。本节将讲述常见的数据降维方法PCA,减少数据集的变量数量,同时保留尽可能多的信息。

1. 什么是主成分分析?

PCA(Principal Component Analysis) 是一种常见的数据分析方式,常用于高维数据的降维,可用于提取数据的主要特征分量。PCA通常用于降低大型数据集的维数,方法是数据集中的指标数量变少,并且保留原数据集中指标的大部分信息。总而言之:减少数据指标数量,保留尽可能多的信息。

1.1 PCA适用范围
  • 在已标注与未标注的数据上都有降维技术
  • 主要关注未标注数据上的降维技术,将技术同样也可以应用于已标注的数据。
1.2 优缺点

PCA优点在于数据降维,便于提取数据的主要特征,使得数据更容易使用,减少计算开销,去除噪音等等。缺点在于不一定需要,有可能损失有用信息,只针对训练集保留主要信息,可能造成过拟合。适用于结构化数据.PCA不仅能将数据压缩,也使得降维之后的数据特征相互独立。

2. PCA的方法步骤

PCA作为一个传统的机器学习算法,可以通过基础的线代知识推导(协方差矩阵计算,计算特征向量,特征值,正交…)。主要涉及的数学方法不在本节过多描述,有兴趣的读者可以参考花书中的线性代数部分,做推导。PCA的步骤主要分为五步;

2.1 标准化连续初始变量的范围(非结构化转成结构化)

​ 此步骤的目的是标准化结构化指标的范围,因为PCA对于初始变量的方差非常敏感,如果初始变量的范围之间存在较大差异,则会造成很大变差,使用标准化可以将数据转换为可比较的尺度。最常用的方法主要有一下两种

  • 线性函数归一化。将原始数据进行线性变换,使结果映射到[0,1]的范围,实现对原始数据的等比缩放。归一化公式如下:

X norm  = X − X min ⁡ X max ⁡ − X min ⁡ X_{\text {norm }}=\frac{X-X_{\min }}{X_{\max }-X_{\min }} Xnorm =XmaxXminXXmin

  • 零均值归一化。它会将原始数据映射到均值为0,标准差为1的分布上。具体来说,假设原始特征的均值μ,标准差为σ,那么归一化公式定义为:
    z = x − μ σ . z=\frac{x-\mu}{\sigma} . z=σxμ.

​ 此方法仅限于结构化数据,对于类别型特征主要是指男,女,血型等只在有限选项内取值的特征。类别型特征原始输入通常是字符串形式,可以使用序号编码,独热编码,二进制编码等进行预处理。

  • 序号编码:序号编码通常用于处理类别间具有大小关系的数据。例如成绩,可以分为 低、中、高三档,并且存在“高>中>低”的排序关系。序号编码会按照大小关系对 类别型特征赋予一个数值ID,例如高表示为3、中表示为2、低表示为1,转换后依 然保留了大小关系。

  • 独热编码:独热编码通常用于处理类别间不具有大小关系的特征。例如血型,一共有4个 取值(A型血、B型血、AB型血、O型血),独热编码会把血型变成一个4维稀疏 向量,A型血表示为(1, 0, 0, 0),B型血表示为(0, 1, 0, 0),AB型表示为(0, 0, 1, 0),O型血表示为(0, 0, 0, 1)。(对于类别值较多的情况注意使用稀疏向量来节省空间,以及配合特征选择来降低维度)

  • 二进制编码:二进制编码主要分为两步,先用序号编码给每个类别赋予一个类别ID,然后 将类别ID对应的二进制编码作为结果。以A、B、AB、O血型为例,表1.1是二进制 编码的过程。A型血的ID为1,二进制表示为001;B型血的ID为2,二进制表示为 010;以此类推可以得到AB型血和O型血的二进制表示。可以看出,二进制编码本 质上是利用二进制对ID进行哈希映射,最终得到0/1特征向量,且维数少于独热编 码,节省了存储空间。

  • Categorical Embedder:通过神经网络编码分类变量,有兴趣的朋友可以参考这篇文章(这个以后可能会单独列出一章讲述,不能占篇幅过大…)

    对于文本类型的非结构化数据,主要使用的是词袋模型**(Bag of Words)TF-IDF,主题模型(Topic Model),词嵌入模型(Word Embedding),这个也不做过多叙述了简单叙述一下即可,对于专攻NLP**的朋友就是关公面前耍大刀了…

2.2 计算协方差矩阵以识别相关性

​ 此步骤的目的是观察数据标签彼此是否存在相关性,观察指标间是否包含冗余信息。使用协方差矩阵是一个p * p对称矩阵(其中p是维数),它具有与所有可能的初始变量对相关联的协方差作为条目。假设三个变量x,y,z三维数据集,协方差矩阵是3 * 3矩阵如下图所示:
[ Cov ⁡ ( x , x ) Cov ⁡ ( x , y ) Cov ⁡ ( x , z ) Cov ⁡ ( y , x ) Cov ⁡ ( y , y ) Cov ⁡ ( y , z ) Cov ⁡ ( z , x ) Cov ⁡ ( z , y ) Cov ⁡ ( z , z ) ] \left[\begin{array}{lll} \operatorname{Cov}(x, x) & \operatorname{Cov}(x, y) & \operatorname{Cov}(x, z) \\ \operatorname{Cov}(y, x) & \operatorname{Cov}(y, y) & \operatorname{Cov}(y, z) \\ \operatorname{Cov}(z, x) & \operatorname{Cov}(z, y) & \operatorname{Cov}(z, z) \end{array}\right] Cov(x,x)Cov(y,x)Cov(z,x)Cov(x,y)Cov(y,y)Cov(z,y)Cov(x,z)Cov(y,z)Cov(z,z)

  • 32
    点赞
  • 300
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值