科普:为何要对特征进行分箱?

一、为何要对特征进行分箱?

分箱(Binning)是将连续型或离散型特征转化为区间型变量的过程,其核心目标是提升模型效果和解释性,具体原因如下:

1. 业务需求
  • 可解释性:将特征转化为业务可理解的区间(如年龄分箱为“18-25岁”“26-35岁”)。
  • 规则制定:例如风控模型中,将收入分箱后设置不同的授信阈值。
2. 技术优势
  • 处理非线性关系:分箱可将连续变量的非线性影响转化为分段线性关系。
  • 抗噪声能力:合并相邻区间减少异常值干扰(如将“月消费10000元”与“9999元”合并)。
  • 提升模型性能:通过分箱优化特征与目标变量的单调性(如WOE分箱)。

二、离散型与连续型特征的分箱方法

1. 离散型特征分箱
  • 合并低频类别:将出现频率低于阈值(如5%)的类别合并为“其他”。
  • 基于业务逻辑合并:例如将“教育程度”中的“博士”与“硕士”合并为“高学历”。
  • 示例
    # 合并低频类别
    df['职业'].value_counts()
    # 输出:教师: 300,医生: 250,其他: 50 → 合并“其他”
    
2. 连续型特征分箱
方法原理适用场景
等距分箱区间宽度相等(如年龄分箱为[0-10, 11-20, …])数据分布均匀
等频分箱每个区间样本数量相等数据分布不均匀
基于模型分箱决策树划分(如XGBoost生成最优分箱边界)非线性关系明显
统计分箱卡方检验、最小熵分箱、WOE分箱特征与目标变量相关性强

示例(WOE分箱)

  1. 初始化分箱(如按等距分箱)。
  2. 计算每个分箱的WOE值和IV值。
  3. 合并相邻分箱,直到IV值最大化或分箱数满足要求。

三、分箱后如何用于算法中?

分箱后的特征需转化为模型可接受的格式,常见方法如下:

1. 哑变量编码(One-Hot)
  • 适用模型:树模型、神经网络。
  • 示例:将年龄分箱为[0-18, 19-30, 31+],生成3个哑变量。
2. WOE编码
  • 适用模型:逻辑回归、线性模型。
  • 示例:每个分箱的WOE值作为唯一编码,反映该区间与目标变量的关联程度。
3. 标签编码
  • 方法:直接用区间编号(如[0-18]=1[19-30]=2)。
  • 风险:可能引入虚假线性关系,需谨慎使用。

四、分箱与IV(信息价值)的关系

1. IV的定义
  • 公式IV = Σ[(好样本占比 - 坏样本占比) × WOE]
  • 作用:衡量特征对目标变量的预测能力,IV值越高,特征越有效。
2. 分箱如何影响IV?
  • 优化分箱边界:通过调整分箱,使每个区间内的样本对目标变量的区分度最大化。
  • 消除噪声:合并低IV值的区间,提升整体特征的预测能力。
3. 分箱与IV的交互流程
IV低
IV达标
原始特征
分箱
计算IV
调整分箱
输出分箱结果

五、IV(信息价值)

IV是评估分箱合理性的核心指标之一,尤其在风控、信用评分等领域被广泛使用。以下是其具体作用和评估逻辑:

、IV对分箱合理性的直接评估作用
  1. 量化预测能力

    • IV值反映特征分箱后对目标变量(如违约/正常)的区分能力,数值越高表示分箱越合理。
    • IV阈值参考(行业经验):
      IV值范围预测能力等级
      <0.02无预测能力
      0.02-0.1
      0.1-0.3中等
      0.3-0.5
      >0.5极强(需警惕过拟合)
  2. 验证分箱单调性

    • 分箱后,理想情况下每个区间的WOE值应呈现单调递增或递减趋势(如高收入区间WOE更高)。
    • IV值高但WOE不单调时,可能存在分箱边界不合理或数据噪声,需重新调整。
  3. 稳定性验证

    • 分箱后需在训练集、验证集、测试集上计算IV值,若差异较大(如训练集IV=0.4,测试集IV=0.1),说明分箱过拟合或样本分布偏移。
2、IV在分箱过程中的应用流程
  1. 分箱前

    • 计算原始特征的IV值,判断是否需要分箱(如IV<0.02的特征可直接剔除)。
  2. 分箱中

    • 动态调整分箱边界,选择使IV最大化的分箱方案。
    • 示例
      from sklearn.ensemble import ExtraTreesClassifier
      from feature_engine.discretisation import DecisionTreeDiscretiser# 基于决策树分箱,目标最大化IV
      disc = DecisionTreeDiscretiser(variables=["age"],regression=False,param_grid={"max_depth": [3, 4, 5]},scoring="roc_auc"
      )
      disc.fit(X_train, y_train)
      X_train_binned = disc.transform(X_train)
      
  3. 分箱后

    • 计算分箱后的IV值,若未达标(如IV<0.1),需重新分箱或合并区间。
