数据清洗和特征选择
数据清洗和特征选择
数据清洗
清洗过程
1、数据预处理:
选择数据处理工具: 数据库、Python相应的包;
查看数据的元数据及数据特征;
2、清理异常样本数据:
处理格式或者内容错误的数据;
处理逻辑错误数据:数据去重,去除/替换不合理的值,去除/重构不可靠的字段值;
处理不需要的数据:在进行该过程时,要注意备份原始数据;
处理关联性验证错误的数据:常应用于多数据源合并的过程中。
3、采样:
数据不均衡处理:上采样、下采样、SMOTE算法
样本的权重问题
数据不平衡
在实际应用中,数据的分布往往是不均匀的,会出现"长尾现象",即绝大多数的数据在一个范围/属于一个类别,而在另外一个范围或者类别中,只有很少一部分数据。此时直接采用机器学习效果不会很好,因此需要对数据进行转换操作。
解决方案01
设置损失函数的权重,使得少数类别数据判断错误的损失大于多数类别数据判断错误的损失,即:当我们的少数类别数据预测错误的时候,会产生一个比较大的损失值,从而导致模型参数往让少数类别数据预测准确的方向偏。
可通过设置sklearn中的class_weight参数来设置权重。
解决方案02
下采样/欠采样(under sampling):从多数类中随机抽取样本从而减少多数类别样本数据,使数据达到平衡的方式。
集成下采样/欠采样:采用普通的下采样方式会导致信息丢失,所以一般采用集成学习和下采样结合的方式来解决问题,主要有以下两种方式:
EasyEnsemble**:**采用不放回的数据抽取方式抽取多数类别样本数据,然后将抽取出来的数据和少数类别数据组合训练一个模型;进行多次操作,构建多个模型,然后使用多个模型共同决策/预测。
**BalanceCascade:**利用Boosting增量思想来训练模型;先通过下采样产生训练数据,然后使用Adaboost算法训练一个分类器,使用训练好的分类器对所有的样本数据进行预测,并将预测正确的样本从大众样本中删除;重复迭代上述两操作,直到大众样本数据量等于小众样本数据量。
解决方案03
Edited Nearest Neighbor(ENN):对于多数类别样本数据而言,如果这个样本的大部分k近邻样本都和自身类别不一样,那么就将其删除,然后使用删除后的数据进行模型训练。
Repeated Edited Nearest Neighbor(RENN):重复上述ENN的步骤,直到数据集无法再被删除后,使用此时的数据集进行模型训练。
解决方案04
Tomek Link Removal:如果两个不同的类别,它们的最近邻都是对方,即A的最近邻是B,B的最近邻是A,那么A和B就是Tomek Link。将所有Tomek Link中多数类别的样本删除,然后使用删除后的样本进行模型训练。
解决方案05
过采样/上采样(Over Sampling):和欠采样采用同样的原理,通过抽样来增加少数样本的数目,从而达到数据平衡的目的。
一种简单的方式就是通过有放回抽样,不断的从少数类别样本数据中抽取样本,然后使用抽取样本+原始数据组成训练数据来训练模型;该方式比较容易导致过拟合,一般抽样样本不要超过50%;
由于在上采样过程中,是进行随机有放回抽样,因此在最终模型中,数据会存在重复性,通过加入一定的随机性进行避免,即:在抽取数据后,对数据的各个维度可以进行小范围变动
eg:(1, 2, 3)->(1.01, 1.99, 3.02)
解决方案06
采用数据合成的方式生成更多的样本,该方式在小数据集场景下具有比较成功的案例。常见的SMOTE算法,利用小众样本在特征空间的相似性来生成新样本。
传送门:SMOTE算法Python实现
解决方案07
对于正负样本极不平衡的情况下,其实可以换一种角度来看待这个问题:
可以将其看成一分类(One Class Learning)或者异常检测(Novelty Detection)问题,在这类算法应用中主要就是对于其中一个类别进行建模,然后对所有不属于这个类别特征的数据就认为是异常数据,经典算法包括:One Class SVM、IsolationForest等。
1、缺失值处理
根据缺失率和重要性,分为去除字段、填充缺失值、重新取数据。
其中,填充缺失值的方法有:
a. 以业务知识或经验推测填充。
b.平均值、中值、分位数、众数、随机值、插值等来填充。
c. 建立一个模型来“预测”缺失的数据。
d. 引入虚拟变量以映射到高维空间。
2、 格式与内容处理
格式与内容的问题是五花八门的,下图仅部分例子:
格式和内容处理是非常考究耐心和细心。
3. 去除重复的数据。
4. 噪音数据的处理
噪音数据过多,会导致模型泛化能力差。
但适当的噪音数据,有助于防止过拟合。
特征转换
特征转换主要指将原始数据中的字段数据进行转换操作,从而得到适合进行算法模型构建的输入数据(数值型数据),在这个过程中主要包括但不限于以下几种数据的处理:
文本数据转换为数值型数据
缺失值填充
定性特征属性亚编码
定量特征属性二值化
特征标准化与归一化
特征转换
特征转换主要指将原始数据中的字段数据进行转换操作,从而得到适合进行算法模型构建的输入数据(数值型数据),在这个过程中主要包括但不限于以下几种数据的处理:
文本数据转换为数值型数据
缺失值填充
定性特征属性亚编码
定量特征属性二值化
特征标准化与归一化
特征选择
当做完特征转换后,对于存在的多种特征属性,可能会存在过多的特征属性导致模型构建效率降低,同时模型的效果可能会变的不好,那么此时就需要从这些特征属性中选择出影响最大的特征属性作为最后构建模型的特征属性列表。
在选择模型的过程中,通常从两个方面来选择特征:
特征是否发散:若一个特征不发散,比如方差接近于0,即此时的特征对于样本的区分没什么作用;
特征与目标的相关性:如果特征与目标的相关性比较高,应当优先选择
特征选择方法主要有以下三种:
Filter:过滤法,按照发散性或者相关性对各个特征进行评分,设定阈值进行特征选择;常用的方法包括方差选择法,相关系数法,卡方检验,互信息法;
Wrapper:包装法,根据目标函数(通常是预测效果评分),每次选择若干特征或者排除若干特征;常用方法主要是递归特征消除法;
Embedded:嵌入法,先使用某些机器学习的算法和模型进行训练,得到各个特征的权重系数,根据系数从大到小选择特征;常用方法主要是基于惩罚项的特征选择法。
过滤法Filter
方差选择法:先计算各个特征属性的方差值,然后根据阈值,获取方差大于阈值的特征
相关系数法:先计算各个特征属性对于目标值的相关系数以及阈值K,然后获取K个相关系数最大的特征属性
需要根据目标属性y的类别选择不同的方式
卡方检验:检查定性自变量对定性因变量的相关性
包装法Wrapper
递归特征消除法:使用一个基模型来进行多轮训练,每轮训练后,消除若干权值系数的特征,在基于新的特征集进行下一轮训练。
嵌入法Embedded
基于惩罚项的特征选择法:在使用惩罚项的及模型,除了可以筛选出特征外,同时还可以进行降维操作。
基于树模型的特征选择法:树模型中GBDT在构建的过程会对特征属性进行权重的给定,所以GBDT也可以应用在基模型中进行特征选择。
降维
当特征选择完成后,可以直接可以进行训练模型了,但是可能由于特征矩阵过大,导致计算量比较大,训练时间长的问题,因此降低特征矩阵维度也是必不可少的。
常见的降维方法除了基于L1的惩罚模型外,还有主成分析(PCA)和线性判别分析法(LDA),这两种方法的本质都是将原始数据映射到维度更低的样本空间中;但是采用的方式不同,PCA是为了让映射后的样本具有更大的发散性,LDA是为了让映射后的样本有最好的分类性能。
除了使用PCA和LDA降维外,还可以使用主题模型来达到降维的效果
在实际的机器学习项目中,降维一般而言是必须进行的,因为数据中存在以下几个方面的问题:
数据的多重共线性:特征属性之间存在着相互关联关系,多重共线性会导致解的空间不稳定,从而导致模型的泛华能力弱;
高维空间样本具有稀疏性,导致模型比较难找到数据特征;
过多的变量会妨碍模型查找规律;
仅仅考虑单个变量对于目标属性的影响可能忽略变量之间的潜在关系
通过降维的目的:
减少特征属性的个数;
确保特征属性之间是相互独立的。
主成分分析
主成分分析,PCA:将高维的特征向量合并成为低纬度的特征属性,是一种无监督的降维方法。
PCA原理
PCA(Principal Component Analysis)是常用的线性降维方法,是一种无监督的降维算法。算法目标是通过某种线性投影,将高维的数据映射到低维空间中表示,并且期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留较多的原数据点的特性。
通俗来讲,如果将所有点都映射到一起,那么维度一定会下降,但是同时会丢失几乎所有的信息,而如果在映射之后数据还具有较大的方差,即数据点还是较分散,那样的话就可以保存更多的信息。从而我们可以看到PCA是一种丢失原始数据信息最少的无监督线性降维方式。
在PCA降维中,数据从原来的坐标系转换为新的坐标系,新坐标系的选择有数据本身的特征决定:
第一个坐标轴选择原始数据中方差最大的方向;
第二个坐标轴选择和第一个坐标轴垂直或者正交的方向;
第三个坐标轴选择和第一个、第二个坐标轴都垂直或者正交的方向。
一直重复上述过程,直到新坐标系的维度和原始坐标系维度数目一致时结束计算。
PCA执行过程
输入:
样本集X={x1,x2,…,xn},每个样本有m维特征,X是一个m行n列的矩阵
步骤:
数据中心化:对X中的每一行(即一个特征属性)进行零均值化,即减去这一行的均值;
求出数据中心化后矩阵X的协方差矩阵(即特征与特征之间的协方差构成的矩阵);
求解协方差矩阵的特征值和特征向量;
1.协方差矩阵的计算及意义
2.在求解时,可以通过SVD对矩形进行分解来简化求解过程
将特征向量按照特征值从大到小按列进行排列,获取最前面的k列数据形成矩阵W;
利用矩阵W和样本集X进行矩阵的乘法得到降低到k维的最终数据矩阵。
线性判断分析
LDA,Linear Discriminate Analysis,LDA是一种基于分类模型进行特征属性合并的操作,是一种有监督的降维方法。
LDA的原理:将带标签的数据点,通过投影的方法,投影到维度更低的空间中,使得投影后的点,会形成按类别区分,一簇一簇的情况,相同类别的点,将会在投影后的空间中更接近。
用一句话概括:投影后类内方差最小,类间方差最大。
PCA&LDA
相同点:
两者均可以对数据完成降维操作;
两者在降维的时候均使用矩阵分解的思想;
两者都假设数据符合高斯分布。
不同点:
LDA为监督算法,而PCA为无监督算法;
LDA降维最多降到类别数目的k-1维,而PCA则没有限制;
LDA除了可以降维外,还可以应用于分类;
LDA选择的是分类最好的投影,而PCA选择样本点投影具有最大方差的方向
二、特征提取与特征选择的区别
特征提取(Feature Extraction):
特征选择(Feature Selection):
对比图:
三、特征提取基本方法
1.主成分分析(PCA)
将n维特征映射到k维上(k<n),这k维是全新的正交特征。这k维特征称为主成分,是重新构造出来的k维特征
2. 线性判别分析法(LDA)
将高维的数据样本投影到最佳判别的矢量空间,保证样本数据在该空间中有最佳的可分离性。
显然上图投影到右边的矢量空间比左边的更好。
3. 多维尺度分析法(MDS)
根据样本之间的距离关系或不相似度关系在低维空间里生成对样本的一种表示。
4.独立成分分析法( ICA )
利用统计原理把数据或信号分离成统计独立的非高斯的信号源的线性组合。
4. 核主成分分析法(如核方法KPCA,KDA)
先对样本进行非线性变换,再在变换空间进行主成分分析来实现在原空间的非线性主成分分析。
6.基于流型学习的方法
通过局部距离来定义非线性距离度量,在样本分布较密集的情况下可以实现各种复杂的非线性距离度量。
四、特征选择
特征选择的流程图:
特征选择方法:
5. 按搜索策略分类
2. 按评价准则分类。
数据处理的本质就是为了尽可能的找到“充分且必要”的特征,因此往往花费80%以上的时间。