机器学习--分类算法中单标签与多标签的问题
目录
3 error correcting output codes(纠错码机制,多对多)
1 转换策略(Problem Transform Methods)
1)Binary Relevance(first-order)
2)Classifier Chains(high-order)
3)Calibrated Label Ranking(second-order)
注意:正例记作1,负例记作-1
一 单标签问题(二分类算法进行预测单标签多分类)
1 ovo(one versus one,一对一)
第一步:将k个类别的样本,进行两两类别样本组合,产生个训练数据子集
第二步:使用组合之后的数据子集训练模型,产生个训练模型
第三步:将分类器进行融合,采用多数投票法,产生预测值
2 ovr(one versus rest,一对多)
第一步:将第一个类别作为正例,其他所有类别作为负例,依次遍历剩下类别样本,从而产生k个数据子集
第二步:对每个数据子集训练模型,产生k个训练模型
第三步:将分类器进行融合
- 当只有一个正例输出的时候,该正例对应的类别,即为当前样本类别
- 当有多个正例输出的时候,根据分类器的置信度指标,选择最大置信度指标的正例输出,作为当前样本类别
注意:
置信度:常常使用精确率或者召回率,但是一般选择输出最大值作为置信度标准
3 error correcting output codes(纠错码机制,多对多)
第一步:编码阶段(训练阶段)
- 对k个类别数据,进行M次划分,产生M个数据子集,且每一次划分,将一部分数据作为正例,另一部分作为负例
- 对每个数据子集进行训练模型,产生M个模型
- 每个分类器模型预测值都对应空间上一个点
第二步:解码阶段(预测阶段)
- 将测试样本对应的点和类别对应的点求欧式距离
- 选择距离最小值对应的类别,作为预测值
注意:如图所示,M=5
二 多标签问题(分类算法预测多标签问题)
注意:根据多标签业务的复杂性,可以分为两大类型
- 第一种类型:多标签之间不存在依赖关系
- 第二种类型:多标签之间存在依赖关系
1 转换策略(Problem Transform Methods)
1)Binary Relevance(first-order)
第一:算法原理
本质上将多标签问题进行分解,将其转化为q个二元分类问题(q为类别个数),每个二元分类器预测一个类别
第二:算法流程
- 第一步:确定各个标签对应的数据子集
:是指将对应的多标签进行二元编码之后的集合
- 第二步:构建q个分类器
- 第三步:预测
第三:算法优劣
- 优势
多标签之间不存在依赖关系,模型效果不错
- 劣势
多标签之间存在依赖关系,导致模型泛化能力差
类别数目较多的时候,创建模型多,导致效率低
2)Classifier Chains(high-order)
第一:核心原理
本质上将多标签问题进行分解,将其转化为q个二元分类器链的形式(q为类别个数)
第二:算法流程
- 第一步:将多标签顺序进行重排列,得到
重排列多标签顺序是为了确定标签之间的依赖关系(可以依据业务理解,也可以采用交叉验证)
- 第二步:确定各个标签对应的数据子集(特征属性含标签)
:是指将对应的多标签进行二元编码之后的集合
- 第三步:建立q个分类器
- 第四步:预测
第三:算法优劣
- 优势:
考虑了标签之间的依赖关系,模型泛化能力强
- 劣势:
标签之前的依赖关系难以确定(只能依据业务理解或者交叉验证)
3)Calibrated Label Ranking(second-order)
第一:算法原理
本质上将多标签问题进行分解,将其转化为标签排序问题,最终的标签就是排序后最大的几个标签值
第二:算法流程
- 第一步:确定各个标签对应的数据子集
:是指将对应的多标签进行二元编码之后的集合
(标签两两组合)
- 第二步:建立个分类器
- 第三步:预测
第三:算法优劣
- 优势:考虑标签两两组合,泛化能力较好
- 劣势:未考虑标签之间相互依赖关系
2 算法适应(Algorithm Adaption)
直接将单标签算法应用到多标签问题上,具体实现,有时间更新