【机器学习chp6】对数几率回归

推荐文章1,其中解释了负log似然损失等价于交叉熵损失。

【王木头·从感知机到神经网络】-CSDN博客

推荐文章2,其中有牛顿法的介绍

【王木头·梯度下降法优化】随机梯度下降、牛顿法、动量法、Nesterov、AdaGrad、RMSprop、Adam-CSDN博客

推荐文章3,其中通过实例介绍了各种二分类模型的评价指标

【机器学习】二分类模型评估方法大全-CSDN博客

前言

本文遗留问题:

(1)案例分析未完成。

(2)分类模型评价指标实验需回顾。

目录

前言

一、对数几率回归模型

1、分类任务

(1)分类任务概述

(2)两类分类任务

2、对数几率回归模型

[(1)Sigmoid 函数](#(1)Sigmoid 函数)

(2)对数几率回归模型

二、对数几率回归的损失函数

1、0/1损失

2、交叉熵损失

3、对数几率回归模型的目标函数

(1)对数几率回归模型的目标函数

(2)对数几率回归中正则化的必要性

三、对数几率回归的优化求解

1、梯度下降求解

(1)目标函数形式

(2)损失函数梯度

(3)Hessian矩阵正定------逻辑回归极小值是最小值

2、牛顿法求解

3、拟牛顿法介绍

4、Logistic回归的牛顿求解:IRLS

四、多类分类任务的对数几率回归

1、1vs.其他

2、多项分布直接实现多分类任务

3、损失函数

五、分类任务中的样本不均衡问题

1、概述

2、从数据角度解决

(1)随机上/下采样

(2)下采样与集成学习

(3)上采样与样本合成

3、从算法层面解决

(1)代价敏感学习

(2)Scikit-Learn中的不均衡样本分类处理

六、分类模型的评价指标

七、对数几率回归案例分析

八、⭐⭐全文总结⭐⭐


一、对数几率回归模型

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. 增大参数时, 会变得更大或更小 :对于正样本(),当参数 增大时, 会变得更大,使得 更接近1;对于负样本(),如果参数 继续增大, 会变得更小,使得 更接近0。

  2. "完美拟合":当模型参数足够大时,正样本的预测概率会接近1,负样本的预测概率会接近0。这意味着模型能够完美地分开所有正负样本,产生一个理想的决策边界。

  3. 极端情况下的无穷大:在训练数据完全线性可分的情况下,最大化似然函数会导致参数不断增大,从而使得模型对每个样本的分类概率趋向于极端值(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
推荐阅读:

  1. 谈谈常见的迭代优化方法
    https://blog.csdn.net/aws3217150/article/details/50548177
  2. 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合成少数过采样技术):

  • 通过插值法生成新的少数类样本。
  • 步骤:
    1. 对于少数类样本 ,找到其 个最近邻样本。
    2. 随机选择一个最近邻样本
    3. 之间生成一个新的样本:
  • 新样本是通过少数类样本之间的插值生成,旨在增加少数类样本的分布密度。

优点:

  • 避免了随机上采样可能导致的过拟合问题。
  • 实践证明可以提高分类器性能。

不足:

  • 高维数据表现不佳:高维空间中样本邻域稀疏,插值的有效性下降。
  • 引入噪音:可能将多数类的邻近样本误认为少数类,从而生成噪音样本。
  • 类别重叠风险:边界区域可能引入错误的类别标签。

改进

  • 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似然损失)。
第五部分介绍了分类任务中样本不均衡问题,可以从数据角度解决,
分为上采样(样本少的类采用差值扩充)和下采样(样本多的类抽取少量,多次建模,取平均模型);从算法角度主要是给类别赋不同的权重,让样本少的类别权重大一点。
第六部分介绍分类任务的评价指标。
第七部分对一个案例进行分析,对本节知识实现了应用。

相关推荐
雨中rain16 分钟前
贪心算法(1)
算法·贪心算法
不爱学习的YY酱23 分钟前
【操作系统不挂科】<CPU调度(13)>选择题(带答案与解析)
java·linux·前端·算法·操作系统
平头哥在等你34 分钟前
求一个3*3矩阵对角线元素之和
c语言·算法·矩阵
飞滕人生TYF37 分钟前
动态规划 详解
算法·动态规划
_OLi_40 分钟前
力扣 LeetCode 106. 从中序与后序遍历序列构造二叉树(Day9:二叉树)
数据结构·算法·leetcode
ahadee1 小时前
蓝桥杯每日真题 - 第18天
c语言·vscode·算法·蓝桥杯
地平线开发者2 小时前
CPU& 内存加压工具 stress-ng 介绍
算法·自动驾驶
XY.散人2 小时前
初识算法 · 分治(2)
算法
DanielYQ2 小时前
LCR 001 两数相除
开发语言·python·算法
sp_fyf_20242 小时前
【大语言模型】ACL2024论文-18 MINPROMPT:基于图的最小提示数据增强用于少样本问答
人工智能·深度学习·神经网络·目标检测·机器学习·语言模型·自然语言处理