文章目录

  • (1). Sigmoid函数的由来——伯努利分布的衍生物
    • 1.1 为什么会有 sigmoid 函数的出现?
    • 1.2 sigmoid 函数推导过程
    • 1.3 sigmoid 函数求导
  • (2). 逻辑回归(Logistic Regression)
    • 2.1 逻辑回归算法的最终本质——求决策边界
    • 2.2 逻辑回归算法中的重要组成部分

(1). Sigmoid函数的由来——伯努利分布的衍生物

1.1 为什么会有 sigmoid 函数的出现?

考虑一个事件X,其发生的概率为p,不发生的概率为1-p,如下表所示:

X 0 1
发生概率 1 - p p

通过上述事件我们能够得到当事件一定发生(x=1)一定不发生(x=0) 的概率,但很多时候事件不一定是一个非0即1的事件,而是一个连续取值的事件。当x的取值在(0,1)之间时,如x=0.5时,我们就无法判断该事件是判定为发生还是不发生了。为此,我们期望找到连续变量 x 和发生概率 p 之间的对应关系,使得每一个 xxx 取值都有一个对应的事件发生概率 ppp,根据发生概率 ppp 来推测事件发生还是不发生。例如,当 p=0.8p=0.8p=0.8 时判断该事件发生,p=0.2p=0.2p=0.2 时判断该事件不发生。如何寻找这个对应关系呢,sigmoid 函数的求解过程就是在寻找这个对应关系,sigmoid 最终的求解形式就描述连续变量 xxx 和发生概率 ppp 关系:
p=11+e−xp = \frac{1}{1 + e^{-x}} p=1+e−x1​

1.2 sigmoid 函数推导过程

由上一节中的表可以得到,f(x)f(x)f(x) 分布函数可以写成:

