模型基础知识

本文介绍了机器学习中偏差与方差的概念及其关系,强调了模型泛化性能的平衡。训练误差与测试误差的区别在于模型在不同数据集上的表现。特征选择包括最优子集和向前逐步选择,正则化如岭回归和Lasso回归通过限制模型复杂度来降低过拟合。PCA用于降维,通过最大化投影方差。调参方法如网格搜索用于寻找最佳模型参数。案例中,使用波士顿房价数据集比较了岭回归、Lasso回归和PCA+线性回归的性能。
摘要由CSDN通过智能技术生成

偏差和方差

偏差与方差之间的关系(题2)

测试均方误差的期望值可以分解为 f ^ ( x 0 ) \hat{f}(x_0) f^(x0)方差 f ^ ( x 0 ) \hat{f}(x_0) f^(x0)偏差平方误差项 ϵ \epsilon ϵ的方差

E ( y 0 − f ^ ( x 0 ) ) 2 = Var ⁡ ( f ^ ( x 0 ) ) + [ Bias ⁡ ( f ^ ( x 0 ) ) ] 2 + Var ⁡ ( ε ) E\left(y_{0}-\hat{f}\left(x_{0}\right)\right)^{2}=\operatorname{Var}\left(\hat{f}\left(x_{0}\right)\right)+\left[\operatorname{Bias}\left(\hat{f}\left(x_{0}\right)\right)\right]^{2}+\operatorname{Var}(\varepsilon) E(y0f^(x0))2=Var(f^(x0))+[Bias(f^(x0))]2+Var(ε)

在这里插入图片描述

区别偏差方差
度量单个模型的学习能力同一个模型在不同数据集上的稳定性
模型复杂度越高越小方差越大

模型的泛化性能是由学习算法的能力(偏差进行控制)、数据的充分性(方差)以及学习任务本身的难度(误差方差)所共同决定的。

给定学习任务,为了取得好的泛化性能,则需使偏差较小,即能够充分拟合数据,并且使方差较小,即使得数据扰动产生的影响小。 但是方差和偏差不可能同时能达到最小。因此要选择两者的折中。

训练误差与测试误差(题3)

模型应用在训练集上的误差为训练误差,应用在测试集上的误差为测试误差。

  • 估计测试误差的方法
    • 间接估计:训练误差修正
      思路:模型越复杂训练模型误差越小,先构造一个模型使训练误差越小,模型过拟合,再增加一个关于特征数的惩罚系数,即特征越多惩罚系数越大,以这两者的综合作用估计训练误差。

      • C p = 1 N ( R S S + 2 d σ ^ 2 ) C_p = \frac{1}{N}(RSS + 2d\hat{\sigma}^2) Cp=N1(RSS+2dσ^2)
      • AIC赤池信息量准则: A I C = 1 d σ ^ 2 ( R S S + 2 d σ ^ 2 ) AIC = \frac{1}{d\hat{\sigma}^2}(RSS + 2d\hat{\sigma}^2) AIC=dσ^21(RSS+2dσ^2)
      • BIC贝叶斯信息量准则: B I C = 1 n ( R S S + l o g ( n ) d σ ^ 2 ) BIC = \frac{1}{n}(RSS + log(n)d\hat{\sigma}^2) BIC=n1(RSS+log(n)dσ^2)


      其中,d——模型特征个数,
      R S S = ∑ i = 1 N ( y i − f ^ ( x i ) ) 2 RSS = \sum\limits_{i=1}^{N}(y_i-\hat{f}(x_i))^2 RSS=i=1N(yif^(xi))2
      σ ^ 2 \hat{\sigma}^2 σ^2——模型预测误差的方差的估计值,即残差的方差。
      BIC惩罚最重,因此选出的模型特征参数最小。

    • 直接估计:交叉验证
      K折交叉验证:我们把训练样本分成K等分,然后用K-1个样本集当做训练集,剩下的一份样本集为验证集去估计由K-1个样本集得到的模型的精度,这个过程重复K次取平均值得到测试误差的一个估计 C V ( K ) = 1 K ∑ i = 1 K M S E i CV_{(K)} = \frac{1}{K}\sum\limits_{i=1}^{K}MSE_i CV(K)=K1i=1KMSEi

特征选择

最优子集选择

若则p个特征中选择子集,则有 2 p 2^p 2p个子集。

向前逐步选择

只需要计算 ( 1 + p ) p / 2 (1+p)p/2 (1+p)p/2个子集。

压缩估计(正则化)(题4)

对回归的系数进行约束或者加罚的技巧对p个特征的模型进行拟合,(就是将回归系数往零的方向压缩=>特征提取)显著降低模型方差,这样也会提高模型的拟合效果。

岭回归——l2正则化

