热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

正反例极不平衡的数据集的采样

正负样本不均匀如何处理?转自http:www.alidata.orgarchives205------------------------------------------

正负样本不均匀如何处理?

转自http://www.alidata.org/archives/205

-----------------------------------------------------------------------

今天在网上看到有人讨论这个问题,原问题描述如下: 

    类不均衡问题是“分类型数据挖掘”(我就直接按照目标变量来定义概念了哈)实际项目中很常见的一类问题,毕竟生活中像UCI上那种正负类样本点数据基本差不-多的情况是很少见的,至少在我所做过的两个项目中,所遇到的数据情况都是应该属于类极不均衡问题(正负类样本点的比例大致在1:100左右,在这里我将少类样本-定义为正类点,多类样本定义为负类点。由于项目原因,就不介绍具体背景了,反正无非就是在客户中发现有具有潜在风险的客户之类的)。
    在有些算法中(主要是基于信息熵或GINI系数进行分类的算法),这种类极不均衡问题会带来算法失效的结果,例如:在使用DT算法进行分类的时候,类不均衡问题-会使得树无法继续生长,当然,通过调整阈值或设定树的最小层数也可以强制使得树继续生长,但对于大量的数据而言,这种做法多少有些拍脑袋的嫌疑。
    在有些算法中(主要是基于样本点距分划面距离的算法),类不均衡问题会导致分划面的位置过于偏向于正类点的位置,例如:SVM方法中,以线性SVM为例,如果对-于正负类样本点采用同样的惩罚系数的话,可能最终结果是分化面基本上把几乎所有的正类点和负类点都划在分划面的一侧,使得最终的结果都为负类点。
    在这些算法中,对于不均衡类问题都无法得到很好的解决。其实从一种比较通俗的角度来想,数据挖掘无非就是定义一个“规则”,这个规则或者是一堆的IF…ELSE-,或者就直接是一个简单或复杂的函数式,或是两者的结合。数据挖掘的训练过程就是寻找一个在全局或局部最优的“规则”来刻画某种想要的“模式(PATTERN)-”(在本案例中就是刻画潜在的风险客户的特征)。当类不均衡问题出现的时候,模型在训练过程中,最终找到的那种刻画方式往往会倾向于最显著的那种“规则”,当负-类点的的数量多到一定程度的时候,便把正类点的那种“模式”给淹没掉了。所以我们必须采用抽样的方式来使得正类点的“模式”再显现出来,所以,一种解决方式便是-通过分层抽样,来使得正负类样本点的数量比例维持在一个可接受的范围内,(听过一种说法是维持在1:10左右,但不知道这个比例也是拍脑袋得来的还是怎么证明得-到的)。

    我的做法是这样的——如果正例(有欺诈)与反例(无欺诈)的原始比例是1:1000——因为决策树既能分辨正例又能分辨反例,如果反例的某些个分支既大又精确,那就把反例的那些个分支统统砍掉,砍完了(即把欺诈概率极小的人排掉)再用剩下的数据(此时再无抽骗的风险了)做一个决策树。


推荐阅读
  • 【转】强大的矩阵奇异值分解(SVD)及其应用
    在工程实践中,经常要对大矩阵进行计算,除了使用分布式处理方法以外,就是通过理论方法,对矩阵降维。一下文章,我在 ... [详细]
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 本文详细探讨了在Web开发中常见的UTF-8编码问题及其解决方案,包括HTML页面、PHP脚本、MySQL数据库以及JavaScript和Flash应用中的乱码问题。 ... [详细]
  • 使用TabActivity实现Android顶部选项卡功能
    本文介绍如何通过继承TabActivity来创建Android应用中的顶部选项卡。通过简单的步骤,您可以轻松地添加多个选项卡,并实现基本的界面切换功能。 ... [详细]
  • POJ2263是一个经典的图论问题,涉及寻找从起点到终点的最大载重路径。本文将详细介绍该问题的背景、解题思路及代码实现。 ... [详细]
  • 本文详细探讨了Spring框架中遇到的NoSuchBeanDefinitionException异常,具体涉及com.thinkplatform.dao.UserLogDao Bean未定义的问题,并提供了相应的解决方案。 ... [详细]
  • K-均值聚类算法是一种经典的划分方法,广泛应用于数据挖掘和机器学习领域。该算法通过将数据集划分为多个互斥的簇,确保每个对象仅归属于一个簇。然而,这种严格的归属要求忽略了潜在的离群点和数据的复杂性,限制了其在某些场景下的适用性。为了提高算法的鲁棒性和灵活性,研究者们提出了多种改进方法,如引入模糊隶属度和基于密度的聚类技术。这些改进不仅提升了算法的性能,还扩展了其在实际问题中的应用范围。 ... [详细]
  • 探索聚类分析中的K-Means与DBSCAN算法及其应用
    聚类分析是一种用于解决样本或特征分类问题的统计分析方法,也是数据挖掘领域的重要算法之一。本文主要探讨了K-Means和DBSCAN两种聚类算法的原理及其应用场景。K-Means算法通过迭代优化簇中心来实现数据点的划分,适用于球形分布的数据集;而DBSCAN算法则基于密度进行聚类,能够有效识别任意形状的簇,并且对噪声数据具有较好的鲁棒性。通过对这两种算法的对比分析,本文旨在为实际应用中选择合适的聚类方法提供参考。 ... [详细]
  • OpenCV中的霍夫圆检测技术解析
    本文详细介绍了如何使用OpenCV库中的HoughCircles函数实现霍夫圆检测,并提供了具体的代码示例及参数解释。 ... [详细]
  • 本文介绍了如何利用OpenCV库进行图像的边缘检测,并通过Canny算法提取图像中的边缘。随后,文章详细说明了如何识别图像中的特定形状(如矩形),并应用四点变换技术对目标区域进行透视校正。 ... [详细]
  • 本文探讨了如何将个人经历,特别是非传统的职业路径,转化为职业生涯中的优势。通过作者的亲身经历,展示了舞蹈生涯对商业思维的影响。 ... [详细]
  • 龙蜥社区开发者访谈:技术生涯的三次蜕变 | 第3期
    龙蜥社区的开发者们通过自己的实践和经验,推动着开源技术的发展。本期「龙蜥开发者说」聚焦于一位资深开发者的三次技术转型,分享他在龙蜥社区的成长故事。 ... [详细]
  • empty,isset首先都会检查变量是否存在,然后对变量值进行检测。而is_null只是直接检查变量值,是否为null,因此如果变量未定义就会出现错误!检测一个变量是否是null ... [详细]
  • 本文详细介绍了如何调整 Kettle 的内存配置以优化性能,并指导用户如何正确设置日志输出中的时间类型,确保数据处理和监控的准确性。 ... [详细]
  • 本文将深入探讨 Unreal Engine 4 (UE4) 中的距离场技术,包括其原理、实现细节以及在渲染中的应用。距离场技术在现代游戏引擎中用于提高光照和阴影的效果,尤其是在处理复杂几何形状时。文章将结合具体代码示例,帮助读者更好地理解和应用这一技术。 ... [详细]
author-avatar
O臭煊儿O
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有