怎么用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)

相关推荐

  • slickedit怎么设置一直着色(slickedit如何取消复制)

    技术先进SlickEdit编辑器如何使用这期内容当中小编将会给大家带来有关先进SlickEdit编辑器如何使用,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。SlickEdit 作为一个

    攻略 2021年12月24日
  • 删除MS JVM的几种途径分别是什么

    技术删除MS JVM的几种途径分别是什么今天就跟大家聊聊有关删除MS JVM的几种途径分别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。这里向大家描述一下如

    攻略 2021年10月23日
  • 39三分之一是多少码,运动鞋码子40三分之一是什么意思

    技术39三分之一是多少码,运动鞋码子40三分之一是什么意思比40码大一点39三分之一是多少码。 脚长是厘米(CM)计算,鞋码用欧码(39码、40码等)计算。 脚长换成欧码:量好你的脚长乘以两倍减去十厘米(脚长X2-10=

    生活 2021年10月21日
  • 数据库读写分离的坑有哪些

    技术数据库读写分离的坑有哪些这篇文章主要讲解了“数据库读写分离的坑有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“数据库读写分离的坑有哪些”吧!前言事情是这样的,刚入

    攻略 2021年10月22日
  • docx文件,Docx文件怎么打开呢

    技术docx文件,Docx文件怎么打开呢方法一docx文件、安装补丁法如果你的电脑中只安装了Word2003,而有一个文档却是2007或以上的那么要打开的办法你可以到微软件的网站下载补丁,或点击Word2007兼容补丁下

    生活 2021年10月31日
  • mysqld got signal举例分析

    技术mysqld got signal举例分析这篇文章主要介绍“mysqld got signal举例分析”,在日常操作中,相信很多人在mysqld got signal举例分析问题上存在疑惑,小编查阅了各式资料,整理出

    攻略 2021年11月19日