机器学习--分类算法中单标签与多标签的问题

目录

一 单标签问题(二分类算法进行预测单标签多分类)

1 ovo(one versus one,一对一)

2 ovr(one versus rest,一对多)

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)

2 算法适应(Algorithm Adaption)


注意:正例记作1,负例记作-1

一 单标签问题(二分类算法进行预测单标签多分类)

1 ovo(one versus one,一对一)

第一步:将k个类别的样本,进行两两类别样本组合,产生k(k-1)/2个训练数据子集

第二步:使用组合之后的数据子集训练模型,产生k(k-1)/2个训练模型

第三步:将分类器进行融合,采用多数投票法,产生预测值

2 ovr(one versus rest,一对多)

第一步:将第一个类别作为正例,其他所有类别作为负例,依次遍历剩下类别样本,从而产生k个数据子集

第二步:对每个数据子集训练模型,产生k个训练模型

第三步:将分类器进行融合

  • 当只有一个正例输出的时候,该正例对应的类别,即为当前样本类别
  • 当有多个正例输出的时候,根据分类器的置信度指标,选择最大置信度指标的正例输出,作为当前样本类别

注意:

置信度:常常使用精确率或者召回率,但是一般选择输出最大值作为置信度标准

3 error correcting output codes(纠错码机制,多对多)

第一步:编码阶段(训练阶段)

  • 对k个类别数据,进行M次划分,产生M个数据子集,且每一次划分,将一部分数据作为正例,另一部分作为负例
  • 对每个数据子集进行训练模型,产生M个模型
  • 每个分类器模型预测值都对应空间上一个点

第二步:解码阶段(预测阶段)

  • 将测试样本对应的点和类别对应的点求欧式距离
  • 选择距离最小值对应的类别,作为预测值

注意:如图所示,M=5

机器学习--分类算法中单标签与多标签的问题_第1张图片

二 多标签问题(分类算法预测多标签问题)

注意:根据多标签业务的复杂性,可以分为两大类型

  • 第一种类型:多标签之间不存在依赖关系
  • 第二种类型:多标签之间存在依赖关系

1 转换策略(Problem Transform Methods)

1)Binary Relevance(first-order)

第一:算法原理

本质上将多标签问题进行分解,将其转化为q个二元分类问题(q为类别个数),每个二元分类器预测一个类别

第二:算法流程

  • 第一步:确定各个标签对应的数据子集

Y_{i}:是指将x_{i}对应的多标签进行\pm 1二元编码之后的集合

D_{j}=\left \{ (x_{i},\phi (Y_{i},y_{j}))|1\leq i\leq m \right \},\phi (Y_{i},y_{j})=\left\{\begin{matrix} +1,y_{j}\subseteq Y_{i}\\-1,y_{j}\nsubseteq Y_{i} \end{matrix}\right.

  • 第二步:构建q个分类器

g_{j}=f(D_{j}),j=1,2,...,q

  • 第三步:预测

Y=\left \{ y_{j}|g_{j}(x)> 0,j=1,2,...,q \right \}\cup \left \{ y_{j^*}|\underset{1\leq j\leq q}{max}\left \{ j^*=g_{j}(x) \right \} \right \}

第三:算法优劣

  • 优势

多标签之间不存在依赖关系,模型效果不错

  • 劣势

多标签之间存在依赖关系,导致模型泛化能力差

类别数目较多的时候,创建模型多,导致效率低

2)Classifier Chains(high-order)

第一:核心原理

本质上将多标签问题进行分解,将其转化为q个二元分类器链的形式(q为类别个数)

第二:算法流程

  • 第一步:将多标签顺序进行重排列,得到\iota =\left \{ 1,2,...,q \right \}

重排列多标签顺序是为了确定标签之间的依赖关系(可以依据业务理解,也可以采用交叉验证)

  • 第二步:确定各个标签对应的数据子集(特征属性含标签)

Y_{i}:是指将x_{i}对应的多标签进行\pm 1二元编码之后的集合

