我们已经知道,普通的logistic回归只能针对二分类(Binary Classification)问题,要想实现多个类别的分类,我们必须要改进logistic回归,让其适应多分类问题。

关于这种改进,有两种方式可以做到。

第一种方式是直接根据每个类别,都建立一个二分类器,带有这个类别的样本标记为1,带有其他类别的样本标记为0。假如我们有个类别,最后我们就得到了个针对不同标记的普通的logistic分类器。这种回归概率之和不为0,因为这种分类方法并不互斥;

第二种方式是修改logistic回归的损失函数,让其适应多分类问题。这个损失函数不再笼统地只考虑二分类非1就0的损失,而是具体考虑每个样本标记的损失。这种方法叫做softmax回归,即logistic回归的多分类版本。

我们首先简单介绍第一种方式。

对于二分类问题,我们只需要一个分类器即可,但是对于多分类问题,我们需要多个分类器才行。假如给定数据集,它们的标记,即这些样本有个不同的类别。

我们挑选出标记为的样本,将挑选出来的带有标记的样本的标记置为1,将剩下的不带有标记的样本的标记置为0。然后就用这些数据训练出一个分类器,我们得到(表示针对标记的logistic分类函数)。

按照上面的步骤,我们可以得到个不同的分类器。针对一个测试样本,我们需要找到这个分类函数输出值最大的那一个,即为测试样本的标记:

下面我们介绍softmax回归。

对于有个标记的分类问题,分类函数是下面这样:

在这里,我们将上式的所有的组合起来,用矩阵来表示,即:

这时候,softmax回归算法的代价函数如下所示(其中):

很明显,上述公式是logistic回归损失函数的推广。

我们可以把logistic回归的损失函数改为如下形式:

但是,需要特别注意的是,对于,softmax回归和logistic回归的计算方式是不同的。

对于选择softmax分类器还是个logistic分类器,取决于所有类别之间是否互斥。所有类别之间明显互斥用softmax分类器,所有类别之间不互斥有交叉的情况下最好用个logistic分类器。

logic多分类的两种类别相关推荐

  1. ML之分类预测之ElasticNet:利用ElasticNet回归对二分类数据集构建二分类器(DIY交叉验证+分类的两种度量PK)

    ML之分类预测之ElasticNet:利用ElasticNet回归对二分类数据集构建二分类器(DIY交叉验证+分类的两种度量PK) 目录 输出结果 设计思路 核心代码 输出结果 设计思路 核心代码 # ...

  2. php 无限极分销,PHP实现无限极分类的两种方式

    无限极分类说简单点就是一个类可以分成一个分子类,然后一个子类又可以分另一个子类这样无限分下去,就是好象windows可以新建一个文件夹,然后在这个文件夹里又可以建一个文件夹,PHP要实现无限极分类有两 ...

  3. php 递归实现无限极分类和排序_无限极分类的两种方式,递归和引用

    说到无限极分类,比较常见的做法是在建表的时候,增加一个parnet_id字段用来区别自己所属的分类(是顶级分类还是子分类) 由于展示数据的时候,需要表达出这种所属关系,所以必然要在读取数据的时候进行一 ...

  4. 设计模式简介及GoF 23种模式的分类(两种分类方式)

    一.设计模式(Design Patterns)简介: 设计模式代表了最佳实践,通常被有经验的面向对象的开发人员使用. 设计模式是程序猿在软件开发过程中面临的一般问题的解决方案. 设计模式是一套反复使用 ...

  5. PHP+MySQL 无限级分类的两种实现方案

    方案一: 表结构: id int primary key auto_increment; name varchar(40); pid int default 0; #父类id,默认值为0 顶级分类的 ...

  6. php无限极分类并添加指定值,PHP实现无限极分类的两种方式,递归和引用

    function generateTree($array){//第一步 构造数据 $items = array();foreach($array as $value){$items[$value['i ...

  7. 大数据 机器学习 分类算法_13种用于数据科学的机器学习分类算法及其代码

    大数据 机器学习 分类算法 The roundup of most common classification algorithms along with their python and r cod ...

  8. python多分类混淆矩阵代码_深度学习自学记录(3)——两种多分类混淆矩阵的Python实现(含代码)...

    深度学习自学记录(3)--两种多分类混淆矩阵的Python实现(含代码),矩阵,样本,模型,类别,真实 深度学习自学记录(3)--两种多分类混淆矩阵的Python实现(含代码) 深度学习自学记录(3) ...

  9. pytorch 语义分割loss_关于pytorch语义分割二分类问题的两种做法

    形式1:输出为单通道 分析 即网络的输出 output 为 [batch_size, 1, height, width] 形状.其中 batch_szie 为批量大小,1 表示输出一个通道,heigh ...

最新文章

  1. linux 加密库 libsodium 安装
  2. oracle 打印SQL
  3. 宝宝树携手网易云信打造母婴咨询沟通新体验
  4. 蛮力法在求解“最近对”问题中的应用(JAVA)
  5. 使用AsyncEnumerator简化异步操作
  6. 《剑指offer》第二十八题(对称的二叉树)
  7. python上机实验报告读取文件_Python程序设计实验八:文件
  8. USB端口在Mac上不起作用?这是修复方法
  9. [初识python]使用python给单词表加音标
  10. 销售订单创建BAPI实例(刘欣)
  11. ROS2安装时出现Connection failed [IP: 91.189.91.39 80]
  12. Smart-doc的脚本生成在线文档(精简官方文档描述)
  13. Android听筒模式和免提模式的切换
  14. 2d游戏地图制作html5,如何通过 Cocos2d-html5 使用砖块地图编辑器
  15. 自定义控件 仿微信朋友圈文字展开全文功能
  16. ResourceUtils
  17. 解决Windows10 无线显示屏连接失败问题
  18. CStdioFile,CFile类,文本文件处理(MFC学习园地)
  19. 用SETFOS模拟Tadf OLED和超荧光OLED
  20. R语言入门基础——基础操作篇(极为基础的指令代码)

热门文章

  1. Python的filter方法实现筛选功能
  2. 2019 Python100道 面试 题,你会几道?
  3. php mysql建表_mysql建表测试
  4. python多态的概念_python中的多态
  5. python调用exe程序 传入参数_关于使用c#调用python脚本文件,脚本文件需要传递参数...
  6. MySQL如何存储Emoji表情,UTF-8和UTF-8MB4字符编码有何区别
  7. python数值运算符也叫内置运算符_Python全栈工程师(数值类型、运算符)
  8. vba根据内容调整word表格_【邮件合并】不会VBA也能批量生成Word封面
  9. php实现队列上传,php实现队列
  10. linux加载虚拟sriov网卡,如何配置BroadCOM网卡的SR-IOV功能