请选择 进入手机版 | 继续访问电脑版

技术控

    今日:35| 主题:54646
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] 不平衡数据的解决之道

[复制链接]
空心策 发表于 2016-10-7 09:21:34
259 3

立即注册CoLaBug.com会员,免费获得投稿人的专业资料,享用更多功能,玩转个人品牌!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
概述

  作者以募捐数据(正例:负例 < 1:20)为例,通过一系列实验比较了不平衡数据的多种处理方法。
  如果不做任何处理,用随机森林可以达到97%的准确率,但实际上存在很多的false positives和false negatives,用平衡数据统计大概只有77%的精度。
   
  1. confusionMatrix(
  2.     # the original model predicted for leadership levels, too, which I don't care in terms of accuracy
  3.      fct_collapse(predictedoutcomes$rf, donor = c('donor', 'leadership'))
  4.    , fct_collapse(predictedoutcomes$actual, donor = c('donor','leadership'))
  5. )
  6. ## Confusion Matrix and Statistics
  7. ##   not the exact real-life numbers
  8. ##
  9. ##           Reference
  10. ## Prediction donor no gift
  11. ##    donor     300     250
  12. ##    no gift   250   19500
  13. ##                                          
  14. ##                Accuracy : 0.9744         
  15. ##                  95% CI : (0.9721, 0.9765)
  16. ##     No Information Rate : 0.9691         
  17. ##     P-Value [Acc > NIR] : 4.31e-06        
  18. ##                                          
  19. ##                   Kappa : 0.5615         
  20. ##  Mcnemar's Test P-Value : 0.1732         
  21. ##                                          
  22. ##             Sensitivity : 0.56000         
  23. ##             Specificity : 0.98761         
  24. ##          Pos Pred Value : 0.59022         
  25. ##          Neg Pred Value : 0.98600         
  26. ##              Prevalence : 0.03089         
  27. ##          Detection Rate : 0.01730         
  28. ##    Detection Prevalence : 0.02931         
  29. ##       Balanced Accuracy : 0.77380         
  30. ##                                          
  31. ##        'Positive' Class : donor           
  32. ##
复制代码
   两种解决方法:
  1. 带权法。本文主要是惩罚多样本类别,其实还可以加权少样本类别;
  2. 采样法。本文依然只对多样本类别进行下采样,对应的其实还可以对少样本类别上采样。
   下采样

  作者做了18组不同的采样实验,\(n_x\)和\(n_y\)分别表示正例和负例的采样数量。
   
  1. possiblesizes
  2. ## # A tibble: 18 × 2
  3. ##      n_x   n_y
  4. ##     
  5. ## 1     50    50
  6. ## 2     50   500
  7. ## 3     50  1000
  8. ## 4     50  5000
  9. ## 5     50 20000
  10. ## 6     50 60000
  11. ## 7    500    50
  12. ## 8    500   500
  13. ## 9    500  1000
  14. ## 10   500  5000
  15. ## 11   500 20000
  16. ## 12   500 60000
  17. ## 13  1000    50
  18. ## 14  1000   500
  19. ## 15  1000  1000
  20. ## 16  1000  5000
  21. ## 17  1000 20000
  22. ## 18  1000 60000
  23. # plot the possible sizes for clarity
  24. possiblesizes %>%
  25.    ggplot(aes(x = n_x, y = n_y)) +
  26.       geom_jitter(size = 3, width = 50) +
  27.       ggtitle("Possible Sample Sizes")
复制代码
   

不平衡数据的解决之道

不平衡数据的解决之道-1-技术控-leadership,original,numbers,Matrix,levels

   带权模型

  类似的,作者做了25组不同权重的实验。
   
  1. possibleweights
  2. ## # A tibble: 25 × 2
  3. ##      p_x   p_y
  4. ##     
  5. ## 1    0.1   0.1
  6. ## 2    0.1   0.3
  7. ## 3    0.1   0.5
  8. ## 4    0.1   0.7
  9. ## 5    0.1   0.9
  10. ## 6    0.3   0.1
  11. ## 7    0.3   0.3
  12. ## 8    0.3   0.5
  13. ## 9    0.3   0.7
  14. ## 10   0.3   0.9
  15. ## # ... with 15 more rows
  16. # plot the possible weights for clarity
  17. possibleweights %>%
  18.    ggplot(aes(x = p_x, y = p_y)) +
  19.       geom_point(size = 3) +
  20.       ggtitle("Possible Class Weights")