3、IV的局限性与补充指标
  1. 局限性

    • 高IV≠模型效果好:IV仅反映特征本身的预测能力,需结合模型性能(如AUC、准确率)综合判断。
    • 对类别数敏感:分箱数越多,IV可能虚高(需结合业务场景平衡分箱数与IV)。
  2. 补充评估指标

    • 卡方检验:检验分箱后特征与目标变量的独立性,p值越小表示相关性越强。
    • KS值:衡量正负样本在分箱中的分布差异,KS>0.2表示分箱有效。
    • 业务逻辑验证:如年龄分箱为“18-25岁”与“26-35岁”是否符合业务规则。
  • 在风控模型中,优先选择IV≥0.1的分箱结果。
  • 分箱后通过卡方检验或KS值辅助验证,避免单一指标依赖。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在Ubuntu上构建编译LLVM和ISPC,以及Ubuntu上ISPC的使用方法

之前一直在 Mac 上使用 ISPC&#xff0c;奈何核心/线程太少了。最近想在 Ubuntu 上搞搞&#xff0c;但是 snap 安装的 ISPC不知道为什么只能单核&#xff0c;很奇怪&#xff0c;就想着编译一下&#xff0c;需要 Clang 和 LLVM。但是 Ubuntu 很搞&#xff0c;他的很多软件版本是…

特殊的数字排序

0特殊的数字排序 - 蓝桥云课 问题描述 小明被挑选去参加一个ACM比赛。他的任务是解决一个很特别的问题&#xff1a;给定一个整数数组&#xff0c;但是只能通过交换任意两个数的方式来排序。听起来很简单对吗&#xff1f;但是这个问题的难点在于&#xff0c;只有某些数字是可以…

汽车感性负载-智能高边钳位能量计算

随着汽车电子技术的发展&#xff0c;新的电子电气架构下&#xff0c;越来越多的执行部件在车身出现&#xff0c;比如电磁阀、风机、水泵、油泵、雨刮继电器等常用的执行器&#xff0c; 它们一般都表现为感性特点。驱动这些负载的最简单和最常见的方法是将它们连接到高边侧开关(…

量化交易学习笔记02:双均线策略

双均线策略示例 个股&#xff1a;中国平安 回测日期&#xff1a;2022-5-1至2023-5-1 短均线&#xff1a;5天 长无线&#xff1a;10天 代码&#xff1a; def initialize(context):# 初始化此策略# 设置我们要操作的股票池, 这里我们只操作一支股票# """标的&qu…

利用余弦相似度在大量文章中找出抄袭的文章

我前面的2篇文章分别讲了如果利用余弦相似度来判断2篇文章的相似度&#xff0c;来确定文章是否存在抄袭&#xff0c;和余弦相似度的原理&#xff0c;即余弦相似度到底是怎么来判断文章的相似性高低的等等。这一篇再说下&#xff0c;对于文章字数多和大量文章时&#xff0c;如果…

在 Kaggle 中绘制中文乱码解决

在 Kaggle 中绘制中文时&#xff0c;需要设置 Matplotlib 的字体&#xff0c;否则中文会显示为乱码。可以使用 SimHei&#xff08;黑体&#xff09;或 Microsoft YaHei&#xff08;微软雅黑&#xff09;。 解决方案 使用 matplotlib 设置中文字体在 Kaggle 安装 SimHei 字体 …

在 Ubuntu 服务器上使用宝塔面板搭建博客

&#x1f4cc; 介绍 在本教程中&#xff0c;我们将介绍如何在 Ubuntu 服务器 上安装 宝塔面板&#xff0c;并使用 Nginx PHP MySQL 搭建一个博客&#xff08;如 WordPress&#xff09;。 主要步骤包括&#xff1a; 安装宝塔面板配置 Nginx PHP MySQL绑定域名与 SSL 证书…

Linux线程

1.线程概念 在一个程序里的一个执行路线就叫做线程(thread)&#xff0c;更准确定义&#xff1a;线程是一个进程内部的控制序列 进程至少有一个执行路线&#xff0c;线程在进程内部运行&#xff0c;本质是在进程地址空间内运行&#xff0c;在Linux系统中&#xff0c;CPU眼中&a…

【TI MSPM0】GPIO学习

