逻辑回归是一种判别式模型,与线性回归拟合数值有一定区别。逻辑回归假设因变量服从伯努利分布,而线性回归假设因变量服从高斯分布。通过Sigmoid激活函数引入非线性因素。逻辑回归的目的是分类,多用于解决二分类问题,它与多重线性回归分析类似。
定义
逻辑回归定义为:
假设函数
决策函数
最佳拟合参数
以上定义就是逻辑回归的主要思想,那么该如何求最佳参数$ \omega $使得函数充分拟合数据呢?这里使用最优化算法中的梯度上升方法求解,更新参数的公式如下:
其中:$ \alpha $是步长,函数$ h $就为上面的带参数的假设函数。
更新的过程就是梯度变化的过程,梯度就是函数变化最快的方向。首先初始化参数$ \omega $为单列的1矩阵,在算法中设置一个最大迭代次数,在这个次数内每次计算梯度,并沿此方向更新参数,直到参数达到最优活着次数达到最大。
代码分析如下:
1 | def gradAscent(data, label, alpha, maxEpoches, minError): |
均方误差
度量模型性能的一种方法是计算均方误差(MSE),公式表示为:
激活函数
Sigmoid函数定义为:
决策边界
决策边界因数据的不同分为线性和非线性,由$ \omega^T x = 0 $定义。
代价函数
代价函数$ J(\omega) $是一个标量,可以用来评价模型的性能,数值越小代表模型和参数越符合训练样本。所以,训练的目的就是最小化代价函数$ J(\omega) $,而训练的过程使用的方法就是梯度下降(Gradient Descent)。在逻辑回归中最常用的代价函数是交叉熵,定义如下:
其中,$ h_\omega (x) = \frac{1}{1+e^{(-\omega^T x)}} $
梯度下降
梯度是指代价函数$ J(\omega) $对每个参数的偏导数,而偏导数的正负决定了学习过程中参数的下降方向,学习率$ \alpha $决定了每次变化的步长。之后利用偏导数和学习率进行梯度下降操作,更新其参数。假设代价函数中的参数为$ \theta $,则更新参数的过程如下: