PSI|CSI和ROC|AUC和KS -备忘录

本文介绍了模型稳定性的重要指标PSI(群体稳定性指数),用于衡量模型预测值与实际值的偏差,以及模型在不同时间段内的稳定性。当PSI小于0.1时,模型稳定性高;在0.1到0.2之间,模型一般,需进一步研究;大于0.2则稳定性差。此外,还提到了AUC和KS作为其他评估模型性能的指标。通过这些工具,可以及时发现并解决模型中存在的问题。

PSI和CSI是对评分卡主模型分数以及入模变量进行监控的一大利器,它们不仅可以实时反映模型的稳定性,也可以快速发现问题,定位问题(客群变化引起、变量变化引起等),从而找到有效的解决方案。

PSI指标

PSI定义:群体稳定性指标PSI(Population Stability Index)是衡量模型的预测值与实际值偏差大小的指标;稳定度指标可衡量测试样本及模型开发样本评分的分布差异,为最常见的模型稳定度评估指标。其实PSI表示的就是按分数分档后,针对不同样本,或者不同时间的样本,population分布是否有变化,就是看各个分数区间内人数占总人数的占比是否有显著变化

PSI公式:PSI = sum((实际占比-预期占比)* ln(实际占比/预期占比))

PSI < 0.1 模型稳定性很高。

PSI 0.1<= psi < 0.2 模型一般,需要进一步研究

PSI >0.2 模型稳定性差,建议修复

例如:

一个模型需要统计评估其稳定性,对其进行客户分组,统计各个分组客户量的稳定性。以验证模型是否合适。

具体步骤如下:

第一步:统计总进件量X

第二步:将总进件量按区间统计出各区间量

第三步:计算各区间占比(本区间数/总进件数),即实际占比

第四步:根据模型输出期望占比

第五步:计算各个区间psi并最终进行求和。

整理输出的最终报表样式(类似)

ææ¯å享å¾ç

注:时间跨度越大,模型psi越不稳定。

参考:

原文链接:https://blog.youkuaiyun.com/liuliuliuliumin123/article/details/84664651

原文链接:模型稳定度指标PSI与IV - 光彩照人 - 博客园

二、AUC和ROC

 

三、模型稳定性 KS

 

### 概念 - **AUC-ROC**:ROC(Receiver Operating Characteristic)曲线是一种用于评估二分类模型性能的工具,它以假正率(FPR)为横轴,真正率(TPR)为纵轴绘制而成。AUC(Area Under the Curve)即ROC曲线下的面积,取值范围在0到1之间。AUC-ROC值越接近1,表明模型的分类性能越好;若值为0.5,则表示模型的分类效果与随机猜测相当[^3]。 - **PR-ROC**:PR(Precision-Recall)曲线以查准率(Precision)为纵轴,查全率(Recall)为横轴绘制。查准率是指预测为正例的样本中实际为正例的比例,查全率是指实际为正例的样本中被预测为正例的比例。PR曲线更关注正例的预测情况,在正负样本不平衡的情况下,PR曲线能更准确地反映模型性能。 - **G-means**:G-means是一种聚类算法,它是K-means算法的扩展。K-means算法需要预先指定聚类的数量K,而G-means可以自动确定聚类的数量。G-means通过不断地将一个聚类分裂为两个子聚类,并使用统计检验来判断分裂是否合理,直到满足停止条件为止。 ### 应用 - **AUC-ROC**:常用于医学诊断、信用风险评估、信息检索等领域的二分类问题中,用于比较不同模型的性能优劣。例如在医学诊断中,评估某种疾病诊断方法的准确性。 - **PR-ROC**:在正负样本比例严重失衡的场景下应用广泛,如异常检测、垃圾邮件过滤等。在这些场景中,正例的数量通常远远少于负例,PR曲线能更好地反映模型对正例的识别能力。 - **G-means**:适用于需要自动确定聚类数量的聚类分析任务,如市场细分、图像分割、生物信息学等领域。在市场细分中,可以根据客户的行为数据自动将客户划分为不同的群体。 ### 计算方法 - **AUC-ROC**:计算AUC-ROC通常使用数值积分的方法。常见的实现方式有梯形法则,即通过将ROC曲线下的面积划分为多个梯形,计算这些梯形的面积之来近似AUC的值。在Python中,可以使用`sklearn`库的`roc_auc_score`函数来计算AUC-ROC值: ```python from sklearn.metrics import roc_auc_score import numpy as np # 示例真实标签预测概率 y_true = np.array([0, 0, 1, 1]) y_scores = np.array([0.1, 0.4, 0.35, 0.8]) auc = roc_auc_score(y_true, y_scores) print("AUC-ROC:", auc) ``` - **PR-ROC**:计算PR曲线需要先计算不同阈值下的查准率查全率,然后绘制PR曲线。可以使用`sklearn`库的`precision_recall_curve`函数来计算PR曲线的坐标点,再使用数值积分的方法计算PR曲线下的面积(AUPRC): ```python from sklearn.metrics import precision_recall_curve import numpy as np # 示例真实标签预测概率 y_true = np.array([0, 0, 1, 1]) y_scores = np.array([0.1, 0.4, 0.35, 0.8]) precision, recall, _ = precision_recall_curve(y_true, y_scores) # 可以进一步计算AUPRC ``` - **G-means**:G-means算法的实现步骤如下: 1. 初始化聚类中心,通常从数据集中随机选择一个点作为初始聚类中心。 2. 使用K-means算法将数据点分配到当前的聚类中。 3. 对于每个聚类,尝试将其分裂为两个子聚类,并使用统计检验(如高斯分布的拟合优度检验)来判断分裂是否合理。如果分裂合理,则保留分裂后的子聚类;否则,不进行分裂。 4. 重复步骤23,直到没有更多的聚类可以分裂为止。 在Python中,可以使用`pyclustering`库来实现G-means算法: ```python from pyclustering.cluster.gmeans import gmeans import numpy as np # 示例数据集 data = np.array([[1, 2], [2, 3], [4, 5], [5, 6]]) # 创建G-means对象并进行聚类 gmeans_instance = gmeans(data) gmeans_instance.process() # 获取聚类结果 clusters = gmeans_instance.get_clusters() print("聚类结果:", clusters) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值