第五讲:正则化与模型选择(Regularization and model selection)

本文介绍了在机器学习中如何选择合适的模型,包括交叉验证方法,如保留交叉验证、k-折交叉验证和弃一法交叉验证,以及特征选择的重要性。特征选择可以通过向前搜索等启发式方法降低过拟合风险。此外,文章还探讨了贝叶斯统计和正则化在防止过拟合中的作用,强调了最大后验估计在参数估计中的优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设想一个机器学习的问题,我们要从一系列不同的模型中进行挑选。例如,我们可能是用一个多项式回归模型 (polynomial regression model) h θ ( x ) = g ( θ 0 + θ 1 x + θ 2 x 2 + ⋯ + θ k x k ) h_\theta (x)=g(\theta_0+\theta_1x+\theta_2x^2+\cdots+\theta_kx^k) hθ(x)=g(θ0+θ1x+θ2x2++θkxk) 想要判定这里的多项式次数 k k k 应该是多少,0, 1, …, 或者10。那么我们怎么才能自动选择一个能够在偏差 (bias)/方差(variance)之间进行权衡的模型呢? 1

或者换一个说法,假如我们希望能够自动选出来一个带宽参数 (bandwidth parameter) τ \tau τ 来用于局部加权回归(locally weighted regression,所谓为 LWR,参考 note1的第2节),或 者要自动选出一个参数 C 用于拉格朗日正则化的支持向量机算法(l1-regularized SVM)。怎么来实现呢?

为了具体一些,咱们这一系列讲义中都假设备选集合的模型个数有限 M = M 1 , ⋯   , M d M = {M_1,\cdots,M_d} M=M1,,Md。例如,在我们上面刚刚随便举的本章第一个例子中, M i M_i Mi 就是一个 i次多项式拟合模型(i-th order polynomial regression model)。(其实把 M 扩展到无穷集合 也不难的。2)换个说法就是,如果我们要从支持向量机算法 (SVM)、神经网络算法(neural network)、逻辑回归算法(logistic regression)当中三选一,那么这里的 M 就应该都 包含了这些模型了。

1 交叉验证(Cross Validation)

假如我们得到了一个训练集 S。我们已经了解了经验风险最小化(empirical risk minimization,缩写为 ERM),那么接下来就要通过使用 ERM 来进行模型选择来推导出一种新的算法:

  1. 对训练集 S S S 中的每一个模型 (model) M i M_i Mi 进行训练,得到某假设类 (hypothesis) h i h_i hi
  2. 从这些假设中选取训练误差最小的假设 (hypothesis)

上面这个算法是行不通的。比如考虑要选择多项式的阶(最高次项的次数)的情况。多项式的阶越高,对训练集 S 的拟合程度就越好,训练误差自然也就更小。然而,这个方法选出来 的总是那种波动非常强 (high-variance) 的高次多项式模型 (high-degree polynomial model) ,这种情况我们之前就讲过了,通常都是很差的选择。

下面这个算法就更好一些。这个方法叫保留交叉验证 (hold-out cross validation),也叫简单交叉验证 (simple cross validation),步骤如下:

  1. 随机拆分训练集 S S S S t r a i n S_{train} Strain (例如,可以选择整体数据中 的 70% 用于训练) 和 S c v S_{cv} Scv (训练集中剩余的 30%用于验 证)。这里的 S c v S_{cv} Scv 就叫做保留交叉验证集(hold-out cross validation set)。
  2. 只对集合 S t r a i n S_{train} Strain 中的每一个模型 M i M_i Mi 进行训练,然后得到假设类(hypothesis) hi。
  3. 筛选并输出对保留交叉验证集有最小误差 ϵ ^ S c v ( h i ) \hat\epsilon_{S_{cv}}(h_i) ϵ^Scv(hi) 的假设hi 。(回忆一下,这里的 ϵ ^ S c v ( h i ) \hat\epsilon_{S_{cv}}(h_i) ϵ^Scv(hi) 表示的是假设 h h h 在保留交叉验证集 S c v S_{cv} Scv 中的样本的经验误差(empirical error)。)

这样通过在一部分未进行训练的样本集合 S c v S_{cv} Scv 上进行测试, 我们对每个假设 h i h_i hi 的真实泛化误差 (generalization error) 就能得到一个比上一个方法更好的估计,然后就能选择出来一个有最小估计泛化误差 (smallest estimated generalization error) 的假设了。通常可以选择 1/4 到 1/3 的数据样本用来作为保留交叉验证集(hold out cross validation set),30% 是一个很典型的选择。

还有另外一种备选方法,就是在第三步的时候,也可以换做选 择与最小估计经验误差 ϵ ^ S c v ( h i ) \hat\epsilon_{S_{cv}}(h_i) ϵ^Scv(hi

### 关于L1正则化的学术论文和研究资料 L1正则化是一种广泛应用于机器学习和统计建模中的技术,其核心在于通过引入绝对值函数作为惩罚项来促使模型的部分权重系数趋向于零[^4]。这一特性不仅有助于减少过拟合的风险,还能够实现特征选择的功能,从而提高模型的解释性和计算效率。 以下是几类可能帮助您深入理解L1正则化的学术资源: #### 1. **经典书籍** 《The Elements of Statistical Learning》由Trevor Hastie等人撰写,这本书详细介绍了L1正则化及其变体(如Lasso回归)的工作原理以及应用场景。书中提供了丰富的理论基础和实际案例分析[^2]。 #### 2. **重要学术论文** - Tibshirani, R. (1996). *Regression Shrinkage and Selection via the Lasso*. 这篇开创性的文章首次提出了Lasso方法,并阐述了如何利用L1范数进行变量选择。 - Zou, H., & Hastie, T. (2005). *Regularization and variable selection via the elastic net*. Elastic Net 是一种结合了L1和L2正则化的混合方法,在处理高度相关特征的数据集时表现尤为出色[^1]。 #### 3. **在线课程教程** Coursera 和 edX 平台上多门关于机器学习的基础课程都会涉及正则化相关内容。例如 Andrew Ng 的 Machine Learning 课程中专门有一节不同类型的正则化技术及其优缺点比较。 #### 4. **开源项目工具包文档** Scikit-Learn 官方网站提供详尽说明有关实现各种形式正则化的API接口描述;而 TensorFlow/Keras 则允许用户自定义损失函数加入特定类型的正则约束条件。 ```python from sklearn.linear_model import Lasso # 使用Lasso回归实例 lasso = Lasso(alpha=0.1) lasso.fit(X_train, y_train) print("Coefficients:", lasso.coef_) ``` 上述代码片段展示了如何借助 Scikit-Learn 库快速构建基于L1正则化的线性模型。 --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值