机器学习算法详解3:逻辑回归
前言
本系列主要对机器学习上算法的原理进行解读,给大家分享一下我的观点和总结。
本篇前言
本篇对逻辑回归的算法原理进行解读。
目录结构
文章目录
-
- 机器学习算法详解3:逻辑回归
-
- [1. 引子](#1. 引子)
- [2. sigmoid函数](#2. sigmoid函数)
- [3. 原理推导](#3. 原理推导)
- [4. 交叉熵损失函数推导](#4. 交叉熵损失函数推导)
-
- [4.1 信息熵](#4.1 信息熵)
- [4.2 KL散度](#4.2 KL散度)
- [4.3 交叉熵推导](#4.3 交叉熵推导)
- [4.4 交叉熵损失函数推导](#4.4 交叉熵损失函数推导)
- [5. 为什么选用sigmoid函数?](#5. 为什么选用sigmoid函数?)
- [6. 总结](#6. 总结)
1. 引子
在上一篇提及一个概念广义线性回归
,而逻辑回归也是与之相关。
假设我们有一个曲线,如下:
假设它的表达式为y=wx
,其中y的值是符合lnx
的分布的。那么,可以进行线性映射lny = wx
,变为y=e^(wx)
,即真正的表达式y=e^(wx)
可以变为最初的广义线性形式y=wx
(只是此处的y符合lnx
分布而已)。
换而言之,我们可以将e^(wx)
看作是一个普通的ax
,那么逻辑回归就是将这个普通的ax
作为某个函数的输入,让函数的输出在[0,1]之间,相当于输出的是概率值,就成了。
2. sigmoid函数
上面提及某函数,那么选择什么样的函数呢?
首先,函数必须满足的要求是:输出值在[0,1]之间。满足这个要求的函数非常多,比如符号函数:
但是,这个函数有一个重要缺点:不是连续可导的(在x=0这个点) 。这样会导致我们在优化损失函数的时候,无法直接求导,需要分情况进行求导。其次,这个函数有个小缺点:太僵硬了,只能取1、0这两个值。
针对上述情况,我们提出这个函数要满足的新要求:连续可导,最好是光滑曲线。
那么,前人们找到一个函数,名为 sigmoid
函数,公式如下:
函数图像如下:
并且,值得注意的一点是,sigmoid函数的导数非常特殊,其倒数公式如下:
3. 原理推导
基本的导数求法,非常的简单。
4. 交叉熵损失函数推导
4.1 信息熵
要对交叉熵进行推导,首先需要明白什么是信息熵。(本来应该在决策树那里讲的)
熵,大家应该都明白,就是描述一个系统的混乱程度。那么信息熵,就相当于描述一个信息的有用程度。
公式如下:
4.2 KL散度
有时候也称之为KL距离
,但是其实并不是真正的距离,因为不符合距离的对称性质。
其衡量两个分布P、Q的相似程度,公式如下:
举个计算的例子:
4.3 交叉熵推导
4.4 交叉熵损失函数推导
该损失函数的推导可以从三个角度入手,分别是sigmoid入手、极大似然估计入手和KL散度入手。这里我接受最后一种推导。
逻辑回归损失函数即衡量真实分布和预测分布的相似性------即KL散度 ,那么推导过程和上面相似,只是把P and Q
换为了y and y^
,通过上面可以知道最后的KL散度与交叉熵的值正相关,因此我们可以通过交叉熵构建出损失函数来代替KL散度以衡量真实分布和预测分布的相似程度,即公式:(下面分为两个部分是因为一个为正样本、一个为负样本而已)
5. 为什么选用sigmoid函数?
这个问题也可以这么问:sigmoid函数怎么推出来的?这个是我偶然看视频发现的,我个人觉得有一定的道理,所以在这里分享一下:
对于真实大数据场景,数据的每个特征基本都符合正太分布,并且一般标准差相同而均值不同(感觉上是对的,但是没有证明),那么如下图推导过程:
6. 总结
本篇讲解了逻辑回归的原理,逻辑回归主要应用于二分类任务,也是分类任务中常用的一个算法。
下一篇,讲解支持向量机算法。