风控建模坏样本太少,不要再用过采样和欠采样了,试下这种更有效的方法

news2025/4/5 4:05:33

样本数据不平衡是我们建模场景中经常遇到的问题,由于目标类别的分布占比差异较大,使得模型训练难以取得较好的拟合效果,甚至模型结果在实际应用中无效。举个最常见的例子,在信贷场景中构建反欺诈模型时,训练样本数据的欺诈目标群体往往是占比很少,必然需要我们对这种正负样本不平衡的情形进行处理,从而保证模型拟合训练的有效性,并获取满足实际需求的模型结果。
解决样本不平衡的常规方法主要有重采样、样本加权等维度,其中重采样包含的过采样与欠采样是我们习惯采用的方法,但需要我们注意的是,过采样后的数据由于反复出现了部分样本,模型会过度学习这些样本数据的信息,从而导致模型产生一定程度的过拟合;欠采样后的数据由于丢失部分样本数据,模型未能学习到所有样本的信息,使模型出现一定程度的欠拟合现象。此外,样本加权的方法虽然未变换样本数据量的多少,但给各类样本赋予合理的权重大小始终是一个难点,而在实际应用中一般是让各个目标分类间的加权损失值近似相等。

1、聚类重采样思路
虽然采用重采样、样本加权等方法都存在一定的局限性,但这些方法仍然是我们日常建模解决样本不平衡问题的主要思路或参考方法,当然也有SMOTE数据合成、OneClass分类等其他方法可供选择,而本文将为大家介绍一种新的方法,即在样本聚类思想下的重采样,这种方法最大的优点是不仅可以解决类之间的不平衡问题,而且还可以解决类内部的不平衡问题,相比单一的重采样方法,聚类下的重采样思路,其应用效果能够更好的提升模型训练效果。
聚类思想下的重采样方法,主要包括两个实现环节,第1步是针对样本数据的正负例分别进行Kmeans聚类(或其他聚类方法),第2步是对聚类后的类别样本数据实施重采样(过采样或欠采样等)。现举个简单样例,说明聚类后的重采样过程,假设某样本数据的正负样本数量为90:10,具体分析过程如下:
(1)采用Kmeans分别对正负样本进行聚类分析,其中正样本的聚类数量为3,各簇样本数量依次为30、50、10;负样本的聚类数量为2,各簇样本数量依次为7、3。这里针对正负样本设置的聚类数量不同,可以根据实际情况综合考虑,比如聚类模型效果、样本数量大小等。
(2)根据正负样本的聚类结果进行过采样,由于正样本最大簇类的样本数量为50,因此正样本的其他2个簇类的样本数量可以扩展至50,即由30和10分别增加至50,这样得到的正样本总数量为50*3=150。
(3)重采样后的正样本数量为150,按正负样本比例1:1均衡的情况下,负样本总数量也应提升至150,则负样本各簇的样本数量为150/2=75,这样只需将2个簇类的样本量分别由7、3依次增加至75,从而达到了整个样本数据的目标类别平衡。

2、实例聚类与分析
为了便于大家对以上聚类后重采样过程的进一步熟悉,我们接下来围绕具体的反欺诈建模样本数据,来完成以上解决样本不平衡的方法。本文选取的样本数据包含6000条样本与8个字段,部分数据样例如图1所示,其中字段Y代表是否欺诈。
在这里插入图片描述

                                                           图1 样本数据样例

对于以上样本数据,字段Y为欺诈目标变量,取值二分类(1是/0否),现对其频数统计分布进行简单描述,具体实现过程如图2所示,输出结果如图3所示。
在这里插入图片描述

                                                              图2 目标描述实现


在这里插入图片描述

                                                                图3 目标频数分布

从目标分布结果可知,正样本(Y=0)与负样本(Y=1)的占比差异较大,是样本不平衡的典型体现。为了解决此类样本偏差较大的情形,我们按照本文聚类下的重采样方法来进行处理,具体流程为先通过Kmeans算法分别对正负样本进行聚类,然后对聚类后的各簇样本实施过采样。
针对正负样本的聚类分析,由于正负样本比例差异较大,这里我们对正样本(Y=1)与负样本(Y=0)的聚类数量K均定义为2,当然也可以根据SSE肘部法来确定更合适的K值。围绕正负样本的聚类分析,以上分析的实现过程详见知识星球代码详情,为了保证模型聚类效果,在模型训练前对建模数据进行特征标准化处理,最终输出的聚类各簇样本数量结果如图5所示。
在这里插入图片描述

                                                              图5 样本聚类结果

