1、算法介绍

(1)逻辑回归(Logistics Regression)是一种分类模型,常用于二分类问题。
(2)我们可以用一句话来表示逻辑回归:逻辑回归是假设数据服从伯努利分布,基于最大似然估计推导的方法,通过似然函数的对数变化,运用梯度下降的方法求解参数,来达到将数据二分类的目的。

1.1 逻辑回归分布

逻辑回归的分布是一种连续型的概率分布,它的分布函数和密度函数分别是:

1.2 逻辑回归

以处理二分类的问题为例,我们假设数据集中存在一条直线,这条直线对于数据集来说可以实现线性可分。
如图:


该直线(划分边界)可以表示为:

此时通过某个样本点对于划分边界左边公式取值与0的大小比较,来判定该样本属于哪一类别;而逻辑回归(Logistic)还需要加一层,它要找到分类概率P(Y=1)与输入向量X的直接关系,然后通过比较概率值来判别类别。

如何用连续的数值去预测离散标签?
由于的取值是连续的,因此它不能拟合离散变量。此时我们考虑用它来拟合条件概率P(Y=1|x),因为概率的取值也是连续的。
但是对于w≠0(等于0则没有求解的意义),的取值为R(实数),不符合概率取值0到1之间,因此考虑采用广义线性模型。

该模型最理想的单位是阶跃函数:

但是这个阶跃函数是不可微的,对数几率函数是一个常用的替代函数,于是我们将y视为正例的概率,则1-y则为其反例的概率,两者的比值称为几率(odds),是指该事件发生与不发生的概率比值,对数几率如下:

则有:

将y视为类后验概率估计,重写公式有:

逻辑回归的思路:先拟合决策边界(无论是线性还是多项式),再建立这个边界与分类的概率联系,从而得到了二分类情况下的概率。

通过上述推导,我们可以看到Logistic回归的实际上是使用线性回归模型的预测值逼近分类任务真实标记的对数几率,则我们使用对数几率的意义(优点)为:
1、直接对分类的概率建模,无需实现假设数据分布,从而避免了假设分布不准确带来的问题
2、不仅可以预测出类别,还能得到该预测的概率,还对一些利用概率辅助决策的任务很有用
3、对数几率函数是任务阶可导的凸函数,有许多数值优化算法都可以求出最优解。

1.3 损失函数推导

逻辑回归损失函数的推导采用最大似然估计法求解,即找到一组参数,使得在这组参数下,我们数据的预测概率最大。
设:

单个样本似然函数为:

因为我们期望的是使每个样本属于真实标记的概率越大越好,故似然函数如下:

经对数变换后:

梯度下降求解:

再梯度更新后:

2、模型细节

2.1 为什么适合离散特征

我们一般会对逻辑回归模型的入模数据进行离散化处理,这样做的优势大致有以下几点:
1、离散后向量内积乘法的运算速度更快,计算结果也方便储存,容易扩展。
2、离散后的变量鲁棒性更强。
3、逻辑回归属于广义线性回归模型,模型本身表达能力有限,经离散化后,每个变量有自己单独的权重,这相当于引入了非线性,能够提升模型的表达能力。
4、离散后的变量更加稳定。

2.2 为什么不用平方误差损失函数

损失函数是用来评价模型优劣的函数,也称为目标函数或者代价函数。对于损失函数最直观的理解就是看预测值与真实值的差距,若差距为0,则说明预测正确;若差值很大,则说明模型表现得越糟糕,这也就是平方差损失函数的形式,公式如下:

逻辑回归采用的是交叉熵损失函数,交叉熵是衡量两个概率分布的差异,也称为对数损失函数。交叉熵越大,两个分布之间的差异越大,说明预测的结果越糟糕;交叉熵越小,则两个分布很接近,预测的结果便越完美。

交叉熵损失函数的公式如下:

了解了平方差损失函数和交叉熵损失函数后,我们来看下逻辑回归为什么不采用平方差损失函数。
逻辑回归是在线性回归的基础上加了sigmoid非线性激活函数,在反向传播用梯度下降的方式求解参数时,若采用平方差损失函数,会导致参数的导数带了sigmoid激活函数,而sigmoid在值很大或者很小的时候会出现梯度消失的情况,这时会造成参数更新的非常慢,使得参数难以求得最优解的概率大大的增加;若采用交叉熵损失函数,参数的导数不会携带sigmoid激活函数,这样在参数更新的时候更容易得到最优解。
以下为公式推导:

假设预测值:,其中z=wx+b, 为sigmoid激活函数,在考虑单条样本下:

若采用平方差损失函数,对参数的更新求导如下

由公式可以看出,在更新参数w和b是,会存在sigmoid函数的一阶导数,而我们可以将一阶导数理解为求曲线中某点的切线斜率,右下图可知:

该图为sigmoid函数的曲线图,当sigmoid函数值很大或很小时,函数曲线呈平坦趋势,对应点的切线斜率会无线接近于0,导致平方损失函数更新参数速度变慢,难度加大。

若采用交叉熵损失函数,参数的更新求导如下(w的求导过程请看1.3,参数b同理)

