逻辑回归(随笔)

  1. 核心思想:从回归到分类
    想象一下,我们有一个简单的二分类问题(比如,根据肿瘤大小判断它是良性[0]还是恶性[1])。

线性回归的困境:如果我们直接用线性回归 y = wx + b 来拟合,我们会用一条直线来拟合这些点。对于新的样本,我们可能会设定一个阈值(比如0.5),大于阈值预测为1,反之预测为0。但这会带来很多问题:

线性回归的输出值域是 (-∞, +∞),而我们的标签是 {0, 1},不匹配。

容易受到极端值(离群点)的影响。

当数据分布不那么“规整”时,预测效果会很差。

逻辑回归的解决方案:逻辑回归在线性回归的基础上,增加了一个“激活函数”,将这个无限的直线输出挤压到 (0, 1) 这个区间内。这个值可以被解释为样本属于正类(例如1)的概率。

  1. 核心组件:Sigmoid 函数
    这个关键的“激活函数”就是 Sigmoid 函数,也叫逻辑函数。

它的公式是:
σ(z) = 1 / (1 + e^{-z})

其中,z 就是线性回归的输出:z = w₁x₁ + w₂x₂ + ... + wₙxₙ + b = WᵀX + b。

Sigmoid 函数的特点:

值域在 (0, 1) 之间,完美契合概率的定义。

它是一个单调递增的S形曲线。

当 z = 0 时,σ(z) = 0.5。

当 z -> +∞ 时,σ(z) -> 1。

当 z -> -∞ 时,σ(z) -> 0。

所以,逻辑回归的完整输出是:
P(y=1 | X) = σ(WᵀX + b) = 1 / (1 + e^{-(WᵀX + b)})

这个 P(y=1 | X) 就表示在给定输入特征 X 的情况下,预测结果为1的概率。

  1. 决策边界
    我们得到了一个 (0, 1) 之间的概率,如何最终做出分类决策呢?我们需要设定一个阈值,通常默认为 0.5。

如果 P(y=1 | X) >= 0.5,则预测为类别 1。

如果 P(y=1 | X) < 0.5,则预测为类别 0。

由于当 P=0.5 时,对应的 z=0,即 WᵀX + b = 0。这个方程就定义了一个决策边界。

对于二维特征,这是一个直线。

对于三维特征,这是一个平面。

对于更高维特征,这是一个超平面。

重要提示:虽然决策边界是线性的,但通过特征工程(例如引入多项式特征),逻辑回归也可以学习到非线性的决策边界。

  1. 损失函数与参数学习
    如何找到最优的参数 W 和 b?在线性回归中,我们使用均方误差(MSE)作为损失函数。但在逻辑回归中,由于输出是非线性的,MSE会变成一个非凸函数,导致有很多局部最小值,难以优化。

逻辑回归使用一种名为交叉熵损失函数(或对数损失函数)的损失函数,它是凸函数,易于找到全局最优解。

对于单个样本 (x, y),其损失函数为:
L(ŷ, y) = - [y * log(ŷ) + (1 - y) * log(1 - ŷ)]

其中:

y 是真实标签(0或1)。

ŷ 是预测的概率 P(y=1 | X)。

这个函数的设计非常巧妙:

当 y=1 时,损失变为 -log(ŷ)。如果预测 ŷ 接近1(预测正确),损失接近0;如果 ŷ 接近0(预测错误),损失会变得非常大。

当 y=0 时,损失变为 -log(1 - ŷ)。如果预测 ŷ 接近0(预测正确),损失接近0;如果 ŷ 接近1(预测错误),损失会变得非常大。

对于整个训练集 m 个样本,我们的目标是最小化成本函数,即所有样本损失的平均值:
J(W, b) = - (1/m) * Σ [y⁽ⁱ⁾ * log(ŷ⁽ⁱ⁾) + (1 - y⁽ⁱ⁾) * log(1 - ŷ⁽ⁱ⁾)]

我们通常使用梯度下降法来最小化这个成本函数,通过计算 J 对 W 和 b 的偏导数,并迭代更新参数。

  1. 优点与缺点
    优点:

实现简单,计算高效:训练和预测的速度都很快。

可解释性强:模型的参数 W 可以直接解释为“特征对结果的影响程度”。特征 xⱼ 的权重 wⱼ 越大,说明该特征对预测为正类的贡献越大。

输出是概率:不仅给出分类结果,还给出属于某一类的置信度,这在很多场景(如风险评估)中非常有用。

