笔者做过国赛也做过美赛,其中一类典型问题就是分析相关性,从而进行预测或者其他操作。这类问题通常情况下属于比较常规的问题,一般通过matlab或SPSS分析相关性,得到一个较好的数值即可。

然而有的时候不论取哪两个或者哪几个变量,相关性都弱得令人发指,以至于无法昧着良心继续煞有介事地絮叨他们之间的相关性,这个时候,如果变量较多,可以考虑广义相加模型,实质是分析因变量与多个自变量之间的相关性。目前国内网站只有R语言实现,在此笔者将为大家补充Python对GAM的实现。

以2020年MCM的problem a为例,鱼群的分布,或者说某一时间某一地点鱼的种群数量和纬度/经度/水温其实都没有特别强的相关性,甚至可以说很弱,那么这个时候,如果还想通过其他变量预测2070年鱼群的分布便不能用简单的相关。

在一篇1997年的文献《Trends in abundance and geographic distribution of North Sea herring in relation to environmental factors》中,作者Christos D. Maravelias为我们提供的这一思路非常值得借鉴。

Christos D. Maravelias认为可以通过对四种变量的分析对鱼群数量进行定性进而预测。

下面介绍一下这个模型。

GAM 广义相加模型 Generalized additive model广义加性模型(GAM)是以下形式的平滑半参数模型:

g(E[y|X])=β0+f1(X1)+f2(X2,X3)+…+fM(XN)g(E[y|X])=β0+f1(X1)+f2(X2,X3)+…+fM(XN)

其中,自变量是因变量,是将我们的预测变量与因变量的期望值相关联的链接函数。X.T = [X_1, X_2, ..., X_N]yg()

特征函数f_i()是使用惩罚性B样条构建的,这使我们能够自动对非线性关系建模,而不必手动尝试对每个变量进行许多不同的转换。GAM通过允许要素的非线性功能并同时保持可加性来扩展广义线性模型。由于模型是添加剂,它很容易检查每个效果X_i上Y分别同时举行的所有其他预测不变。

结果是一个非常灵活的模型,可以很容易地合并先验知识和控制过度拟合。

一般的广义加法模型y∼ExponentialFamily(μ|X)y∼ExponentialFamily(μ|X)

g(μ|X)=β0+f1(X1)+f2(X2,X3)+…+fM(XN)g(μ|X)=β0+f1(X1)+f2(X2,X3)+…+fM(XN)

因此,我们可以看到GAM包含3个组成部分:

distribution 来自指数族

link function g(⋅)g(⋅)

functional form 具有加法结构 β0+f1(X1)+f2(X2,X3)+…+fM(XN)

有了理论基础,计算不能靠手。

随后笔者找到了这个令人深刻的、强大的Python库——pygamhttps://pygam.readthedocs.io/en/latest/?badge=latest​pygam.readthedocs.io

pygam具有

回归

微粒

等诸多功能。

我们利用所给的数据集结合实际问题得到了某一年鱼群密度和经纬度、温度的关系,从图中可以看出在鲱鱼的适宜温度密度最高,因此将预测鱼群密度的问题转化为预测温度的问题,从而结合对历年水温的ARIMA预测所得结果对2070年鱼群迁徙做出了判断。

本文主要意义在于介绍广义相加模型GAM和pygam这一优秀的Python实现,对问题的解答乃是抛砖引玉,水平有限,欢迎探讨。

