4.机器学习之逻辑回归算法

理论上讲线性回归模型既可以用于回归,也可以用于分类。解决回归问题,可以用于连续目标值的预测。但是针对分类问题,该方法则有点不适应,因为线性回归的输出值是不确定范围的,无法很好的一一对应到我们的若干分类中。即便是一个二分类,线性回归+阈值的方式,已经很难完成一个鲁棒性很好的分类器了。为了更好的实现分类,逻辑回归诞生了。逻辑回归(Logistic Regression)主要解决二分类问题,用来表示某件事情发生的可能性。逻辑回归是假设数据服从Bernoulli分布的,因此LR也属于参数模型,他的目的也是寻找到最优参数。logistic回归是一种广义线性回归(generalized linear model)。

【补充】在统计学中,参数模型通常假设总体(随机变量)服从某一个分布,该分布由一些参数确定(比如正太分布由均值和方差确定),在此基础上构建的模型称为参数模型;非参数模型对于总体的分布不做任何假设,只是知道总体是一个随机变量,其分布是存在的(分布中也可能存在参数),但是无法知道其分布的形式,更不知道分布的相关参数,只有在给定一些样本的条件下,能够依据非参数统计的方法进行推断。

首先回顾一下简单线性回归(只考虑一个输入变量,一个输出变量的线性回归)。 表示输入变量(自变量),第一部分例子中的X。 表示输出变量(因变量),第一部分例子中的Y。一对  表示一组训练样本。m个训练样本  称为训练集。上面表示法中的i代表第i个样本。大写的X代表所有输入值组成的空间。大写的Y代表所有输出值组成的空间。回归属于有监督的学习。监督学习的定义是, 给定一个训练集, 我们的目标是“学习”得到一个函数  , 使h(x)是真实值y的一个“好的”预测值。这里h叫做模型,也叫做假设(hypothesis)。

如果我们要预测的输出值是连续的,那么该问题就称作回归问题。对于简单线性回归来说,我们的模型h可以表示如下:。其中的  和  代表模型的参数。线性回归的目标是:求得最合适的 和 ,使得模型效果最好。

Regression问题的常规步骤为:

  1. 寻找h函数(即hypothesis);
  2. 构造J函数(损失函数);
  3. 想办法使得J函数最小并求得回归参数(θ)

从线性回归到逻辑回归:

我们知道,线性回归的模型是求出输出特征向量Y和输入样本矩阵X之间的线性关系系数θ,满足Y=Xθ。此时我们的Y是连续的,所以是回归模型。如果我们想要Y是离散的话,怎么办呢?一个可以想到的办法是,我们对于这个Y再做一次函数转换,变为g(Y)。如果我们令g(Y)的值在某个实数区间的时候是类别A,在另一个实数区间的时候是类别B,以此类推,就得到了一个分类模型。如果结果的类别只有两种,那么就是一个二元分类模型了。逻辑回归的出发点就是从这来的。下面我们开始引入二元逻辑回归。

逻辑回归(Logistic Regression)与线性回归(Linear Regression)都是一种广义线性模型(generalized linear model)。逻辑回归假设因变量 y 服从伯努利分布,而线性回归假设因变量 y 服从高斯分布。 因此与线性回归有很多相同之处,去除Sigmoid映射函数的话,逻辑回归算法就是一个线性回归。可以说,逻辑回归是以线性回归为理论支持的,但是逻辑回归通过Sigmoid函数引入了非线性因素,因此可以轻松处理0/1分类问题。

首先介绍一下Sigmoid函数,也称为逻辑函数(Logistic function):

其函数曲线如下:

从上图可以看到sigmoid函数是一个s形的曲线,它的取值在[0, 1]之间,在远离0的地方函数的值会很快接近0或者1。它的这个特性对于解决二分类问题十分重要。

我们知道线性回归的模型:

线性回归中广义线性回归我们提到对线性回归的结果做一个在函数g上的转换,可以变化为逻辑回归。这个函数g在逻辑回归中我们一般就取为sigmoid函数,所以逻辑回归的假设函数形式如下:

得到二元逻辑回归模型如下:

其中  是样本的输入,  为我们要求取的参数。hθ(x)为模型输出,可以理解为某一分类的概率大小。而θ为分类模型要求出的模型参数。对于模型输出hθ(x),我们让它和我们的二元样本输出y(假设为0和1)有这样的对应关系,如果hθ(x)>0.5 ,即xθ>0, 则y为1。如果hθ(x)<0.5,即xθ<0, 则y为0。y=0.5是临界情况,此时xθ=0为, 从逻辑回归模型本身无法确定分类。hθ(x)的值越小,而分类为0的的概率越高,反之,值越大的话分类为1的的概率越高。如果靠近临界点,则分类准确率会下降。此处我们也可以将模型写成矩阵模式:

