第四章 逻辑回归

 一、逻辑回归模型(logistics regression model)

        首先我们通过几个具体示例进行展示:

        图中的问题和之前的线性回归的问题的主要差别在,线性回归问题中我们可以得到无穷多的输出结果,而逻辑回归中通常只会得到两个结果(即对多个输出进行统一的分类)。

        当我们用线性回归算法来对这种分类问题进行拟合时,就会产生图中的问题,如果数据都按照某个值(决策边界)进行平均分布,我们还可以通过人为选取比较好的分界线(图中的蓝色直线),但是如果出现偏差较大的值(图中最右边的极端值)就会对拟合直线产生严重影响,使得我们的分界取值无法符合当前的训练示例。所以对于以上分类问题,不能再使用线性回归模型,需要使用逻辑回归模型。

逻辑函数(sigmoid function)

        图中的曲线即为逻辑函数的图像,逻辑函数的表达式为:

g(z) = \frac{1}{1+e^{-z}}    0<g(z)<1

逻辑回归模型(logistics regression model)

        通过逻辑函数我们可以构建出逻辑回归模型,它可以分解为两个步骤:

        步骤一:

                        对于初始的特征变量的输出拟合,我们仍然使用线性回归模型,即

f_{\vec{w},b}(\vec{x}) = \vec{w}\cdot \vec{x} + b

        步骤二:

                        进行函数嵌套,将逻辑函数和线性回归函数进行嵌套,即

z = \vec{w}\cdot \vec{x} + b

g(z) = \frac{1}{1+e^{-(\vec{w}\cdot \vec{x} + b)}}

        最终我们得到了

        f_{\vec{w},b}(\vec{x}) =g(\vec{w}\cdot \vec{x} + b) = \frac{1}{1+e^{-(\vec{w}\cdot \vec{x} + b)}}

        将特征做为输入,进行线性拟合后,我们得到的输出值是无穷的,再通过逻辑函数进行约束,将输出值约束在区间[0,1](可以用概率进行替代),同时在结合逻辑函数的特性,我们便可以进行数值划分(分类)。

        因此当我们用概率进行等效时,等式变为:

f_{\vec{w},b}(\vec{x}) =P(y = 1|\vec{x};\vec{w},b)

        这里的分号只是用来表示w和b是影响计算给定输入特征x时y等于1的概率的参数。

        该模型及其变形是广泛用于互联网向用户展示特定类型的广告的算法。

补充一下ChatGPT对于逻辑回归模型的介绍

        逻辑回归之所以“看起来像”线性回归,是因为它先对特征做线性组合,然后通过 sigmoid 函数把它变成概率,用来分类。这其实是逻辑回归“回归”这个名字的来源之一,但实质上它是一个分类模型

决策边界(decision boundary)

        通常我们把概率值为50%的点做为临界点(阈值),根据逻辑函数的特性,有:

z = \vec{w}\cdot \vec{x} + b = 0

        此时我们可以得到一条决策边界的方程\vec{w}\cdot \vec{x} + b = 0(可以是任意的图像),同时我们需要观察数据集,先假设相关参数w和b,构建特征值表达式,然后进行判断,看决策边界是否合理。

具体示例:

        直线型:

        非直线型:

        决策边界可以为任意的形状,因为它取决于特征值表达式,所以在通常情况下使用多次项特征值表达式将会提高决策边界的准确度。


二、逻辑回归模型的代价函数(cost function of logistics regression model)

        图中定义的L(f_{\vec{w},b}(\vec{x}^{(i)}),y^{(i)})损失函数(loss function),在图中它表示单个样本残差平方的一半,表达式为:

L(f_{\vec{w},b}(\vec{x}^{(i)}),y^{(i)}) = \frac{1}{2}(f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})^{2}

        类比线性回归模型的代价函数,我们可以看出如果逻辑回归模型的代价函数仍然使用残差平方和表示,函数图像将会产生多个局部最小值,无法取得最优解。

        现在我们先定义逻辑回归模型的损失函数(也称为预测函数):

