怎么用python提升数据不平衡模型的性能

技术怎么用python提升数据不平衡模型的性能这篇文章主要讲解了“怎么用python提升数据不平衡模型的性能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用pytho

本文主要讲解“如何使用python提高不平衡数据模型的性能”。本文的解释简单明了,易学易懂。现在,请跟随边肖的思路,学习学习“如何利用python提高不平衡数据模型的性能”!

数据集

训练数据中有三个标签,分别标记为[1,2,3],这意味着问题是一个多分类问题。训练数据集有17个特征和38829个独立数据点。在测试数据中,有16个未标记的特征和16641个数据点。训练数据集非常不平衡,大部分数据在类别1 (95%),而类别2和类别3的数据分别为3.0%和0.87%,如下图所示。

怎么用python提升数据不平衡模型的性能

算法

经过初步观察,我们决定采用随机森林(RF)算法,因为它优于支持向量机、Xgboost和LightGBM算法。在这个项目中选择射频还有其他几个原因:

森林对过拟合有很强的鲁棒性;

参数化还是很直观的;

在这个项目中,有许多将随机森林算法应用于高度不平衡数据集的成功用例。

个人以往算法实现经验;

要查找* * *参数,请使用scikit-sklearn实现的GridSearchCV对指定的参数值执行网格搜索。更多细节可以在我的Github上找到。

为了处理数据不平衡,使用了以下三种技术

A.使用集成交叉验证(CV):

在这个项目中,交叉验证用于验证模型的健壮性。整个数据集分为五个子集。在每个交叉验证中,四个子集用于训练,其余子集用于验证模型,模型还预测测试数据。在交叉验证结束时,将获得五个测试预测概率。* * *,平均所有类别的概率。模型的训练性能稳定,每次交叉验证都有稳定的召回率和f1评分。这项技术也帮助我在Kaggle比赛中取得了不错的成绩(前1%)。以下代码片段显示了集成交叉验证的实现:

怎么用python提升数据不平衡模型的性能

B.设置类别权重/重要性:

成本敏感学习是使随机森林更适合从非常不平衡的数据中学习的方法之一。随机森林倾向于支持大多数类别。因此,对少数群体的错误分类施加昂贵的惩罚可能是有益的。因为这种技术可以提高模型的性能,所以我给少数群体分配了较高的权重(即较高的误分类成本)。然后,将类别权重合并到随机森林算法中。我根据类别1中数据集的数量与其他数据集的数量之比来确定类别权重。例如,类别1和类别3的数据集数量之间的比率约为110,而类别1和类别2的比率约为26。现在我稍微修改一下数量来提高模型的性能。下面的代码片段展示了不同类权重的实现:

怎么用python提升数据不平衡模型的性能

C.过大预测标签而不是过小预测(Over-Predict a Label than Under-Predict):

这项技术是可选的。实践表明,这种方法对提高少数类别的性能非常有效。简而言之,如果模型被错误地归类为3类,这种技术可以在有限的程度上惩罚模型,但对2类和1类的惩罚稍差。为了实现这个方法,我改变了每个类别的概率阈值,将类别3、类别2、类别1的概率按递增顺序设置(即P3=0.25,P2=0.35,P1=0.50),迫使模型过度预测类别。这个算法的详细实现可以在Github上找到。

最终结果

以下结果显示了上述三种技术如何帮助提高模型性能:

1.使用集成交叉验证的结果:

怎么用python提升数据不平衡模型的性能

2.使用集成交叉验证+类别权重的结果:

怎么用python提升数据不平衡模型的性能

3.使用集成交叉验证+类别权重+过大预测标签的结果:

怎么用python提升数据不平衡模型的性能

感谢阅读。以上就是“如何用python提高数据不平衡模型的性能”的内容。学习完这篇文章,相信你对如何使用python提高数据不平衡模型的性能有了更深的理解,具体用法还需要实践验证。在这里,边肖将为您推送更多关于知识点的文章,敬请关注!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/128598.html

(0)

相关推荐

  • Vue3知识地图之Vue生命周期函数与常用模板语法

    技术Vue3知识地图之Vue生命周期函数与常用模板语法本篇内容主要讲解“Vue3知识地图之Vue生命周期函数与常用模板语法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Vue

    攻略 2021年10月22日
  • new的反义词,“new”的反义词是什么

    技术new的反义词,“new”的反义词是什么new的反义词是oldnew的反义词;old;英 [əʊld] 美 [oʊld] adj.老的;古老的;以前的;(用于指称被替代的东西)原来的n.古时比较级: older

    生活 2021年10月27日
  • 如何解析Burpsuite中的抓包配置

    技术如何解析Burpsuite中的抓包配置本篇文章给大家分享的是有关如何解析Burpsuite中的抓包配置,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、

    攻略 2021年12月9日
  • java semaphore 是什么(javasemaphore信号怎么样)

    技术如何解析Java中的Semaphore信号量本篇文章为大家展示了如何解析Java中的Semaphore信号量,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Semaphore

    攻略 2021年12月20日
  • 金柝,一腔热血换来失望的诗句

    技术金柝,一腔热血换来失望的诗句1、朝来入庭树,孤客最先闻金柝。——刘禹锡《秋风引》2、过尽千帆皆不是,斜晖脉脉水悠悠,肠断白频洲。——温庭筠《梦江南》3、渐行渐远渐无书,自此山水不相逢。——欧阳修《木兰花》
    4、无人收

    生活 2021年10月27日
  • 考研复试什么时候,研究生面试时间多长

    技术考研复试什么时候,研究生面试时间多长我是研路有我,我来回答你的问题考研复试什么时候。研究生面试一般在15分钟左右!我作为一名曾经的考研生,也是经历了面试。我当时面试的时候,大概看了一下时间,每位同学的面试时间平均在1

    生活 2021年10月25日