pred^{i}_{\iota (j)}=(\phi (Y_{i},y_{\iota (1)}),\phi (Y_{i},y_{\iota 21)}),...,\phi (Y_{i},y_{\iota (j-1)})),pred^{i}_{\iota (1)}=0

D_{\iota (j)}=\left \{ [(x_{i},pred^{i}_{\iota (j-1)}),\phi (Y_{i},y_{\iota (j)})]|1\leq i\leq m \right \},\phi (Y_{i},y_{\iota (j)})=\left\{\begin{matrix} +1,y_{\iota (j)}\subseteq Y_{i}\\-1,y_{\iota (j)}\nsubseteq Y_{i} \end{matrix}\right.

  • 第三步:建立q个分类器

g_{\iota (j)}=f(D_{\iota (j)})

  • 第四步:预测

\lambda _{\iota(1)}^{x}=sign(g_{\iota (1)}(x)),j=1

\lambda _{\iota(j)}^{x}=sign(g_{\iota (j)}[x,\lambda _{\iota (1)}^{x},\lambda _{\iota (2)}^{x},...,\lambda _{\iota (j-1)}^{x}]),q\geq j\geq 2

Y=\left \{ y_{\iota (j)}|\lambda _{\iota (j)}^{x}=+1,j=1,2,...,q \right \}

第三:算法优劣

  • 优势:

考虑了标签之间的依赖关系,模型泛化能力强

  • 劣势:

标签之前的依赖关系难以确定(只能依据业务理解或者交叉验证)

3)Calibrated Label Ranking(second-order)

第一:算法原理

本质上将多标签问题进行分解,将其转化为标签排序问题,最终的标签就是排序后最大的几个标签值

第二:算法流程

  • 第一步:确定各个标签对应的数据子集

Y_{i}:是指将x_{i}对应的多标签进行\pm 1二元编码之后的集合

j=1,2,..,q;k=j+1,j+2,...,q(标签两两组合)

\phi (Y_{i},y_{j})=\left\{\begin{matrix} +1,y_{j}\subseteq Y_{i}\\ -1,y_{j}\nsubseteq Y_{i} \end{matrix}\right.

l(Y_{i},y_{j},y_{k})=\left\{\begin{matrix} +1,\phi (Y_{i},y_{j})=+1\cap \phi (Y_{i},y_{k})=-1\\ -1,\phi (Y_{i},y_{j})=-1\cap \phi (Y_{i},y_{k})=+1 \end{matrix}\right.

D_{jk}=\left \{ [x,l(Y_{i},y_{j},y_{k})]|\phi (Y_{i},y_{j} )\neq\phi (Y_{i},y_{k} ) \right \}

  • 第二步:建立q(q-1)/2个分类器

g_{jk}=f(D_{jk})

  • 第三步:预测

g_{jk}=f(D_{jk})\Rightarrow \hat{y}=\left\{\begin{matrix} y_{j},g_{jk}> 0\\ y_{k},g_{jk}\leq 0 \end{matrix}\right.

\xi (x,y_{j})=\sum_{k=1}^{j-1}||g_{kj}\leq 0||+\sum_{k=j+1}^{q}||g_{jk}> 0||

D_{jV}=\left \{ (x_{i},\phi (Y_{i},y_{j}))|1\leq i\leq m \right \}

g_{jV}=f(D_{jV})\Rightarrow\hat{ y}=\left\{\begin{matrix} y_{j},g_{jV}>0\\ not'y_{j},g_{jV}\leq 0\end{matrix}\right.

\xi ^{*}(x,y_{j})=\xi (x,y_{j})+||g_{jV}(x)||

\xi ^{*}(x)=\sum_{j=1}^{q}||g_{jV}(x)||

Y=\left \{ y_{j}|\xi ^{*}(x,y_{j})> \xi^* (x),1\leq j\leq q \right \}\because

第三:算法优劣

  • 优势:考虑标签两两组合,泛化能力较好
  • 劣势:未考虑标签之间相互依赖关系

2 算法适应(Algorithm Adaption)

直接将单标签算法应用到多标签问题上,具体实现,有时间更新

 

 

 

 

 

 

你可能感兴趣的:(机器学习,数据挖掘,分类算法)