逻辑回归的假设

正如线性回归模型一样,逻辑回归也有假设条件,主要是两个:

(1)假设数据服从伯努利分布

(2)假设模型的输出值是样本为正例的概率

基于这两个假设,我们可以分别得出类别为1和0的后验概率估计(即二元分类回归的模型函数的值的特殊含义):

理解了二元分类回归的模型,接着我们就要看模型的损失函数了,我们的目标是极小化损失函数来得到对应的模型系数θ。

二元逻辑回归的损失函数

回顾下线性回归的损失函数,由于线性回归是连续的,所以可以使用模型误差的的平方和来定义损失函数。但是逻辑回归不是连续的,自然线性回归损失函数定义的经验就用不上了。不过我们可以用最大似然法来推导出我们的损失函数。

按照上面二元逻辑回归的定义,假设我们的样本输出是0或者1两类。那么我们有:

把这两个式子写成一个式子,就是:

前面说到逻辑回归其实是概率类模型,因此,我们通过极大似然估计(MLE)推导逻辑回归损失函数。得到了y的概率分布函数表达式,我们就可以用似然函数最大化来求解我们需要的模型系数θ,即线性模型自变量的权重系数。最大似然函数L(θ):

一个连乘的函数是不好计算的,可以通过两边同事取log的形式让其变成连加,所以为了方便求解,这里我们用对数似然函数最大化:

如此就推导出了参数的最大似然估计。最大似然估计就是求使取最大值时的θ,其实这里可以使用梯度上升法求解,求得的θ就是要求的最佳参数。但是在函数最优化的时候习惯让一个函数越小越好,所以我们在前边加一个负号。因为乘了一个负的系数-1,所以取最小值时的θ为要求的最佳参数。从而符合我们理解的损失函数是最小化,可以用梯度下降法求最小值,因此我们需要在上式前加一个负号便可得到最终的损失函数:

损失函数也可用矩阵法表达更加简洁:

其中E为全1向量。

逻辑回归的损失函数“对数似然函数”,在模型GBDT分类情况下也会用到,又叫作“交叉熵”。在逻辑回归中,最常用的是代价函数是交叉熵(Cross Entropy),交叉熵是一个常见的代价函数,在神经网络中也会用到。在1948年,克劳德·艾尔伍德·香农将热力学的熵,引入到信息论,因此它又被称为香农熵(Shannon Entropy),它是香农信息量(Shannon Information Content, SIC)的期望。香农信息量用来度量不确定性的大小:一个事件的香农信息量等于0,表示该事件的发生不会给我们提供任何新的信息,例如确定性的事件,发生的概率是1,发生了也不会引起任何惊讶;当不可能事件发生时,香农信息量为无穷大,这表示给我们提供了无穷多的新信息,并且使我们无限的惊讶。更多解释可以参考博客:https://blog.csdn.net/rtygbwwwerr/article/details/50778098

二元逻辑回归的损失函数的优化方法

对于线性回归模型而言,可以使用最小二乘法,但对于逻辑回归而言使用传统最小二乘法求解是不合适的。对于二元逻辑回归的损失函数极小化,有比较多的方法,最常见的有梯度下降法,坐标轴下降法,等牛顿法等。之前提到过梯度下降法有代数法求解和矩阵法求解,只不过代数法推导比较的繁琐。具体使用梯度下降法求解逻辑回归损失函数方法可参考https://www.cnblogs.com/pinard/p/6029432.htmlhttps://zhuanlan.zhihu.com/p/51279024 他们的推导过程。

实践中,我们一般不用操心优化方法,大部分机器学习库都内置了各种逻辑回归的优化方法,不过了解这些优化方法还是有必要的。

二元逻辑回归的正则化

逻辑回归也会面临过拟合问题,所以我们也要考虑正则化。常见的有L1正则化和L2正则化。

问题的主因:过拟合问题往往源自过多的特征。

解决方法:

1)减少特征数量(减少特征会失去一些信息,即使特征选的很好)

  • 可用人工选择要保留的特征;
  • 模型选择算法;

2)正则化(特征较多时比较有效)

  • L2正则化保留所有特征,但减少θ的大小
  • L1正则化

