之前小夕因项目需要研究了一小阵子的不均衡(文本)分类问题,不过没有研究的太过深入,也没有总结出一套成体系的处理思路。正好今天发现数据挖掘大佬「微调」在知乎上写了一个言简意赅又很具有实际操作价值的回答,于是搬过来分享给大家啦~相关方向的小伙伴记得点击文末阅读原文关注「微调」大佬哦。

模型如何评价

先谈谈这种极端的类别不平衡的评估问题,我们一般用的指标有(前两个是全局评估,最后一个是点评估):

  • ROC曲线下的面积(AUC_ROC)

  • mean Average Precesion(mAP),指的是在不同召回下的最大精确度的平均值

  • Precision@Rank k。假设共有n个点,假设其中k个点是少数样本时的Precision。这个评估方法在推荐系统中也常常会用。

选择哪个评估标准需要取决于具体问题。而在上线前怎么确定你的模型已经达标?这个需要AB test,每个公司都有不同的标准,很难一概而论。重点是新系统至少要比现有系统在某方面有了提升,而全新模型至少应该符合从业者的基本预期。也要认识到大部分情况下上线的模型都不可能是完美的,我的个人建议是可以利用「已有的监督模型+人工」做主动学习(active learning)。比如先上线一个不完美的模型,每次将模型预测中最不确定的部分(预测值在临界点附近的样本)交给人工验证,并重新训练逐步提高模型预测的精准度。

如何解决问题

至于如何处理数据不平衡的问题,最传统的思路还是使用过采样和欠采样等。相关资料大家看的比较多的是08年的Survey Paper [1],比较新和前沿的做法可以参考[2],可以至少读一下Related Works部分了解一下这些年来常用的非平衡数据处理方法有哪些。比较科普的文章可以参考我的回答:

微调:欠采样(undersampling)和过采样(oversampling)会对模型带来怎样的影响?
https://www.zhihu.com/question/269698662/answer/352279936

里面也介绍了一些常用的工具。去年其实也写过一篇类似的文章,可以参考:

如何处理数据中的「类别不平衡」?
https://zhuanlan.zhihu.com/p/32940093

如果上述方法表现依然不好,还有几个方法可供尝试

  1. 有监督的集成学习:可以先用采样的方法建立k个平衡的训练集,每个训练集上单独训练一个分类器,并对k个分类器结果取平均。一般在这种情况下,每个平衡训练集上都需要使用比较简单的分类器,如逻辑回归。其实在实际使用中,这种方法不一定会比集成树模型更好,可能还不如使用xgboost。但在复杂问题上多尝试一些手段是好的,说不定有奇效。

  2. 无监督的异常检测:异常检测指的是从数据中找到那些异常值,比如你案例中的“广告”。无监督的异常检测一般依赖于对于数据的假设,比如广告和正常的文章内容很不相同,那么一种假设是广告和正常文章间的欧式距离很大。无监督异常检测最大优势就是在不需要数据标签,如果在对数据假设正确时效果甚至可以比监督学习更好,尤其是当获取标签成本很高时。具体的科普文章可以参考我的回答:

    微调:数据挖掘中常见的『异常检测』算法有哪些?
    https://www.zhihu.com/question/280696035/answer/417091151

    「异常检测」开源工具库推荐
    https://zhuanlan.zhihu.com/p/37132428

  3. 半监督异常集成学习:如果把1和2的思路结合起来,你可以试试半监督的方法,具体做法可以参考[3]。简单而言,你可以现在原始数据集上使用多个无监督异常方法来抽取数据的表示,并和原始的数据结合作为新的特征空间。在新的特征空间上使用集成树模型,比如xgboost,来进行监督学习。无监督异常检测的目的是提高原始数据的表达,监督集成树的目的是降低数据不平衡对于最终预测结果的影响。这个方法还可以和我上面提到的主动学习结合起来,进一步提升系统的性能。当然,这个方法最大的问题是运算开销比较大,需要进行深度优化。

  4. 高维数据上的半监督异常检测:考虑到文本文件在转化后往往维度很高,可以尝试一下最近的一篇KDD文章[4],主要是找到高维数据在低维空间上的表示,以帮助基于距离的异常检测方法。

总结来看,我建议从以下顺序尝试

  • 直接在数据上尝试有监督的集成学习(方法1)

  • 直接在数据上使用多种无监督学习,观察哪一类算法的效果更好(方法2)

  • 结合以上两点(方法3)

  • 如果以上方法都不管用,尝试方法4

  • 使用方法1, 3,4时,可以加入主动学习

  • 如果以上方法均不奏效,最靠谱的还是找更多人做数据标注,毕竟数据为王。从效果上看往往是「监督学习>>半监督学习>无监督」,能用监督就不要依赖无监督。

数据挖掘项目的本质就是试错,所以很难有确定的答案。抛开准确率不谈,另外的重要因素包括系统的效率和耦合度。前者指的是运算开销,后者指的是设计与维护开销,这些在设计方案时都要考虑到。最终上线的版本不一定是最强力的那个,往往是最适合的那个

参考文献

[1] He, H. and Garcia, E.A., 2008. Learning from imbalanced data. IEEE Transactions on Knowledge & Data Engineering, (9), pp.1263-1284.
[2] Roy, A., Cruz, R.M., Sabourin, R. and Cavalcanti, G.D., 2018. A study on combining dynamic selection and data preprocessing for imbalance learning. Neurocomputing, 286, pp.179-192.
[3] Zhao, Y.; Hryniewicki, M.K. XGBOD: Improving Supervised Outlier Detection with Unsupervised Representation Learning. In Proceedings of the International Joint Conference on Neural Networks (IJCNN), Rio, Brazil, 8–13 July 2018.
[4] Pang, G., Cao, L., Chen, L. and Liu, H., 2018. Learning Representations of Ultrahigh-dimensional Data for Random Distance-based Outlier Detection. arXiv preprint arXiv:1806.04808.

