广义线性模型(GLM)及其应用
点击上方“Deephub Imba”,关注公众号,好文章不错过 !
广义线性模型[generalize linear model(GLM)]是线性模型的扩展,通过联系函数建立响应变量的数学期望值与线性组合的预测变量之间的关系。它的特点是不强行改变数据的自然度量,数据可以具有非线性和非恒定方差结构。是线性模型在研究响应值的非正态分布以及非线性模型简洁直接的线性转化时的一种发展。
在广义线性模型的理论框架中,则假设目标变量Y则是服从指数分布族,正态分布和伯努利分布都属于指数分布族,因此线性回归和逻辑回归可以看作是广义线性模型的特例。
这是概率分布及其正则联系函数(Canonical Link function)的列表。
- 正态分布:恒等函数
- 泊松分布:对数函数
- 二项分布:分对数函数
除此以外我们还可以自定义联系函数,如果不喜欢自己编写可以使用在 statsmodels 中实现了的各种联系函数,Stan、PyMC3 和 TensorFlow Probability 等概率编程框架也给我们提供了这些函数。
link function也被翻译为连接函数,这里觉得联系函数更为贴切所以还是翻译为联系函数
线性回归
线性回归用于通过解释变量 X 的线性组合来预测连续变量 y 的值。
在单变量情况下,线性回归可以表示如下
模型假定噪声项的正态分布。该模型说明如下
泊松回归
泊松分布用于对计数数据进行建模。它只有一个参数代表分布的均值和标准差。这意味着平均值越大,标准差越大。
如果我们将泊松回归应用于数据。结果应该是这样的。
预测曲线是指数的,因为对数联系函数( log link function)的反函数是指数函数。由此也可以清楚地看出,由线性预测器计算的泊松回归参数保证为正。
以下是一个泊松回归的示例代码
import numpy as np
from numpy.random import uniform, normal, poisson, binomial
from scipy import stats
import matplotlib.pyplot as plt
import seaborn as sns
import statsmodels.api as sm
%matplotlib inline
## ============Poisson regression
# generate simulation data
np.random.seed(5)
n_sample = 100
a = 0.6
b = -0.4
x = uniform(1, 5, size=n_sample)
mu = np.exp(a * x + b)
y = poisson(mu)
import statsmodels.api as sm
exog, endog = sm.add_constant(x), y
# Poisson regression
mod = sm.GLM(endog, exog, family=sm.families.Poisson(link=sm.families.links.log()))
res = mod.fit()
display(res.summary())
y_pred = res.predict(exog)
idx = x.argsort()
x_ord, y_pred_ord = x[idx], y_pred[idx]
plt.plot(x_ord, y_pred_ord, color='m')
plt.scatter(x, y, s=20, alpha=0.8)
plt.xlabel("X")
plt.ylabel("Y")
粉色曲线是泊松回归的预测。
逻辑回归
如果使用分对数( logit)函数作为联系函数,使用二项式/伯努利分布作为概率分布,则该模型称为逻辑回归。
第二个方程的右边叫做logistic函数。因此这个模型被称为逻辑回归。对于任意输入,logistic函数返回的值在0到1之间,对于二项分布它是一个合适的联系函数。逻辑回归也就是我们常看到的这个样子
总结
如果要进行“广义线性模型(GLM)”分析,只需要摘到我们需要的联系函数,它的作用就是把Y与X间的非线性关系转换成线性关系,我们完全可以自己编写我们需要的联系函数。
实际使用中我们只要把联系函数和方差函数假设正确,甚至不用管是什么分布的,如果使用的就是一些典型联系函数,则方差函数都可以不用假设。所以其实广义线性模型的要点就是:联系函数和/或方差函数要假设正确,这样就ok了。
本文代码:
https://github.com/ranasingh-gkp/StatisticalModeling_Implement/blob/main/GLM.ipynb
作者:Rana singh
MORE
kaggle比赛交流和组队
加我的微信,邀你进群
喜欢就关注一下吧:
点个 在看 你最好看!
相关文章
- 深度学习模型的可解释能力在大气环境领域的应用
- 推荐|雷达和卫星的气象深度学习应用最佳实践
- 应用上线前的披荆斩棘
- yiq颜色模型应用于_如果rgb色彩模式中
- 【文献解读】 新型人源胶质母细胞瘤体外类癌模型建立与应用
- C/C++ Qt MdiArea 多窗体组件应用
- R语言分布滞后非线性模型(DLNM)空气污染研究温度对死亡率影响建模应用|附代码数据
- 如何把视觉语言模型应用到视频里?
- 文心大模型扬起新“帆”,产业应用大潮已至
- AI应用启示录:自动驾驶与“狼来了”的故事
- 微搭低代码从入门到精通-03 创建模型应用
- Web 应用中的 RAIL 模型 和 Chrome 开发者工具 Performances 面板对其的度量方法
- OSI模型第7层协议涉及的9大应用,你都了解吗?
- 机器人ChatGPT应用:设计原则和模型能力
- 原创 | QAV:基于大语言模型的智能体协作的基本原理及应用前景展望
- ChatGPT 新应用时代来临!CSDN AIGC 与大模型技术应用峰会全日程公布
- Puppeteer工具简介及其在网页爬取和自动化中的应用
- Spring Cloud Stream应用程序开发定义和使用自定义binder
- 把“ai模型+低代码”应用在项目管理中,效率翻了好几倍
- 负数在Oracle中的应用(oracle负数)
- 灵活应用Oracle触发器类型解决数据库问题(oracle触发器类型)
- 谷歌发布 TensorFlow Serving:机器学习模型应用于产品更方便
- 半监督组稀疏表示:模型、算法与应用(ECAI 2016论文精选)| AI科技评论
- Linux系统上AMD显卡的性能与应用解析,让你轻松玩转高配需求的游戏和应用(linuxamd显卡)
- 从入门到实践:Linux网络管理及应用指南(Linux网络管理及应用)
- MySQL库:构建更强大的数据库应用(mysql-libs)
- 阿里巴巴联合欧莱雅发布移动端 AI 痘痘检测应用
- 优雅地利用Redis应用有效调用(应用调用redis)
- Redis在秒杀业务中的应用分析(秒杀业务分析之redis)
- C语言与Oracle数据库的新增应用(c oracle 新增)
- MySQL三大模型详解及应用场景分析(mysql三大模型)
- MySQL的一对多模型应用详解(mysql一对多模型)
- 如何学习和应用MySQL数据库技术MySQL帮助指南(mysql __help)
- TP框架与Redis结合为WEB应用提供极致性能(tp s redis)