逻辑回归的L1正则化的损失函数表达式如下,相比普通的逻辑回归损失函数,增加了L1的范数做作为惩罚,超参数α作为惩罚系数,调节惩罚项的大小:

其中|θ|1为θ的L1范数,逻辑回归的L1正则化损失函数的优化方法常用的有坐标轴下降法和最小角回归法。

二元逻辑回归的L2正则化损失函数表达式如下:

其中|θ|2为θ的L2范数,逻辑回归的L2正则化损失函数的优化方法和普通的逻辑回归类似。

二元逻辑回归的推广:多元逻辑回归

前面讲的逻辑回归的模型和损失函数都局限于二元逻辑回归,实际上二元逻辑回归的模型和损失函数很容易推广到多元逻辑回归。比如总是认为某种类型为正值,其余为0值,这种方法为最常用的one-vs-rest,简称OvR。

另一种多元逻辑回归的方法是Many-vs-Many(MvM),它会选择一部分类别的样本和另一部分类别的样本来做逻辑回归二分类。最常用的是One-Vs-One(OvO)。OvO是MvM的特例。每次我们选择两类样本来做二元逻辑回归。

多元逻辑回归算法如softmax回归。

逻辑回归的优缺点

优点:

1. 直接对分类可能性进行建模,无需实现假设数据分布,这样就避免了假设分布不准确所带来的问题

2. 形式简单,便利的观测样本概率分数,模型的可解释性非常好,特征的权重可以看到不同的特征对最后结果的影响

3. 训练速度较快。分类速度很快

4. 内存占用少

缺点:

1. 一般准确率不是很高,因为形势非常的简单,很难去拟合数据的真实分布

2. 当特征空间很大时,逻辑回归的性能不是很好

3. 很难处理数据不平衡的问题

逻辑回归和线性回归的区别:

1. 一个是解决回归问题,一个用于解决分类问题

2. 线性回归的样本的输出,都是连续值,y∈(+∞,−∞)而,逻辑回归中y∈{0,1},只能取0和1

3. 拟合函数本质上的差别

线性回归决策函数:f(x)=θTX=θ1x1+θ2x2+?+θnxn

得逻辑回归的决策函数:f(x)=p(y=1∣x;θ)=g(θTX)

4. 线性回归的拟合函数,的确是对f(x)的输出变量y的拟合,而逻辑回归的拟合函数是对为1类的样本的概率的拟合;在线性回归中θTX为预测值的拟合函数;而在逻辑回归中θTX=0为决策边界;即线性回归中得到的直线是要拟合输入样本的分布的,而逻辑回归里得到的线是决策边界,是要尽可能的将样本非开的,目的不同。

一句话概括逻辑回归:逻辑回归假设数据服从伯努利分布,在线性回归的基础上,套了一个二分类的Sigmoid函数,使用极大似然法来推导出损失函数,用梯度下降法优化损失函数的一个判别式的分类算法。分类的本质:在空间中找到一个决策边界来完成分类的决策

参考文章:

https://www.cnblogs.com/pinard/p/6029432.html

https://www.cnblogs.com/huangyc/p/9813891.html

https://zhuanlan.zhihu.com/p/28408516

https://blog.csdn.net/pakko/article/details/37878837

https://zhuanlan.zhihu.com/p/51279024

原文地址:https://www.cnblogs.com/bonheur/p/12535319.html

时间: 2024-10-13 19:30:00

4.机器学习之逻辑回归算法的相关文章

机器学习入门-逻辑回归算法

梯度下降: 对theta1, theta2, theta3 分别求最快梯度下降的方向,然后根据给定的学习率,进行theta1, theta2, theta3的参数跟新 假定目标函数 J(theta) = 1/2m * np.sum(h(theta) - y)^2 / len(X) 梯度下降的策略分为3种, 批量梯度下降: 每次迭代输入全部的数据, 效果好,但耗时 随机梯度下降: 每次输入一个样本,时间快,迭代效果差 小批量梯度下降:每次输入部分数据,效果好,时间适中,一般都是16, 32, 64

机器学习 (三) 逻辑回归 Logistic Regression

文章内容均来自斯坦福大学的Andrew Ng教授讲解的Machine Learning课程,本文是针对该课程的个人学习笔记,如有疏漏,请以原课程所讲述内容为准.感谢博主Rachel Zhang 的个人笔记,为我做个人学习笔记提供了很好的参考和榜样. § 3.  逻辑回归 Logistic Regression 1 分类Classification 首先引入了分类问题的概念——在分类(Classification)问题中,所需要预测的$y$是离散值.例如判断一封邮件是否属于垃圾邮件.判断一个在线交

