上期文章:「05」回归的诱惑:一文读懂线性回归 中 , 咱们介绍了线性回归的原理,组成和优缺点,并探讨了回归的本质含义。在这一期,咱们将从回归开始,引出一个机器学习中最重要的任务——分类。git
还记得咱们上一节的课后题吗?其实答案很简单,任意一条线均可以把任意的数据点分为不一样的类,也就是有无数个直线方程存在,这种解并无意义。这就引出了咱们的主题——分类。对于分类问题来讲,不一样的数据必须分为不一样的类别,这个类别,在机器学习中也叫做标签(label)。只有知道了类别,才能够真正进行分类学习,这叫作监督学习。算法
所以,线性回归的使用场景是回归,而咱们这一期的主题——逻辑回归则是用于分类。关于分类和回归,该如何理解它们的区别和联系呢?往下看。数据库
分类和回归是两个相关联的概念,咱们在上一篇文章讲过,之前的一位生物学家高尔顿在研究父母和孩子身高的遗传关系时,发现了一个直线方程,经过这个方程,他几乎准确地拟合了被调查父母的平均身高 x 和 子女平均身高 y 以前的关系:安全
这个方程是什么意思呢?它表明父母身高每增长1个单位, 其成年子女的平均身高只增长0.516个单位,反映了一种“衰退”效应(“回归”到正常人平均身高)。虽然以后的x与 y变量之间并不老是具备“衰退”(回归)关系,可是为了记念高尔顿这位伟大的统计学家,“回归”这一名称就保留了下来。网络
咱们能够把回归理解为关系的找寻:回归分析是经过规定因变量和自变量来肯定变量之间的因果关系,创建回归模型,并根据实测数据来求解模型的各个参数,而后评价回归模型是否可以很好的拟合实测数据,若是可以很好的拟合,则能够根据自变量做进一步预测,好比咱们提到的广告费用与产品销售额的关系。app
所谓分类,简单来讲,就是根据文本的特征或属性,划分到已有的类别中。从功能上看,分类问题就是预测数据所属的类别,好比垃圾邮件检测、客户流失预测、情感分析、犬种检测等。分类算法的基本功能是作预测。咱们已知某个实体的具体特征,而后想判断这个实体具体属于哪一类,或者根据一些已知条件来估计感兴趣的参数。好比:咱们已知某我的存款金额是10000元,这我的没有结婚,而且有一辆车,没有固定住房,而后咱们估计判断这我的是否会涉嫌信用欺诈问题。这就是最典型的分类问题,预测的结果为离散值,当预测结果为连续值时,分类算法就退化为以前所说的的回归模型。机器学习
咱们先来看看什么是二分类:函数
给定不一样种类数据点,二分类就是找到一条线,使得不一样的数据点位于这条线的两侧。通常来讲,只存在一条惟一的直线方程,也就是y = f(x),让分类点之间的偏差距离最小,比较直观的解法就是SVM,之后会谈到。这里咱们用下面这张图举个例子:学习
能够看到,图中的2类数据分别是蓝点和绿点。已经知道了这条直线方程,那如何把新出现的数据点根据数据类别的不一样划分红不一样的类?只须要判断它是在直线的上面(紫色点)仍是下面(绿色点)就好了。优化
那么,若是存在两种以上的数据且混合分布在一块儿,要怎么划分呢?一条直线显然已经没法划分了,须要多个直线/平面,甚至是曲线进行划分,这个时候的参数方程就不是直线方程了,而是更复杂的屡次项方程。不过咱们也能够用不少条直线来近似的拟合这种曲线。这里也涉及到机器学习的灵魂拷问:过拟合,在后面的一期文章,咱们会单独聊聊它,这里先按下不表。
因此,多分类问题其实能够当作二分类的扩展版,一样待预测的label标签只有一个,可是label标签的取值可能有多种状况;直白来说就是每一个实例的可能类别有K种(t1 ,t2 ,...tk ,k≥3):
上面的解释只是一个直观上的理解,如今给出严格的定义:分类,是在一群已经知道类别标签的样本中,训练一种分类器,让其可以对某种未知的样本进行分类。
分类算法属于一种有监督的学习,而分类过程就是创建一种分类模型来描述预约的数据集,经过分析由属性描述的数据库元组来构造模型。分类的目的就是使用分类对新的数据集进行划分,其主要涉及分类规则的准确性、过拟合、矛盾划分的取舍等。分类算法分类效果如图所示。
分类和回归是现在机器学习中两个不一样的任务,而属于分类算法的逻辑回归,其命名有必定的历史缘由。这个方法最先由统计学家David Cox在他1958年的论文《二元序列中的回归分析》(The regression analysis of binary sequences)中提出,当时人们对于回归与分类的定义与今天有必定区别,只是将“回归”这一名字沿用了。实际上,将逻辑回归的公式进行整理,咱们能够获得
因此,回归算法,有时候是相对分类算法而言的,与咱们想要预测的目标变量y的值类型有关。若是目标变量y是分类型变量,如预测用户的性别(男、女),预测月季花的颜色(红、白、黄……),预测是否患有肺癌(是、否),那咱们就须要用分类算法去拟合训练数据并作出预测;若是y是连续型变量,如预测用户的收入(4千,2万,10万……),预测员工的通勤距离(500m,1km,2万里……),预测患肺癌的几率(1%,50%,99%……),咱们则须要用回归模型。
聪明的你必定会发现,有时分类问题也能够转化为回归问题,例如刚刚举例的肺癌预测,咱们能够用回归模型先预测出患肺癌的几率,而后再给定一个阈值,例如50%,几率值在50%如下的人划为没有肺癌,50%以上则认为患有肺癌。
咱们能够这么理解:
分类问题预测数据所属的类别:好比垃圾邮件检测、客户流失预测、情感分析、犬种检测等。
回归问题根据先前观察到的数据预测数值,好比销量预测,房价预测、股价预测、身高体重预测等。
分类算法中,待分析的数据是一个一个处理的,分类的过程,就像给数据贴标签的过程,来一个数据,我放到模型里,而后贴个标签。聚类算法中,待分析的数据同时处理,来一堆数据过来,同时给分红几小堆。所以,数据分类算法和回归算法的最大区别是时效性问题。在已有数据模型的条件下,数据分类的效率每每比数据聚类的效率要高不少,由于对于分类来讲,一次只是一个对象被处理,而对于回归结果来讲,每当加入一个新的分析对象,整个直线方程都有可能发生改变,所以颇有必要从新对全部的待分析对象进行计算处理。
Logistic 回归是机器学习从统计学领域借鉴过来的另外一种技术。它是二分类问题的首选方法。像线性回归同样,Logistic 回归的目的也是找到每一个输入变量的权重系数值。但不一样的是,Logistic 回归的输出预测结果是经过一个叫做「logistic 函数」的非线性函数变换而来的。
逻辑回归(Logistic Regression)就是一种分类分析,它有正向类和负向类,即:y ∈ {0, 1},其中 0 表明负向类,1 表明正向类。当面对一个分类问题:y = 0 或 1,可能出现的状况是: y > 1 或 < 0,就没法进行结果的概括。逻辑(logistic) 函数的形状看起来像一个大的「S」,因此也叫S回归。
咱们知道,线性回归模型产生的预测值
是一个任意实值,因而,咱们需将实值z 转换为0到1之间的值. 最理想的是“单位阶跃函数” (unit-step function)。假设咱们有一个Z做为已经计算出来的实值,好比5,那么在通过S函数的映射后,它就是变成一个[0, 1]区间的小数,好比0.75,根据这个数咱们能够判断最终预测值y的类别
也就是将分类的阈值假设为0.5,若是Z大于0.5,就是正类,反之则是负类。这里0.75 > 5,因此输出1。固然,阈值并不是固定,能够设置为任一合理的数值。
可是,从上面的图能够看到,单位阶跃函数不连续,所以直接使用的效果并很差。咱们可否找到能在必定程度上近似单位阶跃函数的"替代函数" (surrogate function) ,并但愿它单调可微呢?
答案是能够,这就是逻辑函数(logistic function) 。逻辑函数的公式以下:
它会把任何值转换至 0-1 的区间内,这十分有用,由于和阶跃函数同样,咱们能够把任何一个阈值应用于logistic 函数的输出,从而获得 0-1 区间内的小数值(例如,将阈值设置为 0.5,则若是函数值小于 0.5,则输出值为 1),并预测类别的值。获得的结果能够知足:0 <= y <= 1,也能够说逻辑回归是一种特殊的分类算法。
逻辑回归是当前业界比较经常使用的机器学习方法,它与多元线性回归同属一个家族,即广义线性模型。因为模型的学习方式,Logistic 回归的预测结果也能够用做给定数据实例属于类 0 或类 1 的几率,这对于须要为预测结果提供更多理论依据的问题很是有用。与线性回归相似,当删除与输出变量无关以及彼此之间很是类似(相关)的属性后,Logistic 回归的效果更好。该模型学习速度快,对二分类问题十分有效。
全部的分类问题都是一个优化问题,本质上是一个极小化问题,只是模型的代价函数构造不一样,本质上分类问题能够理解为一种离散的回归。
1. 逻辑回归与线性回归的关系
简单来讲,多元线性回归是直接将特征值和其对应的几率进行相乘获得一个结果,逻辑回归则是在这样的结果上加上一个逻辑函数。如下图为例,不一样的类别(X和O)分布在水平的位置。若是直接使用线性回归作拟合,学习到的直线只能保证各个点到线上的偏差最小,却没法使两种数据分到不一样的一侧。
逻辑回归处理的是分类问题,线性回归处理的是回归问题,这是二者的最本质的区别。逻辑回归中,因变量取值是一个二元分布,模型学习得出的是
即给定自变量和超参数后,获得因变量的指望,并基于此指望来处理预测分类问题。而线性回归中实际上求解的是
的一个近似,其中表明偏差项,咱们使用这个近似项来处理回归问题。在关于逻辑回归的讨论中,咱们均认为y是因变量,而非,这便引出逻辑回归与线性回归最大的区别,即逻辑回归中的因变量为离散的,而线性回归中的因变量是连续的。
换句话说,逻辑回归模型就是在拟合
咱们说过,线性回归是直接将特征值和其对应的几率进行相乘获得一个结果,逻辑回归则是在这样的结果上加上一个逻辑函数。在自变量x与超参数θ肯定的状况下,逻辑回归能够看做广义线性模型(Generalized Linear Models)在因变量y服从二元分布时的一个特殊状况,而使用最小二乘法求解线性回归时,咱们认为因变量y服从正态分布。
固然,逻辑回归和线性回归也不乏相同之处,首先咱们能够认为两者都使用了极大似然估计来对训练样本进行建模。线性回归使用最小二乘法,实际上就是在自变量x与超参数θ肯定,因变量y服从正态分布的假设下,使用极大似然估计的一个化简;而逻辑回归中经过对似然函数
的学习,获得最佳参数θ。另外,两者在求解超参数的过程当中,均可以使用梯度降低的方法,这也是监督学习中一个常见的类似之处。
有接触过深度学习基础的同窗知道,深度神经网络是由N层具备激活函数的隐藏单元组成的,在这里咱们能够把逻辑回归看作一个1层的浅层神经网络(这个引伸自Lecun的调侃说法,严谨的同窗请忽略~),激活函数就是Sigmoid函数,中间是线性映射,只学习一个隐藏层的参数。
logistic regression,在英语的术语里准确而简洁,可是翻译成中文则有多种译法,例如:逻辑回归(比较常见),对数概率回归(周志华),逻辑斯谛回归(Understanding Machine Learning:From Theory to Algorithms中译本)。之因此成为逻辑回归,是由于Logit这个词。
对数概率函数,又叫作"Sigmoid 函数",它将z 值转化为一个接近0 或1 的υ 值而且其输出值在z 一0 附近变化很陡。把咱们前面提到过的分类、线性回归以及逻辑函数结合起来,就能获得以下公式:
这就是逻辑回归的最终形态,也就是咱们这篇文章的核心——逻辑回归公式。
如今,让咱们用高中数学作一个简单的变形,将公式两边同时取对数
由于在定义上,咱们将 y 视为 x 为正例的几率,则1-y 就是数据点x为反例的几率(基本的几率论知识)。二者的比值称为概率(odds),统计上指该事件发生与不发生的几率比值,若事件发生的几率为 p。则对数概率:
将y视为类后验几率估计,重写公式有:
也就是说,输出 Y=1 的对数概率是由输入 x 的线性函数表示的模型,这就是逻辑回归模型。当
若是把一个事件的概率(odds)定义为该事件发生的几率与该事件不发生的几率的比值
那么逻辑回归能够看做是对于“y=1|x”这一事件的对数概率,借助逻辑函数进行的线性回归,因而“逻辑回归”这一称谓也就延续了下来。
对于二分类问题,
好比,样本Xi属于正例,则应有
显然,只需对
咱们思考一下,使用对数概率的意义在哪?经过上述推导咱们能够看到 Logistic 回归其实是使用线性回归模型的预测值逼近分类任务真实标记的对数概率,其优势有:
1)对模型中自变量多重共线性较为敏感,例如两个高度相关自变量同时放入模型,可能致使较弱的一个自变量回归符号不符合预期,符号被扭转。须要利用因子分析或者变量聚类分析等手段来选择表明性的自变量,以减小候选变量之间的相关性;
2)预测结果呈“S”型,所以从log(odds)向几率转化的过程是非线性的,在两端随着log(odds)值的变化,几率变化很小,边际值过小,slope过小,而中间几率的变化很大,很敏感。 致使不少区间的变量变化对目标几率的影响没有区分度,没法肯定阈值。
假如支付宝的算法团队想要构建一个模型来决定是否经过用户的花呗提额申请,它将预测客户的还款是否会“违约”。
而后将Logistic函数应用于回归分析,获得两类的几率。该函数给出了事件发生和不发生几率的对数。最后,根据这两类中较高的几率对变量进行分类。这里,逻辑回归学习出来的也是一条直线,若是新的用户经过计算,位于直线的右上,则有潜在违约风险,须要拒绝申请。反之则是安全的。此外,越远离直线,则分类正确的置信度也越高。
对于已知的三类数据,红色点、蓝色三角和绿色方块,是否能够用逻辑回归对其进行分类?若是能够,要怎样使用?若是不行,又是由于什么?
最后,下一篇文章将会从逻辑回归的参数学习方式谈起,讲讲极大似然估计和牛顿法~在这以前,能够先将实战代码本身实践一下:「08」回归的诱惑:深刻浅出逻辑回归(Python实战篇)