机器学习 数据缺失_机器学习面试:缺失值处理/采样

本文讨论了机器学习中处理缺失值的方法,包括直接填充、算法填充以及离散化策略。在数据不平衡问题方面,介绍了下采样、上采样、权重调整和合成方法。同时,指出并非所有情况都需要对原始数据进行采样平衡,因为这可能影响模型的泛化能力。
摘要由CSDN通过智能技术生成
  7581d672d604ceaef4a826c23f8eed8b.png

平安春运

买票回家

2021.01

点击蓝字

关注我们

缺失值处理

01

是不是一定需要对缺失值处理?

当缺失值占比在可接受范围以内的时候才需要进行填充,如果缺失值在5%以下的时候,可以考虑删除有缺失值的样本;如果缺失值大于50%可以考虑删除该列,即删掉这个特征。

02

常用缺失值填充方法有哪些?

02

直接填充(缺失值较少)

均值

中位数

众数

分位数

就近补齐

随机值

02

算法填充(缺失值较少)

常用随机森林:相对较为准确,但是有一个根本缺陷,如果其他变量和缺失变量无关,则预测的结果无意义,但如果强相关,这个缺失变量又可以直接删掉了。

KNN填充:利用knn计算临近的k个数据,然后填充他们的均值

对于连续取值的变量,可以利用线性回归来拟合估计其取值。对于二值变量,可以利用logistic regression来估计其取值

02

其他

删除样本(缺失值较少)

删除特征(缺失值较多)

03

如何对缺失特征离散化?

离散(分类)特征缺失值适中:把NaN作为一个新类别

连续特征缺失值适中:分箱离散化,将NaN作为一个箱

04

random方法?

在缺失量特别少(通常认为小于1%)的时候,可以随机生成

05

5.在不知道数据分布的前提下,补全缺失值用平均数还是用中位数?

平均值容易受异常值影响,中位数不能利用到所有数据的信息。平均数和中位数填补各有优势,使用过程中,可以都试试。

06

总结

实际机器学习工程中,直接删除、众数填充和缺失特征离散化方法用的最多,因为这种方法

快速,对原始数据的前提假设最少,也不会影响到非缺失列。

样本不平衡处理

01

为什么要对数据进行采样平衡?

数据不平衡问题主要存在于有监督学习任务中。当遇到不平衡数据时,以分类准确率为目标的分类算法会过多地关注多数类,从而使得少数类的分类性能下降。绝大多数常见的机器学习算法对于不平衡数据集都不能很好地工作。

02

2.数据不平衡例子?

信用卡欺诈检测、网络攻击识别、癌症检测等等

03

数据不平衡的方法?

03

采样

a.下采样:通过减少多数类的样本来平衡数据集,当数据量足够时就该使用此方法。通过保存所有少数类样本,并在多数类别中随机选择与少数类别样本相等数量的样本

b.上采样:当数据量不足时主要使用上采样,它尝试通过增加少数类样本的数量来平衡数据集,而不是去除多数类别样本的数量。通过使用重复、自举或合成少数类等方法来生成新的少数类样本

03

设置正负样本的权重项等。惩罚多样本类别,加权少样本类别。

03

合成方法:生成少数类样本。如ADASYN采样方法和SMOTE采样方法。

03

一分类(One Class Learning)或异常检测(Novelty Detection)法

a.当正负样本比例严重失衡时可以用。sklearn之中有该算法,叫OneClassSVM,OneClassSVM两个功能:异常值检测、解决极度不平衡数据。

b.OneClassSVM是无监督学习法:他的训练数据只有一类,且不用标记标签类别,OneClassSVM通过训练一个超球面将样本中的正例圈住,预测就是用这个超球面做决策,在球内的样本就认为是正样本,球外的就是负样本,由于核函数计算比较耗时,在海量数据的场景用的并不多;

c.Sklearn调用:

from sklearn import svm

clf = svm.OneClassSVM(nu=0.1, kernel="rbf", gamma=0.1)

clf.fit(X_train)

04

是否一定需要对原始数据进行采样平衡?

否,因为:

采样前后会对原始数据的分布进行改变,可能导致泛化能力大大下降

采样有一定概率会造成过拟合,当原始数据过少而采样量又很大当时候,造成大量数据被重复,造成模型训练的结果有一定的过拟合

06

有哪些常见的采样方法?

06

随机采样

无放回的简单抽样:每条样本被采到的概率相等且都为1/N

有放回的简单抽样:每条样本可能多次被选中

上采样:通过增加少数类的样本来平衡数据集

下采样:通过减少多数类的样本来平衡数据集

平衡采样:考虑正负样本比

分层采样:通过某一些特征对数据进行切分,按照切分后的占比分别进行采样

整体采样:先将数据集T中的数据分组成G个互斥的簇,然后再从G个簇中简单随机采样s个簇作为样本。

06

合成采样

SMOTE

ADASYN

07

能否避免采样?

可以通过修改模型训练中正负样本的权重,比如sklearn决策树中的class_weight参数

08

你平时怎么用采样方法?

在样本数据量较大,且正负样本比例相差并不悬殊(两个数量级以内)的情况下,可以考虑使用采样或加权的方法解决;在正负样本数据都非常之小时,可以考虑用数据合成的方法解决;在正负样本数据比例相差悬殊的情况下,可以考虑用一分类的方法解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值