L(f_{\vec{w},b}(\vec{x}^{(i)}),y^{(i)}) =\left\{\begin{matrix} -ln(f_{\vec{w},b}(\vec{x}^{(i)})),y^{(i)} = 1 \\ -ln(1-f_{\vec{w},b}(\vec{x}^{(i)})),y^{(i)} = 0 \end{matrix}\right.

        函数f,它既做为逻辑回归的输出值f_{\vec{w},b}(\vec{x}) = \frac{1}{1+e^{-(\vec{w}\cdot \vec{x} + b)}},又做为损失函数的输入值。

        使用e为底数的对数函数,在求导时会使公式更简洁,尤其是在推导梯度或最大似然函数时。

        下面我们分情况对损失函数进行讨论

                当y⁽ⁱ⁾(真实值)为1时:

        由函数的曲线可以看出,函数f的值越接近1,损失值就越小,当函数f为1时,损失值为0。换句话说,当真实值y⁽ⁱ⁾为1时,如果我们的估计值越接近0,我们就会得到越大的损失。所以通过这个损失函数我们可以随预测值变化地激励(真实值和估计值相差越大,就越强烈地激励算法不要预测该值)相关算法做出跟准确的预测(即减小损失值)。

                当y⁽ⁱ⁾(真实值)为0时:

        与上一种情况相反,这里不再赘述。

        逻辑回归模型中的损失函数也称为交叉熵损失函数(Cross-Entropy Loss)。逻辑回归通过最大化似然函数来训练模型,而最大似然函数的负对数形式,正好就是交叉熵损失函数。因此我们最小化损失函数(最小化交叉熵)就是在最大化模型对数据的概率拟合

        基于以上的损失函数的讨论,我们进一步的定义逻辑回归模型的代价函数:

J(\vec{w},b) =\frac{ ^{1}}{m}\sum_{i = 1}^{m}L(f_{\vec{w},b}(\vec{x}^{(i)}),y^{(i)})

        关于该函数是凸函数的证明,如果是一维情况,看函数的二阶导数是否始终非负。如果是多维情况,看函数的 Hessian矩阵是否半正定(Hessian 的所有特征值都非负)。由于证明过程较为繁琐,这里不再补充。

ChatGPT对于损失函数和代价函数的简单对比:

概念损失函数(Loss Function)代价函数(Cost Function)
定义对象单个样本的误差所有样本误差的平均
作用衡量一个样本的预测与真实值之间的误差衡量整个训练集的平均误差
优化目标没有单独优化,只是被代价函数调用算法优化的最终优化的对象(例如梯度下降最小化它)

2025.5.7

简化相关方程式

损失函数的简化:

L(f_{\vec{w},b}(\vec{x}^{(i)}),y^{(i)}) =-y^{(i)}ln(f_{\vec{w},b}(\vec{x}^{(i)}))-(1-y^{(i)})ln(f_{\vec{w},b}(\vec{x}^{(i)}))

        该式即为原损失函数的简化式

        相应的代价函数为:

J(\vec{w},b) =\frac{ ^{1}}{m}\sum_{i = 1}^{m}L(f_{\vec{w},b}(\vec{x}^{(i)}),y^{(i)}) = -\frac{ ^{1}}{m}\sum_{i = 1}^{m}[y^{(i)}ln(f_{\vec{w},b}(\vec{x}^{(i)}))+(1-y^{(i)})ln(f_{\vec{w},b}(\vec{x}^{(i)}))]

        这个函数是凸函数,通过梯度下降法一定能找到全局最优解。

梯度下降法:

        和之前求线性回归模型的参数方法一致,求导后迭代,连续多次重复进行,直到求得导数值为0。(加快线性回归模型梯度下降速度的方法在这里也适用)

        这里唯一的难点是关于代价函数的求导计算,通过复合函数求导的方法,另设一个新变量代表sigmoid函数,然后再计算即可得到。

        尽管这里的公式和线性回归模型的公式看起来是一致,但首先两者的f(x)是不同的,线性回归模型是一条直线,逻辑回归模型是sigmoid函数,其次两者的损失函数的计算方法也不相同,线性回归模型是残差平方和,而逻辑回归模型是估计值和实际值的差。

拟合问题

1.线性回归模型

        在上图中,左边的称为欠拟合或者高偏差(学的不够),它描述了模型认为数据是线性变化的先入之见导致模型预测值与真实值有较大偏差,形成欠拟合。

        中间的曲线,符合数据的变化并且能较好的预测之后的数据值,即使它没有完全对应数据集,它也有较高的预测准确性(泛化度高),形成拟合。

        右侧的曲线,虽然完美的符合数据集给出的数据,但是它有较大的波动,无法保证能准确预测出之后的值,称为过拟合或者高方差(学的太多)。

2.逻辑回归模型

        具体的分析也可以类比于线性回归模型,这里不再赘述

补充基于ChatGPT对于欠拟合和过拟合的区分:

概念欠拟合(Underfitting)过拟合(Overfitting)
定义模型表达能力不足,无法有效捕捉数据的潜在结构与规律模型过于复杂,对训练数据中的噪声和偶然性特征进行过度学习
表现在训练集与测试集上均表现出较高的误差,预测性能较差在训练集上误差极小,但在测试集上误差显著增大,泛化能力下降
成因模型容量有限、特征维度不足、训练轮数或样本量不足模型容量过大、特征维度冗余、训练轮数过多或缺乏正则化约束
泛化能力表现泛化能力较弱,未能充分学习数据中的有效模式泛化能力较弱,学习了训练数据中的非通用性特征,导致对新样本适应性差
 泛化的定义:                                                                                                                                  泛化(Generalization) 是机器学习中的一个核心概念,指的是模型在 未见过的新数据上的表现能力。也就是说,一个模型不仅能在训练数据上表现良好,更重要的是能在 测试集或真实应用场景中依然做出准确预测

关于过拟合的解决方法:

1.加入更多的数据

        这是最显而易见的方法,更多的数据意味着曲线可以学习到更多的细节,通过精校其相关参数即可使得过拟合问题得到解决。但是这个方法只能在训练数据集足够大且持续给出的情况下才能较好的适用,如果数据集是固定的个数,该方法将无法使用。

2.合适的特征选择

        选择合适且典型的特征可以使得曲线更好的对数据进行拟合,我们可以适当的抛弃一些特征值,进而保证曲线的拟合。但是相应的我们会丢失对于目标进行描述的特征量,可能会得不偿失。

3.正则化

        在特征选择的基础上,我们可以选择较为温和的“丢弃”,设置其参数w_{j}为一个很小的值(缩小其权重),而不是简单地将参数设置为0,这样既可以使得曲线拟合度变高,又不会丢失原本的特征信息。

2025.5.13


三、正则化(regularization)

1.正则化的实现

        对于一个代价函数,我们可以在原式的基础上加上正则项,对代价函数进行相应的惩罚,刺激代价函数在找到最小值的同时,也保留了所有的特征值削弱高次幂项带来的影响,从而减少过拟合。

        现以多变量线性回归模型的代价函数进行示例,原代价函数为:

J(\vec{w},b) =\frac{ ^{1}}{2m}\sum_{i = 1}^{m}(f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})^{2}

        进行正则化