复制代码
   

不平衡数据的解决之道

不平衡数据的解决之道-2-技术控-leadership,original,numbers,Matrix,levels

   比较模型

   
  1. # plot all the ROCs
  2. plot(FY16sampledrocs[[1]], main = "ROC")
  3. foo
复制代码
   上述所有实验的AUC比较结果如下图所示:
   

不平衡数据的解决之道

不平衡数据的解决之道-3-技术控-leadership,original,numbers,Matrix,levels

   AUC点阵图

  进一步画出AUC点阵图,代码为:
   
  1. FY16allaucs %>%
  2.    ggplot( aes(x = rownum, y = auc, color = modeltype)) +
  3.       geom_point() +
  4.       ylim(.75,1) +
  5.       # 0.8507755 for bog standard RF model
  6.       geom_hline(aes(yintercept = rfreferenceauc), color = 'gray')      +
  7.       # 0.8410452 for caret model's AUC which is what we actually used
  8.       geom_hline(aes(yintercept = caretreference), color = 'orange')
复制代码
   最终结果如下图所示,其中灰色的线为bog标准随机森林模型,AUC为0.85,橙色为Caret模型,AUC为0.84。
   

不平衡数据的解决之道

不平衡数据的解决之道-4-技术控-leadership,original,numbers,Matrix,levels

  从图中可以看出,采样模型比带权模型好很多。
   最好的模型

  有意思的是,最好的模型少类样本数量都是50个,top 3模型中多类样本分别为500,50,1000。
   
  1. roundedauc    sampleratio    n_x    n_y
  2. -----------  -------------  ----  -----
  3. 0.910             10          50    500
  4. 0.907              1          50     50
  5. 0.900             20          50   1000
复制代码
   奇怪的是,采样最差的模型少类样本数量也同样为50,但多类样本的数量多很多:
   
  1. roundedauc    sampleratio    n_x     n_y
  2. -----------  -------------  ----  ------
  3. 0.836             120        500   60000
  4. 0.831             400         50   20000
  5. 0.795            1200         50   60000
复制代码
   采样率-AUC图表明采样率和AUC间接成正比,在采样率大于25的区间,AUC呈对数下降:
   

不平衡数据的解决之道

不平衡数据的解决之道-5-技术控-leadership,original,numbers,Matrix,levels

  在采样率小于25的区间,数据波动较大,如下所示:
   

不平衡数据的解决之道

不平衡数据的解决之道-6-技术控-leadership,original,numbers,Matrix,levels

   总结与展望

  长话短说,这篇文章中采样相对带权看起来是赢者,但作者并未尝试两种方法的结合,比如利用下采样得到一个不错的采样率,然后用带权法惩罚多类样本。
  一些有用的链接:
  
       
  • Great paper on strategies for imbalanced data   
  • Super detailed answer on how to model with downsampling   
  • More info from Stack Exchange about weighted random forests  
   我爱机器学习(52ml.net)编者按

  本文是作者关于不平衡数据的简单实验,但不算完善,比如作者自己提到的结合的方法,此外,实验数据比较个例,慎重参考。
  推荐额外三篇相关文章:
  
       
  • 不均衡数据问题   
  • 解决真实世界问题:如何在不平衡类上使用机器学习?   
  • [导读]Learning from Imbalanced Classes  
           作者: 我爱机器学习(52ml.net)
     原文作者:jaket        原文: Solutions for Modeling Imbalanced Data  
   原文章节:
   
       
  • What to do when modeling really imbalanced data?   
  • AF16 Model   
  • Dealing with Rare Cases   
  • Comparing Models   
  • The Best Models   
  • Summary and General Ending Thoughts   
    欢迎加入我爱机器学习QQ4群(466461154),我们只讨论干货
   微博:我爱机器学习



上一篇:What’s New in Logz.io — September 2016
下一篇:使用Lombok来精简你的项目代码
贾利 发表于 2016-11-10 10:47:19
为潜心回复,本人决定暂时不和异性朋友接触,谢谢合作.
回复 支持 反对

使用道具 举报

幼翠 发表于 2016-11-15 22:27:45
不要在意我,我只是个小尾巴。
回复 支持 反对

使用道具 举报

董莹 发表于 2016-11-15 22:59:29
为楼主点个赞!
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我要投稿

推荐阅读


回页顶回复上一篇下一篇回列表
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )

© 2001-2017 Comsenz Inc. Design: Dean. DiscuzFans.

返回顶部 返回列表