技术控

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

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

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

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

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

x
概述

  作者以募捐数据(正例:负例 < 1:20)为例,通过一系列实验比较了不平衡数据的多种处理方法。
  如果不做任何处理,用随机森林可以达到97%的准确率,但实际上存在很多的false positives和false negatives,用平衡数据统计大概只有77%的精度。
     [code]confusionMatrix(

    # the original model predicted for leadership levels, too, which I don't care in terms of accuracy
     fct_collapse(predictedoutcomes$rf, donor = c('donor', 'leadership'))
   , fct_collapse(predictedoutcomes$actual, donor = c('donor','leadership'))

)

## Confusion Matrix and Statistics
##   not the exact real-life numbers
##
##           Reference
## Prediction donor no gift
##    donor     300     250
##    no gift   250   19500
##                                          
##                Accuracy : 0.9744         
##                  95% CI : (0.9721, 0.9765)
##     No Information Rate : 0.9691         
##     P-Value [Acc > NIR] : 4.31e-06        
##                                          
##                   Kappa : 0.5615         
##  Mcnemar's Test P-Value : 0.1732         
##                                          
##             Sensitivity : 0.56000         
##             Specificity : 0.98761         
##          Pos Pred Value : 0.59022         
##          Neg Pred Value : 0.98600         
##              Prevalence : 0.03089         
##          Detection Rate : 0.01730         
##    Detection Prevalence : 0.02931         
##       Balanced Accuracy : 0.77380         
##                                          
##        'Positive' Class : donor           
##[/code]    两种解决方法:
  1. 带权法。本文主要是惩罚多样本类别,其实还可以加权少样本类别;
  2. 采样法。本文依然只对多样本类别进行下采样,对应的其实还可以对少样本类别上采样。
   下采样

  作者做了18组不同的采样实验,\(n_x\)和\(n_y\)分别表示正例和负例的采样数量。
     [code]possiblesizes

## # A tibble: 18 × 2
##      n_x   n_y
##     
## 1     50    50
## 2     50   500
## 3     50  1000
## 4     50  5000
## 5     50 20000
## 6     50 60000
## 7    500    50
## 8    500   500
## 9    500  1000
## 10   500  5000
## 11   500 20000
## 12   500 60000
## 13  1000    50
## 14  1000   500
## 15  1000  1000
## 16  1000  5000
## 17  1000 20000
## 18  1000 60000

# plot the possible sizes for clarity
possiblesizes %>%
   ggplot(aes(x = n_x, y = n_y)) +
      geom_jitter(size = 3, width = 50) +
      ggtitle("Possible Sample Sizes")[/code]     
不平衡数据的解决之道-1 (leadership,original,numbers,Matrix,levels)

   带权模型

  类似的,作者做了25组不同权重的实验。
     [code]possibleweights

## # A tibble: 25 × 2
##      p_x   p_y
##     
## 1    0.1   0.1
## 2    0.1   0.3
## 3    0.1   0.5
## 4    0.1   0.7
## 5    0.1   0.9
## 6    0.3   0.1
## 7    0.3   0.3
## 8    0.3   0.5
## 9    0.3   0.7
## 10   0.3   0.9
## # ... with 15 more rows

# plot the possible weights for clarity
possibleweights %>%
   ggplot(aes(x = p_x, y = p_y)) +
      geom_point(size = 3) +
      ggtitle("Possible Class Weights")[/code]

不平衡数据的解决之道-2 (leadership,original,numbers,Matrix,levels)

   比较模型

     [code]# plot all the ROCs
plot(FY16sampledrocs[[1]], main = "ROC")

foo[/code]    上述所有实验的AUC比较结果如下图所示:
123下一页
友荐云推荐




上一篇: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
为楼主点个赞!
回复 支持 反对

使用道具 举报

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

本版积分规则

我要投稿

推荐阅读

扫码访问 @iTTTTT瑞翔 的微博
回页顶回复上一篇下一篇回列表手机版
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 )|网站地图 酷辣虫

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

返回顶部 返回列表