1、单标签二分类算法

单标签二分类这种问题是我们最常见的算法问题,主要是指label标签的取值只有两种,并且算法中只有一个需要预测的label标签。直白来讲就是每个实例的可能类别只有两种(A or B)。此时的分类算法其实是在构建一个分类线将数据划分为两个类别。常见的算法有:Logistic、SVM、KNN等。
y = f ( x ) , y ∈ { − 1 , + 1 } y=f(x),\ \ \ \ \ y\in\{-1, +1\} y=f(x),     y∈{−1,+1}

Logistic算法

s i g m o i d = h θ ( x ) = 1 1 + e − θ T x J ( θ ) = − 1 m [ ∑ i = 1 m y ( i ) log ⁡ h θ ( x ( i ) ) + ( 1 − y ( i ) ) log ⁡ ( 1 − h θ ( x ( i ) ) ) ] , y ( i ) ∈ { 0 , 1 } \begin{aligned} sigmoid&=h_{\theta}(x) \\ &=\frac{1}{1+e^{-\theta^Tx}} \\ J(\theta)&=-\frac{1}{m}[\sum_{i=1}^my^{(i)}\log h_{\theta}(x^{(i)})+(1-y^{(i)})\log(1-h_{\theta}(x^{(i)}))], \ \ \ \ \ y^{(i)}\in\{0, 1\} \end{aligned} sigmoidJ(θ)​=hθ​(x)=1+e−θTx1​=−m1​[i=1∑m​y(i)loghθ​(x(i))+(1−y(i))log(1−hθ​(x(i)))],     y(i)∈{0,1}​

2、单标签多分类算法

单标签多分类问题其实是指待预测的label标签只有一个,但是label标签的取值可能有多种情况。直白来讲就是每个实例的可能类别有K种 ( t 1 , t 2 , … , t k , k ≥ 3 ) (t_1, t_2, \dots, t_k ,k\ge3) (t1​,t2​,…,tk​,k≥3)。常见算法:Softmax、KNN等。
y = f ( x ) , y ∈ { t 1 , t 2 , … , t k } D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x n , y n ) } y i = j , i = 1 , 2 , … , n j = 1 , 2 , … , k \begin{aligned} y&=f(x),\ \ \ \ \ \ y\in\{t_1, t_2, \dots, t_k\} \\ D&=\{(x_1, y_1), (x_2, y_2), \dots, (x_n, y_n)\} \\ y_i&=j, \ \ \ \ i=1, 2, \dots, n \ \ \ \ j=1, 2, \dots, k \end{aligned} yDyi​​=f(x),      y∈{t1​,t2​,…,tk​}={(x1​,y1​),(x2​,y2​),…,(xn​,yn​)}=j,    i=1,2,…,n    j=1,2,…,k​

Softmax算法

