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

相关推荐

  • JavaScript实现的人脸检测方法是怎样的

    技术JavaScript实现的人脸检测方法是怎样的这篇文章给大家介绍JavaScript实现的人脸检测方法是怎样的,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。我一直对视频和图片中的人脸标记、检测和

    攻略 2021年11月17日
  • 如何理解Java内存模型

    技术如何理解Java内存模型本篇内容主要讲解“如何理解Java内存模型”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何理解Java内存模型”吧!(一)概述很多人会把Java

    攻略 2021年10月22日
  • Java远程过程调用方法是什么

    技术Java远程过程调用方法是什么本篇内容介绍了“Java远程过程调用方法是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有

    攻略 2021年12月8日
  • androidstudio开发计时器(androidstudio关闭计时器)

    技术android studio如何绑定服务和线程实现计时器这篇文章主要介绍了android studio如何绑定服务和线程实现计时器,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让

    攻略 2021年12月20日
  • JavaScript怎么实现重置功能

    技术JavaScript怎么实现重置功能这篇文章主要介绍“JavaScript怎么实现重置功能”,在日常操作中,相信很多人在JavaScript怎么实现重置功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法

    攻略 2021年11月9日
  • 交管网12123,交管12123到底是什么东西

    技术交管网12123,交管12123到底是什么东西交管12123是一款手机APP,该平台开通后,群众实名注册开通账号后,可享受互联网交通安全综合服务管理平台提供的驾考和车检预约交管网12123、办牌办证、违法处理和罚款缴

    生活 2021年10月30日