当前位置: 首页 > news >正文

【深度学习|学习笔记】广义线性模型Generalized linear model(GLM)模型详解,附代码。

【深度学习|学习笔记】广义线性模型Generalized linear model(GLM)模型详解,附代码。

【深度学习|学习笔记】广义线性模型Generalized linear model(GLM)模型详解,附代码。


文章目录

  • 【深度学习|学习笔记】广义线性模型Generalized linear model(GLM)模型详解,附代码。
  • 前言
    • 1 起源与发展
    • 2 模型原理
      • 2.1 三要素框架
      • 2.2 参数估计:IRLS 与 Fisher 得分
      • 2.3 方差函数与分布族
    • 3 应用领域
    • 4 Python 实现示例
      • 4.1 statsmodels 中的 GLM
      • 4.2 scikit-learn 中的 Logistic 回归


欢迎铁子们点赞、关注、收藏!
祝大家逢考必过!逢投必中!上岸上岸上岸!upupup

大多数高校硕博生毕业要求需要参加学术会议,发表EI或者SCI检索的学术论文会议论文。详细信息可关注VX “学术会议小灵通”或参考学术信息专栏:https://blog.csdn.net/2401_89898861/article/details/146957966


前言

本文先给出对广义线性模型(GLM)关键内容的综合概述,然后分四大部分详细展开:起源与发展、模型原理、应用领域,以及 Python 实现示例

  • 广义线性模型(GLM)由 John Nelder 和 Robert Wedderburn 于 1972 年提出,统一了线性回归、逻辑回归、泊松回归等模型,通过“指数族分布+链接函数+线性预测”框架,实现对各类非正态响应变量的回归分析
  • GLM 的核心算法是迭代重加权最小二乘(IRLS)或等价的Fisher 得分方法,广泛应用于生物统计、经济学、风险管理、生态学等领域。
  • Python 中可通过 statsmodels 和 scikit-learn 等库方便地构建和评估 GLM。

1 起源与发展

  • 早在 20 世纪 50–60 年代,统计学家已认识到将非正态响应纳入回归分析的必要性;Kolmogorov–Arnold 表示定理表明任意连续函数可分解为单变量函数之和,但其构造难用。​
  • 1972 年,Nelder 和 Wedderburn 在《Journal of the Royal Statistical Society》上正式提出 GLM 框架,展示了如何用最大似然与 IRLS 方法估计包括线性回归、Logit、Poisson 等在内的一大类回归模型参数,从而实现模型的“统一”​
  • 1974 年,Wedderburn 等人进一步在约束条件、准似然(quasi-likelihood)等方面拓展了 GLM 的理论与应用,奠定了后续各种分布族与方差函数的统计推断基础​。
  • 到 1989 年,McCullagh 与 Nelder 在其经典专著《Generalized Linear Models》中系统化了 GLM 理论、算法与实现细节,使其成为统计学与机器学习课程的标配​。
  • 90 年代后期至今,各种准则(如 AIC、BIC)、正则化(ridge、lasso)、广义估计方程(GEE)与混合效应扩展(GLMM)相继出现,极大丰富了 GLM 的实践与理论深度。

2 模型原理

2.1 三要素框架

GLM 由三部分组成:

  • 随机成分(Random Component):响应变量 Y Y Y 服从指数族分布(如高斯、二项、泊松、Gamma 等)​。
  • 系统成分(Systematic Component):线性预测子 η = X β η=Xβ η=,其中 X X X 为设计矩阵, β β β 为待估参数。
  • 链接函数(Link Function):将条件期望 μ = E [ Y ∣ X ] μ=E[Y∣X] μ=E[YX] 与线性预测子连接:
    在这里插入图片描述
    常见链接包括身份(identity)、对数(log)、logit 等​。

2.2 参数估计:IRLS 与 Fisher 得分

  • 对数似然 ℓ ( β ) ℓ(β) (β) 关于 β β β 求导得到得分函数 u ( β ) u(β) u(β),用牛顿–拉夫森或 Fisher 得分迭代:
    在这里插入图片描述
    其中 I ( β ) I(β) I(β) 为 Fisher 信息矩阵。​
  • 等价地,IRLS 将每一步视为对加权最小二乘问题求解,权重由当前 μ μ μ 和方差函数决定,直到收敛。

2.3 方差函数与分布族

