推荐文章1,其中解释了负log似然损失等价于交叉熵损失。
推荐文章2,其中有牛顿法的介绍
【王木头·梯度下降法优化】随机梯度下降、牛顿法、动量法、Nesterov、AdaGrad、RMSprop、Adam-CSDN博客
推荐文章3,其中通过实例介绍了各种二分类模型的评价指标
前言
本文遗留问题:
(1)案例分析未完成。
(2)分类模型评价指标实验需回顾。
目录
[(1)Sigmoid 函数](#(1)Sigmoid 函数)
(3)Hessian矩阵正定------逻辑回归极小值是最小值
一、对数几率回归模型
1、分类任务
(1)分类任务概述
监督学习的定义:
给定训练数据集 ,其中 是输入特征, 是输出或响应。
分类任务:
当 时,监督学习任务称为分类任务。目标是学习从输入 到输出 的映射 。
测试阶段:
利用学习到的映射 对新的数据 进行预测 。
分类任务的重点是构建一个模型 来捕捉输入 与输出 的关系,并在测试数据上进行预测。
(2)两类分类任务
两类分类的输出 : 。
伯努利分布 :两类分类任务的概率分布可以用伯努利分布描述: 其中, 表示事件 的概率。
对于输入 ,输出 的条件分布用 描述:
此处 表示在输入 的情况下, 的概率。
2、对数几率回归模型
(1)Sigmoid 函数
定义:
导数:
Sigmoid 函数的特性在于其值域在 ,适合作为概率值。
(2)对数几率回归模型
概率密度函数 :
线性模型 :假设 的形式为: 但由于 是概率值,需在区间 内,因此将其通过 sigmoid 函数约束: 其中 sigmoid 函数为:
对数几率回归使用 sigmoid 函数将线性模型的输出变换为概率。
对数几率:
定义一个事件的几率(odds)为该事件发生的概率与不发生的概率的比值:
两边同取log运算,得到对数几率:
决策边界:
分类规则:根据后验概率的大小进行分类: 决策边界是 ,此时 和 的概率相等。
二、对数几率回归的损失函数
1、0/1损失
若预测值 等于真实值 ,损失为 0;否则为 1:
缺点:0/1 损失函数不连续,导致优化计算困难。
替代:通常选用凸损失函数(如交叉熵损失),它连续且易于优化,且与 0/1 损失结果一致。
2、交叉熵损失
交叉熵损失描述了两个分布之间的差异,用于分类任务中概率分布的对比。
在对数几率回归模型中:
其中:
- ,表示预测为正类的概率;
- 是 Sigmoid 函数。
交叉熵损失等价于负log似然损失,详细的分析在推荐文章1。
3、对数几率回归模型的目标函数
(1)对数几率回归模型的目标函数
对数几率回归的目标函数包含两部分:
- 损失项:交叉熵损失,用于衡量预测值与真实值之间的差异;
- 正则化项:用于避免模型过拟合,限制权重大小。
数学表达式:
其中:
- 是正则化强度的超参数;
- 是正则化项,可以选择:
- 正则:;
- 正则:;
- 或两者的组合。
(2)对数几率回归中正则化的必要性
从贝叶斯角度来看,正则化的引入是为了在参数估计过程中加入先验信息,以便对模型的复杂性进行约束,防止过拟合。在没有正则化的情况下,实际上就是在没有任何先验假设的情况下进行最大似然估计 (MLE),即直接根据数据推断参数。
当你使用对数几率回归(logistic regression)并且没有引入正则化时,模型的训练目标仅仅是最大化似然函数。这个过程中,尤其在训练数据完全可分的情况下,最大化似然函数会导致权重参数无限增大,因为这样的增大能够让模型的决策边界完美地将正负样本分开,从而使得训练误差趋近于零。
贝叶斯视角下来看,这意味着我们没有任何先验信息来约束参数的大小,导致在没有任何限制的情况下,模型会过度拟合数据,参数趋向无穷大。具体来说,在数据完全可分时,似然函数趋向无穷大,因为随着参数增大,模型能够越来越准确地分类每一个样本,但这种无穷大的可能性缺乏对参数的合理限制。
问题:为什么参数大可以让能够让模型的决策边界完美地将正负样本分开,从而使得训练误差趋近于零?
在逻辑回归中,模型试图找到一个最优的决策边界来将正负样本区分开。随着模型参数() 增大:
-
增大参数时, 会变得更大或更小 :对于正样本(),当参数 增大时, 会变得更大,使得 更接近1;对于负样本(),如果参数 继续增大, 会变得更小,使得 更接近0。
-
"完美拟合":当模型参数足够大时,正样本的预测概率会接近1,负样本的预测概率会接近0。这意味着模型能够完美地分开所有正负样本,产生一个理想的决策边界。
-
极端情况下的无穷大:在训练数据完全线性可分的情况下,最大化似然函数会导致参数不断增大,从而使得模型对每个样本的分类概率趋向于极端值(1或0),从而使决策边界完全分开正负样本。
当训练数据 不完全可分 时,理论上来说,正则化并不是绝对必要的,但引入正则化依然是一种常见的做法。
当训练数据 不完全可分 时,训练数据中正负样本可能重叠,且存在无法通过一个简单的线性决策边界完美分开的情况。这意味着,即使模型参数增大,也无法使得所有样本的预测概率趋近于0或1。在这种情况下,模型会尽量减少训练误差,但它不会过度增大参数来"强行"分开样本,而是会在一个较为合理的范围内收敛,从而实现较好的拟合。
三、对数几率回归的优化求解
对数几率回归的目标函数通常无法通过解析方式直接求解,因此需要使用数值优化的方法。主要的优化方法有:
梯度下降法:
- 随机梯度下降(SGD):每次使用一个样本点进行梯度更新,收敛速度快,但容易受到噪声干扰。
- 随机平均梯度(SAG):改进了SGD,通过利用历史梯度信息进行加权平均,减少震荡。
- SAGA:进一步优化了SAG算法,适用于非凸问题。
- 坐标轴下降法:逐次优化每个变量。(当使用L1正则时只能用坐标轴下降)
牛顿法和拟牛顿法:
- 使用二阶导数(Hessian矩阵)进行优化,收敛速度更快,但计算开销较大。包括BFGS和L-BFGS等方法。
1、梯度下降求解
(1)目标函数形式
- :交叉熵损失,定义了模型预测值与真实标签的偏离程度。
- :正则化项,防止模型过拟合。可以是L1正则、L2正则,或二者结合。
- :超参数,用于平衡损失函数和正则项。 起到正则作用, 越大,正则越少。
(2)损失函数梯度
梯度的表达式是:
其中:
- ,表示模型的预测值;
- 是真实标签;
- 为输入数据的转置。
梯度下降法使用梯度信息沿负梯度方向更新权重,更新公式为:
其中 是学习率。
(3)Hessian矩阵正定------逻辑回归极小值是最小值
Hessian矩阵 的定义:
展开梯度的二阶导数:
通过链式法则得到:
使用矩阵表示:
其中:
- ,为对角矩阵
- 为输入特征矩阵, 表示单个样本的特征向量。
所以Hessian矩阵 为正定矩阵,梯度下降能找到全局最小值。
2、牛顿法求解
推荐文章2中有关于牛顿法的简单介绍
对数几率回归的牛顿法梯度下降的迭代公式为:
优点是收敛速度快,缺点是需要计算和存储Hessian矩阵,计算复杂度较高。
3、拟牛顿法介绍
牛顿法比一般的梯度下降法收敛速度快。
但在高维情况下,计算目标函数的二阶偏导数的复杂度高,而且有时候目标函数的海森矩阵无法保持正定,不存在逆矩阵,此时牛顿法将不再能使用。
因此人们提出了 拟牛顿法 :不用二阶偏导数构造出可以近似Hessian矩阵(或Hessian矩阵的逆矩阵)的正定对称矩阵,进而再逐步优化目标函数。
不同的Hessian矩阵构造方法产生了不同的拟牛顿法,BFGS/L-BFGS
推荐阅读:
- 谈谈常见的迭代优化方法
https://blog.csdn.net/aws3217150/article/details/50548177 - Mathematical optimization: finding minima of functions
https://www.scipy-lectures.org/advanced/mathematical_optimization/
4、Logistic回归的牛顿求解:IRLS
四、多类分类任务的对数几率回归
1、1vs.其他
对每个类别 ,训练一个对数几率回归分类器 ,预测 概率
对新的输入 ,选择使得 最大的类别作为预测(最大后验估计, MAP)
即
2、多项分布直接实现多分类任务
Bernoulli分布用于描述二分类任务,而Multinoulli分布(即多项分布)用于多类分类任务。
Multinoulli分布的参数表示为类别的概率向量 ,其中每个分量表示对应类别的概率,所有分量和为1。
softmax函数及分类
Softmax函数扩展了Sigmoid函数,用于将线性组合的输出转换为类别概率。其公式为:
Softmax分类器适合处理多类分类任务,通过计算每个类别的概率并选择最大概率的类别作为最终输出。
3、损失函数
定义为负对数似然损失(Negative Log-Likelihood Loss)。损失函数形式为:
等价为交叉熵损失。
最大化似然估计等价于最小化训练集上的损失。
五、分类任务中的样本不均衡问题
1、概述
样本不均衡问题是指在分类任务中,不同类别的样本数量差异很大。例如:
- 少数类的样本数量远小于多数类。
- 导致模型在训练时倾向于多数类,从而忽略少数类的特征。
出现场景:
- 搜索引擎:点击预测中,点击的网页占比很小。
- 电子商务:商品推荐中,被推荐商品被购买的概率低。
- 信用卡欺诈检测:欺诈样本极少。
- 网络攻击识别:正常访问请求占绝大多数。
- 医疗诊断:罕见疾病的病例稀少。
这些场景中,少数类虽然样本少,但通常是更重要的,忽视少数类可能导致模型实用性降低。
解决 样本不均衡问题可从数据角度或算法角度。
2、从数据角度解决
通过数据增强或预处理的方式平衡数据分布。
(1)随机上/下采样
随机下采样:
从多数类中随机选择少量样本,与少数类样本结合构建新的训练集。
优点:减少多数类样本对模型的偏向。
缺点:可能丢失信息,导致模型性能下降。
随机上采样:
随机复制少数类样本来增加样本量 。
优点:平衡类别分布,充分利用现有数据。
缺点:易导致过拟合,模型可能"记住"重复的少数类样本。
(2)下采样与集成学习
EasyEnsemble算法:
- 将多数类样本通过有放回抽样生成多个子集。
- 每个子集与少数类样本组合形成一个训练数据集,分别训练多个模型。
- 最终预测结果为这些模型输出的平均值。
- 这种方法通过集成学习增强了模型对少数类的分类能力。
BalanceCascade(级联)算法:
- 根据已有模型的预测准确性,从多数类样本中有效地选择与少数类样本结合生成新的数据集。
- 对每轮训练中未正确分类的样本,作为下一轮训练的重要部分,直到满足某种停止条件。
- 最终模型由这些迭代模型的组合形成。
优点:
- 针对少数类的特征进行多样化训练,能够增强模型的泛化能力。
- 适合处理多数类数据量较大的场景。
缺点:
- 多次采样和模型训练可能会增加计算复杂度。
(3)上采样与样本合成
SMOTE算法(Synthetic Minority Over-sampling Technique合成少数过采样技术):
- 通过插值法生成新的少数类样本。
- 步骤:
- 对于少数类样本 ,找到其 个最近邻样本。
- 随机选择一个最近邻样本 。
- 在 和 之间生成一个新的样本:
- 新样本是通过少数类样本之间的插值生成,旨在增加少数类样本的分布密度。
优点:
- 避免了随机上采样可能导致的过拟合问题。
- 实践证明可以提高分类器性能。
不足:
- 高维数据表现不佳:高维空间中样本邻域稀疏,插值的有效性下降。
- 引入噪音:可能将多数类的邻近样本误认为少数类,从而生成噪音样本。
- 类别重叠风险:边界区域可能引入错误的类别标签。
改进:
- Borderline-SMOTE 等算法:
- 更关注少数类边界的样本,通过更精细的策略生成样本以减少错误噪音。
3、从算法层面解决
通过优化算法适应不平衡数据。
(1)代价敏感学习
核心思想:不同类别的分类错误代价不同,通过调整损失函数中的代价矩阵,赋予少数类更大的权重。
代价矩阵形式 : 代价矩阵
- :将 0 分类为 1 的代价。
- :将 1 分类为 0 的代价。
(2)Scikit-Learn中的不均衡样本分类处理
类权重(class_weight)
- 功能 :在训练模型时为每个类别分配权重,增加少数类的重要性。某类别的样本量越多,其权重越低;样本量越少,则权重越高
设置方式:
balanced
:自动计算权重,公式为:
- 自定义权重:手动设置每个类别的权重,如
{0: 0.9, 1: 1.1}
。
样本权重(sample_weight)
- 功能:为每个样本设置权重,在模型训练时区分样本的重要性。
- **特点:**可以结合类权重使用,最终权重为二者的乘积。样本的真正权重是:class_weight*sample_weight
六、分类模型的评价指标
推荐文章3。
两分类的评价指标在推荐文章3中已有分析,从两分类到多分类的情况:
七、对数几率回归案例分析
Otto商品分类
八、⭐⭐全文总结⭐⭐
对数几率回归虽然名字是回归,但它不是回归算法,而是分类算法。本文首先介绍了对数几率回归模型。采用sigmoid激活函数使得不同类别的概率和归一化。对其进行处理,如寻找损失函数和目标函数时对其取对数。
损失函数为交叉熵损失(或者说负log似然损失)。
目标函数为损失函数和加上正则项,对数几率回归一定要加正则项,因为如果样本数据可分,要让损失函数最小,即log似然最大,该过程中会使得参数w趋于无穷大。因为无穷大时 训练误差趋近于零。实现完美可分。
对目标函数的优化采样的方法是梯度下降法,改进方法为牛顿法,拟牛顿法。但如果正则化采用L1正则,不能使用梯度下降,只能用坐标轴下降。
在第四部分介绍了多分类的情况,激活函数采用sigmoid的扩展softmax。损失函数仍然为交叉熵损失(负log似然损失)。
第五部分介绍了分类任务中样本不均衡问题,可以从数据角度解决,
分为上采样(样本少的类采用差值扩充)和下采样(样本多的类抽取少量,多次建模,取平均模型);从算法角度主要是给类别赋不同的权重,让样本少的类别权重大一点。
第六部分介绍分类任务的评价指标。
第七部分对一个案例进行分析,对本节知识实现了应用。