一. 前言
逻辑(Logistic)回归是分类算法中最基础也是最重要的手段,因此,掌握其内在原理是非常必要的。逻辑回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分问题 (即结果要么是0,要么是1)。
在介绍逻辑回归之前,我们需要回顾一些数学基础内容。
1. 最大似然估计
1.什么是最大似然估计
通俗理解来说,就是整体概率分布已知,利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的分布模型的参数值!
举个栗子:假如国民收入符合正态分布,概率密度如下图。现在手里有一部分调查样本数据,根据这些样本数据,反推正态分布概率密度中的参数值,就是最大似然估计解决的问题。
2.最大似然估计的一般过程
首先要知道整体的 分布模型 ,比如随便一个分布,概率密度p(x),参数是θ
其次要有一些 样本数据 ,假设为D
样本D同时发生的联合概率密度(不是条件概率,只是强调参数是θ)
似然函数就是这个联合概率密度,定义为L,自变量是θ
极大似然估计法原理就是固定样本观测值,挑选参数θ,使得似然函数L取得最大值。
所以,现在问题转化成了寻找使L取最大值的θ,即为目标参数,
- 当未知参数只有一个时,我们可以对L求导,令导数为0取极值,解出θ。
- 当未知参数有多个时,我们可以对L求偏导,令偏导数为0,得到方程组解出参数。
举个例子:
好,至此我们总结一下最大似然估计的一般步骤:
- 写出似然函数
- 对似然函数取对数(为什么取对数?因为直接求导可能很麻烦,对数不改变单调性,不影响计算极值点。)
- 求导数
- 解似然方程
二. 逻辑回归算法
1. 逻辑回归基本原理
接下来我们回归正题,来看一下逻辑回归。逻辑回归也叫做对数几率回归,明明是分类算法,为什么叫做回归呢?因为它仅仅是在线性回归的基础上,将线性模型通过一个函数,转化为结果只有0/1的分类模型。它的建模过程和线性回归基本相同:
- 寻找预测函数
- 构造代价函数
- 想办法使得代价函数最小并求得回归参数
1.寻找预测函数
假设有一个二分类问题,输出为y∈{0,1},而线性回归模型产生的预测值为(w是参数向量)
我们希望有一个理想的函数来帮我们实现z值到0/1值的转化。 于是我们找到了sigmoid函数
图像是
于是,我们非常自然的把sigmoid计算得到的值作为预测点为类别1的概率。概率大于0.5归类为1,小于0.5归类为0。至此,我们得到了预测函数模型
这里面, φ(z) 表示的是类别取1的概率大小,那类别取0的概率大小j就是 1-φ(z)
2.构造代价函数
按照线性回归的思路,如果利用误差平方和来当代价函数,得到
但是,我们此时的 预测函数模型φ 并 不是线性 的,如果把φ带入代价函数,得到的 J 是类似于下图的非凸函数,它有很多极值,使用梯度下降会很难找到代价函数最小的情况,所以这样构建代价函数并不合适。
我们可以换一个思路,最大似然估计该登场了。我们根据预测函数构造一个它的分布的概率密度,利用已知的样本反推参数。
根据上一步我们得到的预测函数,可以知道概率如下:
我们将这2个式子合并,得到概率公式:
由最大似然估计可知,联合概率就是:
最大似然估计的目标是找到参数W使得L(w)最大,那么我们对L加一个负号,是不是就可以得到代价函数,也就是找到参数W使得-L(w)最小。不过,这并不重要,我们的目的只是求参数w而已。为了简化计算,我们对L(w)取对数
最后得到代价函数
3.求解参数
这里可以使用梯度下降法求解参数,具体做法已经在之前的线性回归中讲过,这里求解方式雷同,不在赘述。如果是使用计算库求解的话,可是使用 BFGS 与
L-BFGS 来代替梯度下降法,这2种算法收敛速度更快,且可以自适应选择学习效率α,不必手动设置。
2. 边界判定
让我们回到最开始,再来回顾一下我们的逻辑回归算法。
开始我们假设了一个线性模型,然后将线性模型带入了sigmoid函数,得到了逻辑回归模型。由sigmoid函数的图像,我们不难得出这样的结论:
那么现在假设线性模型如下,且已求出参数[-3,1,1]。则当-3+x_1+x_2≥0,即x_1+x_2≥3时,模型将预测 y=1。
如果从一开始就不是线性模型呢?下图就是曲线模型,且参数是[-1,0,0,1,1]
所以我想说的是: 决定决策边界的不是训练集,而是假设本身和参数,训练集只是用来拟合求参数。
三. 逻辑回归特点
- 逻辑回归的数学模型和求解都相对比较简洁,实现相对简单。
- 本文最开始使用逻辑回归时,是将一个假设的线性模型代入sigmoid中,所以这个逻辑回归只能处理线性问题。实际中,也可以将非线性模型代入sigmoid,用来处理非线性问题。
- 逻辑回归适用于二分类问题,实际工作中,我们可能会遇到如下问题:预测一个用户是否点击特定的商品;判断用户的性别;预测用户是否会购买给定的品类;判断一条评论是正面的还是负面的;这些都可以尝试使用逻辑回归算法。