指数族分布的一般形式决定了 GLM 中的方差函数 V ( μ ) V(μ) V(μ)
在这里插入图片描述
例如:

  • 高斯: V ( μ ) = 1 V(μ)=1 V(μ)=1
  • 泊松: V ( μ ) = μ V(μ)=μ V(μ)=μ
  • 二项: V ( μ ) = μ ( 1 − μ ) V(μ)=μ(1−μ) V(μ)=μ(1μ)
  • Gamma: V ( μ ) = μ 2 V(μ)=μ^2 V(μ)=μ2

3 应用领域

GLM 因其灵活性与可解释性,在各领域广泛应用:

  • 生物统计与医学:Logistic 回归分析病例对照研究中风险因素与疾病的关联;Poisson 回归建模不良事件发生率​。
  • 生态学:用 Poisson/负二项 GLM 研究物种分布与环境因子的非线性关系​。
  • 金融与风险管理:信用评分模型(logit GLM)、保险索赔频率(Tweedie 分布 GLM)等​。
  • 社会科学与经济学:评估教育、收入等因素对行为概率的影响;Gamma GLM 用于建模消费支出等正偏分布​。
  • 工业与制造:故障率分析、寿命数据建模(Weibull/Gamma GLM)​。

4 Python 实现示例

下面用 statsmodels 和 scikit-learn 两个库分别演示 GLM 的典型回归。

4.1 statsmodels 中的 GLM

import statsmodels.api as sm
import numpy as np
from sklearn.datasets import load_iris# 用 Iris 数据预测花瓣长度(连续)→ Gaussian GLM
iris = load_iris()
X = sm.add_constant(iris.data[:, :2])   # sepal length & width + intercept
y = iris.data[:, 2]                     # petal lengthmodel = sm.GLM(y, X, family=sm.families.Gaussian())  # 高斯 GLM(identity link)
result = model.fit()                                   # IRLS 拟合
print(result.summary())                                # 输出模型摘要​:contentReference[oaicite:12]{index=12}# 用同数据演示 Poisson 回归(count 模拟)
y_count = np.round(iris.data[:, 2]).astype(int)
pois = sm.GLM(y_count, X, family=sm.families.Poisson())  # 泊松 GLM(log link)
res2 = pois.fit()
print(res2.summary())                                   # 泊松回归结果​:contentReference[oaicite:13]{index=13}

4.2 scikit-learn 中的 Logistic 回归

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split# 二分类示例→Logistic GLM(logit link)
data = load_breast_cancer()
Xtr, Xte, ytr, yte = train_test_split(data.data, data.target, test_size=0.3, random_state=0)clf = LogisticRegression(max_iter=1000).fit(Xtr, ytr)
print("Test accuracy:", clf.score(Xte, yte))            # 准确率​:contentReference[oaicite:14]{index=14}

以上内容系统地回顾了 GLM 的起源与发展、理论框架、主要应用,以及 Python 中的两种典型实现,帮助在科研与工程实践中灵活运用广义线性模型。

相关文章:

  • ubuntu使用Postfix外部SMTP代理发送邮件
  • Java多态详解
  • Java高频面试之并发编程-15
  • LVGL(lv_btn按键类)
  • 游戏引擎学习第271天:生成可行走的点
  • CTFd CSRF 校验模块解读
  • Java 中 AQS 的实现原理
  • 深入理解设计模式之原型模式(Prototype Pattern)
  • 复现nn-Unet模型 实验报告
  • 【我的创作纪念日】512
  • 编程日志5.3
  • Day21打卡—常见降维算法
  • 免安装 + 快速响应Photoshop CS6 精简版低配置电脑修图
  • Linux PCI 驱动开发指南
  • AI日报 · 2025年05月11日|传闻 OpenAI 考虑推出 ChatGPT “永久”订阅模式
  • 【React中useRef钩子详解】
  • 【数据结构入门训练DAY-31】组合的输出
  • 【音视频工具】MP4BOX使用
  • k8s 资源对比总结
  • 通过 Azure DevOps 探索 Helm 和 Azure AKS
  • 超新星|18岁冲击中超金靴,王钰栋的未来无限可能
  • 福建宁德市长张永宁拟任设区市党委正职,曾获评全国优秀县委书记
  • 王毅集体会见加勒比建交国外长及代表
  • 第1现场 | 印巴停火次日:当地民众逐渐恢复正常生活
  • 行知读书会|换一个角度看见社会
  • 法院就“行人相撞案”道歉:执法公正,普法莫拉开“距离”