机器学习---逻辑回归(二)(Machine Learning Logistic Regression II)

《机器学习---逻辑回归(一)(Machine Learning Logistic Regression I)》一文中,我们讨论了如何用逻辑回归解决二分类问题以及逻辑回归算法的本质。现在来看一下多分类的情况。

现实中相对于二分类问题,我们更常遇到的是多分类问题。多分类问题如何求解呢?有两种方式。一种是方式是修改原有模型,另一种方式是将多分类问题拆分成一个个二分类问题解决。



先来看一下第一种方式:修改原有模型。即:把二分类逻辑回归模型变为多分类逻辑回归模型。

二分类逻辑回归称为binary logistic regression,其目标y只有两种可能的类别,符合伯努利分布;而多分类逻辑回归称为multinomial logistic regression,其目标y有超过两种可能的类别,符合多项分布。)

在原有的二分类逻辑回归模型中,目标y只有两种类别。并且如果样本 P(y=1 | x) > P(y=0 | x),就表示样本属于 y=1这一类别的概率更高。现在我们要把目标y扩展为K种类别(K=0,1,2,...,k-1),我们想要知道给定特征x,其目标属于每一种类别的概率分别是多少,这样我们就能判断样本最有可能属于哪个类别。并且这些概率相加总和应该为1,即:。那么我们就应该从这些目标类别中找一个类别作为baseline,然后计算其他类别相对于这个baseline的对数几率。

我们把类别0作为baseline,定为负类,其余K-1类中的一类分别定为正类。那么一共可以进行k-1次二分类逻辑回归,按照其公式,将对数几率写成线性组合的形式:

.................(1)

从式子(1)我们可以得知:

.................(2)

因为给定特征x,其目标属于每一种类别的概率相加总和为1,因此:

然后可以得到:

.................(3)

将式子(3)代入式子(2):

.................(4)

可以看出,当K=2时,上式变为逻辑函数的形式:

因此,二分类逻辑回归是多分类逻辑回归的特例,多分类逻辑回归是二分类逻辑回归的扩展。

又因为当K=2时,,因此可以得出:

将这一结果代入式子(4),转换整合可以得到:

(其中c表示当前类别,k表示总类别数,即:类别一共K类,从0到k-1)

此条件概率公式对应的函数称为softmax函数(softmax function)。因此,其对应的模型也被称为softmax回归模型。

softmax函数:

     for j = 1, 2,…, K.

因为我们想要得到样本目标属于各个类别的概率,因此我们需要输出一个k维的向量来表示这k个估计的概率值,且此向量元素相加之和为1。所以假设函数的形式如下:

总结来说就是:多分类逻辑回归模型有多个输出,输出的个数与类别个数相同,输出的值为目标属于各个类别的概率,概率最高的那个类别就是目标最有可能的类别。

接下来需要求解参数w。

因为目标y是多个分类标签,因此我们假设y服从多项分布,那么目标y的概率质量函数就是:,将其写成条件概率表达式就是:

(注:1{y=c}表示当y属于类别c时,值为1,否则为0)

假设有m个独立样本,那么m个y之间也是相互独立的。因此,目标y的联合概率为:

然后还是用极大似然估计法,对似然函数取自然对数及负号,推导出的损失函数如下:

这个损失函数的原理是:对于样本(xi,yi),它的正确分类类别是c,那么如果它计算出的目标属于类别c的分类概率的值为1,则说明分类完全正确,这种情况下对损失函数没有贡献(ln1=0);而如果分类错误,则它计算出的目标属于类别c的的分类概率将是一个小于1的值,这种情况下将对损失函数有所贡献。

对比二分类逻辑回归的损失函数:。是不是很相似?只不过多分类逻辑回归是用的所有k项的累和,而二分类逻辑回归只有0和1类的累和。

继续把损失函数L展开:

现在损失函数看起来还是很复杂,但是其实只有yi=c这一项有数值(也就是样本目标是正确类别的情况),其余项都为0。因此,我们可以继续简化损失函数。

简化后的损失函数为:

现在用wt对损失函数L求偏导(wt是w0~wk-1中的一个,是(n+1)*1的向量)。这里分为两种情况:

1. t=c:

2. t≠c:

两种情况综合在一起,损失函数L的梯度就是:

       for t = 0, 1,…, k-1.

为简便起见,把参数w记成(n+1)*k的矩阵,把yi记成1*k的向量:

  (其中n表示特征数量,k表示类别数量)

这样梯度可以写成:

批量梯度下降法的参数更新公式为:



现在让我们来思考几个问题:

