赞
踩
上一节我们了解到在构建神经网络模型,除了掌握如何搭建神经网络架构,了解参数具体含义,规避风险等方法。第一步是要对采用数据集的详细了解,无需接触任何神经网络代码,而是从彻底检查数据开始。这一步是非常关键的一步,往往我们在数据处理的某一个步骤会一定程度上的影响实验结果。本节将讲述常见的数据降维方法PCA,减少数据集的变量数量,同时保留尽可能多的信息。
PCA(Principal Component Analysis) 是一种常见的数据分析方式,常用于高维数据的降维,可用于提取数据的主要特征分量。PCA通常用于降低大型数据集的维数,方法是数据集中的指标数量变少,并且保留原数据集中指标的大部分信息。总而言之:减少数据指标数量,保留尽可能多的信息。
PCA优点在于数据降维,便于提取数据的主要特征,使得数据更容易使用,减少计算开销,去除噪音等等。缺点在于不一定需要,有可能损失有用信息,只针对训练集保留主要信息,可能造成过拟合。适用于结构化数据.PCA不仅能将数据压缩,也使得降维之后的数据特征相互独立。
PCA作为一个传统的机器学习算法,可以通过基础的线代知识推导(协方差矩阵计算,计算特征向量,特征值,正交…)。主要涉及的数学方法不在本节过多描述,有兴趣的读者可以参考花书中的线性代数部分,做推导。PCA的步骤主要分为五步;
此步骤的目的是标准化结构化指标的范围,因为PCA对于初始变量的方差非常敏感,如果初始变量的范围之间存在较大差异,则会造成很大变差,使用标准化可以将数据转换为可比较的尺度。最常用的方法主要有一下两种
X norm = X − X min X max − X min X_{\text {norm }}=\frac{X-X_{\min }}{X_{\max }-X_{\min }} Xnorm =Xmax−XminX−Xmin
此方法仅限于结构化数据,对于类别型特征主要是指男,女,血型等只在有限选项内取值的特征。类别型特征原始输入通常是字符串形式,可以使用序号编码,独热编码,二进制编码等进行预处理。
序号编码:序号编码通常用于处理类别间具有大小关系的数据。例如成绩,可以分为 低、中、高三档,并且存在“高>中>低”的排序关系。序号编码会按照大小关系对 类别型特征赋予一个数值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**的朋友就是关公面前耍大刀了…
此步骤的目的是观察数据标签彼此是否存在相关性,观察指标间是否包含冗余信息。使用协方差矩阵是一个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[
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。