1. 逻辑回归概念
逻辑回归(Logistic Regression) 是一种 分类模型,主要用于解决 二分类问题(即分成两类,如是否通过、是否患病等)。逻辑回归的目标是根据输入的特征预测一个 概率,这个概率值介于 0 到 1 之间。
逻辑回归与线性回归的关系:
-
线性回归 是用来预测连续值的(如房价、身高),它输出的是一个具体的数值。
-
逻辑回归 则是用来预测类别的(如是否通过考试),它通过一个线性模型输出一个概率值,表示某个样本属于某一类别的概率。
总结:
-
线性回归输出数值,而逻辑回归输出概率。
-
逻辑回归的输出值是 0 到 1 之间的概率,通常我们会设定一个阈值,比如 0.5,将大于 0.5 的归为 1 类,低于 0.5 的归为 0 类。
2. 基本思想
逻辑回归的基本思想,我们可以从以下几个步骤来理解。
Step 1. 线性模型
逻辑回归首先构建的是一个线性模型,即根据输入的特征计算出一个值: 这里的 是权重向量,表示每个特征的重要性;是偏置项,帮助调整模型的输出。
这个线性模型的输出 可以是任何实数(正数、负数、大值、小值都有可能)。但是我们不能直接使用这个值进行分类,因为分类任务需要输出的值在 0 到 1 之间,表示概率。
Step 2. Sigmoid 函数
为了将线性模型的输出值转换为 0 到 1 之间的概率值,逻辑回归使用了 Sigmoid 函数:其中,。
Sigmoid 函数的作用:
-
将任意实数映射到 0 到 1 之间。例如,当 非常大时,Sigmoid 函数的输出接近 1;当 非常小时,Sigmoid 函数的输出接近 0。
-
输出的概率值 表示样本属于某一类别(通常为 1 类)的概率。
Step 3. 分类预测
逻辑回归的最终目标是对样本进行分类。我们通常通过设定一个 阈值 来判断:
-
如果 函数的输出概率值大于设定的阈值(如 0.5),则预测该样本属于 1 类;
-
如果小于阈值,则预测该样本属于 0 类。
总结:逻辑回归首先通过线性模型计算出一个值,然后将该值通过 Sigmoid 函数转换为概率,最后根据设定的阈值进行分类。
3. 逻辑回归的假设函数
在逻辑回归中,假设函数表示的是模型如何通过输入 得到输出的概率值。假设函数如下:其中:
-
是输入特征的线性组合;
-
是 Sigmoid 函数,用来将线性模型的输出转换为概率值。
通过这个假设函数,我们可以将任何输入特征转换为一个概率值,这个概率值用于表示样本属于某一类的可能性。
4. 逻辑回归的预测过程(PPT中的例子)
看PPT中的例子,假设有一组样本输入特征,逻辑回归的预测过程可以总结为以下几个步骤:
-
输入样本特征:如一个人的年龄、体重、是否吸烟等特征。
-
线性回归计算:根据权重和偏置,计算出线性回归的结果 。
-
Sigmoid 函数转换:将线性回归的输出通过 Sigmoid 函数转换为概率值。
-
分类结果:根据设定的阈值,将概率值转换为预测类别。
举例:
假设有一个样本的输入特征为 ( x = [年龄, 体重, 是否吸烟] ),计算过程如下:
-
使用权重和特征的线性组合计算出 ,例如输出为 1.5。
-
通过 Sigmoid 函数将 1.5 转换为概率 。
-
假设阈值为 0.6,由于 0.82 > 0.6,因此预测该样本属于 1 类。
5. 损失函数:对数似然损失
为了衡量逻辑回归模型的好坏,我们需要计算 损失函数。损失函数表示模型的预测值与真实值之间的差距。逻辑回归使用的损失函数是 对数似然损失函数,又称为 交叉熵损失(Cross-Entropy Loss)。其主要作用是用来指导模型更新权重,使得模型的预测越来越接近真实标签。
损失函数的公式如下:
其中:
-
( ) 是第 ( i ) 个样本的 真实类别,它的值为 0 或 1。
-
( ) 是模型预测第 ( i ) 个样本属于 1 类的概率,这个值介于 0 和 1 之间。
目标:我们希望模型预测出的概率 ( ) 尽量接近样本的真实类别 ( ),即:
-
如果样本的真实类别 (),那么我们希望模型预测的概率 ( ) 越接近 1 越好。这意味着样本被正确预测为 1 类。
-
如果样本的真实类别 ( ),那么我们希望模型预测的概率 ( ) 越接近 0 越好。这意味着样本被正确预测为 0 类。
损失函数的工作原理:
-
当真实标签 ( ) 时,损失函数的公式为:
-
-
如果 ( ) 越接近 1, 的值就越大,负号取反后,损失就越小。反之, 越小(越接近 0),损失就越大。
-
当真实标签 ( ) 时,损失函数的公式为:
-
如果 ( ) 越接近 0, 越接近 1,的值就越大,负号取反后,损失就越小。反之, 越接近 1,损失就越大。
举例讲解:
假设我们有一个样本,它的真实类别是 1,模型预测它的概率为 0.9。
根据损失函数公式: [ 损失 = ] 由于预测的概率接近真实值(1 类),损失较小,说明模型预测得很好。
如果模型预测的概率为 0.1(远离真实值),则损失会非常大,表明模型预测得很差。
假设我们有以下两种情况的样本:
-
样本1:真实类别为 ,模型预测它属于 1 类的概率为。
-
样本2:真实类别为 ,模型预测它属于 1 类的概率为 。
我们将通过损失函数公式计算这两个样本的损失值。
情况1:真实类别为 1,预测概率为 0.9
我们知道真实类别,根据损失函数公式,损失为:
用计算器计算:
因此,损失值为:
这个损失值很小,说明模型的预测结果非常接近真实值,预测得很好。
情况2:真实类别为 0,预测概率为 0.1
我们知道真实类别 ,根据损失函数公式,损失为:
用计算器计算:
因此,损失值为:
同样,这个损失值也比较小,说明模型的预测结果较好,预测接近真实情况。
错误预测的情况
如果模型预测出现较大的错误,损失值会明显增大。
例如,假设模型在真实类别为 1 的情况下预测了 ,我们计算损失:
损失值很大,说明模型的预测远离真实值,表现较差。
更复杂的例子:多个样本
假设我们有 3 个样本,它们的真实类别和模型预测的概率如下:
样本 | 真实类别 | 模型预测的概率 | 损失 |
---|---|---|---|
1 | 1 | 0.9 | |
2 | 0 | 0.8 | |
3 | 1 | 0.3 |
-
样本1的预测接近真实值,损失较小。
-
样本2的预测错误较大,损失明显较大。
-
样本3的预测远离真实值,损失也很大。
总结:
-
损失值越小,说明模型的预测越好,接近真实值。
-
损失值越大,说明模型的预测远离真实值,表现较差。
损失函数的优化
模型通过最小化损失函数来优化参数 ( w ) 和 ( b )。最小化损失函数意味着模型在逐步调整其权重,使得预测值越来越接近真实标签。通过 梯度下降法,模型不断更新参数,直到找到最优解。
6. 逻辑回归的优化:梯度下降
为了让模型能够更好地预测我们需要找到 最优的参数 ( w ) 和 ( b ),使得模型的预测结果尽可能接近真实值。为了达到这个目标,我们通常会通过 最小化损失函数 来找到这些最优参数。
为此,我们使用 梯度下降 来最小化损失函数。梯度下降(Gradient Descent) 是一种优化算法,旨在通过不断更新参数,找到使损失函数最小化的参数组合。
梯度下降的步骤:
-
计算损失函数的梯度:损失函数对参数 ( w ) 和 ( b ) 的偏导数。
-
更新参数:沿着负梯度方向更新参数,使得损失函数的值逐渐减小。
更新公式如下:
这里的 是学习率,控制每次更新的步长大小。
通过反复进行梯度下降,模型会逐渐找到最优的参数,使得损失函数达到最小值。
梯度下降的核心思想
梯度下降的核心思想是:找到损失函数下降最快的方向,并沿着这个方向不断更新模型的参数,直到找到最小值。
我们可以将这个过程想象为人在山坡上寻找最低点:
• 你站在山坡上的某一点,并且你可以感知到坡度的方向(梯度),这个坡度告诉你当前的方向是上坡还是下坡。
• 你希望找到山谷(最低点),因此你需要沿着坡度往下走(即沿着 负梯度方向 走),这样你每一步都会向山谷靠近。
• 如果坡度(梯度)很陡,你就走大步;如果坡度不大,你就走小步。走的每一步就是更新模型参数。
梯度的定义
在数学中,梯度 是一个向量,它表示损失函数关于每个参数的变化率。通俗地说,梯度告诉我们如何调整参数,才能让损失函数减少得最快。
对于参数 w 和 b ,它们的梯度分别是:
• 损失函数 L 对 w 的偏导数:
• 损失函数 L 对 b 的偏导数:
梯度的值表示当我们稍微改变 w 或 b 时,损失函数的变化情况。
为什么要沿着 负梯度方向 更新参数?
因为梯度表示的是损失函数在某一点上变化的方向,而我们的目标是最小化损失函数,因此需要沿着梯度减少的方向(即负梯度方向)更新参数。
公式解释:
我们沿着负梯度方向更新参数的公式为:
• 是 学习率(learning rate),是一个超参数,我们人为的设定学习率,使用它来控制每次更新的步长大小。如果学习率太大,可能会跳过最优解;如果学习率太小,收敛速度会很慢。
• 和 是损失函数对 w 和 b 的梯度,表示参数 w 和 b 需要调整的方向和幅度。
负号的含义:因为我们希望使损失函数变小,而梯度的方向指向损失函数增大的方向,所以我们需要朝着 负梯度方向 调整参数,这样才能减小损失函数的值。
举例说明:梯度下降的过程
假设我们有一个简单的损失函数,假设函数的图像,形状类似一个碗,我们目标是到碗的最低点,也就是最小损失对应的参数值。梯度下降的过程如下:
1. 初始化参数:首先,我们从随机的参数 w 和 b 开始。
2. 计算梯度:在当前参数下,计算损失函数的梯度(求偏导),得到 和 ,它们表示损失函数的变化方向。
3. 更新参数:根据梯度公式,沿着负梯度方向更新参数:
4. 重复:重复计算梯度和更新参数的过程,直到损失函数值不再明显减少,也就是达到收敛。
是学习率:学习率(Learning Rate,记作 ) 是梯度下降算法中一个非常重要的超参数。它决定了每次更新参数时步长的大小,也直接影响模型训练的收敛速度和最终的效果。选择一个合适的学习率对模型的训练至关重要。
1. 过大(学习率过高)的问题:
如果学习率设置得太大,梯度下降的每一步都会走得很远,可能会跳过最优点,从而导致损失函数波动不定,甚至发散(损失函数越来越大)。
2. 过小(学习率过低)的问题:
如果学习率设置得太小,梯度下降的每一步会很小,模型收敛速度很慢,训练时间会大大增加,容易陷入局部最优。
3. 适中的学习率 ():
合适的学习率可以保证模型的训练既快速又稳定,使损失函数逐步收敛到最小值。通常情况下,学习率适中时,损失函数的下降会是稳定的,并且收敛速度较快。
经验值:
• 常见的学习率范围:0.001 到 0.1。
• 具体的学习率选择应根据数据和模型的复杂程度来调整:
• 如果模型较为复杂(如深度神经网络),学习率通常设置得小一些(例如 0.001)。
深度学习 中,通常使用的初始学习率为 0.001 或 0.01。
• 对于简单的线性回归、逻辑回归等模型,学习率可以设得稍大(例如 0.01 到 0.1)。
总结
-
逻辑回归的工作原理:逻辑回归通过线性模型输出一个值,
-
并通过 Sigmoid 函数将其转换为 0 到 1 之间的概率值,表示样本属于某一类的概率。
-
损失函数:使用对数似然损失函数衡量模型预测结果与真实结果的差距,模型通过最小化损失函数来优化自身参数。
-
梯度下降:通过梯度下降算法更新模型的参数,使损失函数逐渐减小,找到最优的模型参数。
逻辑回归是一种非常直观和基础的分类算法,理解了它的原理可以帮助我们更好地理解其他更复杂的模型。