「逻辑回归模型」解决的是监督学习中的分类问题。但由于历史原因名字中带有回归,但它实际上是分类算法。还是从最基础的分类问题「二分类问题」开始讲起。
先统一符号表达
= 第 i 个训练样本中的第 j 个属性值
= 第 i 个训练样本所有属性组成的向量
m = 样本数
n = 属性数
二分类问题
我们的输出向量 y 不是连续的值范围,而是只有 0 或 1(即 y ε {0,1})。
假设函数 / 逻辑分类器
假设函数应该满足
在二分类问题中,假设函数的含义是 ,即 在给定的输入特征 和参数 下,预测 的概率。
假设函数是 Sigmoid 函数,也称为逻辑函数,公式如下:
由 Sigmoid 函数的特点:
- 当 时, ,也就是此时预测值等于 1 的概率大于等于50%,所以此时预测
- 当 时, ,也就是此时预测值等于 1 的概率小于50%,所以此时预测
而我们称 为「决策边界」,决策边界将分隔 y = 0 和 y = 1 的区域。此外, 不需要是线性组合,可以是圆形函数(如 )或者其他形状函数,以适应我们的数据。
代价函数
我们不能使用与线性回归相同的代价函数,因为逻辑回归假设函数不是线性函数,若将逻辑回归假设函数代入到线性回归的代价函数中产生的函数会导致输出波动,从而导致许多局部最优。 换句话说,它不是凸函数。
下面的代价函数 J(θ) 对于逻辑回归模型而言一定是凸函数,它是由最大似然估计原理从统计中得出。而关于如何通过最大似然估计原理得到这个公式就不属于目前讲解范畴。
通过合并公式,得:
矢量化后,公式为:
梯度下降算法
梯度下降算法通用形式为:
将逻辑回归的代价函数代入通式并求导后,公式变为:
会发现,此算法与我们在线性回归中使用的算法相同。 但两个模型的假设函数 不同,所以两者的梯度下降算法还有有所区别的。
矢量化:
除了梯度下降算法能求逻辑回归模型代价函数的最小值外,还有「共轭梯度算法」 、「BFGS」、「L-BFGS」三种算法。这三种算法的学习需要花上几天甚至几周的时间,这里就不多介绍。简单介绍一下这三种与梯度下降算法的对比,他们的优势和劣势。
优点 | 缺点 |
---|---|
不需要选择学习率 | 算法复杂 |
收敛速度比梯度算法快 |
这三种算法使用时最好是调用现有的库。库中的算法是经过数值专家进行优化过的,比自己编写的代码好得多。
多分类问题
学会了解决二分类问题后,现在,我们将数据分类为两类以上,即从 y = {0,1} 扩展到 y = {0,1,...,n}。
一对多算法
「一对多算法」:先将选择其中一个类别独立出来,再将其他的类别当做一个类别,然后运用二分类问题的解决方法就可以解出这个独立类别的决策边界;以此类推,求得所有类别的决策边界。下面用图解释算法的过程。
与上图对应 y 值的变化:
其中,多分类问题的假设函数及其含义如下图:
如何预测:将输入值输到每一个假设函数中,将返回结果最大的当做预测结果。
总结
最后用一张表总结一下逻辑回归模型中的算法和公式
扩展知识
在 Octave 中运行梯度下降算法
fminunc 函数已经对梯度下降算法已经进行一定优化。fminunc 函数的使用细节见使用help fminunc
命令
上述的算法代码也可以套用在线性回归模型中。