f(x)={1−p;x=0p;x=1f(x) = \left\{ \begin{array}{rcl} 1-p; \qquad x=0 \\ p; \qquad x=1 \end{array} \right. f(x)={1−p;x=0p;x=1​

进一步的我们可这个分段函数写成一个函数:

f(x)=px∗(1−p)1−xf(x) = p^x*(1-p)^{1-x} f(x)=px∗(1−p)1−x

接着我们在这个式子上进行推导:

f(x)=elnpx(1−p)1−x=elnpx+ln(1−p)1−x=ex⋅lnp+(1−x)⋅ln(1−p)=ex[lnp−ln(1−p)]+ln(1−p)=ex⋅lnp1−p+ln(1−p)\begin{aligned} f(x) &= e^{lnp^x (1-p)^{1-x}} \\ &= e^{lnp^x + ln(1-p)^{1-x}} \\ &= e^{x·lnp + (1-x)·ln(1-p)} \\ &= e^{x [ lnp - ln(1-p)] + ln(1-p)} \\ &= e^{x·ln\frac{p}{1-p} + ln(1-p)} \end{aligned} f(x)​=elnpx(1−p)1−x=elnpx+ln(1−p)1−x=ex⋅lnp+(1−x)⋅ln(1−p)=ex[lnp−ln(1−p)]+ln(1−p)=ex⋅ln1−pp​+ln(1−p)​

我们找出跟 xxx 变量相关的系数 lnp1−pln\frac{p}{1-p}ln1−pp​,令其等于 η\etaη,反解 η\etaη:
η=lnp1−peη=p1−pp=11+e−η\begin{aligned} \eta &= ln\frac{p}{1-p} \\ e^\eta &=\frac{p}{1-p} \\ p &= \frac{1}{1+e^{-\eta}} \end{aligned} ηeηp​=ln1−pp​=1−pp​=1+e−η1​​

最后计算出的形式就是sigmoid函数的函数形式,将 η\etaη 换成 xxx 后就得到了连续变量 xxx 和事件发生概率 ppp 之间的函数关系(至于为什么可以把 η\etaη 换成 xxx 这里我想了很久也没想通,如果有大佬希望可以指点下)。

1.3 sigmoid 函数求导

在逻辑回归中,构造函数选用的就是sigmoid函数。我们都知道在机器学习中会不断通过求解梯度来进行函数的参数更新,那么sigmoid作为目标函数,不可避免的就会涉及到sigmoid的求导,sigmoid函数求导结果如下:

f′(x)=(11+e−x)′=e−x(1+e−x)2=11+e−x⋅(1−11+e−x)=f(x)⋅(1−f(x))\begin{aligned} f'(x) &= (\frac{1}{1+e^{-x}})' \\ &= \frac{e^{-x}}{(1+e^{-x})^2} \\ &= \frac{1}{1+e^{-x}}·(1 - \frac{1}{1+e^{-x}}) \\ &= f(x)·(1-f(x)) \end{aligned} f′(x)​=(1+e−x1​)′=(1+e−x)2e−x​=1+e−x1​⋅(1−1+e−x1​)=f(x)⋅(1−f(x))​

(2). 逻辑回归(Logistic Regression)

2.1 逻辑回归算法的最终本质——求决策边界

逻辑回归中使用 sigmoid 函数 11+e−w⋅x\frac{1}{1 + e^{-w·x}}1+e−w⋅x1​ 来预测事件发生的概率,如下图所示,当纵坐标取值大于0.5时则判断事件发生(y=1),当纵坐标小于0.5时则判断事件不发生(y=0)。

我们仔细观察,整个式子 yyy 的取0还是取1完全取决于 w⋅xw·xw⋅x 的取值是>0还是<0,于是我们就可以通过判断一个样本点是在直线 z=w⋅xz=w·xz=w⋅x 的上半边还是下半边来判断 yyy 的取值了。这样一来,我们求解的最根本的问题就是求解一条直线 z=w⋅xz = w·xz=w⋅x,使得在直线一边的数据点全为正样本,另一边的数据点全为负样本。因此,逻辑回归算法算法的本质其实是去求解一个“边界”,这个边界不仅能够保证数据分类的正确性,还能保证所有分类后的数据的 cost 值最小,如下图所示(这和SVM的最小间隔距离非常相似):

决策边界由函数:w⋅X=0w·X = 0w⋅X=0 来确定,其中参数 www是我们需要学习的参数,因此核心问题就成了求解边界:
z=w⋅X=w0+w1⋅X1+w2⋅X2+...z = w·X = w_0 + w_1·X_1 + w_2·X_2 + ... z=w⋅X=w0​+w1​⋅X1​+w2​⋅X2​+...

2.2 逻辑回归算法中的重要组成部分

对于任何一个算法来说,通常都需要考虑的3个部分:

  • 构建基本函数(就是用来预测最终yyy值的函数)
  • 构建目标函数(目标函数=损失函数 + 正则项)
  • 构建优化方法(也叫优化器optimizer)

逻辑回归中的基本构造函数

在逻辑回归算法中,选用的基本函数就是sigmoid函数 hθ(x)=11+e−xh_{\theta}(x) = \frac{1}{1 + e^{-x}}hθ​(x)=1+e−x1​,该函数用于预测输入 xxx 后标签 yyy 的概率,注意,这里的 xxx 并非是数据集的原始数据输入,而是乘以了参数 θ\thetaθ 之后的值,即 x=X⋅θx = X · \thetax=X⋅θ,因此逻辑回归的基本函数为:
hθ(X)=11+e−θXh_{\theta}(X) = \frac{1}{1+e^{-\theta X}} hθ​(X)=1+e−θX1​

逻辑回归中的损失函数

逻辑回归的损失函数为:

loss(yi,yi′)=−∑i=1my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i))loss(y_i, y_i') = -\sum_{i=1}^my^{(i)}logh_{\theta}(x^{(i)}) + (1 - y^{(i)})log(1-h_{\theta}(x^{(i)}) loss(yi​,yi′​)=−i=1∑m​y(i)loghθ​(x(i))+(1−y(i))log(1−hθ​(x(i))
其中,hθ(X)=11+e−θXh_{\theta}(X) = \frac{1}{1+e^{-\theta X}}hθ​(X)=1+e−θX1​,这个式子可以从两个思路推导出来:最大似然估计、交叉熵损失函数,下面分别从这两个方面进行推导。

  • 通过极大似然估计来解释损失函数

首先我们需要知道极大似然估计是什么,举个例子:假设取球事件为y,取到白球时y=1,概率为p,取到黑球时y=0,概率为1-p。由于是独立事件,三次拿球两黑一白的概率可以表示为:P(y=0∣p)P(y=0∣p)P(y=1∣p)=(1−p)(1−p)p=p3−2p2+pP(y = 0 | p)P(y = 0 | p)P(y = 1 | p) = (1 - p)(1 - p)p = p^3 - 2p^2 + pP(y=0∣p)P(y=0∣p)P(y=1∣p)=(1−p)(1−p)p=p3−2p2+p。白球的极大似然估计就是求使得这个概率表达式最大的p值,对上式求导,求此一元二次方程的根得p=1/3或p=1,可知原式在[0, 1/3]区间单调递增,在[1/3, 1]区间单调递减。因此,在白球概率范围[0.2,0.8]内,当p=1/3时表达式取得最大值,取得白球的概率的极大似然估计为1/3(例子引自这里)。通过这个例子可以看到,最大似然估计其实是在给定了若干个事实后(去了三次球两黑一白),对事件发生的最大可能概率(取到白球的概率)进行估计。

那么在逻辑回归中,假定每一个数据样本相互独立,则取了 mmm 个样本后,得到的似然函数为根据每一个数据样本标签计算出的概率值相乘:
L(θ)=∏i=1mpiyi(1−pi)1−yil(θ)=∑i=1mln[piyi(1−pi)1−yi]L(\theta) = \prod_{i=1}^m p_i^{y_i} (1-p_i)^{1-y_i}\\ l(\theta) = \sum_{i=1}^mln[p_i^{y_i}(1-p_i)^{1-y_i}] L(θ)=i=1∏m​piyi​​(1−pi​)1−yi​l(θ)=i=1∑m​ln[piyi​​(1−pi​)1−yi​]
式子 L(θ)L(\theta)L(θ) 就等于上面白球例子中的:(1−p)(1−p)p(1 - p)(1 - p)p(1−p)(1−p)p,l(θ)l(\theta)l(θ)是对原式求对数,把累成变为累加,这个式子也叫对数似然估计。我们现在假设 ppp 服从 11+e−θX\frac{1}{1+e^{-\theta X}}1+e−θX1​分布(其实真正的 ppp 并不是等于这个式子的,因为 θ\thetaθ 参数是不准确的,是需要学习的),这样一来,我们就有了损失函数:
loss(yi,yi′)=−l(θ)=−∑i=1mln[(11+e−θx)yi(11+eθx)1−yi]=−∑i=1my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i))\begin{aligned} loss(y_i, y_i') &= -l(\theta) \\ &= -\sum_{i=1}^mln[(\frac{1}{1+e^{-\theta x}})^{y_i} (\frac{1}{1+e^{\theta x}})^{1-y_i} ]\\ &=-\sum_{i=1}^my^{(i)}logh_{\theta}(x^{(i)}) + (1 - y^{(i)})log(1-h_{\theta}(x^{(i)}) \end{aligned} loss(yi​,yi′​)​=−l(θ)=−i=1∑m​ln[(1+e−θx1​)yi​(1+eθx1​)1−yi​]=−i=1∑m​y(i)loghθ​(x(i))+(1−y(i))log(1−hθ​(x(i))​

怎么理解这个式子呢?这样想,我们按照服从 11+e−θX\frac{1}{1+e^{-\theta X}}1+e−θX1​的分布概率 p′p'p′ 来进行估测的结果并不是真实标签 yiy_iyi​,而是有偏估计 yi′y_i'yi′​,因为我们的参数 θ\thetaθ 是有偏的。而原本的极大似然估计的本质是,在使用真实的分布概率 ppp 去做预测时,是可以得到正确的预测标签 yiy_iyi​ 的。因此,使用有偏概率 p′p'p′ 去做估计得到结果,就是有偏预测结果 y′y'y′ 和真实标签数据 yyy 之间的偏差值,也就是损失函数的结果。

  • 通过交叉熵来解释损失函数

损失函数的定义是:如果我们预测类型接近真实类型,则损失函数值非常小;如果预测类型偏离真是类型很多,则损失函数非常大。我们再列出最终的loss函数来看看:
loss(yi,yi′)=−∑i=1my(i)loghθ(x(i))+(1−y(i))log(1−hθ(x(i))loss(y_i, y_i') = -\sum_{i=1}^my^{(i)}logh_{\theta}(x^{(i)}) + (1 - y^{(i)})log(1-h_{\theta}(x^{(i)}) loss(yi​,yi′​)=−i=1∑m​y(i)loghθ​(x(i))+(1−y(i))log(1−hθ​(x(i))

可以发现其实这个函数可以拆成两个部分(图片引自这里):

分别代表当样本的真实标签 y=1y=1y=1 时,对应的损失函数为:−log(hθ(x))-log(h_{\theta}(x))−log(hθ​(x)),当样本的真实标签 y=0y=0y=0 时对应的损失函数为: −log(1−hθ(x))-log(1-h_{\theta}(x))−log(1−hθ​(x))。如下图所示(图片引自这里):

这个图非常直观的表示了损失函数与预测准确度的关系,例如当y = 1时,如果 hθ(x)h_{\theta}(x)hθ​(x) 的预测值越接近 1,则得到的损失函数值越小,若预测结果越接近 0,则得到的损失函数值越大。而从上面可以看出,不管是 y=1y=1y=1 还是 y=0y=0y=0 的情况,均使用 −log-log−log 来进行损失函数的定义,为什么呢?这就涉及到香农熵的问题了,香农信息量用来度量不确定性的大小:一个事件的香农信息量等于0,表示该事件的发生不会给我们提供任何新的信息,例如确定性的事件,发生的概率是1,发生了也不会引起任何惊讶;当不可能事件发生时,香农信息量为无穷大,这表示给我们提供了无穷多的新信息,并且使我们无限的惊讶,而 −log-log−log 函数恰恰能很好的表达在 xxx 取值接近 1 时函数值接近于 0,反之 xxx 取值接近 0 时函数值接近于无穷大。

逻辑回归中的优化方法

使用 SGD 随机梯度下降的方法来优化参数 θ\thetaθ:

θj:=θj+α⋅loss(yi,yi′)\theta_j: = \theta_j + \alpha·loss(y_i, y_i') θj​:=θj​+α⋅loss(yi​,yi′​)

Sigmoid函数与逻辑回归相关推荐

  1. Sigmoid函数以及逻辑回归的由来

    线性回归时统计学经典算法,它能够拟合出一条直线来描述变量之间的线性关系.但在实际中,变量之 间的关系通常都不是一条直线,而是呈现出某种曲线关系.在统计学的历史中,为了让统计学模型能够更好地拟合曲线,统 ...

  2. R语言广义线性模型函数GLM、广义线性模型(Generalized linear models)、GLM函数的语法形式、glm模型常用函数、常用连接函数、逻辑回归、泊松回归、系数解读、过散度分析

    R语言广义线性模型函数GLM.广义线性模型(Generalized linear models).GLM函数的语法形式.glm模型常用函数.常用连接函数.逻辑回归.泊松回归.系数解读.过散度分析 目录

  3. R语言使用glm函数构建逻辑回归模型(logistic)、使用subgroupAnalysis函数进行亚组分析并可视化森林图

    R语言使用glm函数构建逻辑回归模型(logistic).使用subgroupAnalysis函数进行亚组分析并可视化森林图 目录

  4. 简单粗暴理解与实现机器学习之逻辑回归:逻辑回归介绍、应用场景、原理、损失以及优化...

    作者 | 汪雯琦 责编 | Carol 来源 | CSDN 博客 出品 | AI科技大本营(ID:rgznai100) 学习目标 知道逻辑回归的损失函数 知道逻辑回归的优化方法 知道sigmoid函数 ...

  5. 数学推导+纯Python实现机器学习算法:逻辑回归

    2019独角兽企业重金招聘Python工程师标准>>> 自本系列第一讲推出以来,得到了不少同学的反响和赞成,也有同学留言说最好能把数学推导部分写的详细点,笔者只能说尽力,因为打公式实 ...

  6. 【机器学习基础】数学推导+纯Python实现机器学习算法2:逻辑回归

    自本系列第一讲推出以来,得到了不少同学的反响和赞成,也有同学留言说最好能把数学推导部分写的详细点,笔者只能说尽力,因为打公式实在是太浪费时间了..本节要和大家一起学习的是逻辑(logistic)回归模 ...

  7. 西电-机器学习-逻辑回归

    逻辑回归 本次作业的目的是建立一个逻辑回归模型,用于预测一个学生是否应该被大学录取. 简单起见,大学通过两次考试的成绩来确定一个学生是否应该录取.你有以前数届考生的成绩,可以做为训练集学习逻辑回归模型 ...

  8. 【机器学习算法】逻辑回归为什么叫逻辑回归

    文章目录 逻辑回归以及为什么叫逻辑回归 从sigmoid函数引出 逻辑回归的统计学模型:伯努利分布 线性回归模型的通式:广义线性模型 指数族分布 逻辑回归以及为什么叫逻辑回归 逻辑回归虽然名字里有回归 ...

  9. 吴恩达机器学习第二次作业——逻辑回归

    逻辑回归 一.逻辑回归 1,数据可视化 2,sigmoid函数,逻辑回归模型 3,代价函数以及梯度 4,评价逻辑回归 二.正规化逻辑回归 1,数据可视化 2,特征映射(Feature Mapping) ...

最新文章

  1. mysql 中的事务
  2. 数学问题——最大公约数与最小公倍数
  3. [JSConf EU 2018] 大脑控制 Javascript
  4. FreeRTOS--堆内存管理(二)
  5. echo(),print(),print_r(),var_dump()的区别
  6. SAP License:供应商寄售业务(合作伙伴不存在修改 443消息号)
  7. [Xcode 实际操作]八、网络与多线程-(17)使用网址会话对象URLSession向远程服务器上传图片...
  8. EF6.0新特性-DbCommandInterceptor实现非SQL端读写分离
  9. 服务器怎么支持smtp,如何搭建邮箱服务器,自建smtp服务器
  10. dll依赖查看工具-depends
  11. openmv串口数据 串口助手_实例 | 使用Python串口实时显示数据并绘图
  12. WhatsApp创始人:从领救济到身价68亿
  13. 【实战练习】汽油辛烷值优化建模(二)(问题一的详细讲解)
  14. 使用Gitmoji进行git commit的快速查阅指南
  15. 程序员的算法趣题Q25: 时髦的鞋带系法
  16. 向量A和向量B的余弦
  17. android Q特性与进阶
  18. Windows 便捷工具箱 Microsoft PowerToys
  19. IAR forARM 建立第一个STM32F051的工程
  20. 基于“时空逻辑”的新时空论

热门文章

  1. netcore一键部署到linux服务器以服务方式后台运行
  2. 使用keepalived搭建双机热备高可用一览
  3. ASP.NET Core 中间件分类
  4. 指令打印与驱动打印随笔
  5. [原]排错实战——通过对比分析sysinternals事件修复程序功能异常
  6. 面对金九银十铜十一你真的准备好了吗?
  7. Autofac的AOP面向切面编程研究
  8. [小技巧]ASP.NET Core中如何预压缩静态文件
  9. ASP.NET Core Middleware
  10. C# 8中的Async Streams