python 广义线性模型_数学建模/机器学习:广义加性模型(GAM)及其Python实现相关推荐

  1. 广义典型相关分析_数学建模/机器学习:广义加性模型(GAM)及其Python实现

    笔者做过国赛也做过美赛,其中一类典型问题就是分析相关性,从而进行预测或者其他操作.这类问题通常情况下属于比较常规的问题,一般通过matlab或SPSS分析相关性,得到一个较好的数值即可. 然而有的时候 ...

  2. Python用广义加性模型GAM进行时间序列分析

    每当你发现一个与时间对应的趋势时,你就会看到一个时间序列.我们围绕广义加性模型GAM技术进行一些咨询,帮助客户解决独特的业务问题.研究金融市场表现和天气预报的事实上的选择,时间序列是最普遍的分析技术之 ...

  3. 数学建模——智能优化之模拟退火模型详解Python代码

    数学建模--智能优化之模拟退火模型详解Python代码 #本功能实现最小值的求解#from matplotlib import pyplot as plt import numpy as np imp ...

  4. R语言使用mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model,GAMs):从广义加性模型GAM中抽取学习到的样条函数(spline function)

    R语言使用mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model,GAMs):从广义加性模型GAM中抽取学习到的样条函数(spline function) 目录

  5. R语言惩罚逻辑回归、线性判别分析LDA、广义加性模型GAM、多元自适应回归样条MARS、KNN、二次判别分析QDA、决策树、随机森林、支持向量机SVM分类优质劣质葡萄酒十折交叉验证和ROC可视化

    最近我们被客户要求撰写关于葡萄酒的研究报告,包括一些图形和统计输出. 介绍 数据包含有关葡萄牙"Vinho Verde"葡萄酒的信息.该数据集有1599个观测值和12个变量,分别是 ...

  6. 数学建模优化模型简单例题_数学建模中简单的优化模型

    本文介绍较简单的优化模型,归结微积分中函数的机制问题,可以直接用微分法求解. 1. 存贮模型 工厂订购原料,出售商品,都需要确定贮存量. 1.1不允许缺货的存贮模型 经济批量订货公式(EOQ公式) 用 ...

  7. 数学建模优化模型简单例题_数学建模之常见的优化模型

    EverydayOneCat 肝ing 知识点 1.运输问题 前面线性规划文章中已经讲过经典的运输问题.这个例子只是一个补充,在考虑经济效益的基础上进行运输问题的研究. 建立模型: ai:第i个水库供 ...

  8. 论文阅读_广义加性模型_GAMs

    英文题目:Intelligible Models for Classification and Regression 中文题目:可理解的分类和回归模型 论文地址:https://www.doc88.c ...

  9. 简述数学建模的过程_数学建模入门知识分享(一):什么是数模

    0 一个不是那么标准的Introduction 2019年的美赛结束于1月29日,接近一年多对数学建模的不断学习,终于有了些数模的感触,这个系列就简单从几个方面比较系统的阐述一下数模的基本问题,本人在 ...

最新文章

  1. android从服务端获取json解析显示在客户端上面,Android服务端获取json解析显示在客户端上面.doc...
  2. 北京python培训班价格-北京python培训一对一
  3. OpenCV ORB角点检测
  4. 【Qt】简单Qt文本查找功能
  5. POJ-3352-RoadConstruction(边双联通分量,缩点)
  6. 信息学奥赛一本通 1890:【15NOIP提高组】跳石头 | 洛谷 P2678 [NOIP2015 提高组] 跳石头
  7. RabbitMQ和Kafka的显著差异(1)
  8. 解决pytorch安装过程中下载总是出错的问题
  9. handler和thread之间如何传输数据_HTTP和TCP之间的关系
  10. 黑马程序员SpringBoot2全套教程学习笔记
  11. 台式计算机如何连接投影仪,台式机PC怎样与投影仪连接
  12. FixFox 打包xpi扩展
  13. 2022年最新常用的浏览器排行榜单
  14. 用linux设计应用程序,ARM设计的uClinux及其应用
  15. 企业竞争力分析及综合评价体系的构建
  16. 答题拿奖两不误:华为云知乎金牌答题官,就是你!
  17. NPOI导出EXCEL 合并单元格、统计列、单元格样式设置
  18. 云计算需要python吗_国内python云计算是啥
  19. 图像质量评价学习笔记02:IQA模型性能评价指标(PLCC、SROCC、KROCC、RMSE)
  20. 纪念币收藏价值和含义

热门文章

  1. SpringBoot 限流实现
  2. Html和css的class和id的命名,[HTML] CSS Id 和 Class选择器
  3. 《PostgreSQL 开发指南》第 08 篇 备份与恢复
  4. 阿里最伟大的计算机科学家,阿里两位科学家当选ACM2019年度杰出科学家
  5. Linux能ping通IP,ping不通域名
  6. 【C语言】void 和 void* 类型
  7. vue计算属性与监视属性
  8. Java基础 基础数据类型
  9. 基本数据类型 java
  10. 计算机辅助手段在英语教学中使用,试谈计算机在英语教学中的辅助作用