不容易过拟合:尤其是当数据集是线性可分或接近线性可分时,并且可以通过 L1 或 L2 正则化来进一步防止过拟合。

缺点:

本质是线性模型:它默认数据是线性可分的(在Sigmoid变换之前)。对于非常复杂的非线性关系,其性能可能不如决策树、SVM或神经网络。

对多重共线性敏感:如果特征之间高度相关,可能会影响模型的稳定性和可解释性。

  1. 应用场景
    逻辑回归在工业界有极其广泛的应用,包括但不限于:

金融领域:信用卡欺诈检测、贷款违约预测。

医疗领域:疾病诊断(根据症状判断是否患病)。

市场营销:客户流失预测、点击率预估。

自然语言处理:垃圾邮件识别、情感分析。

总结
方面 逻辑回归
模型类型 分类(主要是二分类,可通过技巧扩展至多分类)
核心函数 Sigmoid 函数
输出 概率值 (0, 1)
决策边界 线性(在原始/变换后的特征空间中)
损失函数 交叉熵损失 / 对数损失
优点 简单、高效、可解释、输出概率
缺点 难以捕捉复杂非线性模式
与线性回归关系 在线性回归输出上套了一个Sigmoid激活函数

流程
以一个具体的例子——预测银行客户是否会购买理财产品——来贯穿整个流程。
逻辑回归使用流程
阶段一:数据准备与探索

  1. 定义问题与收集数据

定义问题:我们的目标是建立一个二分类模型,输入客户的特征(如年龄、工资、历史交易等),输出该客户“会购买”(1)或“不会购买”(0)理财产品的概率。

收集数据:从数据库、数据仓库或CSV文件中收集相关数据。数据可能包含:

age(年龄)

balance(账户余额)

salary(年薪)

previous_contact(此前与本行联系次数)

subscribed(是否购买,0或1) -> 这就是我们的目标变量 y。

  1. 数据清洗与预处理
    这是最关键的一步,直接影响模型性能。

处理缺失值:

删除缺失值过多的行或列。

用均值、中位数或众数填充缺失值(如用平均年龄填充缺失的年龄)。

处理异常值:检测并处理不合理的值(如年龄为200岁)。

编码分类变量:

逻辑回归模型只能处理数值数据。对于像 education(教育程度)这样的分类变量(如:‘高中’,‘本科’,‘硕士’),我们需要进行编码。

独热编码:是首选方法。它为每个类别创建一个新的二进制(0/1)特征。

例如,education 被编码为三个新特征:is_high_school, is_bachelor, is_master。

避免有序编码:除非类别有明确的顺序(如‘低’,‘中’,‘高’),否则不要简单编码为1,2,3,因为这会给模型强加一个不存在的顺序关系。

  1. 探索性数据分析

查看目标变量的分布(购买 vs 未购买的比例)。如果比例极度失衡(如99% vs 1%),需要考虑后续处理(如过采样、欠采样或调整类别权重)。

分析特征与目标变量之间的关系。

检查特征之间的多重共线性。高度相关的特征(如‘身高’和‘体重’)会使得模型估计不稳定。可以通过计算相关系数矩阵来识别。

  1. 特征工程

特征缩放/标准化:逻辑回归虽然不像KNN或SVM那样强制要求,但进行缩放通常是一个好习惯。

使用 StandardScaler(将数据缩放到均值为0,方差为1)或 MinMaxScaler(缩放到[0,1]区间)可以加速梯度下降的收敛过程。

注意:缩放时,只能用训练集的均值和方差去转换测试集,避免数据泄露。

创建新特征:有时可以根据业务知识创建更有意义的特征,如创建“年龄分段”或“余额与工资的比率”。

阶段二:模型构建与训练
5. 拆分数据集
将数据集随机分为两部分:

训练集:用于训练模型,估计模型参数 W 和 b。通常占70%-80%。

测试集:用于最终评估模型的泛化能力,模拟模型在未见过的数据上的表现。通常占20%-30%。

(可选)验证集:在训练集中再分出一部分,用于在训练过程中调整超参数(如正则化强度C),防止模型过拟合训练集。

  1. 模型训练

在训练集上调用逻辑回归算法(如 sklearn.linear_model.LogisticRegression)。

算法内部会通过梯度下降法,最小化我们之前提到的交叉熵损失函数,来找到最优的参数 W 和 b。

关键超参数:

