一. 前言
逻辑(Logistic)回归是分类算法中最基础也是最重要的手段,因此,掌握其内在原理是非常必要的。逻辑回归虽然名字里带“回归”,但是它实际上是一种分类方法,主要用于两分问题(即结果要么是0,要么是1)。
在介绍逻辑回归之前,我们需要回顾一些数学基础内容。
1. 最大似然估计
-
什么是最大似然估计
通俗理解来说,就是整体概率分布已知,利用已知的样本结果信息,反推最具有可能(最大概率)导致这些样本结果出现的分布模型的参数值!
举个栗子:假如国民收入符合正态分布,概率密度如下图。现在手里有一部分调查样本数据,根据这些样本数据,反推正态分布概率密度中的参数值,就是最大似然估计解决的问题。
- 最大似然估计的一般过程
首先要知道整体的分布模型,比如随便一个分布,概率密度p(x),参数是θ
其次要有一些样本数据,假设为D
似然函数就是这个联合概率密度,定义为L,自变量是θ
极大似然估计法原理就是固定样本观测值,挑选参数θ,使得似然函数L取得最大值。
所以,现在问题转化成了寻找使L取最大值的θ,即为目标参数,
-
当未知参数只有一个时,我们可以对L求导,令导数为0取极值,解出θ。
-
当未知参数有多个时,我们可以对L求偏导,令偏导数为0,得到方程组解出参数。
举个例子:
好,至此我们总结一下最大似然估计的一般步骤:
- 写出似然函数
- 对似然函数取对数(为什么取对数?因为直接求导可能很麻烦,对数不改变单调性,不影响计算极值点。)
- 求导数
- 解似然方程
二. 逻辑回归算法
1. 逻辑回归基本原理
接下来我们回归正题,来看一下逻辑回归。逻辑回归也叫做对数几率回归,明明是分类算法,为什么叫做回归呢?因为它仅仅是在线性回归的基础上,将线性模型通过一个函数,转化为结果只有0/1的分类模型。它的建模过程和线性回归基本相同:
- 寻找预测函数
- 构造代价函数
- 想办法使得代价函数最小并求得回归参数
-
寻找预测函数
假设有一个二分类问题,输出为y∈{0,1},而线性回归模型产生的预测值为(w是参数向量)
我们希望有一个理想的函数来帮我们实现z值到0/1值的转化。 于是我们找到了sigmoid函数
这里面,φ(z)表示的是类别取1的概率大小,那类别取0的概率大小j就是1-φ(z) -
构造代价函数
按照线性回归的思路,如果利用误差平方和来当代价函数,得到
我们可以换一个思路,最大似然估计该登场了。我们根据预测函数构造一个它的分布的概率密度,利用已知的样本反推参数。
根据上一步我们得到的预测函数,可以知道概率如下:
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,用来处理非线性问题。
- 逻辑回归适用于二分类问题,实际工作中,我们可能会遇到如下问题:预测一个用户是否点击特定的商品;判断用户的性别;预测用户是否会购买给定的品类;判断一条评论是正面的还是负面的;这些都可以尝试使用逻辑回归算法。