机器学习笔记1_3:广义线性模型(GLM, Generalized Linear Models)

本文介绍了指数族分布的基本概念,包括自然参数、充分统计量等,并通过伯努利分布和高斯分布两个具体例子展示了如何利用自然参数的形式来表示不同的概率分布。
  1. 形式:

    η称为自然参数(natural parameter), T(y)是充分统计量(通常T(y)=y),a(η)称为log partition function,上式中ea(η)作为归一化参数。通过改变η可以得到不同的分布
    • 伯努利分布(对应逻辑回归):

      上式中η=log(ϕ1ϕ),有趣的是,如果我们反解出ϕ会得到ϕ=11+eη,正好是sigmoid函数
    • 高斯分布(对应线性回归)
      为了简便起见,令σ2=1得到

      其中:
### Python 机器学习广义线性模型的基础概述 #### 广义线性模型的概念 广义线性模型Generalized Linear Model, GLM)是一类扩展了传统线性回归方法的统计模型,能够处理多种类型的响应变量分布。它不仅适用于连续型数据,还支持离散型数据和其他复杂的数据结构[^1]。 在Python中,`scikit-learn`库提供了丰富的工具来实现各种广义线性模型。这些模型涵盖了经典的最小二乘法到更复杂的正则化技术,如岭回归、Lasso回归等[^2]。 --- #### 基本组成部分 GLM的核心由三部分组成: 1. **随机成分**:定义因变量的概率分布形式。 2. **系统成分**:通过线性组合自变量构建预测方程。 3. **连接函数**:将系统的线性预测值映射到随机分量的期望值上[^5]。 这种灵活性使得GLM可以应用于广泛的场景,包括但不限于回归分析和分类任务。 --- #### 实现方式与常用模型 以下是几种常见的广义线性模型及其Python实现: 1. **普通最小二乘法 (Ordinary Least Squares)** 这是最基础的形式,目标是最小化观测值与预测值之间误差的平方和。可以通过`LinearRegression`类轻松完成: ```python from sklearn.linear_model import LinearRegression model = LinearRegression() model.fit(X_train, y_train) predictions = model.predict(X_test) ``` 2. **岭回归 (Ridge Regression)** 添加了一个L2范数惩罚项以防止过拟合,适合于特征数量较多的情况: ```python from sklearn.linear_model import Ridge ridge_model = Ridge(alpha=0.5) # alpha控制正则化的强度 ridge_model.fit(X_train, y_train) ridge_predictions = ridge_model.predict(X_test) ``` 3. **Lasso 回归** 使用L1范数作为惩罚项,有助于稀疏化系数矩阵从而筛选重要特征: ```python from sklearn.linear_model import Lasso lasso_model = Lasso(alpha=0.1) lasso_model.fit(X_train, y_train) lasso_predictions = lasso_model.predict(X_test) ``` 4. **Logistic 回归** 主要用于解决二元分类问题,其核心思想是利用Sigmoid函数将输出转换成概率值范围内的估计: ```python from sklearn.linear_model import LogisticRegression logreg_model = LogisticRegression() logreg_model.fit(X_train, y_train) probabilities = logreg_model.predict_proba(X_test) ``` 上述每种模型都可通过调整超参数进一步优化性能表现[^4]。 --- #### 扩展应用:广义加性模型 (GAMs) 除了传统的GLMs外,还有更为灵活的方法叫做广义加性模型Generalized Additive Models),允许各个输入维度上的非线性变换独立作用后再叠加起来形成最终结果。PyGAM是一个专门为此设计的强大库[^3]: ```python from pygam import GAM gam_model = GAM(distribution='normal', link='identity') gam_model.gridsearch(X_train, y_train) gam_predictions = gam_model.predict(X_test) ``` 这种方法特别适合探索性强的研究项目或者当假设条件难以满足的实际案例之中。 --- ### 总结 综上所述,在Python环境下开展基于广义线性模型的学习研究既直观又高效;无论是理论理解还是实践操作层面都有详尽资源可供参考。希望以上内容能帮助初学者快速掌握该领域基础知识并激发深入探究的兴趣。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值