推荐系统 --对数据不平衡的解决

集成下采样/欠采样

EasyEnsemble

采用不放回的数据抽取方式抽取多数类别样本数据,然后将抽取出来的数据和少数类别数据组合训练一个模型;多次进行这样的操作,从而构建多个模型,然后使用多个模型共同决策/预测

BalanceCascade

利用Boosting这种增量思想来训练模型;先通过下采样产生训练集,然后使用Adaboost算法训练一个分类器;然后使用改分类器多对所有的大众样本数据进行预测,并将预测正确的样本从大众样本数据进行预测,并将预测正确的样本从大众样本数据中删除,重复迭代上述俩个操作,直到大众样本数据

量等于小众样本数据量

ENN

对于多数类别样本数据而言如果这个样本的大部分k近邻样本都和自身类别不一样,那我们就将其删除,然后使用删除后的数据训练模型

RENN 对于多数类别样本数据而言,如果这个样本的大部分k近邻样本都和自身类别不一样,那我们就将其删除,重复性的进行上述的删除操作,直到数据集无法在被删除后,使用此时的数据集训练模型

过采样/上采样

和欠采样采用同样的原理,通过抽样来增加少数 样本的数目,从而达到数据平衡的目的。一种简单的方式就是通过有放回抽样,不断的从少数类别样本数据中抽取样本,然后使用抽取样本+原始数据组成训练数据集来训练模型;不过该方式比较容易导致过拟合,一般抽样样本不要超过50%

采用数据合成的方式生成更多的样本,该方式在小数据集场景下具有比较成功的案例 常见栓发是smote算法 该算法利用小众样本在特征空间的相似性来生成新样本

对于正负样本极不平衡的情况下,其实可以换一种思路/角度来看待这个问题:可以将其看成一分类或者异常检测问题,在这类算法应用中主要就是对于其中一个类别进行建模,然后对所有不属于这个类别特征的数据就认为是异常数据,

缺失值的填充

填充缺省值内容是一个比较重要的过程,也是我们常用的一种缺省值解决方案,一般采用下面几种方式进行数据的填充:

以业务知识或经验推测填充缺省值

以同一字段指标的计算结果(均值,中位数,众数等)填充缺省值

以不同字段指标的计算结果来推测性的填充缺省值

在scikit中主要通过impiter 来进行填充

猜你喜欢

转载自blog.csdn.net/weixin_33724570/article/details/86846248