在面试中,经常被问到,
XGBoost模型支持缺失值吗?原理是什么?
逻辑回归模型支持缺失值吗?
随机森林支持吗?
SVM呢?
这么多机器学习模型,支持缺失值吗?(文末有彩蛋)
机器学习模型 | 是否支持缺失值 |
XGBoost | 是 |
LightGBM | 是 |
线性回归 | 否 |
逻辑回归(LR) | 否 |
随机森林(RF) | 否 |
SVM | 否 |
因子分解机(FM) | 否 |
朴实贝叶斯(NB) | 否 |
难道XGBoost和LightGBM是神器吗?
为什么支持缺失值?有什么奥秘?
更详细的请阅读 还有人不懂xgboost的缺失值处理?
链接:https://blog.csdn.net/Alpha_GoGo/article/details/118074144
让我们先了解宝宝(缺失值),是哪里出生的?
缺失值的来源
一、主观原因:人为造成的,比如
1、调查问卷中拒绝填写、或者漏填部分的信息,导致信息缺失;
2、某用户注册了电商平台,但一直未消费,因此其消费的相关信息缺失。
二、客观原因:数据采集设备、存储介质或传输媒体出现故障,信息暂时无法获取,比如
1、存储器损坏等出现了机械故障,导致某段时间数据未能收集;
2、通信中断等故障,导致部分信息未能收集;
3、在医疗数据中,在给定的时间内,不一定能得到所有病人的所有临床检验结果,导致部分信息未能收集。
那么,缺失值的处理方法有哪些?
1、删除
分为行删除、列删除、成对删除(应用较少),一种非常简单易行的方法。
行删除,将存在某特征缺失的样本删除,会造成样本的数量减少; 列删除,将存在缺失的特征删除,会造成特征的数量减少。
在缺失的比例较小,采集的样本量很大的情况下,这种方法是十分合理且有效的。
但如果缺失的比例很大,并且采样的样本量有限时,删除这部分的缺失信息会影响数据的分布,造成数据偏移,会对模型会造成极大的影响,不建议使用。
更深一层次的,对于一些大公司来说,他们拥有数据,但采集数据的过程往往需要耗费巨大人力、财力;对于一些小公司来说,数据往往是通过购买或者合作得到的,甚至通过“一条数据值多少钱”来衡量。因此,如果删除的量级很大时,往往会造成公司的资产损失。
随着大数据的重要性日益凸显,数据逐渐成为企业的核心资产。
2、填充:
(1)人工填写
这个方法适用于数据规模较小、数据缺失的较少,需要专业的业务人员进行填充,并且需要熟悉特征的具体含义、计算逻辑和业务场景。
但是,如果数据规模较大或缺失较多时,人工很难完成,同时人力成本是十分昂贵的,人工填写往往变得不太现实。
(2)特殊值填充
将空值作为一种特殊的属性值来处理,区别于其他的任何属性值。常见的有用-1、-9999或9999来填充,填充前必须了解数据的原始分布。
例如,某特征值的分布为0到10000,用9999来填充缺失值就不可行。
这种方法很可能造成严重的数据偏移,一般情况下不推荐使用。
(3)平均值、众数填充
首先对于非缺失的数据,评估出其分布情况,例如分布趋势等,然后结合实际的业务理解,评估使用平均值、众数填充。具体操作分为一般填充和相似样本填充:
一般填充为计算出所有非缺失值的平均值、众数来填充。
相似样本填充为利用相似特征的样本的值或近似值进行填充。
实际业务中,长期趋势或者季节性的波动的特征,用该方法较多。
(4)预测模型填充
通过建立预测模型来填充缺失值,会将数据分为两份,非缺失的一份作为训练集,缺失的一份作为验证集。基于训练集训练出一个模型,来对验证集进行预测。
常用的模型有回归模型、随机森林等、KNN。
回归模型填充适用于变量之间有较强的相关性,优点是方差估计较好,但其预测的准确性较依赖其他变量,很容易产生误差。
KNN填充是考虑两两样本之间的“距离”,选取最接近的几个观测的平均值或距离加权作为有缺失的样本的填补值。这是一种简单且有效的方法,但未考虑到不同特征之间的相关性。
3、不处理缺失:
文章开头可知,XGBoost和LightGBM是支持缺失值的,因此无需处理缺失值。
同时,贝叶斯网络和人工神经网络也支持缺失值的数据。
实际业务中,某特征出现了缺失,不意味着数据信息的缺失,缺失值也是有价值的!
比如在风控场景中,特征的缺失值往往是有特定业务含义的,例如:
• 该用户近1个月没有进行审贷;
• 该用户是某盾白户(即征信信用状况空白的用户);
• 该用户是多头借贷的老赖,已经被各平台拉黑!
终于到结尾了,大家看懂了没?