在 machinelearningmastery 看到一篇介绍分类任务(Classification)的文章, 作者把分类任务涉及的概念做了一个综述,我感觉这篇文章写得非常详细, 对于理解ML 中分类问题非常有帮助, 这篇文章是对原文的一个概括。
1. 什么是分类任务
在机器学习中, 分类任务为输入的记录贴上各种标签。 比如:
- 判断一封电子邮件是否是垃圾邮件
- 判断手写文本中每个字符对应的字母(拉丁字母)
- 电信运营商根据用户行为判断该用户是否会流失
分类算法通过样本来学习如何将输入记录分类。 对于学习数据来说, 每个 lable 对应的数据最好能够覆盖该lable 涉及的各种情况, 这样算法才能够尽可能的学习到每个lable的知识。
数值化标签
在训练之前, 往往要将 lable 变成一个数值才能进行后续的计算。 比如对于垃圾邮件判断问题, “非垃圾邮件” 记为 0, “垃圾邮件” 记为1。
模型性能指标
对于一个模型来说, 使用者最关心的就是其性能如何。对于机器学习模型来说, 其性能往往和使用场景挂钩, 不同的场景对模型的要求并不相同。 但是对于分类任务来说, 这里给出了2个常用的性能指标。
-
Accuracy :对于结果是 lable 的分类模型来说, Accuracy 是一个比较常用的测量工具,但是要记住它并不是放四海而皆准的衡量指标。 使用Accuracy 的场景往往是假阳性和假阴性对业务的影响差不多的时候。 如果假阳性或者假阴性特别重要的话, 那么就要考虑precision或者 recall 了。
-
ROC Curve :有一类分类任务, 给出的结果并不是lable ,而是该条记录属于各个lable 的概率。 这种情况下一般使用 ROC Curve 作为模型的衡量指标。
2. 分类任务类型
- Binary Classification:结果只有2个类别,比如是否是垃圾邮件。
- Multi-Class Classification:结果不止2个分类,比如判断手写数字是 0-9中的哪个字符。但是结果只能是多种类型中的一种
- Multi-Label Classification: 不同于前两类,这种任务重每个记录可以对应不止一个标签。
- Imbalanced Classification:对于1,2 类型来说,如果其中某种lable 对应的记录特别多而其他lable 对应的记录特别少,这时候就是 Imbalanced Classification。异常检测是这类任务的代表。
2.1 Binary Classification
常见问题:
- 分辨垃圾邮件
- 分辨可能流失客户
- 转化辨别(判断一个访问者是否会下单)
Binary Classification 对应的结果只有2中, 0或者1, 使得这类任务天然的对应到 Bernoulli probability distribution。
常见的可以解决此类任务算法:
- Logistic Regression
- k-Nearest Neighbors
- Decision Trees
- Support Vector Machine
- Naive Bayes
其中 Logistic Regression, Support Vector Machine 是专门为 Binary Classification 设计的算法。
2.2 Multi-Class Classification
统计上对应的分布是Multinoulli probability distribution。
常见问题:
- 人脸识别
- 植物类型识别
- 光学字符识别
常见的可以解决此类任务算法:
- k-Nearest Neighbors.
- Decision Trees.
- Naive Bayes.
- Random Forest.
- Gradient Boosting.
如果想使用 binary classification 算法来解决 Multi-Class Classification 问题, 有2中策略
- One-vs-Rest:
- One-vs-One:
对于这两种策略, 网上有很多讨论,这里就不再详细讨论了。
2.3 Multi-Label Classification
常见问题:
- 图片标注: 为图片添加lable
- 新闻分类: 为新闻添加标签
常见的可以解决此类任务算法:
- Multi-label Decision Trees
- Multi-label Random Forests
- Multi-label Gradient Boosting
2.4 Imbalanced Classification
Imbalanced Classification 往往和binary classification 类似, 比如判断一个病人是否患有某种疾病。 结果通常也是 “是” 或者 “否”,但是不同点在于不同标签对应数据量的比例。 如果某种疾病发病率很高,患病人数和健康人数大致相同, 那么这类问题就是 binary classification 比如近视。 如果疾病发病率很低, 比如某种癌症, 那么这类问题就是Imbalanced Classification
常见问题:
- 恶意行为检测
- 异常值检测
- 医疗诊断
这类问题使用的算法往往和 binary classification 相同, 但是由于数据比例极端不平衡, 所以往往要事先对数据平衡性进行预处理。常见的方式有两种, 第一是将占比大的数据删除,第二是将占比很小的数据扩增。 方法有
- Random Undersampling
- SMOTE Oversampling
也有些算法对于这种极端不均衡的数据做了处理,比如
- Cost-sensitive Logistic Regression
- Cost-sensitive Decision Trees
- Cost-sensitive Support Vector Machines
最后, 对于这类问题, 使用的模型衡量指标也会有所不同, 常用的有
- Precision.
- Recall.
- F-Measure.
网友评论