在线性回归损失函数的基础上增加对系数的约束或惩罚。
J ( w ) = ∑ i = 1 N ( y i − w 0 − ∑ j = 1 p w j x i j ) 2 + λ ∑ j = 1 p w j 2 ,      其 中 , λ ≥ 0 w ^ = ( X T X + λ I ) − 1 X T Y J(w) = \sum\limits_{i=1}^{N}(y_i-w_0-\sum\limits_{j=1}^{p}w_jx_{ij})^2 + \lambda\sum\limits_{j=1}^{p}w_j^2,\;\;其中,\lambda \ge 0\\ \hat{w} = (X^TX + \lambda I)^{-1}X^TY J(w)=i=1N(yiw0j=1pwjxij)2+λj=1pwj2,λ0w^=(XTX+λI)1XTY
可以通过调节 λ \lambda λ ,保证 X T X + λ I X^TX + \lambda I XTX+λI可逆。

调节参数 λ \lambda λ的大小是影响压缩估计的关键, λ \lambda λ越大,惩罚的力度越大,系数则越趋近于0(但不等于0)。

岭回归通过牺牲线性回归的无偏性降低方差,有可能使得模型整体的测试误差较小,提高模型的泛化能力。

可以用梯度下降法进行寻优

Lasso回归——l1正则化

J ( w ) = ∑ i = 1 N ( y i − w 0 − ∑ j = 1 p w j x i j ) 2 + λ ∑ j = 1 p ∣ w j ∣ ,      其 中 , λ ≥ 0 J(w) = \sum\limits_{i=1}^{N}(y_i-w_0-\sum\limits_{j=1}^{p}w_jx_{ij})^2 + \lambda\sum\limits_{j=1}^{p}|w_j|,\;\;其中,\lambda \ge 0 J(w)=i=1N(yiw0j=1pwjxij)2+λj=1pwj,λ0

因为有绝对值项,所以不能用梯度下降法进行寻优。寻优通过LARS最小角回归进行。

降维

目的

  • 降噪
  • 寻找数据内部本质结构

PCA(题5)

  • 思路:将原始特征处理为在某个方向上的投影的方差最大特征(不具有相关性)。
  • 计算: 对中心化后的协方差矩阵进行特征值分解,得到的特征向量即为投影方向。
  • 习题:对一个3维椭球进行PCA降维成2维,请问是什么图形?
    答:设椭球的三个轴长分别为a,b,c。
    (1) 当a>b>c时或a>b=c:降维后图形为椭圆形;
    (2) 当a=b>c时:降维后图形为圆形;

调参

基本概念

参数与超参数

参数超参数
模型内部变量,可以根据数据进行估计模型外部配置变量,无法通过数据进行估计
参数定义了模型超参数用于帮助估计模型参数
通过训练得到参数估计值通常通过人工给定

方法

  • 网格搜索 GridSearchCV()
  • 随即搜索 RandomizedSearchCV()
  • 贝叶斯搜索
    库: bayesian-optimization

案例(题8)

选择一个数据集,对特征进行三种方法简化,再使用回归模型,并用网格搜索进行调参,观察三种方法优劣。

  • 数据集:波士顿房价
  • 特征简化方法:岭回归,Lasso回归,PCA+线性回归
  • 模型评价方法:10-折交叉验证

代码如下

from sklearn import datasets 
from sklearn.pipeline import Pipeline
from sklearn import linear_model
from sklearn.decomposition import PCA
from sklearn.model_selection import GridSearchCV 

#数据准备
boston = datasets.load_boston()     
X = boston.data
y = boston.target
gslst = []
#岭回归
param_grid = {'alpha' : [0.1,0.2,0.3,0.4,0.5]}
gs = GridSearchCV(estimator=linear_model.Ridge(),param_grid = param_grid,scoring = 'r2',cv = 10)
gs = gs.fit(X,y)
print("网格搜索最优得分:",gs.best_score_)
print("网格搜索最优参数组合:\n",gs.best_params_)
gslst.append([gs.best_score_,gs.best_params_])

#Lasso回归
param_grid = {'alpha' : [0.1,0.2,0.3,0.4,0.5]}
gs = GridSearchCV(estimator=linear_model.Lasso(),param_grid = param_grid,scoring = 'r2',cv = 10)
gs = gs.fit(X,y)
print("网格搜索最优得分:",gs.best_score_)
print("网格搜索最优参数组合:\n",gs.best_params_)
gslst.append([gs.best_score_,gs.best_params_])

#PCA+回归
pipe = Pipeline([("pca",PCA()),("lr",linear_model.LinearRegression())])
param_grid = {'pca__n_components': [2,3,4,5,6,7,8,9,10,11,12]}
gs = GridSearchCV(estimator=pipe,param_grid = param_grid,scoring = 'r2',cv = 10)
gs = gs.fit(X,y)
print("网格搜索最优得分:",gs.best_score_)
print("网格搜索最优参数组合:\n",gs.best_params_)
gslst.append([gs.best_score_,gs.best_params_])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值