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 

由于进行数据变换的原因是去除分布的偏度,一个相对的无偏分布大致是对称的分布,意味着随机变量的取值等概率地落入均值左右地两侧。右偏分布是相对于分布的右侧,大量的样本落入分布地左侧。
BoxCox变换
公式为:
f ( x ) = { x λ − 1 / λ , if  λ ≠ 0   l o g ( x ) , if  λ = 0   f(x)= \begin{cases} x^\lambda-1/\lambda, & \text {if $\lambda \neq0$ } \\ log(x), & \text{if $\lambda=0$ } \end{cases} 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)= \begin{cases} x^\lambda-1/\lambda, & \text {if $\lambda \neq0,x\geq0$ } \\ log(x+1), & \text{if $\lambda=0,x\geq0$ }\\ \frac{-[(-x+1)^{-2\lambda}-1]}{2-\lambda}, & \text{if $\lambda\neq2,x\leq0$ }\\ -log(-x+1)& \text{if $\lambda\neq2,x\leq0$ } ,\end{cases} 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

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

重抽样技术

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

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是模型的自由度。

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

  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麻利麻利哄吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值