Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

微调作者

如何优雅而时髦的解决不均衡分类问题

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

模型如何评价

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

  • 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.

夕小瑶的卖萌屋
夕小瑶的卖萌屋

转自微信公众号【夕小瑶的卖萌屋】,几个有颜有料的小仙女分享机器学习干货的公众号,专注于NLP、搜索与推荐技术前沿

入门文本分类推荐系统异常检测数据挖掘监督学习无监督学习
7
相关数据
集成学习技术

集成学习是指使用多种兼容的学习算法/模型来执行单个任务的技术,目的是为了得到更佳的预测表现。集成学习的主要方法可归类为三大类: 堆叠(Stacking)、提升(Boosting) 和 装袋(Bagging/bootstrapaggregating)。其中最流行的方法包括随机森林、梯度提升、AdaBoost、梯度提升决策树(GBDT)和XGBoost。

异常检测技术

在数据挖掘中,异常检测(英语:anomaly detection)对不符合预期模式或数据集中其他项目的项目、事件或观测值的识别。 通常异常项目会转变成银行欺诈、结构缺陷、医疗问题、文本错误等类型的问题。 异常也被称为离群值、新奇、噪声、偏差和例外。

推荐系统技术

推荐系统(RS)主要是指应用协同智能(collaborative intelligence)做推荐的技术。推荐系统的两大主流类型是基于内容的推荐系统和协同过滤(Collaborative Filtering)。另外还有基于知识的推荐系统(包括基于本体和基于案例的推荐系统)是一类特殊的推荐系统,这类系统更加注重知识表征和推理。

数据挖掘技术

数据挖掘(英语:data mining)是一个跨学科的计算机科学分支 它是用人工智能、机器学习、统计学和数据库的交叉方法在相對較大型的数据集中发现模式的计算过程。 数据挖掘过程的总体目标是从一个数据集中提取信息,并将其转换成可理解的结构,以进一步使用。

欠采样技术

欠采样是信号处理学中的一种采样技术,也叫带通采样(bandpass sampling),是一种以低于其奈奎斯特采样定理(采样频率两倍高于被采样频率)的采样率对带通滤波信号进行采样且仍然能够重建信号的技术。

准确率技术

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数

监督学习技术

监督式学习(Supervised learning),是机器学习中的一个方法,可以由标记好的训练集中学到或建立一个模式(函数 / learning model),并依此模式推测新的实例。训练集是由一系列的训练范例组成,每个训练范例则由输入对象(通常是向量)和预期输出所组成。函数的输出可以是一个连续的值(称为回归分析),或是预测一个分类标签(称作分类)。

逻辑技术

人工智能领域用逻辑来理解智能推理问题;它可以提供用于分析编程语言的技术,也可用作分析、表征知识或编程的工具。目前人们常用的逻辑分支有命题逻辑(Propositional Logic )以及一阶逻辑(FOL)等谓词逻辑。

分类问题技术

分类问题是数据挖掘处理的一个重要组成部分,在机器学习领域,分类问题通常被认为属于监督式学习(supervised learning),也就是说,分类问题的目标是根据已知样本的某些特征,判断一个新的样本属于哪种已知的样本类。根据类别的数量还可以进一步将分类问题划分为二元分类(binary classification)和多元分类(multiclass classification)。

主动学习技术

主动学习是半监督机器学习的一个特例,其中学习算法能够交互式地查询用户(或其他信息源)以在新的数据点处获得期望的输出。 在统计学文献中,有时也称为最佳实验设计。

推荐文章
暂无评论
暂无评论~