工作中用到的模型诊断指数

1. 一般统计量

均值、方差、最小值、最大值、1%分位数、5%分位数、 10%分位数、25%分位数、 50%分位数、75%分位数、90%分位数、 95%分位数、 99%分位数。

一般要将数据排序后才能求得分位数。


1.1  对每个Model(SEG_A、SEG_B、SEG_C、ALL),计算score向量的统计量

1.2  对SEG_A、SEG_B、SEG_C、ALL,计算每signal向量的统计量


2. Pearson相关系数

其公式为:


其中:

0.8-1.0     极强相关
0.6-0.8     强相关
0.4-0.6     中等程度相关
0.2-0.4     弱相关
0.0-0.2     极弱相关或无相关

 
2.1  对每个Model(只有SEG_A),计算signal与tag的相关系数。

2.2  SEG_A、SEG_B、SEG_C、ALL,计算每两个signal向量之间的相关系数。


3.PSI

 PSI(Population Stability Index)是衡量模型的预测值实际值偏差大小的指标。PSI 小于 0.25 意味偏差在可以接受的范围里。



3.1 对每个Model(SEG_A、SEG_B、SEG_C),计算score向量的PSI

(1).  将基准score划分为10个区间,将预测score按照相同的边界值划分为10个区间
(2).  分别统计各个分区基准score的个数C1、预测score的个数C2
(3).  分别统计各个分区基准score的个数比例p1、预测score的个数比例p2
(4).  计算 PSI = sum ( ( p1[i] - p2[i]  ) / ( log p1[i] -   log p2[i] ) )


3.2 SEG_A、SEG_B、SEG_C、ALL,计算Signal的PSI

(1).  将基准signal划分为10个区间,将预测signal按照相同的边界值划分为10个区间
(2).  分别统计各个分区基准score的个数C1、预测score的个数C2
(3).  分别统计各个分区基准score的个数比例p1、预测score的个数比例p2
(4).  计算 PSI = sum ( ( p1[i] - p2[i]  ) / ( log p1[i] -   log p2[i] ) )

群体稳定性指标(population stability index),
公式: psi = sum((实际占比-预期占比)*ln(实际占比/预期占比))
举个例子解释下,比如训练一个logistic回归模型,预测时候会有个概率输出p。你测试集上的输出设定为p1吧,将它从小到大排序后10等分,如0-0.1,0.1-0.2,......。
现在你用这个模型去对新的样本进行预测,预测结果叫p2,按p1的区间也划分为10等分。
实际占比就是p2上在各区间的用户占比,预期占比就是p1上各区间的用户占比。
意义就是如果模型跟稳定,那么p1和p2上各区间的用户应该是相近的,占比不会变动很大,也就是预测出来的概率不会差距很大。
一般认为psi小于0.1时候模型稳定性很高,0.1-0.25一般,大于0.25模型稳定性差,建议重做。

4.VIF

方差膨胀因子(Variance Inflation Factor,VIF):容忍度的倒数,VIF越大,显示共线性越严重。经验判断方法表明:当0<VIF<10,不存在多重共线性;当10≤VIF<100,存在较强的多重共线性;当VIF≥100,存在严重多重共线性。

计算方法:  对自变量作中心标准化,则X'X 为自变量的相关阵,定义


则矩阵C的主对角线元素 VIF(i) 为自变量X(i) 的方差扩大因子VIF。 若X(i) 与其余自变量的复决定系数为R(i)^2,VIF  与 复决定系数关系为:


4.1 对每个Model的SEG_A、SEG_B、SEG_C、ALL,计算每个signal的VIF:

(1). Signal的全矩阵为X

(2). 从X取得一列signal y,从X中删除y得X'

(3). 对X',y作线性回归建模,得到模型LR

(4). 使用LR,输入X,得到y的预测值y_pred

(5). 求得y的VIF= sum((y- y_mean)^2)/sum((y- y_pred)^2)

(6).从第二步开始重复,计算每个signal的VIF


5. ROC曲线

受试者工作特征曲线 (receiver operating characteristic curve,简称ROC曲线): 是反映敏感性和特异性连续变量的综合指标,是用构图法揭示敏感性和特异性的相互关系,它通过将连续变量设定出多个不同的临界值,从而计算出一系列敏感性和特异性,再以敏感性为纵坐标、(1-特异性)为横坐标绘制成曲线,曲线下面积越大,诊断准确性越高。在ROC曲线上,最靠近坐标图左上方的点为敏感性和特异性均较高的临界值。


5.1. 对每个Model(只有SEG_A),计算score与tag的ROC曲线:

(1). 将score 降序排列

(2).  score划分为10等份(每份个数相同)

(3).  计算每一份tag的总和即命中个数,score的最大、最小值

(4).  计算每一份的未命中个数 = 个数- 命中个数

(5).  转化为累加矩阵,计算累加命中率、累加未命中率

(6). 计算 KS = max ( abs (累加命中率[i] - 累加未命中率[i]) ) 

(7).  计算 AUROC = sum ( (累加命中率[i] + 累加命中率[i-1])*( 累加未命中率[i] -  累加命中率[i-1]) )/2 ,  即求积分

(8).  计算累加前每层实际命中率、累加前每层预测命中率、每层累加率

(9).  ROC 曲线:X轴为累加未命中率[i]),y轴为累加命中率[i]。

6. AUC 

Area Under the ROC Curve,ROC 曲线下的面积,AUC 值在0.5 到1 之间。


6.1    对每个Model(只有SEG_A),计算score与tag的AUROC 见5.1:
AUROC = sum ( (累加命中率[i] + 累加命中率[i-1])*( 累加命中率[i] -  累加命中率[i-1]) )/2 ,求积分

7.KS  

6.1    对每个Model(只有SEG_A),计算score与tag的AUC见6.1:
KS = max ( abs (累加命中率 - 累加未命中率) ) 

8. CI

Condition Index  条件指数:用于诊断多重共线性。

CI > 100

强 多重共线性


CI > 30

中等多重共线性


CI > 10

弱多重共线性


Condition Index  条件指数 计算方法:计算矩阵X‘X 的特征值,则条件数K和条件指数CI分别为:


8.1. 对每个Model(SEG_A、SEG_BSEG_C),计算signal的CI:

(1). 求出回归矩阵S‘S

(2).求出矩阵S‘S的特征值lam1、lam2........lamN

(3). 求最大特征值/最小特征值 的平方根


9. Logit Plot

9.1. 对每个Model(只有SEG_A),计算signal与tag的logit关系:

(1). 若signal 是标签类型,则计算其值分别为0、1时候,对应的tag的数量、均值

(2). 若signal 是数值类型,则将signal划分为最多10个区间,计算各个区间对应的tag的数量、均值


10. CRC

10.1 对每个Model(只有SEG_A),计算score与tag 之间的线性关系:

(1).  按照score降序排列

(2).  划分为10个等份,求出每一份的score和tag的均值

(3).  使用score均值和tag均值进行线性回归建立模型LR

(4).  按照模型LR,使用score均值作为变量,带入模型LR中,计算出预测的tag均值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值