一些基础知识FK

1. 群体稳定性指数PSI

        通过 PSI(Population Stability Index) 指标,可以得到不同样本下,模型在各分数段分布的稳定性。用于衡量两个群体(比如两个时间点、两个子群体等)之间稳定性的指标。通常PSI被用于评估信用风险模型、预测模型等在不同时间点或不同群体中的性能变化。

PSI = SUM(实际占比-预期占比) * ln(实际占比/预期占比)

      通常期望分布可以是参考的基准分布,比如在时间点1的分布作为基准,而实际分布是在时间点2的分布。

        风控中常使用PSI衡量模型或特征的稳定性。PSI还是一种主要的模型监控指标,因为模型部署上线后,模型的拒绝率越高,其线上KS值越低,也就越无法体现模型的真实效果,所以通常使用PSI监控线上模型与线下模型的差异,从侧面展示模型真实效果与预期效果的偏差。
        PSI的计算中同样涉及分箱,实践证明,等频分箱的效果要好于等距分箱。PSI 可用于计算模型在训练集与时间外样本集OOT上的稳定度。

结果: PSI 的值越大,表示两个群体之间的分布差异越大

 1. PSI<0.1: 稳定性很高;
 2. 0.1≤PSI<0.25: 稳定性一般;
 3. PSI≥0.25: 稳定性较差。

        稳定性是一个相对的概念,只有通过对比才能知道模型是否稳定。在信用评分模型中,为了进行对比,至少需要两个分布结果,一个是预期分布结果一个是实际分布结果。

 1. 在模型验收前,需要对模型的稳定性进行评估。

使用验证样本作为实际分布,使用训练样本作为预期分布。

2. 在产品验收阶段

使用模型上线时的 OOT 样本作为预期样本,使用 非 OOT 时段的近期抽样样本作为实际样本。

1.3 计算 PSI

 1. 分箱:等频分箱、等距分箱
 2. 计算实际分布

1. 测试样本距离当前日期越近越好;
2. 选择进行测试的样本,把样本传入模型得到实际测试结果;
3. 再根据上一步选择的分箱方式,将实际测试结果同样进行分箱,计算分箱后的占比。

3. 计算 PSI 数值 

index = (实际占比-预期占比) * ln(实际占比/预期占比)

PSI = sum(index1 + index2 + ...+ indexn)

1.4 建议

1. PSI 上线时关注, 上线后仍需持续关注;

2. 关注PSI变化因素:客群变化、数据源变化;

3. 上线后, 根据业务场景对模型稳定性的要求, 对模型 PSI 进行按日/月/季度监控。

2. WOE编码 -- 证据权重

       WOE(Weight of Evidence)是一种对原始自变量进行编码的形式,表示的是“当前分组中响应客户占样本中所有响应客户的比例”和“当前分组中没有响应的客户占样本中所有没有响应的客户的比例”之间的差异。。它的定义为:

woe_{i}=ln(\frac{P_{y_{i}}}{P_{n_{i}}}) 

其中,P_{yi} 是这个分组中响应客户占样本中所有响应客户的比例,P_{ni} 是这个分组中未响应客户占样本中所有未响应客户的比例。

      WOE也可理解为,当前分组中响应客户和未响应客户的比值与所有样本中这一比值之间的差异,这个差异是用对这两个比值的比值取对数来表示的。WOE 越大,这种差异越大,这个分组里的样本响应的可能性就越大;WOE越小,差异越小,这个分组里的样本响应的可能性就越小。

        在对短文本类型的变量进行转换时,WOE映射的效果相比于one-hot编码和词嵌入embedding技术要更有效。其实在最早的评分卡中,无论是对字符型变量还是对数值型变量都要进行WOE映射。对数值型变量进行WOE映射主要是为了弱化极值影响、增加模型鲁棒性。但树模型对极值和变量分布波动并不敏感,因此在XGBoost中只对字符型变量进行WOE映射。

        注意分箱不同,得到的WOE映射值会有很大不同。一般基于负样本占比差异最大化的分箱原则,所期望得到的分箱结果应该在5-10箱,且每一箱之间的负样本占比差值尽可能大(箱合并原则),每一箱的样本量不能小于整体样本的5%(可根据分箱结果调整,原则是不要太小)。换言之,主要通过控制划分后的总箱数,来迭代进行箱的合并。分箱个数以及最小样本占比需要使用者根据实际情况进行微调。
       