根据上图得到的模型聚类结果,我们先来看样本量最大的簇类是正样本簇类2,对应样本数量为4037,则正样本簇类1的样本数量应由1663扩展至4037;负样本簇类1和2的各簇样本数量应扩展至(40372)/2=4037,当负样本聚类数量为3时,则为(40372)/3=2691。以上针对各簇样本的扩充过程是过采样的结果,具体以上的实现过程详见知识星球代码详情,同时输出重采样后的目标取值分布情况。
在这里插入图片描述

                                                              图7 重采样目标分布

通过上图重采样后的目标分布结果可知,经过前边聚类分析、分簇过采样等系列流程,最终建模数据宽表的样本数量由原始数据的6000扩展至16148,目标正负样本0:1比例由19:1(图3)调整为1:1(图7),有效解决了样本不平衡的问题,保证了模型训练过程可以更好的学习到正负样本的信息。
聚类后的重采样方法,最大的优点在于可以综合解决类别不平衡、类内不平衡的问题,例如本文样例的目标0/1类别分布得到有效平衡处理,同时对于正负样本每个聚类簇的样本进行了平衡处理,即分类簇内的样本数量越少,相应簇随机复制的样本数据越多,最终使各簇的数据量分布达到平衡。这种聚类分析后的重采样机制,相比直接过采样或欠采样,可以更有效的保证建模样本数据更符合实际业务需求。
综合以上内容,我们围绕聚类分析后的重采样思想,详细介绍了这种方法在处理样本不平衡问题的主要过程,并结合具体的样本数据,完成了模型聚类后的过采样,有效解决了样本不平衡的实际场景。
为了便于大家对以上内容的进一步熟悉,本文额外附带了相关python代码与样本数据,详情请移至知识星球查看相关内容。
在这里插入图片描述

在这里插入图片描述

更多详细内容,可继续关注:
在这里插入图片描述

~原创文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/845.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(附源码)计算机毕业设计SSM垃圾分类综合服务系统

(附源码)计算机毕业设计SSM垃圾分类综合服务系统 项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术…

(27)语义分割--cityscape数据集的读取和使用

1、主要参考 (1) 图像分割cityscape数据集使用介绍 - 知乎 (2)torchvision支持很多现成的数据集 Datasets — Torchvision 0.13 documentation 。。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。 。。。。。。。。。。。。。。。。。。。 2、下载…

CTFHub | 整数型注入

0x00 前言 CTFHub 专注网络安全、信息安全、白帽子技术的在线学习,实训平台。提供优质的赛事及学习服务,拥有完善的题目环境及配套 writeup ,降低 CTF 学习入门门槛,快速帮助选手成长,跟随主流比赛潮流。 0x01 题目描述…

【Vue 快速入门系列】列表的基本使用

文章目录前言列表的基本使用Key的原理列表过滤列表排序前言 本篇文章讲述Vue中最基本的列表使用,如何迭代列表取值,如何对列表进行过滤、排序等。 列表的基本使用 在Vue中使用列表的时候灰常简单,只需要将Vue属性内的列表数据与dom标签进行…

[架构之路-57]:目标系统 - 平台软件 - 用户空间驱动与硬件抽象层HAL

目录 前言: 第1章 驱动程序功能设计 1.1 关于用户空间驱动 1.2 硬件驱动程序的四大功能概述 1.3 OAM管理面功能:站在管理源的角度,看如何监控使能和监控硬件。 1.4 控制面功能:站在业务的角度看,如何使能和监控硬…

基于Android的五子棋游戏APP设计

目 录 第一章:绪论 1 1.1智能手机与Android系统的发展历程 1 1.1.1 智能手机 1 1.1.2 Android系统基本情况介绍 2 1.2课题现状及应用前景 3 1.2.1 五子棋简介 3 1.2.2 课题现状及应用前景 3 第二章:开发环境的搭建 5 2.1 系统开发环境 5 2.2 系统开发环境…

SpringCould(一)

视频链接:https://www.bilibili.com/video/BV1f94y1U7AB/?vd_source9545770e4a2968c05878ffac8589ec6c 视频选集:P1— P15 文章目录1.微服务简介1.1 单体架构不足1.2 微服务1.3 微服务的特点1.4 微服务的自动部署(CI/CD)(持续集成…

一文了解数据结构

