机器学习之单标签多分类及多标签多分类

单标签二分类算法

Logistic算法

单标签多分类算法

Softmax算法

One-Versus-One(ovo):一对一

One-Versus-All / One-Versus-the-Rest(ova/ovr): 一对多

ovo和ovr的区别

Error Correcting Output codes(纠错码机制):多对多

多标签多分类算法

Problem Transformation Methods

Binary Relevance

Classifier Chains

Calibrated Label Ranking

Algorithm Adaptation

ML-kNN

ML-DT

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


单标签二分类算法

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

                                                       y=f(x),\ \ \ \ \ y\in\{-1, +1\}

Logistic算法

                                   \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}

单标签多分类算法

单标签多分类问题其实是指待预测的label标签只有一个,但是label标签的取值可能有多种情况。直白来讲就是每个实例的可能类别有K种(t_1, t_2, \dots, t_k ,k\ge3)。常见算法:Softmax、KNN等。

                                                                \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}

Softmax算法

                                                        \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}

在实际的工作中,如果是一个多分类的问题,我们可以将这个待求解的问题转换为二分类算法的延伸,即将多分类任务拆分为若干个二分类任务求解,具体的策略如下:

  • One-Versus-One(ovo):一对一
  • One-Versus-All / One-Versus-the-Rest(ova/ovr): 一对多
  • Error Correcting Output codes(纠错码机制):多对多

One-Versus-One(ovo):一对一

将K个类别中的两两类别数据进行组合,然后使用组合后的数据训练出来一个模型,从而产生K(K-1)/2个分类器,将这些分类器的结果进行融合,并将分类器的预测结果使用多数投票的方式输出最终的预测结果值。

One-Versus-All / One-Versus-the-Rest(ova/ovr): 一对多

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

ovo和ovr的区别

Error Correcting Output codes(纠错码机制):多对多

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

多标签多分类算法

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

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

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

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

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

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

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 方法的缺点如下:

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

Algorithm Adaptation

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

  • ML-kNN
  • ML-DT

ML-kNN

ML-kNN的思想:对于每一个实例来讲,先获取距离它最近的k个实例,然后使用这些实例的标签集合,通过最大后验概率(MAP)来判断这个实例的预测标签集合的值。

最大后验概率(MAP):其实就是在最大似然估计(MLE)中加入了这个要估计量的先验概率分布。

                                                        \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}

ML-DT

ML-DT是使用决策树处理多标签内容,核心在于给予更细粒度的信息熵增益准则来构建这个决策树模型。
                                                                  \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}

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

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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/454300.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ionic3 隐藏子页面tabs