1. softmax函数是怎么得来的?(摘自:https://blog.csdn.net/acdreamers/article/details/44663305

因为目标y是多个分类标签,因此我们假设y服从多项分布,那么目标y的概率质量函数就是:,将其写成条件概率表达式就是:

k个类别的概率用k个变量…,表示。这个k变量和为1,即满足:

可以用前k-1个变量来表示,即:

和sigmoid函数一样,softmax函数也是从证明目标的联合分布属于指数分布族而得来的。

先引入,它是一个维的向量,那么:

应用于一般线性模型,必然是属于个类中的一种。用表示为真,同样当为假时,有,那么进一步得到y的联合概率为:

对比指数分布族的一般表达式,可以得到:

既然:

那么最终可以得到:

2. 为什么softmax函数上的点可以用来表示分类概率?

因为wx的值域从负无穷大到正无穷大,我们要想让softmax函数表示概率,那么就需要把wx的值域先变成正数,再归一化到(0,1)区间。指数函数正好能把wx的值域变成正数,且指数函数是严格递增的。把wx映射到指数函数上后,再把其除以它们的累和,就相当于将每个分类概率进行了归一化,使得所有分类概率之和为 1。

softmax函数的本质就是将一个K维的任意实数向量压缩(映射)成另一个K维的实数向量,使得向量中的每个元素取值都介于(0,1)之间,并且所有元素的和为1。



再来看一下第二种方式:将多分类问题拆分成二分类问题。即:将多分类问题拆分成一个个二分类问题,然后为每个拆出的二分类任务训练出一个二分类逻辑回归模型,然后对这些模型的预测结果进行集成以获得最终的多分类结果。这里面的关键是如何对问题进行拆分,即拆分的策略。

下面是三种拆分策略:

1. 一对其余(One vs. Rest,简称OvR)

每次将一个类别作为正类,其余所有类作为反类,训练出N个二分类逻辑回归模型。新样本提交给所有二分类逻辑回归模型,若仅有一个模型预测为正类,则该类的类别为最终结果。若有多个分类器标记为正类,则考虑预置置信度。

2. 一对一(One vs. One,简称OvO)

每次将N个类别两两配对,其中一个类别作为正类,另一个作为反类,训练出N(N-1)/2个二分类逻辑回归模型。新样本同时提交给所有二分类逻辑回归模型,得到N(N-1)/2个分类结果,预测最多的类别为最终结果。

3. 多对多(Many vs. Many,简称MvM)

每次将若干个类别作为正类,其他作为反类。MvM的正、反类构造必须有特殊的设计,不能随意选取,最常用的技术是“纠错输出码“Error Correcting Output Codes(ECOC)。(ECOC编码对分类器错误有一定的容忍修正能力,即使某个分类器预测出错,也不一定会影响结果)

ECOC:

编码:将N个类别做M次划分,每次将一部分作为正例,其余作为反例,训练出M个二分类模型。

解码:新样本提交给M个二分类模型,得到M个结果,组成一个编码,将其和每个类别各自的编码进行比较,距离最小的类别为最终结果。



OvR和OvO这两种拆分策略比较简单且使用较多,因此下面详细介绍一下这两种拆分策略。

1. OvR:

如下图所示,假如目标一共有4个类别。每次将某一类分为正类,其余三类分为负类,进行二分类任务,新样本提交给模型,得到新样本分别属于正负两类的概率值。像这样一共进行4次二分类任务,最后得到新样本分别属于这四类的概率,最大概率对应哪一类,就将这点估计为哪一类。

OvR有个问题就是如果数据类别很多,那么每次二分类问题中,正类和负类的数量差别就很大,数据不平衡,这样会影响分类效果。

2. OvO:

如下图所示,假如目标一共有4个类别。每次将某一类分为正类,另一类分为负类,进行二分类任务,新样本提交给模型,估计出新样本属于正类还是负类。像这样一共进行次二分类任务,最后投票决定新样本属于哪个类别(投票数最多的类别)。

OvO的优点是虽然需要进行的分类任务增多了,但是每次只需要进行两个类别的比较,也就是说单次分类的数量减少了,因此一般不会出现数据不平衡的情况。缺点是分类任务增多,且每次需要记住分类结果,时间复杂度和空间复杂度都比较高。

OvR和OvO对比总结:

OvR只需训练N个分类器,而OvO需训练N(N - 1)/2个分类器, 因此,OvO的存储开销和测试时间开销通常比OvR更大。但在训练时,OvR的每个分类器均使用全部训练样本,而OvO的每个分类器仅用到两个类别的样本,因此,在类别很多时,OvO的训练时间通常比OvR小。至于预测性能,则取决于具体的数据分布,在多数情形下两者差不多。

综上:

  • OvR的优点是,分类器个数少,存储开销和测试时间比OvO少。缺点是,类别很多时,训练时间长,且有数据不平衡带来的影响。
  • OvO的优点是,在类别很多时,训练时间要比OvR少。缺点是,分类器个数多。


方式一(softmax)和方式二(多个logistic回归)有什么区别呢?

  •   softmax回归进行的是单个多分类任务,类与类之间是互斥的,即一个输入只能被归为一类
  •   多个logistic回归进行的是多个二分类任务,类与类之间并不是互斥的

总结:如果类别之间是互斥的,那么用softmax回归会比较合适;如果类别之间不是互斥的(可以同时属于不同类别,比如"苹果"可以既属于"水果"类也属于"3C"类),同时类别较少时,用OVR比较合适;如果类别较多,或者你需要看任意两类之间的区分,那么就用OVO。

原文地址:https://www.cnblogs.com/HuZihu/p/10960677.html

时间: 2024-12-25 05:22:01

机器学习---逻辑回归(二)(Machine Learning Logistic Regression II)的相关文章

逻辑回归的分布式实现 [Logistic Regression / Machine Learning / Spark ]

1- 问题提出 2- 逻辑回归 3- 理论推导 4- Python/Spark实现 1 # -*- coding: utf-8 -*- 2 from pyspark import SparkContext 3 from math import * 4 5 theta = [0, 0, 0] #初始theta值 6 alpha = 0.001 #学习速率 7 8 def inner(x, y): 9 return sum([i*j for i,j in zip(x,y)]) 10 11 def f

机器学习—逻辑回归理论简介

下面是转载的内容,主要是介绍逻辑回归的理论知识,先总结一下自己看完的心得 简单来说线性回归就是直接将特征值和其对应的概率进行相乘得到一个结果,逻辑回归则是这样的结果上加上一个逻辑函数 这里选用的就是Sigmoid函数,在坐标尺度很大的情况下类似于阶跃函数 在确认特征对应的权重值也就是回归系数的时候 最常用的方法是最大似然法,EM参数估计,这个是在一阶导数能够有解的前提下 如果一阶导数无法求得解析值,那么一般选取梯度上升法,通过有限次的迭代过程,结合代价函数更新回归系数至收敛 //////////

2. Supervised Learning - Logistic Regression

Logistic Regression 逻辑回归解决问题类型 二分类问题(classification) Notation 给定一个样本集T 样本总数为m 每个样本记做 其中为输入变量,也称为特征变量:为我们要预测的输出变量,也称为目标变量 表示第个样本. Hypothesis的作用是,对于给定的输入变量,根据选择的参数计算输出变量=1的可能性 也就是 最终,当大于等于0.5时,预测y=1,当小于0.5时,预测y=0 假设是一下形式: 其中称为Logistic函数或者sigmoid函数,函数图象

机器学习系统设计(Building Machine Learning Systems with Python)- Willi Richert Luis Pedro Coelho

机器学习系统设计(Building Machine Learning Systems with Python)- Willi Richert Luis Pedro Coelho 总述 本书是 2014 的,看完以后才发现有第二版的更新,2016.建议阅读最新版,有能力的建议阅读英文版,中文翻译有些地方比较别扭(但英文版的书确实是有些贵). 我读书的目的:泛读主要是想窥视他人思考的方式. 作者写书的目标:面向初学者,但有时间看看也不错.作者说"我希望它能激发你的好奇心,并足以让你保持渴望,不断探索

Machine Learning—Linear Regression

印象笔记同步分享:Machine Learning-Linear Regression

机器学习-逻辑回归与线性回归

logistic回归与线性回归实际上有很多相同之处,最大的区别就在于他们的因变量不同,其他的基本都差不多,正是因为如此,这两种回归可以归于同一个家族,即广义线性模型(generalized linear model).这一家族中的模型形式基本上都差不多,不同的就是因变量不同,如果是连续的,就是多重线性回归,如果是二项分布,就是logistic回归.logistic回归的因变量可以是二分类的,也可以是多分类的,但是二分类的更为常用,也更加容易解释.所以实际中最为常用的就是二分类的logistic回

机器学习逻辑回归算法推导

1.引自https://www.cnblogs.com/bnuvincent/p/9695666.html 2. 基本原理 Logistic Regression和Linear Regression的原理是相似的,按照我自己的理解,可以简单的描述为这样的过程: (1)找一个合适的预测函数(Andrew Ng的公开课中称为hypothesis),一般表示为h函数,该函数就是我们需要找的分类函数,它用来预测输入数据的判断结果.这个过程时非常关键的,需要对数据有一定的了解或分析,知道或者猜测预测函数的

机器学习-逻辑回归

(整理的简单,公式也没使用公式编辑器.) 对于数据集D={(x1,y1),(x2,y2),...,{xn,yn}} ,而xi= {xi1,xi2,...,xim} 代表m维 . 在线性回归中,我们想学习一个线性的函数 f(x) = w1*x1+w2*x2+w3*x3+...+wm*xm+b . 向量形式 f(X) = Wt*X +b  其中Wt 是W 向量的转置.其可能值范围是(-oo,+oo). 对于二分类任务,其类别标记为y={0,1},  需要将范围取到(0,1),就使用sigmoid函数

吴恩达《深度学习》-课后测验-第三门课 结构化机器学习项目(Structuring Machine Learning Projects)-Week2 Autonomous driving (case study) (case study)( 自动驾驶 (案例研究))

Week2 Autonomous driving (case study) (case study)( 自动驾驶 (案例研究)) \1. To help you practice strategies for machine learning, in this week we'll present another scenario and ask how you would act. We think this "simulator" of working in a machine l