• R语言机器学习之caret包详解


    R语言机器学习caret包trainControl函数详解
    R语言机器学习caret包详解(二)模型训练以及调参

    简介

    R语言caret机器学习包是对于想要精通机器学习的人来说是必不可少的,旨在通过详细介绍caret包认识理解到机器学习的流程,加深对于算法的理解。
    caret包包括了数据预处理、数据分割、特征选择、模型训练调参、强大的可视化等等方面。

    数据预处理

    在这里插入图片描述

    各种数据变换

    • 数据变换
      偏度统计量:
      偏度的计算公式
      s k e w = ∑ i = 1 n ( x i − x ˉ ) 3 ( n − 1 ) v 3 2 skew=\frac{\sum_{i=1}^{n} (x_i-\bar{x})^3}{(n-1)v^\frac{3}{2}} skew=(n1)v23i=1n(xixˉ)3
      v = ∑ i = 1 n ( x i − x ˉ ) 2 n − 1 v =\frac{\sum_{i=1}^{n} (x_i-\bar{x})^2}{n-1} v=n1i=1n(xixˉ)2

    e1071::skewness

    apply(df,2,e1071::skewness) #使用e1071包中的skewness计算偏度
    ManufacturingProcess01 ManufacturingProcess16 ManufacturingProcess18 
              -3.930281936          -12.420224762          -12.736137779 
    
    • 1
    • 2
    • 3

    由于进行数据变换的原因是去除分布的偏度,一个相对的无偏分布大致是对称的分布,意味着随机变量的取值等概率地落入均值左右地两侧。右偏分布是相对于分布的右侧,大量的样本落入分布地左侧。
    BoxCox变换
    公式为:
    f ( x ) = { x λ − 1 / λ , if  λ ≠ 0   l o g ( x ) , if  λ = 0   f(x)=

    {xλ1/λ,log(x),if λ0 if λ=0 
    f(x)={xλ1/λ,log(x),if λ=if λ=

    除了对数变换,BoxCox变换族还包括了平方变换( λ = 2 \lambda=2 λ=2)、平方根变换( λ = 0.5 \lambda=0.5 λ=0.5)、倒数变换( λ = − 1 \lambda=-1 λ=1)以及其他在此期间的变换。我们使用极大似然估计去估计训练数据集中的 λ \lambda λ.

    • BoxCox的优缺点

    使用BoxCox变换一般可以将数据进行合适的正态变换,变换后的残差更好的满足正态性、独立性的假设。其通常与线性回归模型一起使用,可以减小模型回归系数估计的方差,使得回归系数的解更稳定。
    但是对于某些分类预测变量,比如二分变量或者水平较少的变量BoxCox不能成功的估计,这种情况可以采用Yeo-Johnson变换

    Yeo-Johnson变换
    公式为:
    f ( x ) = { x λ − 1 / λ , if  λ ≠ 0 , x ≥ 0   l o g ( x + 1 ) , if  λ = 0 , x ≥ 0   − [ ( − x + 1 ) − 2 λ − 1 ] 2 − λ , if  λ ≠ 2 , x ≤ 0   − l o g ( − x + 1 ) if  λ ≠ 2 , x ≤ 0   , f(x)=

    xλ1/λ,log(x+1),[(x+1)2λ1]2λ,log(x+1)if λ0,x0 if λ=0,x0 if λ2,x0 if λ2,x0 ,
    f(x)= xλ1/λ,log(x+1),2λ[(x+1)2λ1],log(x+1)if λ=0,xif λ=0,xif λ=2,xif λ=2,x,
    此外还有标准化、中心化、min-max标准化等等就不一一介绍了。

    近零方差变量

    str(nearZeroVar)
    function (x, freqCut = 95/5, uniqueCut = 10, saveMetrics = FALSE, names = FALSE,
    foreach = FALSE, allowParallel = TRUE)
    ## 参数意义:
    freqCut:频数最大与频数第二的比值
    uniqueCut:去重样本数比总的样本数量,删选近零方差变量必须高于设定的freqCut且低于uniqueCut
    saveMetrics:逻辑变量,是否返回变量的详细信息,比如:freqRatio, percentUnique, zeroVar,nzv

    创建虚拟变量

    通常情况下虚拟变量的创建与分类变量有关。R语言通过dummyVars函数创建。

    fit <- dummyVars(~Sepal.Length + Species,data = iris,levelsOnly = T)
    > fit
    Dummy Variable Object
    
    Formula: ~Sepal.Length + Species
    2 variables, 1 factors
    Factor variable names will be removed
    A less than full rank encoding is used
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    predict(fit,head(iris))
      Sepal.Length setosa versicolor virginica
    1          5.1      1          0         0
    2          4.9      1          0         0
    3          4.7      1          0         0
    4          4.6      1          0         0
    5          5.0      1          0         0
    6          5.4      1          0         0
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    重抽样技术

    各类重抽样技术用于模型表现评估:先用一个子样本去拟合模型,再用其余的样本进行评估,针对不同的重抽样方法这个过程会重复多次,然后对每个过程的结果汇总。下面将介绍几种常用的重抽样方法。

    k折交叉验证

    k折交叉验证样本被随机划分为k个容量相当的子集.第一步用除了第一个子集之外的所有样本拟合模型,然后用训练的模型对第一个子集进行预测,并使用其结果来评估模型;接下来第一个子集被归还至训练集,将第二个子集拿出来进行模型评估,以此类推,最后将得到的k个模型评估结果进行汇总,然后基于此得到调优参数与模型表现之间的关系。

    留一交叉验证

    留一交叉验证k折交叉验证的一个特例,如果样本量为N,每次对于模型的评估只有一个样本点,最终模型的评估结果将根据N个模型的预测值进行计算。

    Bootstrap

    Bootstrap抽样是对数据进行有放回随机抽样得到的样本,也就是说某些样本点可能会在将来的抽样中多次被选中。Bootstrap样本与原数据的样本量一样。没有被Bootstrap选中的样本被称为袋外样本,在一次的Bootstrap抽样中选中的样本将被用来建立模型,袋外样本被用于预测。

    MCMC

    MCMC是重复划分训练集与测试集,训练集用于建立模型,测试集用于模型评估。比如对于样本量为N的一组数据,进行B次的重复划分训练集与测试集,训练集所占样本量的75%。在重复的划分中,增加重复的次数可以减小模型评估的不确定性,通常情形下重复25次就足以得到大致的模型表现。

    GCV

    GCV不需要反复基于不同数据子集拟合模型,GCV利用每一个样本点的预测结果计算了一个统计量:
    G C V = 1 n ∑ i = 1 n ( y i − y ^ i 1 − d f n ) 2 GCV=\frac{1}{n}\sum_{i=1}^{n}(\frac{y_{i}-\hat{y}_{i}}{1 -\frac{df}{n}})^{2} GCV=n1i=1n(1ndfyiy^i)2
    其中 y i y_{i} yi是训练集中第 i i i个样本点的响应变量的观测值, y ^ i \hat{y}_{i} y^i是第 i i i个样本点的响应变量的预测值, d f df df是模型的自由度。

    总结:以上就是本篇博客的全部内容,欢迎感兴趣的小伙伴支持,您的支持与批评将是创作的动力!

  • 相关阅读:
    图像运算和图像增强十一
    Vue_Bug NPM下载速度过慢
    TortoiseGit 入门指南13:拣选
    七星创客新零售系统:颠覆性商业模式的崛起
    第十六章·职责链模式
    Java面向对象学习笔记-2
    HTTPS的原理浅析与本地开发实践(下)
    基于信通院 Serverless 工具链模型的实践:Serverless Devs
    视频基础学习一——色立体、三原色以及像素
    【接口自动化测试】第一节.接口自动化测试基础和框架介绍
  • 原文地址:https://blog.csdn.net/weixin_43217641/article/details/125790231