3. 时间外样本集 OOT

        实际建模过程中通常使用3个数据集:训练集、测试集、时间外样本集(Out of Time),OOT用于描述模型在时间维度上的性能变化。

      OOT通常指的是模型在训练时使用的数据集与将来要在实际应用中使用的数据集有显著的时间差异(数据分布发生变化),导致模型在未来的预测性能下降。这种情况可能由于数据的时效性、外部环境的变化等原因引起。

        解决OOT问题的一种常见方法是使用群体稳定性指数PSI 等工具来监测模型在不同时间段或数据分布上的性能变化。通过在模型上线前和上线后对模型性能进行监测,可以及时发现潜在的OOT问题并进行调整。

预防OOT问题的方法:

1. 及时更新训练数据: 确保模型的训练数据集包含最新的信息,以适应未来的数据分布;
2. 动态更新模型: 考虑使用增量学习或定期重新训练模型,以捕捉潜在的数据分布变化;
3. 监测模型性能: 定期监测模型在不同时间点或数据分布上的性能,使用PSI等指标进行评估。

        通过这些方法,可以提高模型对未来数据的适应能力,减少由于时间上的变化而导致的性能下降问题。

4. KS

        KS值对模型的评价不受样本不均衡问题的干扰,但仅限于模型评价。想获得表现更好的模型,还需要针对不均衡问题进行优化。

5. 特征筛选

        XGBoost等树模型只关心数值的排序,对变量的分布和取值范围并不敏感,所以不需要进行归一化处理。为保证树模型的精度,对数值型变量也未做分箱处理。

      样本权重weight与代价敏感学习中的权重作用并不相同,考虑到通常建模中会对样本进行抽样,为了反映真实场景下的KS值和PSI,需要使用采样比例的倒数作为权重,进行样本量还原。因此权重只参与KS值和PSI的计算,不参与模型训练。

       因为信用评分模型的稳定性很大程度上取决于模型中每个变量分布的稳定性,为保证模型上线后的稳定性,需要对模型中稳定性较差的变量进行筛选。在传统评分卡中,通常还会根据三个建模数据集上每一个特征的信息值 IV (Information Value)、最大信息系数MIC (Maximal Information Coefficient)、PSI等指标对特征进行筛选(PSI既可用于模型评价又可用于特征筛选,当单变量PSI>0.02时,需要对该特征做调整或者直接删除此特征)。

       注意:IV通常用于衡量单特征对区分任务的贡献程度,并不考虑特征的组合效果。因此在xgb 这种具备特征交叉能力的模型中,IV值通常只用于粗筛选。

 6. 自动化调参

      业务期望模型的训练集KS值和时间外样本集KS值足够接近,且时间外样本集的KS值足够大。前者用于保证模型的跨时间稳定性不会很差,而后者用于保证模型的精度足够高。因此给出调参目标为两者的组合。

注意:KS值的分配权重w可以根据实际情况进行调节。比如当业务稳定性较差时,应更多关注两者KS值的差值,因此需要将w从默认的0.2改为一个更大的值。

7. 生成模型报告

1. 模型报告所需字段:KS值、负样本个数、正样本个数、负样本累计个数、正样本累计个数、捕获率、负样本占比;
2. KS值取得最大值的箱越靠前,表示该模型越好;
3. 负样本占比一般呈递减趋势,如果出现波动的箱编码越靠前,说明模型的排序能力越弱。

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

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

相关文章

安装配置Maven(idea里面配置)

