1.什么是多标签分类问题
最近在读论文的的过程中接触到多标签分类(multi-label classification)的任务,必须要强调的是多标签(multi-label)分类任务 和 多分类(multi-class)任务的区别:
多标签分类任务指的是一条数据可能有一个或者多个标签,举个例子:比如一个病人的体检报告,它可能被标记上,高血压,高血糖等多个标签。
多分类任务指的是一条数据只有一个标签,但是标签有多种类别。机器学习中比较经典的iris鸢尾花数据集就是标准的多分类任务,一条数据喂给模型,模型需判断它是3个类别中的哪一个。
多标签分类任务的两个特点:
- 类别标的数量是不确定的:有些样本可能只有一个类标,有些样本可能存在多个类别标签。
- 类别标签之间可能存在相互依赖关系:还是拿我上述的例子来说:如果一个人患有高血压,他有心血管疾病的概率也会变大,所以高血压这个label和心血管疾病的那些labels是存在一些依赖关系的。
多标签分类算法比较常用的有ML-KNN、ML-DT、Rank-SVM、CML等。
2.传统的KNN算法
k-近邻(k-Nearest Neighbour,简称KNN),常用于有监督学习。
KNN的工作原理很简单:存在一个训练样本集合A,在给定测试样本b时,基于某种距离度量,找出训练集A中与测试样本b最靠近的k个训练样本(通常k≤20且为整数),之后,基于这k个训练样本的信息来预测种类或值。
其中,在分类问题中,KNN用来预测种类。一般使用“投票法”,选择这k个样本中出现最多的类别来作为测试样本的类别。
在回归问题中,KNN预测一个值。使用“平均法”,将k个样本的实值输出的平均值作为测试样本的输出。一般情况下,距离度量选择欧式距离.
3.为什么传统的KNN算法不适合处理多标签问题
从前面的算法中,我们可以发现,KNN是基于投票法对一个未知的实例进行分类。这里的K值
4.ML KNN的推导
ML-KNN是基于最大后验估计规则(MAP),利用测试集中实例对应的训练集中近邻点的标签信息进行预测。
首先,对于预测集中一个未知的实例,对于一个标签j。我们用如下公式计算在它的近邻点中,有多少个属于这个标签j:
其中 C j C_j Cj就是属于标签 y j y_j yj的x的近邻点的个数。
让 H j H_j Hj表示事件:x有标签 y j y_j yj,
于是 P ( H j ∣ C j ) P(H_j|C_j) P(Hj∣Cj),表示对于未知实例x恰好有 C j C_j Cj个近邻点属于标签 y j y_j