目录 数据结构 什么是数据结构 链表 数组 栈 队列 哈希表 堆 数据结构 什么是数据结构 「数据结构」决定了数据的顺序和位置关系.数据存储于内存时,决定了数据顺序和位置关系的便是「数据结构」 链表 「链表」中的数据呈线性排列。链表中添加删除数据比较…

多旋翼无人机仿真 rotors_simulator:基于PID控制器的位置控制---水平位置控制

多旋翼无人机仿真 rotors_simulator:基于PID控制器的位置控制---水平位置控制前言水平位置控制串级P控制收敛结果收敛过程串级PID控制收敛结果收敛过程结果总结前言 无人机(Unmanned Aerial Vehicle),指的是一种由动力驱动的、无…

机器学习从零到入门 GBDT 梯度提升决策树

GBDT 梯度提升决策树详解一、 梯度的概念1、日常生活中的梯度2、函数中的梯度2.1、走进数学2.2、从数学到机器学习(1)、损失函数的理解 loss function(2)、梯度的理解 gradient(3)、损失函数的梯度下降二、GBDT1、回归树 - Regression Decision Tree,DT2、梯度提升 …

利用Python实现mysql数据库的基础操作

一:环境准备: 1.安装第三方库:pymsql 在pycharm的terminal中执行命令:pip3 install pymsql 2.导入第三方库到py文件中 import pymsql 二:创建mysql数据库的链接对象: 1.封装一个Python类,在该…

Python爬虫入狱小技巧

呀,来坐牢的是吧,坐牢是不可能坐牢的,骚年,下面就是方法,早上学,晚上进去 一、整体思路 爬虫一开始要把思路理清楚,即从网页源代码或者网页数据接口,获取需要的数据.大致思路如下 …

【Java进阶】JUC并发基础

文章目录1.概念1.1 什么是JUC1.2 线程与进程1.3 线程的几种状态1.4 守护线程1.5 死锁与活锁1.6 乐观锁与悲观锁1.7 自旋锁2.Lock2.1 使用Lock2.2 Lock与Synchronized2.3 虚假唤醒3.八锁问题3.1 创建一个Phone实例多线程调用两个方法3.2 创建一个Phone实例多线程调用两个方法&am…

基于热传导矩阵(HCM)边缘检测方法在红外图像中的应用(Matlab代码实现)

💥💥💥💞💞💞欢迎来到本博客❤️❤️❤️💥💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑…

3道真题训练|学会链表的前世今生

🙋很多朋友都问我学完基础知识以后怎样提高编程水平?当然是刷题啦!很多小伙伴都在纠结从哪里开始,今天给大家推荐一个身边朋友都在使用的刷题网站:点击进入牛客网刷题吧! 🙋‍♂️今天是Java …

中文文本分类,基本模型的pytoch实现

学习说明:最近发现了一个宝藏仓库,将常见的文本分类方法做了一个介绍、及封装。现在将学习这仓库的一些笔记记录如下 参照资料 649453932/Chinese-Text-Classification-Pytorch: 中文文本分类,TextCNN,TextRNN,FastT…

宣布 .NET MAUI 支持 .NET 7 Release Candidate 2

支持 .NET 7 Release Candidate 2的 .NET 多平台应用程序 UI (MAUI) 现在可在 Windows 和 Mac 上的 Visual Studio 17.4 Preview 4 中使用。RC2 的主要主题是质量和对带有 iOS 16 的 Xcode 14 的 .NET 支持。此版本包含在生产中使用的上线支持许可证。 在相关新闻中&#xff0…

Linux 内存node和zone

文章目录前言一、内存模型二、(N)UMA2.1 简介2.2 节点2.3 UMA节点与Flat Memory Model2.4 zone2.4.1 zone2.4.2 zone_type参考资料前言 一、内存模型 所谓memory model,其实就是从cpu的角度看,其物理内存的分布情况,…

图解操作系统-cpu cache

不同物理器件的访问速度不一:速度快的代价高、容量小;代价低且容量大,速度较慢。 为充分发挥各种器件优点,计算机存储数据的物理器件不会只选择一种,而是以CPU为核心,由内而外地组建一整套存储体系结构。它…

亿可控_第2章_指标数据采集与断连监控

亿可控_第2章_指标数据采集与断连监控 文章目录亿可控_第2章_指标数据采集与断连监控第2章 指标数据采集与断连监控学习目标1. EMQ指标主题订阅1.1 Eclipse paho简介1.2 发送与订阅消息1.2.1 发送消息1.2.2 订阅消息1.3 订阅指标主题1.3.1 需求分析1.3.2 实现思路1.3.3 代码实现…