放在这个路径下&#xff08;如果需要可以免费发给你&#xff0c;dd我就好了&#xff09; D:\IearnSoftware\maven\apache-maven-3.6.1-bin.zip&#xff08;我自己的路径下面&#xff0c;防止忘记&#xff09; 1.首先测试maven在不在&#xff0c;配置对不对 mvn -v 这样就是成…

STM32HAL库++ESP8266+cJSON连接阿里云物联网平台

实验使用资源&#xff1a;正点原子F1 USART1&#xff1a;PA9P、A10&#xff08;串口打印调试&#xff09; USART3&#xff1a;PB10、PB11&#xff08;WiFi模块&#xff09; DHT11&#xff1a;PG11&#xff08;采集数据、上报&#xff09; LED0、1&#xff1a;PB5、PE5&#xff…

【微信小程序调用百度API实现图像识别实战】-前后端加强版

前言&#xff1a;基于前面两篇图像识别项目实战文章进行了改造升级。 第一篇 入门【微信小程序调用百度API实现图像识别功能】----项目实战 第二篇 前后端结合 【微信小程序调用百度API实现图像识别实战】----前后端分离 这一篇主要讲述的是在第二篇的基础上新增意见反馈功能&a…

第72天:漏洞发现-Web框架中间件联动GobyAfrogXrayAwvsVulmap

案例一&#xff1a;某 APP-Web 扫描-常规&联动-Burp&Awvs&Xray Acunetix 一款商业的 Web 漏洞扫描程序&#xff0c;它可以检查 Web 应用程序中的漏洞&#xff0c;如 SQL 注入、跨站脚本攻击、身份验证页上的弱口令长度等。它拥有一个操作方便的图形用户界 面&#…

实验8 NAT配置

实验8 NAT配置 一、 原理描述二、 实验目的三、 实验内容1.实验场景2.实验要求 四、 实验配置五、 实验步骤2.静态NAT配置3.NAT Outbound配置4.NAT Easy-IP配置 一、 原理描述 2019年11月26日&#xff0c;全球43亿个IPv4地址正式耗尽&#xff0c;这意味着没有更多的IPv4地址可…

Taro引入echarts【兼容多端小程序(飞书/微信/支付宝小程序)】

近期接到公司新需求&#xff0c;开发飞书小程序&#xff0c;并且原型中含有大量的图表&#xff0c;本想使用飞书内置图表组件 —— chart-space&#xff0c;但官方表示已经停止维护了&#xff0c;无奈之下&#xff0c;只能另寻他路&#xff0c;于是乎&#xff0c;图表之王&…

【Godot4.2】自定义Todo清单类 - myTodoList

概述 在写myList类的时候&#xff0c;就想到可以写一个类似的Todo清单类。 基础思路 本质还是在内部维护一个数组&#xff0c;在其基础上进行增删改查操作的封装为了方便存储数据&#xff0c;编写一个自定义内置类TodoItem&#xff0c;内部数组就变成了Array[TodoItem]类型的…

【Flutter】GetX

前言 状态管理 / 路由管理 / 依赖管理 这三部分之间存在联系 参考文章 建议看官网文章&#xff0c;很详细 &#xff0c;pub.dev搜索get pub.dev的文档 状态管理文章相关链接 状态管理 案例 实现一个计算器&#xff0c;运用GetX去管理它 构建界面 构建一个计算器界面 …

GateWay具体的使用之全链路跟踪TraceId日志

1.创建全局过滤器&#xff0c;在请求头上带入traceId参数&#xff0c;穿透到下游服务. package com.by.filter;import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.jwt.JWTValidator;…

数据结构1(初):时间复杂度和空间复杂度

目录 1、引言 1.1、什么是数据结构&#xff1f; 1.2、什么是算法&#xff1f; 1.3、如何学好数据结构和算法 &#xff1f; 2、算法效率 2.1、如何衡量一个算法的好坏 2.2、算法的复杂度 3、时间复杂度 3.1、时间复杂度的概念 3.2、大O的渐进表示法 3.3、常见时间复杂…

C语言自定义类型【联合体与枚举】