C:正则化强度的倒数。C 值越小,正则化越强。用于防止过拟合。默认通常是1.0。

penalty:正则化类型,可选 ‘l1’ 或 ‘l2’。‘l1’正则化可以产生稀疏模型,即让一些不重要的特征的系数变为0,实现特征选择。

solver:优化算法,如 ‘liblinear’, ‘lbfgs’, ‘saga’ 等。

阶段三:模型评估与解释
7. 模型预测

使用训练好的模型对测试集进行预测。

你会得到两种输出:

y_pred:最终的分类标签(0或1),这是通过将预测概率与阈值(默认0.5)比较得到的。

y_pred_proba:属于正类(1)的概率,这是一个介于0和1之间的值。

  1. 模型评估
    不要用训练集上的准确率来评估模型! 必须使用测试集。
    对于二分类问题,常用评估指标有:

准确率:(TP + TN) / (TP + TN + FP + FN)。预测正确的样本占总样本的比例。在类别平衡的数据中好用。

精确率:TP / (TP + FP)。在所有预测为正的样本中,有多少是真正为正的。关注的是预测的“准度”。

召回率:TP / (TP + FN)。在所有真实为正的样本中,有多少被成功预测为正。关注的是预测的“广度”。

F1-Score:精确率和召回率的调和平均数,是两者的综合考量。

AUC-ROC曲线:衡量模型整体排序能力的指标。AUC值越接近1,模型性能越好。它不依赖于分类阈值,是非常可靠的指标。

如何选择?

如果正负样本均衡,且FP和FN代价相似,看准确率和AUC。

如果希望尽可能抓住所有正类(如癌症诊断),追求高召回率。

如果希望预测出的正类非常可靠(如垃圾邮件判定),追求高精确率。

  1. 模型解释
    这是逻辑回归的一大优势。

查看系数:模型的 coef_ 属性包含了每个特征对应的权重 W。

解释系数:

系数的符号表示特征与目标变量的关系。正系数表示该特征值增加会提高预测为正类的概率;负系数则相反。

系数的大小(绝对值)表示该特征的重要性。但注意:特征必须经过标准化后,系数的绝对值才可直接比较。

计算Odds Ratio:

对一个特征 xⱼ,其 odds ratio = exp(coefⱼ)。

解释:在其他特征不变的情况下,xⱼ 每增加一个单位,客户购买理财产品的几率(Odds) 会变为原来的 exp(coefⱼ) 倍。

阶段四:模型部署与监控
10. 模型部署

将满意的模型保存为文件(如使用Python的 pickle 或 joblib 库)。

集成到生产系统中,如银行的客户营销系统,当新客户数据传入时,实时给出购买倾向的评分。

  1. 模型监控与更新

模型上线后,其性能会随着时间推移而下降(数据分布变化,即“概念漂移”)。

需要持续监控其线上表现(如预测的分布、AUC等)。

定期用新的数据重新训练模型,以保持其预测能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/963845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

解析到本地127的神奇域名

作为一名 Web 开发者,我的日常工作就是在本地进行开发,实现各种功能。过去几年,我一直使用 127.0.0.1 作为本地服务的访问地址。当需要同时开发多个项目时,我会用不同端口来区分,例如:项目A:127.0.0.1:8080 项目…

这封邮件写得真好,是你自己写的吗? 不,是AI写的

本文通过一个真实职场场景,引出了职场中邮件写作的重要性和困难点,详细介绍了专门的AI邮件写作指令,通过实际案例展示了AI生成邮件的效果,并提供了使用技巧和注意事项,帮助职场人士快速提升邮件写作能力。昨晚11点…

FFmpeg 官方汇编课程:写出快 5 倍的视频处理代码

你的视频处理程序能跑通就行了? 同一个算法,有人用汇编优化后性能提升 5 倍。这不是天赋问题,而是技术盲区。FFmpeg 团队把内部汇编培训资料开源了,手把手教你写工业级高性能代码。这个项目教什么 asm-lessons 是 …

P14364 [CSP-S 2025] 员工招聘

考虑设 \(f_{i, j}\) 为前 \(i\) 个人死了 \(j\) 个,由于不知道哪些人选了所以无法转移。原因是前面的决策会影响后面的决策,所以考虑贡献延后计算。 会发现一个事情,对于当前 \(c_x \leq j\) 的东西之后不会再决策…

完整教程:【RabbitMQ】架构原理、消息丢失、重复消费、顺序消费、事务消息

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Ai元人文:尊严