机器学习实战-逻辑回归

什么是回归? 假设现在有些数据点,我用直线对这些点进行拟合(该线叫做最佳拟合直线),这个拟合的过程就叫做回归. Logistic回归? 这里,Logistic回归进行分类的主要思想:根据现有数据对分类的边界线建立回归公式,以此边界线进行分类.这里的回归指的是最佳拟合,就是要找到边界线的回归公式的最佳拟合的参数集.训练时使用最优化算法寻找最佳拟合参数. 基于Logistic回归和Sigmoid函数的分类 对于边界线建立的回归函数,能够接受所有的输入然后预测出类别.例如,对于二分类的情况下,上述函数

机器学习:逻辑回归(基础理解)

逻辑回归(Logistic Regression) 一.行业算法应用率 具统计,2017年,除了军事和安全领域,逻辑回归算法是在其它所有行业使用最多了一种机器学习算法: Logistic Regression(逻辑回归) Decision Trees(决策树) Random Forests(随机森林) Neural Networks(人工神经网络 NNs)--深度学习算法 人工神经网络(Artificial Neural Networks,简写为ANNs)也简称为神经网络(NNs)或称作连接模型

机器学习:逻辑回归(使用多项式特征)

一.基础 逻辑回归中的决策边界,本质上相当于在特征平面中找一条直线,用这条直线分割所有的样本对应的分类: 逻辑回归只可以解决二分类问题(包含线性和非线性问题),因此其决策边界只可以将特征平面分为两部分: 问题:使用直线分类太过简单,因为有很多情况样本的分类的决策边界并不是一条直线,如下图:因为这些样本点的分布是非线性的: 方案:引入多项式项,改变特征,进而更改样本的分布状态: 二.具体实现 1)模拟数据集 import numpy as np import matplotlib.pyplot a

逻辑回归算法-通俗易懂易实现

转自https://www.cnblogs.com/hum0ro/p/9652674.html,看到介绍的逻辑回归很容易理解算法原理及实现,拿来存档做记录 一直做图像处理算法和视频方面的嵌入式应用软件,早起研究和应用过神经网络算法,一直没有了解其他分类的机器学习算法,这段时间用空学习研究这些算法,如k-means,em聚类算法,查阅了许多资料,算法推倒的,结合举例说明有个直观印象,这样可以更好地理解算法,方便实现 1.什么是逻辑回归 在前面讲述的回归模型中,处理的因变量都是数值型区间变量,建立的

机器学习之逻辑回归(Logistic Regression)

1. Classification 这篇文章我们来讨论分类问题(classification problems),也就是说你想预测的变量 y 是一个离散的值.我们会使用逻辑回归算法来解决分类问题. 之前的文章中,我们讨论的垃圾邮件分类实际上就是一个分类问题.类似的例子还有很多,例如一个在线交易网站判断一次交易是否带有欺诈性(有些人可以使用偷来的信用卡,你懂的).再如,之前判断一个肿瘤是良性的还是恶性的,也是一个分类问题. 在以上的这些例子中,我们想预测的是一个二值的变量,或者为0,或者为1:或者

21-城里人套路深之用python实现逻辑回归算法

如果和一个人交流时,他的思想像弹幕一样飘散在空中,将是怎样的一种景象?我想大概会毫不犹豫的点关闭的.生活为啥不能简单明了?因为太直白了令人乏味.保留一些不确定性反而扑朔迷离,引人入胜.我们学习了线性回归,对于损失函数及权重更新公式理解起来毫无压力,这是具体直白的好处.然而遇到抽象晦涩的逻辑回归,它的损失函数及权重更新公式就经历了从p(取值范围0~1)->p/(1-p)(取值范围0~+oo)->z=log(p/(1-p))(取值范围-oo~+oo)->p=1/1+e^(-z)->极大

SparkMLlib学习分类算法之逻辑回归算法

SparkMLlib学习分类算法之逻辑回归算法 (一),逻辑回归算法的概念(参考网址:http://blog.csdn.net/sinat_33761963/article/details/51693836) 逻辑回归与线性回归类似,但它不属于回归分析家族(主要为二分类),而属于分类家族,差异主要在于变量不同,因此其解法与生成曲线也不尽相同.逻辑回归是无监督学习的一个重要算法,对某些数据与事物的归属(分到哪个类别)及可能性(分到某一类别的概率)进行评估. (二),SparkMLlib逻辑回归应用