机器学习算法中的预处理

数据预处理的方法主要包括去除唯一属性、处理缺失值、属性编码、数据标准化正则化、特征选择、主成分分析等。

一、去除唯一属性

可以理解为数据的ID,每个样本都取值不一样且唯一,这对模型是没有意义的,所以可以直接删除,不作为特征输入。

二、处理缺失值

简单理解就是这一维特征值没有,不知道应该咋算。这里又分完全随机缺失、随机缺失和不完全随机缺失。

完全随机缺失,缺失的特征值和目标以及其他特征变量是不相关的。

随机缺失,和目标无关,但是和其他变量相关。

不完全随机缺失,丢失的数据和其他数据存在相关性。

说实际,其实不太明白缺失值的分类。

比如身高和年龄,男性用户的这两个特征容易获得,但是女性用户可能因为比较敏感而获取不到这两个特征。

网上有很多缺失值的补充方法,但是限制也都很多。在深度学习中,其实并不需要补充缺失值,因为一般输入都是原始的,最多就是NLP任务中的未登陆词。否则绝大部分特征都是可以全量计算和补充的,实际上深度学习很多时候不要你提供太多特征工程的东西,这一点和机器学习是不一样的。而在机器学习中,大部分情况下把缺失值统一填充为平均值或者某个极值,也能让模型学习到缺失值的重要性。

三、离散点处理

发现样本中的极值样本,挖掘方法完全是统计特征,比如和均值的最大误差,百分比,聚类,密度等等方法。

四、特征编码-特征向量化

1)分箱,即把特征归为0或者1,也可以看做是离散化

2)one-hot编码-会导致大量稀疏特征,比如分类特征,离散化之后可能是一个成百上千维的向量。

五、数据标准化

标准化是将样本的某个特征缩放到某个区间,因为不同的特征如果使用不同的单位或者量级,会导致无法横向比较或者度量,因此某些算法要求数据特征标准化为相同的度量区间。这样训练过程更容易收敛。

标准化的方法:

1)归一化:最大值为1,最小值为0或者-1,其他值用归一化公式计算为-1到1区间的值。

2)规范化(z-score标准化):把均值规范化为0,方差规范化为1,其他值用z-score公式计算,适用于最大值和最小值未知的场景。

3)正则化:不太懂。。。

六、特征选择-降维

从给定的特征集合中选出相关特征子集的过程称为特征选择,说白了就是特征太多了,想过滤掉没啥用的特征,留下更有用的特征,这样可以减少特征维度,更快的达到收敛。

进行特征选择必须确保不丢失重要特征。

衡量一个特征是否可选的两个指标:

1)发散性,即特征的取值是否有区分度,如果都是一个取值,那这个特征是没有区分度的,模型也学不到任何信息。比如都是0或者都是1.

2)和目标的相关性,即特征和最终要预测的目标的相关性来进行特征选择,这是一个非常复杂的过程,甚至需要引入其他模型来进行相关性计算。

七、预处理之sklearn

preproccessing

sklearn提供了强大的机器学习工具,preproccessing就包含了各种特征变形算法、缺失值处理方法和标准化方法。feature_selection提供了各种特征选择方法。

1)方差选择法

#方差选择法,返回值为特征选择后的数据
#参数threshold为方差的阈值
VarianceThreshold(threshold=3).fit_transform(iris.data)

2)相关系数法

from sklearn.feature_selection import SelectKBest

from scipy.stats import pearsonr

#选择K个最好的特征,返回选择特征后的数据

#第一个参数为计算评估特征是否好的函数,该函数输入特征矩阵和目标向量,输出二元组(评分,P值)的数组,数组第i项为第i个特征的评分和P值。在此定义为计算相关系数

#参数k为选择的特征个数

SelectKBest(lambda X, Y: array(map(lambda x:pearsonr(x, Y), X.T)).T, k=2).fit_transform(iris.data, iris.target)

3)卡方检验

from sklearn.feature_selection import SelectKBest

from sklearn.feature_selection import chi2

#选择K个最好的特征,返回选择特征后的数据 SelectKBest(chi2, k=2).fit_transform(iris.data, iris.target)

4)递归消除特征法

相当于训练多次,每次把上一词训练后权重最低的几个特征去掉,重新训练下一轮。

5)embedding

embedding既是特征选择,也是特征降维,可以去掉相关性相同的特征。embedding的方法又分为带惩罚的L1正则法以及树模型的方法。树形模型选择特征,其实是用树形分类器来做特征选择,因为训练比较快,而且知道容易知道特征权重。

6)特征降维

当特征选择完成后,可以直接训练模型了,但是可能由于特征矩阵过大,导致计算量大,训练时间长的问题,因此降低特征矩阵维度也是必不可少的。常见的降维方法除了以上提到的基于L1惩罚项的模型以外,另外还有主成分分析法(PCA)和线性判别分析(LDA),线性判别分析本身也是一个分类模型。PCA和LDA有很多的相似点,其本质是要将原始的样本映射到维度更低的样本空间中,但是PCA和LDA的映射目标不一样:PCA是为了让映射后的样本具有最大的发散性;而LDA是为了让映射后的样本有最好的分类性能。所以说PCA是一种无监督的降维方法,而LDA是一种有监督的降维方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值