看了几天ionic3 问题还挺多的,今天想把所有子页面tabs 给去掉,整了半天,发现app.Module 是可以配置的 修改 IonicModule.forRoot(MyApp) imports: [BrowserModule,// IonicModule.forRoot(MyApp),HttpModule,IonicModule.forRoot(…

cas单点登录-jdbc认证(三)

前言 本节的内容为JDBC认证,查找数据库进行验证,其中包括: 密码加密策略(无密码,简单加密,加盐处理)认证策略(jdbc)一、业务需求 不同的公司,需求业务需求或者…

get clone 出现 fatal: the remote end hung up unexpectedly5 MiB | 892.00 KiB/s 报错信息

fatal: the remote end hung up unexpectedly5 MiB | 892.00 KiB/s 解决方案 (亲测有效) 解决方案如下: git clone时加上 --depth1,比如: git clone https://gitee.com/songyitian/tctm.git --depth 1depth用于指定…

mybatis foreach map_重学Mybatis(六)-------输入映射(含面试题)

博主将会针对Java面试题写一组文章,包括J2ee,SQL,主流Web框架,中间件等面试过程中面试官经常问的问题,欢迎大家关注。一起学习,一起成长,文章底部有面试题。入参映射关键字说明图中paramenterTy…

php输出多余的空格或者空行

1&#xff0c;文件是否有bom。可以通过脚步检测&#xff0c;或者利用notepa打开&#xff0c;查看编码格式。 2. <?php echo something; ?> 或许是你的php标签外&#xff0c;有空格或者空行。一般的项目都是用框架&#xff0c;包含很多的文件&#xff0c;如果一个个文…

执行git命令时出现fatal: ‘origin‘ does not appear to be a git repository错误

执行git命令时出现fatal: ‘origin’ does not appear to be a git repository错误 在执行git pull origin master时出现&#xff1a;   fatal: ‘origin’ does not appear to be a git repository   致命提示:“origin”看起来不是一个git存储库   fatal: Could not r…

蒋涛作序盛赞Leo新作为“程序员职场实用百科全书”——《程序员羊皮卷》连载(1)

《程序员羊皮卷》当当购买地址&#xff1a;http://product.dangdang.com/product.aspx?product_id20691986 互动购买地址&#xff1a;http://www.china-pub.com/196049 程序员行业从外面看起来有很多绚丽的光环&#xff0c;这里有无数以程序致富的天才&#xff0c;世界首富比…

matlab ones函数_Matlab中相见恨晚的命令(持续更新)

知乎上有个“有哪些让人相见恨晚的Matlab命令”的话题&#xff0c;很多答主提供的命令确实很实用&#xff0c;为了更方便大家的学习&#xff0c;我就知乎上的答案和我自己想到的都综合整理成了一篇文章&#xff0c;把我觉得很实用的指令整理出来。知乎原答案链接dbstop if erro…

机器学习之特征工程

特征工程-概念 特征工程是一个面向十分广的概念&#xff0c;只要是在处理数据就可以认为是在做特征工程。个人理解&#xff0c;真正意义上的特征工程还是数据降维和数据升维的过程。 而前期对数据的处理过程&#xff1a; 需要哪些数据&#xff1f;数据如何存储&#xff1f;数…

ArcGIS AO开发高亮显示某些要素

参考代码1 ifeaturecursor pcur ifeatureclass.search(iqueryfilter pfilter); pfilter.whereclause strAddress; //输入查询条件&#xff0c;也就是你寸地址的字段名didian ifeature pfeat pcur.nextfeature();// 如果pCur多个要素&#xff0c;则可以考虑将其合并并一起高亮…

Oracle传输表空间介绍

传输表空间通过拷贝数据文件的方式&#xff0c;实现可跨平台的数据迁移&#xff0c;效率远超expdp/impdp, exp/imp等工具。还可以应用跨平台&数据库版本迁移表数据、归档历史数据和实现表空间级时间点数据恢复等场景。转载于:https://www.cnblogs.com/ilifeilong/p/7712654…

git push到GitHub的时候遇到! [rejected] master -> master (non-fast-forward)的问题

git push到GitHub的时候遇到! [rejected] master -> master (non-fast-forward)的问题 解决方法&#xff1a; 1、git pull origin master --allow-unrelated-histories //把远程仓库和本地同步&#xff0c;消除差异 2、重新add和commit相应文件 3、git push origin maste…

程序员考核的五大死因(上)

程序员作为企业开发力量的最核心资产&#xff0c;无疑得到公司从上至下的一致关注。开发是个智力密集型产业&#xff0c;程序开发的特点是&#xff0c;付出相同时间的情况下&#xff0c;两个开发者之间的产能会相差十几甚至几十倍。软件开发人员向来以“不容易考核、工作不容易…

du -sh 如何找到最大的文件夹_小白必看!手把手教你如何在linux上安装redis数据库...

首先我们要清楚redis是什么&#xff1f;redis是一种非关系型数据库&#xff0c;它与MySQL的这种关系型数据库不同&#xff0c;MySQL是将数据存储在磁盘中&#xff0c;而redis是储存在内存中。一般很多公司都是使用MySQLredis两种数据存储方式&#xff0c;这样可以提高性能&…

Linux删除特殊字符文件

1.删除带“-”的文件名的方法使用-- &#xff08;2个横杠&#xff09;#touch -- -%F-%T#rm -- -%F-%Trm: remove regular empty file -%F-%T?使用绝对路径并TAB特殊文件名#rm /root/-%F-%Trm: remove regular empty file /root/-%F-%T?2. 删除包含其它特殊字符的文件对于含有…

机器学习之线性回归 损失函数、代价函数、目标函数

损失函数&#xff08;Loss Function&#xff09;定义在单个样本上&#xff0c;算的是一个样本的误差。比如&#xff1a; 其中0-1损失函数: 感知器损失函数&#xff1a; 平方和损失函数&#xff1a; 绝对损失函数&#xff1a; 对数损失函数&#xff1a; 代价函数&#xff08;Cos…

bzoj4950(二分图最大匹配)

[Wf2017]Mission Improbable Time Limit: 1 Sec Memory Limit: 1024 MBSubmit: 105 Solved: 49[Submit][Status][Discuss]Description 那是春日里一个天气晴朗的好日子,你准备去见见你的老朋友Patrick,也是你之前的犯罪同伙。Patrick在编程竞赛上豪赌输掉了一大笔钱,所以他需…

git 远程仓库管理 分支创建、管理、查看、切换

作用&#xff1a; 区分生产环境代码以及开发环境代码研究新的功能或者攻关难题解决线上bug 特点&#xff1a; 项目开发中公用分支包括master、dev分支master是默认分支&#xff0c;用于发布&#xff0c;当需要发布时将dev分支合并到master分支分支dev是用于开发的分支&#…

大学生活应该这样度过之参加一个社团让自己溶入团队——《程序员羊皮卷》连载(11)

《程序员羊皮卷》当当购买地址&#xff1a;http://product.dangdang.com/product.aspx?product_id20691986 互动购买地址&#xff1a;http://www.china-pub.com/196049 1.3参加一个社团让自己溶入团队 有人曾经问我“学校里的什么活动和工作中的项目管理比较类似&#xff1f…

Hadoop Hive概念学习系列之hive的数据压缩(七)

Hive文件存储格式包括以下几类&#xff1a; 1、TEXTFILE 2、SEQUENCEFILE 3、RCFILE 4、ORCFILE 其中TEXTFILE为默认格式&#xff0c;建表时不指定默认为这个格式&#xff0c;导入数据时会直接把数据文件拷贝到hdfs上不进行处理。 SEQUENCEFILE&#xff0c;RCFILE&#xff0c;O…