可以从公式推导中对比得知,参数更新中不存在sigmoid的一阶导,只接受预测值和实际值的误差,当学习率一定时,差异越大,参数更新越快,差异越小,参数更新越慢,这使得损失函数更快得到最优解。

这就是逻辑回归的损失函数选择交叉熵而非平方差的原因。

逻辑回归原理理解及公式推导相关推荐

  1. 逻辑回归原理梳理_以python为工具 【Python机器学习系列(九)】

    逻辑回归原理梳理_以python为工具 [Python机器学习系列(九)] 文章目录 1.传统线性回归 2.引入sigmoid函数并复合 3. 代价函数 4.似然函数也可以 5. python梯度下降 ...

  2. 【机器学习】 逻辑回归原理及代码

    大家好,我是机器侠~ 1 Linear Regression(线性回归) 在了解逻辑回归之前,我们先简单介绍一下Linear Regression(线性回归). 线性回归是利用连续性的变量来预估实际数 ...

  3. 【机器学习】逻辑回归原理介绍

    [机器学习]逻辑回归原理介绍 [机器学习]逻辑回归python实现 [机器学习]逻辑回归sklearn实现 Logistic 回归模型是目前广泛使用的学习算法之一,通常用来解决二分类问题,虽然名字中有 ...

  4. 【TensorFlow】逻辑回归原理与实现(超详细)

    逻辑回归原理与实现 学习目标 1. 神经网络基础 1.1 Logistic回归 1.2 逻辑回归损失函数 2. 梯度下降算法 3. 导数 3.1 导数 3.2 导数计算图 3.3 链式法则 3.4 逻 ...

  5. 逻辑回归原理简述及代码实现

    Logistic回归 1 逻辑回归原理 1.1 线性回归 1.2 逻辑回归 2 具体过程 2.1 构造预测函数 2.2 构造损失函数J(θ) 2.3 采用梯度下降算法minJ(θ) 2.4 采用向量化 ...

  6. python实现逻辑回归的流程_逻辑回归原理及其python实现

    September 28, 2018 7 min to read 逻辑回归原理及其python实现 原理 逻辑回归模型: $h_{\theta}(x)=\frac{1}{1+e^{-{\theta}^ ...

  7. 【机器学习】Logistic Regression逻辑回归原理与java实现

    [机器学习]Logistic Regression逻辑回归原理与java实现 1.基于概率的机器学习算法 2.逻辑回归算法原理 2.1.分离超平面 2.2.阈值函数 2.3.样本概率 2.4.损失函数 ...

  8. 逻辑回归原理与sklearn实现

    目录 一.逻辑回归介绍 1.应用场景 2.逻辑回归原理 2.1 输入 2.2激活函数 3.损失与优化 3.1 损失(对数似然损失) 3.2 优化 二.逻辑回归API介绍 三.案例实现 四.分类评估方法 ...

  9. 算法梳理(二)逻辑回归原理及实现

    算法梳理(二)逻辑回归原理及实现 逻辑回归原理 一.从线性回归到逻辑回归 二.二分类的逻辑回归 (一)过程推理 (二)正则化 三.scikit-learn中逻辑回归参数详解 逻辑回归原理 logist ...

最新文章

  1. 缓存穿透、缓存并发、热点缓存之最佳招式
  2. addcontorl error...viewstate relative
  3. 怎么自定义linux登录界面?
  4. php echo表单提交_PHP常见面试题及答案
  5. Eclipse代码自动对齐方法
  6. java开发模型_java开发模型MVC
  7. 取消数据源的自动创建,使用Seata对数据源进行代理
  8. Shell入门(三)之字符串
  9. 助教总结-【北京电子科技学院_2016-2017-2_程序设计与数据结构】
  10. oracle 10修改字符集,Oracle 10g修改数据库字符集
  11. 计算机技术培训承诺书,软件职业技术学院学生干部刻苦学习、文明诚信承诺书...
  12. poj1054The Troublesome FrogDP
  13. 电路设计_元器件选型总结1
  14. DVWA 跨站请求伪造(CSRF)
  15. 最近发现的一个c# winform的一个很好用的excel控件 reogrid控件
  16. python word2vec使用_使用Python可视化Word2vec的结果
  17. 尜尜送的诗,以及我回的句
  18. LCOI出题组加团规则
  19. java程序cpu占用率高,分析具体线程
  20. 计算机硬件及冯诺伊曼结构

热门文章

  1. [RS] 类别数据数字化的方法 —— LabelEncoder VS OneHotEncoder (虚拟变量陷阱(Dummy Variable Trap))
  2. linux汇编伪指令大全,ARM汇编伪指令
  3. 汇编segment伪指令
  4. openCV实战2 显著性检测
  5. xmind8 破解激活教程,亲测可用
  6. Ubuntu 14.04 LTS 英文环境下中文字体修改
  7. 计算机毕业设计Java高考填报信息系统(源码+系统+mysql数据库+Lw文档)
  8. 《C游记》 第叁章 - 一朝函数思习得 模块思维世间生(壹)
  9. android俄语资源目录,Liveclasses Yan Bazhenov产品主题目录拍摄拍摄专业产品中文字幕...
  10. 模拟超市付款流程(python)