正文共5103张图,34张图,预计阅读时间20分钟。
线性回归模型既可以用于回归,也可以用于分类。解决回归问题,可以用于连续目标值的预测。但是针对分类问题,该方法则有点不适应,应为线性回归的输出值是不确定范围的,无法很好的一一对应到我们的若干分类中。即便是一个二分类,线性回归+阈值的方式,已经很难完成一个鲁棒性很好的分类器了。
为了更好的实现分类,逻辑回归诞生了。[逻辑回归是假设数据服从Bernoulli分布,因此LR属于参数模型]通过在线性回归模型中引入Sigmoid函数,将线性回归的不确定范围的连续输出值映射到(0,1)范围内,成为一个概率预测问题。可以把LR看作单层的神经网络。LR目标函数:其中Sigmoid函数g(z)的定义如下:Sigmoid函数的函数图像为:
Sigmoid函数的导数形式:
整合一下,LR的单个样本的目标函数为:假设有n个独立的训练样本{(x1,y1),(x2,y2),…,(xn,yn)},y=。那每一个观察到的样本(xi,yi)出现的概率是:解释一下:那我们的整个样本集,也就是n个独立的样本出现的似然函数为(因为每个样本都是独立的,所以n个样本出现的概率就是他们各自出现的概率相乘),到整个样本的后验概率:
其中:
通过对数进一步化简为,最终LR的目标函数为:
2.1.如何求解模型的参数?LR模型的数学形式确定后,剩下就是如何去求解模型中的参数。
利用链式法对目标函数则进行求导:其中,一共可以分为三部分分别求导:第二部分:第三部分:最终整体的求导形式:
模型参数的更新公式为:沿梯度负方向选择一个较小的步长可以保证损失函数是减小的,另一方面,逻辑回归的损失函数是凸函数(加入正则项后是严格凸函数),可以保证我们找到的局部最优值同时是全局最优。
此外,常用的凸优化的方法都可以用于求解该问题。例如共轭梯度下降,牛顿法,LBFGS等。2.2.Python实现LR的核心代码片段2.3.模型的优化-引入正则化当模型的参数过多时,很容易遇到过拟合的问题。这时就需要有一种方法来控制模型的复杂度,典型的做法在优化目标中加入正则项,通过惩罚过大的参数来防止过拟合。
实际应用时,由于我们数据的维度可能非常高,L1正则化因为能产生稀疏解,使用的更为广泛一些。简言之,把Sigmoid函数换成softmax函数,即可适用于多分类的场景。
整体的目标函数:
通过上面的推导可知,当多分类的K=2时,与使用Sigmoid的二分类是一致的。逻辑回归本质上是一个线性模型,但是,这不意味着只有线性可分的数据能通过LR求解,实际上,我们可以通过2种方式帮助LR实现:针对线性不可分的数据集,可以尝试对给定的两个feature做一个多项式特征的映射,例如:
下面两个图的对比说明了线性分类曲线和非线性分类曲线(通过特征映射)
左图是一个线性可分的数据集,右图在原始空间中线性不可分,但是利用核函数,对特征转换[x1,x2]=>[x1,x2,x21,x22,x1x2]后的空间是线性可分的,对应的原始空间中分类边界为一条类椭圆曲线。
在LR中,我们可以通过在基本线性回归模型的基础上引入交叉项,来实现非线性分类,如下:但是这种直接在交叉项xixj的前面加上交叉项系数wij的方式在稀疏数据的情况下存在一个很大的缺陷,即在对于观察样本中未出现交互的特征分量,不能对相应的参数进行估计。
领取专属 10元无门槛券
私享最新 技术干货