【问题标题】:Offsetting Oversampling in SAS for rare events in Logistic Regression为逻辑回归中的罕见事件抵消 SAS 中的过采样
【发布时间】:2018-08-13 21:54:37
【问题描述】:

谁能帮助我了解在 Logistic Regression 中使用偏移方法(最好在 Proc Logistic 和 Scoring 中的 Base SAS 中)进行过采样的 Premodel 和 Postmodel 调整。

我举个例子。考虑到银行的传统信用评分模型,假设我们有 10000 个客户,50000 个好客户和 2000 个坏客户。现在对于我的逻辑回归,我使用了 2000 个好客户的所有 2000 个坏和随机样本。如何在 Proc Logistic 中使用 Offset 等选项以及评分期间调整这种过采样。你有关于这个主题的插图的参考资料吗? 提前感谢您的帮助!

【问题讨论】:

  • 请向我们展示您的参考资料以及您已经了解的内容!
  • 我举个例子。考虑到银行的传统信用评分模型,假设我们有 10000 个客户,50000 个好客户和 2000 个坏客户。现在对于我的逻辑回归,我使用了 2000 个好客户的所有 2000 个坏和随机样本。如何在 Proc Logistic 中使用 Offset 等选项以及评分期间调整这种过采样。你有关于这个主题的插图的参考资料吗?
  • 不。上述评论应放在 OP(原帖)中。

标签: sas logistic-regression


【解决方案1】:

好的,这是我的 2 美分。

有时,目标变量是罕见的事件,例如欺诈。在这种情况下,由于事件数据不足,使用逻辑回归将具有显着的样本偏差。由于其简单性,过采样是一种常用方法。

但是,当分数用于决策(这是您的情况)时,需要进行模型校准 - 但是,如果模型仅用于排序,则无需执行任何操作(请记住,概率会被夸大,但排序仍然相同)。

协变量的参数和优势比估计(及其置信限)不受此类抽样(或过抽样)的影响,因此不需要加权。但是,截距估计会受到采样的影响,因此任何基于完整参数估计集的计算都是不正确的。

假设真实模型为:ln(y/(1-y))=b0+b1*x. 使用过采样时,b1′ 与真实模型一致,但b0′ 不等于bo

一般有两种方法:

  1. 加权逻辑回归,
  2. 只需添加偏移量。

我将仅根据您的问题解释偏移版本。

让我们创建一些虚拟数据,其中您的 DP (y) 和 IV (iv) 之间的真实关系是 ln(y/(1-y)) = -6+2iv

data dummy_data;
    do j=1 to 1000;
        iv=rannor(10000); *independent variable;
        p=1/(1+exp(-(-6+2*iv))); * event probability;
        y=ranbin(10000,1,p);  * independent variable 1/0;
        drop j;
        output;
    end;
run;

让我们看看你的事件率:

proc freq data=dummy_data;
tables y;
run;


    Cumulative    Cumulative
y    Frequency     Percent     Frequency      Percent
------------------------------------------------------
0         979       97.90           979        97.90  
1          21        2.10          1000       100.00  

与您的问题类似,事件率是 p=0.0210,换句话说非常罕见

让我们使用 poc 逻辑来估计参数

proc logistic data=dummy_data;
model y(event="1")=iv;
run;

                               Standard          Wald
Parameter    DF    Estimate       Error    Chi-Square    Pr > ChiSq

Intercept     1     -5.4337      0.4874      124.3027        <.0001
iv            1      1.8356      0.2776       43.7116        <.0001

Logistic 结果与真实模型非常接近,但基本假设并不如您所知。

现在让我们通过选择 p=0.2 的所有事件案例和非事件案例来对原始数据集进行过采样

data oversampling; 
set dummy_data;
   if y=1 then output;
   if y=0 then do;
     if ranuni(10000)<1/20 then output;
   end;
run;



proc freq data=oversampling;
tables y;
run;

                      Cumulative    Cumulative
y    Frequency     Percent     Frequency      Percent
------------------------------------------------------
0          54       72.00            54        72.00  
1          21       28.00            75       100.00  

您的事件发生率(神奇地)从2.1% 跃升至28%。让我们再次运行 proclogistic。

proc logistic data=oversampling;
model y(event="1")=iv;
run;
                                 Standard        Wald
Parameter    DF    Estimate       Error    Chi-Square    Pr > ChiSq

Intercept     1     -2.9836      0.6982       18.2622        <.0001
iv            1      2.0068      0.5139       15.2519        <.0001 

如您所见,iv 估计值仍接近实际值,但您的截距已从 -5.43 变为 -2.98,这与我们的真实值 -6 非常不同。

这是偏移量发挥作用的地方。偏移量是已知总体和样本事件概率之比的对数,并根据事件的真实分布而不是样本分布(过采样数据集)调整截距。

Offset = log(0.28)/(1-0.28)*(0.0210)/(1-0.0210) = 2.897548

因此您的截距调整将是intercept = -2.9836-2.897548= -5.88115,这与实际值非常接近。

或者在proclogistic中使用offset选项:

data oversampling_with_offset;
set oversampling;
off= log((0.28/(1-0.28))*((1-0.0210)/0.0210)) ;
run;

proc logistic data=oversampling_with_offset;
model y(event="1")=iv / offset=off;
run;


                               Standard          Wald
Parameter    DF    Estimate       Error    Chi-Square    Pr > ChiSq

Intercept     1     -5.8811      0.6982       70.9582        <.0001
iv            1      2.0068      0.5138       15.2518        <.0001
off           1      1.0000           0         .             .    

从这里您的所有估计都得到正确调整,分析和解释应该正常进行。

希望有帮助。

【讨论】:

  • 非常感谢!这是非常全面的..我刚刚开始学习信用评分,这真的很有帮助。能否也用同一个例子来解释第一种方法“加权逻辑回归”?
  • @abhim701 将尝试尽快添加示例,但如果您认为它回答了您关于逻辑回归中偏移量的原始问题,请接受我的回答
【解决方案2】:

这是一个很好的解释。

当您在罕见事件实验中过采样或过采样时,截距会受到影响,而不是斜率。因此在最终输出中,您只需要通过在 SAS 的 proc 逻辑中添加偏移语句来调整截距。概率受到过采样的影响,但同样,如上所述,排名不受影响。

如果您的目标是将数据评分为十分位数,则无需调整偏移量,并且可以根据过度采样模型的概率对观察结果进行排名并将它们放入十分位数(正常使用 Proc Rank)。但是,实际概率分数会受到影响,因此您不能使用实际概率值。 ROC 曲线也不受影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 2011-03-27
    • 1970-01-01
    • 1970-01-01
    • 2017-08-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多