这是一个极其精彩且深刻的问题。“尊严”恰恰是那种最抽象、最神圣,也最容易被空谈的价值。用价值原语来回答这个问题,能完美展现其方法论的力量。 当别人问“价值原语如何表示尊严?”时,您可以这样回答:“尊严”…

灵活用工-连续劳务-计算器工具类,拿走不谢

灵活用工-连续劳务-计算器工具类,拿走不谢新法令及对灵工行业的影响 国务院810号令及配套的国税总局15号、16号公告,共同构建了互联网平台税收治理的新框架,对灵活用工行业影响深远。这套组合拳旨在引导灵活用工行业…

四、中断(基于北京迅为电子)

一、概述中断上半部分和下半部分,中断上半部分处理紧急且需要快速响应的部分,中断下半部分处理耗时操作。 GIC控制器的四种中断类型,软件中断、私有外设中断、全局共享中断、特定的局部外设中断二、重要函数与中断申…

四、中断(基于北京迅为电子)

一、概述中断上半部分和下半部分,中断上半部分处理紧急且需要快速响应的部分,中断下半部分处理耗时操作。 GIC控制器的四种中断类型,软件中断、私有外设中断、全局共享中断、特定的局部外设中断二、重要函数与中断申…

List执行Dispose时可释放子元素逻辑占用的List写法

1、声明新的List类CanDisposeList/// <summary>/// 可释放子元素逻辑占用的List/// </summary>/// <typeparam name="T"></typeparam>public class CanDisposeList<T> : Obse…

Sora 后思考:从 AI 工具到 AI 平台,产业 AGI 又近了一步 - 指南

Sora 后思考:从 AI 工具到 AI 平台,产业 AGI 又近了一步 - 指南pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "…

Scapy构建telnet包

Scapy构建telnet包文件代码 老师的 from scapy.all import *#我发第一次握手SYN ws1=IP(dst="172.16.100.101")/TCP(sport=10000,dport=23,flags=S,seq=1000)#对方发第二次握手 SA 包 ws2=sr1(ws1)#我发第三…

Spring AI Alibaba 项目源码学习(三)-Graph 执行流程分析

Graph 执行流程分析 概述 本文档分析 spring-ai-alibaba-graph-core 模块中 Graph 的执行流程,包括执行器(Executor)、调度机制、Checkpoint 机制和状态管理。 入口类说明 GraphRunner - 执行入口 GraphRunner 是基…

逻辑回归原理与案例分析

一、逻辑回归基本概念 逻辑回归:用于解决二分类问题的统计学习方法,虽然名字中有"回归",但实际上解决的是分类问题。 核心思想:根据给定的输入特征,通过逻辑函数(Sigmoid函数)计算出样本属于某个特定…

杂题记录 4

NOIP 前咋还布置一堆数据结构 /yun,关键布置的有八成都是做过的。于是乱找了些 DS 做。 P14363 [CSP-S 2025] 谐音替换 / replace 发现是询问 \(p\in P,q\in Q\) 的 \((p,q)\) 的个数的形式,其中 \(p\in P\) 指的是 …

找唯一特征去重转移DP——CF1210F2 Marek and Matching

找唯一特征值去重转移DP——CF1210F2 Marek and Matching 匹配肯定利用霍尔定理,先写出:\(\forall S,|S|-|G(S)|\le 0\)。 图论计数往往考虑容斥,设 \(f_{S,T}\) 表示对于二分图 \((S,T)\),出现大小为 \(|S|\) 的匹…

UEFI Boot Manager

简介 UEFI boot manager是一个固件方针引擎,它可以通过修改global NVRAM 变量来配置;它会按照global NVRAM variable 定义的顺序来加载UEFI driver or UEFI application。当固件初始化完成,就会把控制权交给boot ma…

25年11月计数题做题记录

AGC073C 因为实数不好处理所以我们考虑将实数映射到整数上去做,相当于我们把值域在 \([-(n-1),1]\) 之间的实数映射到 \([-(n-1)m,m]\) 之间的整数上,其中 \(m\rightarrow\infty\),现在我们需要考虑的就是值域在 \(…

固体废物资源化处理简答题与论述题

固体废物处理核心内容简答题与论述题(含解说) 一、简答题(侧重基础概念与关键参数) 1. 简答题1:固体废物分类及“三化”“3R”原则分别是什么?答案:分类:工业固体废物、城市固体废物、农业固体废物、危险废物、…