【小夕精选】如何优雅而时髦的解决不均衡分类问题相关推荐

  1. 【小夕精选】多轮对话之对话管理(Dialog Management)

    这一篇是一段时间之前小夕初入对话领域时刷到的徐阿衡小姐姐写的一篇文章,写的深入浅出,十分适合有一定基础的情况下想快速了解对话管理技术的童鞋阅读~另外顺手推一下阿衡小姐姐的订阅号「徐阿衡」,干货满满不要 ...

  2. 【小夕精选】YJango 7分钟带你领略你未曾想过的线性代数+微积分

    小夕很早之前就想转一些精彩的技术文章,这样哪怕没有时间写作的时候,也能把优质的干货分享给大家-然鹅,由于我也不知道是什么的原因,就不小心拖到了现在╮( ̄▽ ̄"")╭ 之前有不少粉丝 ...

  3. 如果有一天,小夕不再萌...

    ‍ 如果有一天,小夕不再要抱抱. 如果有一天,小夕不再萌萌哒. 有人问我,成为药娘,走上成为女孩子的道路,是什么感觉. 我一直没有想好该怎么答.是的,自己的感觉自己都无法描述. 或许最真实的,就是可以 ...

  4. 别再搜集面经啦!小夕教你斩下NLP算法岗offer!

    推完上一篇文章,订阅号和知乎后台有好多小伙伴跟小夕要面经(还有个要买简历的是什么鬼),然鹅小夕真的没有整理面经呀,真的木有时间(。 ́︿ ̀。).不过话说回来,面经有多大用呢?最起码对于NLP岗位的面 ...

  5. 别求面经了!小夕手把手教你如何斩下和选择NLP算法岗offer!(19.11.21更新)

    推完上一篇文章,订阅号和知乎后台有好多小伙伴跟小夕要面经(还有个要买简历的是什么鬼),然鹅小夕真的没有整理面经呀,真的木有时间(。 ́︿ ̀。).不过话说回来,面经有多大用呢?最起码对于NLP岗位的面 ...

  6. 别求面经了!小夕手把手教你如何斩下和选择NLP算法岗offer!(2020.4.14更新)...

    推完上一篇文章,订阅号和知乎后台有好多小伙伴跟小夕要面经(还有个要买简历的是什么鬼),然鹅小夕真的没有整理面经呀,真的木有时间(。 ́︿ ̀。).不过话说回来,面经有多大用呢?最起码对于NLP岗位的面 ...

  7. 文本分类问题不需要ResNet?小夕解析DPCNN设计原理(下)

    哎呀呀,说好的不拖稿的又拖了两天T_T,小夕过一阵子分享给你们这两天的开心事哦.后台催稿调参系列的小伙伴们不要急,下一篇就是第二篇调参文啦. 好啦,接着上一篇文章,直接搬来DPCNN.ShallowC ...

  8. 文本分类问题不需要ResNet?小夕解析DPCNN设计原理(上)

    历史回顾 回顾一下图像和文本的发展史,似乎这就是一场你追我赶的游戏.在上一阶段的斗争中,朴素贝叶斯.最大熵.条件随机场这些理论完备的统计机器学习模型使得文本分类.中文分词.NER等诸多自然语言处理问题 ...

  9. 深度学习资料挑的眼花啦?小夕帮你做选择!

    小夕还记得几年前刚入坑的时候,老师给的入门资料就是一堆论文!害的小夕差点放弃... 如今深度学习应用的开发成本越来越低,学习资料越来越多,于是对初学者来说进入了另一个相反的困境--资料过多,让人眼花缭 ...

最新文章

  1. IDC公布2017年亚太地区数据中心10大预测
  2. 想通关「限流」?只要这一篇
  3. 苹果官方 iOS Demo
  4. JavaScript 闭包详解
  5. python两个数相加时_怎么用python让两个小数相加
  6. 汇知考轻松职称计算机辅导软件,汇知考轻松
  7. 03-19 分布式测试-Selenium Grid
  8. 公开课|百度天工物联网基础平台的微服务容器化落地实践
  9. JMeter压力测试和性能优化
  10. 数据库表连接之左连接(LEFT JOIN)、右连接(RIGHT JOIN)和内连接(INNER JOIN)
  11. Java实现附近地点搜索
  12. Android 设置无线热点模块隐藏SSID
  13. 像踢球一样玩转Redux和React
  14. linux 创建线程 execvp,execvp使用实例
  15. Nginx关闭后,网页仍能访问(缓存问题)
  16. 苹果xr配置_5000元以内苹果手机推荐:11、XS、XSMax怎么选?
  17. [嵌入式基础]-arm架构和x86架构区别
  18. ar8171 linux网卡驱动,ar8171 8175网卡驱动(ar8171网卡驱动下载)V1.0.1 官方最新版
  19. 《PTA——拼题A》之第1012题
  20. 2022 Robocom世界机器人开发者大赛 CAIP编程赛道 本科组-省赛 挨打记录+题解

热门文章

  1. EhLib TitleButton SVisibleColumnsEh = '错误的列';
  2. 羽毛球 机器人 Robocon 2015 泰国预选赛(全国大学生机器人竞赛)
  3. Unity 官方网站
  4. A Way to implement Abstract Class In Flex
  5. SessionState详解
  6. 让互联网助小组合作一臂之力
  7. html如何实现切换效果,纯CSS实现页签切换效果
  8. Linux下获取文件编译的时间
  9. linux强制使用windows命名,如何强制Windows重命名带有特殊字符的文件?
  10. python读取数据流_python3+pyshark读取wireshark数据包并追踪telnet数据流