问题背景假设有这样一个需求:判断某朵花是否是鸢尾花。我们知道不同品种的花长得不一样,所以我们可以通过花的几个外观特征(花萼长、花萼宽、花瓣长、花瓣宽等)来表达这种花。基于这样的思路,我们收集了N朵花,并对其进行了标注,得到如下数据集。图中考虑了最简单的情况,Y(是否为鸢尾花)与特征X线性相关,定义W为相关系数,即模型F可以用下式表示:简化成向量化形式:图中也是线性回归:现在问题来了,Yes和No是两种状态,在计算机科学中我们常用1/0开关来表示,但是从取值范围来看数学公式expression:可以取任意值,这个是没办法直接变成Express0/1的切换值的。那么如何解决这个问题呢?通过转换函数(也称为激活函数)将线性回归转换为逻辑回归。建模思路并不是任何函数都可以作为激活函数。激活函数具有以下良好的性质:非线性,线性函数的复合线性函数仍然是线性函数,因此线性激活函数不能带来非线性变换,使用这样的激活函数无法增强模型的表达能力,以至于无法拟合复杂的实现问题,所以激活函数必须是非线性的。连续可微,如果函数不可微,就没有办法通过梯度下降法对其进行迭代优化,得到近似最优解。如果激活函数不可微,则可能需要其他复杂的数学工具来求解。首先,可能没有解决方案,其次,计算成本过高,无法实现和实施。单调性,线性函数本身是单调的,它本身就具有一定的物理意义,所以在激活函数转换后保持这种性质,其单调性是无法改变的。通过分段函数满足直接转换,直接将f(x)映射为0或1,如公式所示:但是,这个分段函数是不连续的、不可微的、非单调的,并且多了一个参数k,所以这个分段函数不适合用作激活函数。间接映射不是直接映射到0或1,而是将f(x)的取值范围压缩到(0,1),如公式所示:这是sigmoid函数,下图是乙状结肠功能。显然,这个函数具有上面提到的激活函数的三个优良性质。同时将输出压缩到(0,1)区间。有一种很直观的感觉,我们可以把这个输出值理解为一个概率。在这道题中,指的是鸢尾花的概率。当概率值大于0.5时,说明是鸢尾花的概率为1,否则不是鸢尾花,即为0,可以实现分类判别。实现逻辑既然我们有了sigmoid激活函数,我们如何使用它来训练模型呢?模型之所以能训练好,取决于两个神器:损失函数和梯度下降。前者可以量化我们的模型预测和真实结果之间的误差,确定优化后的目标函数,后者可以知道如何减少误差,具体优化目标函数。损失函数sigmoid激活函数的输出值可以看作是一个概率。具体来说,我们可以把这个概率看成是预测结果为是的概率。我们需要预测的分类结果要么是,要么不是。只有两种情况。显然,样本X服从伯努利(0-1)分布。假设样本X,当分类标签y的真实值为1时,我们看到y_pred也是sigmoid的输出值(模型预测为yes的概率),0为1的互斥事件。当分类标签的真实值为0时,我们依赖于1-y_pred(模型预测为否的概率),因此条件概率P(Y|X)可以量化模型预测的准确率。合并化简,整合成一个统一的形式P(Y|X)就是模型预测结果。显然,P(Y|X)的值越接近1,模型预测结果越准确。一个数据集有N个样本,每个样本都是独立的,所以模型的好坏在整个数据上可以定义如下:那你可以得到最大值,这个就是优化方法中的MaximumEstimate(MLE),我们已经找到了损失函数。接下来,我们要看这个损失函数如何转化:加负号(最大值问题转化为最小值问题,梯度下降可以找到最小值),取对数(不改变单调性,并将复杂的乘法化为简单的)经过连续加法的梯度下降)确定目标函数,利用梯度下降迭代更新参数W,使其不断逼近目标函数的极值点.梯度推导:联立式②③可以看出模型在t+1时刻的预测误差总是会小于t时刻。通过这样的迭代,模型可以不断学习和调整,直到偏导数为0(局部)的最优极值点,此时参数不能再调整,模型停止再训练。结论逻辑回归(LogisticRegression)是机器学习中最简单、最基本的模型框架和基本范式。毫不夸张地说,它是机器学习的基石之一。很多后续的机器学习模型都是建立在这个基础之上的。在模型框架方面,提出了多种形式的扩展和改进。深入理解逻辑回归模型,梳理逻辑回归模型背后的建模思路、成因、实现逻辑,将使我们对机器学习的方法论有更全面、更清晰的认识。