文章目录 1.联合体1.1联合体的声明1.2联合体的特点1.3联合体的大小计算联合体的使用案例 2.枚举2.1枚举类型的声明2.2枚举类型的优点(为什么使用枚举)2.3枚举类型的使用 结语 1.联合体 1.1联合体的声明 和结构体一样&#xff0c;联合体也是由一个或多个成员构成&#xff0c;同…

Atcoder Beginner Contest351 A-E Solution题解

文章目录 [A - The bottom of the ninth](https://atcoder.jp/contests/abc351/tasks/abc351_a)[B - Spot the Difference ](https://atcoder.jp/contests/abc351/tasks/abc351_b)[D - Grid and Magnet](https://atcoder.jp/contests/abc351/tasks/abc351_d)E Note&#xff1a;…

Rust 实战练习 - 12. Axum Web 简单demo

Rust Web 历程 Rust 的异步框架tokio非他莫属&#xff0c;而web框架一直是悬而未决&#xff0c;说到底还是因为没有官方成熟的方案指引&#xff0c;大家各玩各的&#xff0c;互不兼容&#xff0c;白白浪费精力。 这个事情一直等到半官方组织tokio推出axum有了改善。但是市场上…

如何将本地Android studio项目上传到GitHub

操作步骤&#xff1a; 1、在GitHub上创建账户 2、在androd studio中添加上述创建的GitHub账号 3、在android studio上找到"share project on GitHub"&#xff0c;点击此选项上传当前项目到GitHub 上传成功后&#xff0c;会在GitHub上创建默认仓库repository 注&a…

mysql-sql-练习题-2-窗口函数

窗口函数 访问量max sum建表窗口函数连接 直播间人数 第1、3名建表排名sum 访问量max sum 每个用户截止到每月为止&#xff0c;最大单月访问次数&#xff0c;累计到该月的总访问次数 建表 create table visit(uid1 varchar(5) comment 用户id,month1 varchar(10) comment 月…

阳光能源,创造永远:光模块的未来”:随着大数据、区块链、云计算和5G的发展,光模块成为满足不断增长的数据流量需求的关键技术

光模块的类型介绍&#xff1a; 为了适应不同的应用需求&#xff0c;不同参数和功能的光模块应运而生。光模块的分类方式及类型详见如下&#xff1a; &#x1f50e;封装形式&#x1f50d;&#xff1a; &#x1f4e3;&#x1f4e2;光模块按照封装形式来分有以下几种常见类型&a…

声光控路灯控制系统设计与仿真

目录 前言 一、设计任务 二、系统组成及工作原理 1、总体设计思路 2、电路各模块设计简介 &#xff08;1&#xff09;光控电路 &#xff08;2&#xff09;声控电路 (3) 逻辑控制电路 (4) 延时电路 三、系统中电源模块的设计 1、方案比较和确定 2、 设计思路 3、直流…

OpenHarmony实战开发-如何实现自定义绘制 (XComponent)

XComponent组件作为一种绘制组件&#xff0c;通常用于满足开发者较为复杂的自定义绘制需求&#xff0c;例如相机预览流的显示和游戏画面的绘制。 其可通过指定其type字段来实现不同的功能&#xff0c;主要有两个“surface”和“component”字段可供选择。 对于“surface”类型…

AcrelEMS-MH民航机场智慧能源管平台解决方案【可靠供电/降低能耗/高效运维】

民航机场行业背景 自2012年以来&#xff0c;我国民航运输规模出现了显著增长&#xff0c;旅客运输量&#xff1a;从2012年的3.19亿人次上升至2019年的6.6亿人次&#xff08;注&#xff1a;为剔除疫情影响&#xff0c;此处采取疫情前2019年的数据&#xff0c;下同&#xff09;&…

java:SpringBootWeb请求响应

Servlet 用java编写的服务器端程序 客户端发送请求至服务器 服务器启动并调用Servlet,Servlet根据客户端请求生成响应内容并将其传给服务器 服务器将响应返回给客户端 javaweb的工作原理 在SpringBoot进行web程序开发时,内置了一个核心的Servlet程序DispatcherServlet,称之…