p ( y = k ∣ x ; θ ) = e θ k T x ∑ l = 1 K e θ l T x , k = 1 , 2 , … , K h θ ( x ) = [ p ( y ( i ) = 1 ∣ x ( i ) ; θ ) p ( y ( i ) = 2 ∣ x ( i ) ; θ ) … p ( y ( i ) = k ∣ x ( i ) ; θ ) ] = 1 ∑ j = 1 k e θ j T x ( i ) ⋅ [ e θ 1 T x e θ 2 T x … e θ k T x ] ⟹ θ = [ θ 11 θ 12 ⋯ θ 1 n θ 21 θ 22 ⋯ θ 2 n ⋯ ⋯ ⋯ ⋯ θ k 1 θ k 2 ⋯ θ k n ] J ( θ ) = − 1 m ∑ i = 1 m ∑ j = 1 k I ( y ( i ) = j ) log ⁡ ( e θ j T x ( i ) ∑ l = 1 K e θ l T x ) I ( y ( i ) = j ) = { 1 , y ( i ) = j 0 , y ( i ) ≠ j \begin{aligned} p(y=k|x;\theta)&=\frac{e^{\theta_k^Tx}}{\sum_{l=1}^Ke^{\theta_l^Tx}}, \ \ \ \ \ k=1, 2, \dots, K \\ h_{\theta}(x)&=\begin{bmatrix} p(y^{(i)}=1|x^{(i)};\theta) \\ p(y^{(i)}=2|x^{(i)};\theta) \\ \dots \\ p(y^{(i)}=k|x^{(i)};\theta) \end{bmatrix} \\ &=\frac{1}{\sum_{j=1}^ke^{\theta_j^Tx^{(i)}}}\cdot\begin{bmatrix} e^{\theta_1^Tx} \\ e^{\theta_2^Tx} \\ \dots \\ e^{\theta_k^Tx} \end{bmatrix} \\ \Longrightarrow \theta&=\begin{bmatrix} \theta_{11} & \theta_{12} & \cdots & \theta_{1n} \\ \theta_{21} & \theta_{22} & \cdots & \theta_{2n} \\ \cdots & \cdots & \cdots & \cdots \\ \theta_{k1} & \theta_{k2} & \cdots & \theta_{kn} \end{bmatrix} \\ J(\theta)&=-\frac{1}{m}\sum_{i=1}^m\sum_{j=1}^kI(y^{(i)}=j)\log(\frac{e^{\theta_j^Tx^{(i)}}}{\sum_{l=1}^Ke^{\theta_l^Tx}}) \\ I(y^{(i)}=j)&=\begin{cases} 1, &y^{(i)}=j \\ 0, &y^{(i)}\ne j \end{cases} \end{aligned} p(y=k∣x;θ)hθ​(x)⟹θJ(θ)I(y(i)=j)​=∑l=1K​eθlT​xeθkT​x​,     k=1,2,…,K=⎣⎢⎢⎡​p(y(i)=1∣x(i);θ)p(y(i)=2∣x(i);θ)…p(y(i)=k∣x(i);θ)​⎦⎥⎥⎤​=∑j=1k​eθjT​x(i)1​⋅⎣⎢⎢⎡​eθ1T​xeθ2T​x…eθkT​x​⎦⎥⎥⎤​=⎣⎢⎢⎡​θ11​θ21​⋯θk1​​θ12​θ22​⋯θk2​​⋯⋯⋯⋯​θ1n​θ2n​⋯θkn​​⎦⎥⎥⎤​=−m1​i=1∑m​j=1∑k​I(y(i)=j)log(∑l=1K​eθlT​xeθjT​x(i)​)={1,0,​y(i)=jy(i)​=j​​
在实际的工作中,如果是一个多分类的问题,我们可以将这个待求解的问题转换为二分类算法的延伸,即将多分类任务拆分为若干个二分类任务求解,具体的策略如下:
(1)One-Versus-One(ovo):一对一
将K个类别中的两两类别数据进行组合,然后使用组合后的数据训练出来一个模型,从而产生K(K-1)/2个分类器,将这些分类器的结果进行融合,并将分类器的预测结果使用多数投票的方式输出最终的预测结果值。

(2)One-Versus-All / One-Versus-the-Rest(ova/ovr): 一对多
在一对多模型训练中,不是两两类别的组合,而是将每一个类别作为正例,其它剩余的样例作为反例分别来训练K个模型。然后在预测的时候,如果在这K个模型中,只有一个模型输出为正例,那么最终的预测结果就是属于该分类器的这个类别。如果产生多个正例,那么则可以选择根据分类器的置信度作为指标,来选择置信度最大的分类器作为最终结果,常见置信度:精确度、召回率。

(3)Error Correcting Output codes(纠错码机制):多对多
将模型构建应用分为两个阶段:编码阶段和解码阶段。编码阶段中对K个类别中进行M次划分,每次划分将一部分数据分为正类,一部分数据分为反类,每次划分都构建出来一个模型,模型的结果是在空间中对于每个类别都定义了一个点。解码阶段中使用训练出来的模型对测试样例进行预测,将预测样本对应的点和类别之间的点求距离,选择距离最近的类别作为最终的预测类别。

3、多标签多分类算法

Multi-Label Machine Learning(MLL算法)是指预测模型中存在多个y值,具体分为两类不同情况:

  • 多个待预测的y值
  • 在分类模型中,一个样例可能存在多个不固定的类别

根据多标签业务问题的复杂性,可以将问题分为两大类:

  • 待预测值之间存在相互的依赖关系
  • 待预测值之间是不存在依赖关系的

对于这类问题的解决方案可以分为两大类:

  • 转换策略(Problem Transformation Methods)
  • 算法适应(Algorithm Adaptation)

(1)Problem Transformation Methods
该方法又叫做策略转换或者问题转换,是一种将多标签的分类问题转换成为单标签模型构造的问题,然后将模型合并的一种方法,主要有以下几种方式:

  • Binary Relevance(first-order)
  • Classifier Chains(high-order)
  • Calibrated Label Ranking(second-order)
Binary Relevance

Binary Relevance的核心思想是将多标签分类问题进行分解,将其转换为q个二元分类问题,其中每个二元分类器对应一个待预测的标签。
Binary Relevance方式的优点如下:

  • 实现方式简单,容易理解
  • 当y值之间不存在相关的依赖关系的时候,模型的效果不错

Binary Relevance方式的缺点如下:

  • 如果y之间存在相互的依赖关系,那么最终构建的模型的泛化能力比较弱
  • 需要构建q个二分类器,q为待预测的y值数量,当q比较大的时候,需要构建的模型会比较多
Classifier Chains

Classifier Chains的核心思想是将多标签分类问题进行分解,将其转换成为一个二元分类器链的形式,其中后链的二元分类器的构建是在前面分类器预测结果的基础上的。在模型构建的时候,首先将标签顺序进行shuffle打乱排序操作,然后按照从头到尾分别构建每个标签对应的模型。
Classifier Chains方法的优点如下:

  • 实现方式相对比较简单,容易理解
  • 考虑标签之间的依赖关系,最终模型的泛化能力相对于Binary Relevance方式构建的模型效果要好

缺点如下:

  • 很难找到一个比较适合的标签依赖关系
Calibrated Label Ranking

Calibrated Label Ranking的核心思想是将多标签分类问题进行分解,将其转换为标签的排序问题,最终的标签就是排序后最大的几个标签值。
Calibrated Label Ranking 方法的优点如下:

  • 考虑了标签两两组合的情况,最终的模型相对来讲泛化能力比较好

Calibrated Label Ranking 方法的缺点如下:

  • 只考虑两两标签的组合,没有考虑到标签与标签之间的所有依赖关系

(2)Algorithm Adaptation
Algorithm Adaptation又叫做算法适应性策略,是一种将现有的单标签的算法直接应用到多标签上的一种方式,主要有以下几种方式:

  • ML-kNN
  • ML-DT
ML-kNN

ML-kNN的思想:对于每一个实例来讲,先获取距离它最近的k个实例,然后使用这些实例的标签集合,通过最大后验概率(MAP)来判断这个实例的预测标签集合的值。
最大后验概率(MAP):其实就是在最大似然估计(MLE)中加入了这个要估计量的先验概率分布。
θ ^ M L E ( x ) = arg ⁡ max ⁡ θ f ( x ∣ θ ) θ ^ M A P ( x ) = arg ⁡ max ⁡ θ f ( x ∣ θ ) g ( θ ) ∫ θ f ( x ∣ θ ′ ) g ( θ ′ ) d θ ′ = arg ⁡ max ⁡ θ f ( x ∣ θ ) g ( θ ) \begin{aligned} \hat{\theta}_{MLE}(x)&=\arg\max_{\theta}f(x|\theta) \\ \hat{\theta}_{MAP}(x)&=\arg\max_{\theta}\frac{f(x|\theta)g(\theta)}{\int_{\theta}f(x|\theta')g(\theta')d\theta'} \\ &=\arg\max_{\theta}f(x|\theta)g(\theta) \end{aligned} θ^MLE​(x)θ^MAP​(x)​=argθmax​f(x∣θ)=argθmax​∫θ​f(x∣θ′)g(θ′)dθ′f(x∣θ)g(θ)​=argθmax​f(x∣θ)g(θ)​

ML-DT

ML-DT是使用决策树处理多标签内容,核心在于给予更细粒度的信息熵增益准则来构建这个决策树模型。
e n t r y = ∑ j = 1 q [ − p j log ⁡ p j − ( 1 − p j ) log ⁡ ( 1 − p j ) ] p j = ∑ i = 1 n ∣ ∣ y j ∈ Y i ∣ ∣ n \begin{aligned} entry&=\sum_{j=1}^q[-p_j\log p_j-(1-p_j)\log(1-p_j)] \\ p_j&=\frac{\sum_{i=1}^n||y_j\in Y_i||}{n} \end{aligned} entrypj​​=j=1∑q​[−pj​logpj​−(1−pj​)log(1−pj​)]=n∑i=1n​∣∣yj​∈Yi​∣∣​​

4、多标签多分类在Scikit-learn中的实现方式

在Scikit-learn中使用OneVsRestClassifier对多标签进行分类操作,内部其实是将多标签问题转换为多类别的区分问题。

单标签多分类及多标签多分类算法相关推荐

  1. 【深度学习】单标签多分类问题之新闻主题分类

    # -*- coding: utf-8 -*- """单标签多分类问题之新闻主题分类.ipynbAutomatically generated by Colaborato ...

  2. 多标签分类_多标签分类文献阅读(8)

    使用堆叠式自动编码器和极限学习机的级联进行多标签分类 摘要 本文介绍了用于多标签数据分类的一系列神经网络.两种类型的网络,即堆叠式自动编码器(SAE)和极限学习机(ELM)已被合并到建议的系统中.EL ...

  3. 二分类、多分类、多标签分类等

    分类一般分为三种情况:二分类.多分类和多标签分类.多标签分类比较直观的理解是,一个样本可以同时拥有几个类别标签,比如一张图片含有车子.房子等,那么它的标签可以是房子.车子等,一部电影的标签可以是动作. ...

  4. CRM系统中客户分类、客户标签的应用

    企业在选择CRM软件时,对于客户标签和客户分类的使用是不是觉得不太实用,甚至还不太能分清两者的区别,本篇文章将着重介绍客户分类和客户标签的区别和用途,希望帮助您理解两个概念,并在实际工作中充分发挥好它 ...

  5. KNN分类器、最近邻分类、KD树、KNN分类的最佳K值、基于半径的最近邻分类器、KNN多分类、KNN多标签分类、KNN多输出分类、KNN分类的优缺点

    KNN分类器.最近邻分类.KD树.KNN分类的最佳K值.基于半径的最近邻分类器.KNN多分类.KNN多标签分类.KNN多输出分类.KNN分类的优缺点 目录

  6. 分类家族:二分类、多分类、多标签分类、多输出分类

    分类家族:二分类.多分类.多标签分类.多输出分类 目录 分类家族:二分类.多分类.多标签分类.多输出分类 二分类

  7. js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题...

    js模拟form表单提交数据, js模拟a标签点击跳转,避开使用window.open引起来的浏览器阻止问题 js模拟form表单提交数据源码: /** * js模拟form表单提交 * @param ...

  8. 多标签文本分类数据集_标签感知的文档表示用于多标签文本分类(EMNLP 2019)...

    原文: Label-Specific Document Representation for Multi-Label Text Classification(EMNLP 2019) 多标签文本分类 摘要: ...

  9. 如何用softmax和sigmoid来做多类分类和多标签分类

    首先,说下多类分类和多标签分类的区别 多标签分类: 一个样本可以属于多个类别(或标签),不同类之间是有关联的,比如一个文本被被划分成"人物"和"体育人物"两个标 ...

  10. WordPress博客添加首页、文章页、页面、分类页、标签页的关键字和描述

    2019独角兽企业重金招聘Python工程师标准>>> 用编辑器打开主题的header.php,在<head>与</head>之间任意地方(一般加到</ ...

最新文章

  1. 按值传递按引用传递按地址传递
  2. VirtualBox虚拟机菜单选项隐藏后重现
  3. 计算机工程学院运动会方阵口号,关于校运会的方阵口号
  4. Photoshop的批处理(有海量的数码照片,想传上网的话就看下)
  5. 深入理解CSS权重(优先级)
  6. 如何快速优化 Linux 内核 UDP 收包效率? | CSDN 博文精选
  7. 微信小程序动画效果集合
  8. 将图像数据jpg,png等存储为npy/npz格式
  9. 仿山楂岛留言源码/公众号吸粉/短视频引流神器
  10. 广告召回率是什么意思_推荐策略中的“召回”
  11. 阅兵方阵(蓝桥杯2018真题)
  12. IDEA学生授权申请方式(免费)
  13. 我非英雄,广目无双,我本坏蛋,无限嚣张
  14. 走进tensorflow第六步——拟合一元二次函数
  15. int.prase和int.tryprase
  16. codewars练习(javascript)-2021/2/24
  17. API查q绑定带反查sgk带接口API文件源码
  18. 【《Real-Time Rendering 3rd》 提炼总结】(一) 全书知识点总览
  19. 对冲基金经理的告别信 (ZT)
  20. html的div双线边框,设置div边框

热门文章

  1. 虚拟化、大数据、云计算、物联网、移动互联网以及传统互联网之间的关系
  2. Protobuf在线解码工具推荐
  3. c语言用位运算编程2的n次方,C语言中使用位运算编写程序
  4. C++ 中左值和右值引用的讲解
  5. C#表达式目录树系列之1 -- 表达式目录树基本概念
  6. PTA目录树(使用字典树)
  7. Springboot + vue 上传图片 显示图片
  8. 机房收费系统—日结账单
  9. 第八周存款利息计算器
  10. MagicalCoder系列教程(四):功能模块-我的项目