J(\vec{w},b) =\frac{ ^{1}}{2m}\sum_{i = 1}^{m}(f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})^{2}+\frac{\lambda }{2m}\sum_{j = 1}^{n}w_{j}^{2}

        \lambda:正则化参数(恒大于0)        n:特征值的个数        j:第j个特征值

        这里\frac{\lambda }{2m}除以2m的原因有两个:第一,与前面损失函数的形式保持一致性,从而简化计算梯度时的求导运算。第二,与样本数量m相关的归一化处理,让代价函数与样本数量无关,避免当样本量增大时正则项变得相对不重要。

        当我们取\lambda的极端值0时:代价函数为只有残差平方和项,相当于没有进行正则化,拟合曲线会呈现过拟合的图像。

        当我们取\lambda的极端值∞时:如果我们想获得最小的代价函数值,则参数w就必须全部无穷逼近0,此时代价函数值约等于参数b,为一条水平直线,呈现欠拟合的图像。

对于另一个参数b,这里给出为什么一般不会对其进行正则化的原因:

1. 偏置项不控制模型复杂度

正则化的核心目的是防止模型过拟合,通过限制模型的复杂度来提升泛化能力。权重参数w决定了输入特征对输出的影响;偏置项b是为了让模型有“平移”能力,不依赖输入特征的变化。所以,对b正则化没有太大意义,因为它:

        ·不影响模型的斜率或决策边界的复杂度;

        ·没有学习“数据中的模式”,只是起到一个基础的偏移调整作用。

2. 正则化偏置项可能会削弱模型拟合能力

如果你也正则化了b,就可能会出现以下问题:

        ·模型会倾向于把偏置项逼近 0;

        ·导致模型整体预测向 0 偏移;

        ·特别是在数据整体偏离 0(如 y 平均值不为 0)时,拟合能力反而下降。

2.用于线性回归的正则化方法

        梯度下降法如图所示

        这里只是增加了对正则项的求导,同时由于我们没有添加对参数b的正则项,所以对于参数b的更新仍然按照原式进行计算。

        关于参数w的更新

        通过移项合并,我们可以得到该式:

temp_{w_{j}} = w_{j}(1-\alpha \frac{\lambda }{m}) -\alpha \frac{1}{m}\sum_{i = 1}^{m}(f_{\vec{w},b}(\vec{x}^{(i)})-y^{(i)})x_{j}^{(i)}

        可以理解为w每次乘以一个非常接近1的值(大于0且小于1),然后减去通常的更新项,使得我们能逐步缩小参数w的值。

补充相关导数运算:

3.用于逻辑回归的正则化方法

        对于逻辑回归代价函数的正则化运算:

J(\vec{w},b) = -\frac{ ^{1}}{m}\sum_{i = 1}^{m}[y^{(i)}ln(f_{\vec{w},b}(\vec{x}^{(i)}))+(1-y^{(i)})ln(f_{\vec{w},b}(\vec{x}^{(i)}))]+\frac{\lambda }{2m}\sum_{j = 1}^{n}w_{j}^{2}

        对其使用梯度下降法:

        和之前一样,我们完全可以类比线性回归的正则化,逻辑回归和线性回归的梯度下降算法的表达式是一样的,仅仅是f(x)有所不同。

        通过正则化,我们便可以通过惩罚措施对算法进行优化,保证其能拟合出最合适的曲线,同时能对未知的数据进行准确的预测。

2025.5.15

第一课 第三周 完


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值