一、文件样例查找 以GPIO软件轮询为例 下面的四个文件夹分别为不同开发环境提供支持 二、工程导入 1.点击file-点击import project 2.点击browse 3.找到对应的文件打开&#xff0c;选择 推荐使用ticlang,能够提供更加优化的效率 点击finish 三、工程学习 1.readme 文件 &a…

二叉树的基本操作与实现:C语言深度剖析

目录 代码整体框架 1. #define _CRT_SECURE_NO_WARNINGS 2. 头文件引入 3. typedef int BTtype; 4. 二叉树节点结构体定义 二叉树的创建 1. BuyNode 函数 2. CreatNode 函数 二叉树的遍历 前序遍历 中序遍历 后序遍历 二叉树属性的计算 节点个…

深入解析 Latent Diffusion Model(潜在扩散模型,LDMs)(代码实现)

深入解析 Latent Diffusion Model&#xff1a;从传统 Diffusion Model 到高效图像生成的进化 近年来&#xff0c;生成模型在图像合成领域取得了显著进展&#xff0c;其中 Diffusion Model&#xff08;扩散模型&#xff0c;DMs&#xff09;以其出色的生成质量和理论上的稳健性逐…

线性回归原理推导与应用(五):波士顿房价预测实战

波士顿房价是一个非常经典的多元线性回归入门案例数据集。波士顿房价预测数据集包含了可能会影响房价的十三个因素&#xff0c;并给出了实际的房价&#xff08;单位为万美元&#xff09; 波士顿房价数据集数据集下载地址&#xff1a;https://www.kaggle.com/datasets/altavish…

基于CATIA二次开发的低音炮腔体容积精准计算技术详解

一、功能概述 本工具通过PySide6与CATIA V5深度集成&#xff0c;实现了低音炮上下腔体内体积的自动化测量系统。系统采用三维实体建模法进行容积计算&#xff0c;相较于传统手工计算方式&#xff0c;精度提升可达0.5%。主要功能模块包括&#xff1a; 壳体特征自动识别动态草图…

向量数据库原理及选型

向量数据库 什么是向量什么是向量数据库原理应用场景 向量数据库的选型主流向量数据库介绍向量数据库对比主流向量数据库对比表 选型建议 什么是向量 向量是一组有序的数值&#xff0c;表示在多维空间中的位置或方向。向量通常用一个列或行的数字集合来表示&#xff0c;这些数…

IE代理切换器v1.2免费版

虽然IE浏览器已经过时了&#xff0c;但很多其他浏览器&#xff0c;比如谷歌浏览器的代理服务器设置&#xff0c;都还是基于IE浏览器来进行设置的&#xff0c;如果你的工作场景需要切换不同的代理服务器来访问网络&#xff0c;那这款工具适合你&#xff0c;目前该工具可以实现IE…

模运算的艺术:从基础到高阶的算法竞赛应用

在算法竞赛中&#xff0c;模运算&#xff08;取模运算&#xff09;是一个非常重要的概念&#xff0c;尤其在处理大数、防止溢出、以及解决与周期性相关的问题时。C 中的模运算使用 % 运算符&#xff0c;但它的行为和使用场景需要特别注意。 1. 模运算的基本概念 模运算是指求一…

SpringBoot前后端不分离,前端如何解析后端返回html所携带的参数

有一个SpringBoot实现的前后端不分离项目&#xff0c;当前端跳转某个界面时&#xff0c;比如下面的菜单树按钮&#xff0c;后端在返回页面menuTree.html时&#xff0c;还携带了一个参数角色roleId&#xff0c;以便打开菜单树&#xff0c;还要根据这个角色查询对应的分配授权的菜…

操作系统八股文整理(一)

操作系统八股文整理 一、进程和线程的区别二、进程与线程的切换过程一、进程切换进程切换的步骤&#xff1a; 二、线程切换线程切换的步骤&#xff1a; 三、进程切换与线程切换的对比四、上下文切换的优化 三、系统调用一、系统调用的触发二、从用户空间切换到内核空间三、执行…

卷积神经网络(CNN)之 EfficientNet

在深度学习领域&#xff0c;模型的计算效率与性能之间的平衡一直是一个核心挑战。随着卷积神经网络&#xff08;CNN&#xff09;在图像分类、目标检测等任务中取得显著成果&#xff0c;模型的复杂度和计算需求也急剧增加。2019年&#xff0c;Google Research 提出的 EfficientN…

leetcode0031 下一个排列-medium

1 题目&#xff1a; 下一个排列 官方标定难度&#xff1a;中等 整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。 例如&#xff0c;arr [1,2,3] &#xff0c;以下这些都可以视作 arr 的排列&#xff1a;[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。 整数数组的 下一…