R语言机器学习caret包trainControl函数详解
R
语言caret
机器学习包是对于想要精通机器学习的人来说是必不可少的,旨在通过详细介绍caret
包认识理解到机器学习的流程,加深对于算法的理解。
caret
包包括了数据预处理、数据分割、特征选择、模型训练调参、强大的可视化等等方面。
数据变换
偏度统计量:
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 λ=0 if λ=0
除了对数变换,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,x≥0 if λ=0,x≥0 if λ=2,x≤0 if λ=2,x≤0 ,
此外还有标准化、中心化、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折交叉验证的一个特例,如果样本量为N,每次对于模型的评估只有一个样本点,最终模型的评估结果将根据N个模型的预测值进行计算。
Bootstrap抽样是对数据进行有放回随机抽样得到的样本,也就是说某些样本点可能会在将来的抽样中多次被选中。Bootstrap样本与原数据的样本量一样。没有被Bootstrap选中的样本被称为袋外样本,在一次的Bootstrap抽样中选中的样本将被用来建立模型,袋外样本被用于预测。
MCMC是重复划分训练集与测试集,训练集用于建立模型,测试集用于模型评估。比如对于样本量为N的一组数据,进行B次的重复划分训练集与测试集,训练集所占样本量的75%。在重复的划分中,增加重复的次数可以减小模型评估的不确定性,通常情形下重复25次就足以得到大致的模型表现。
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=1∑n(1−ndfyi−y^i)2
其中 y i y_{i} yi是训练集中第 i i i个样本点的响应变量的观测值, y ^ i \hat{y}_{i} y^i是第 i i i个样本点的响应变量的预测值, d f df df是模型的自由度。
总结:以上就是本篇博客的全部内容,欢迎感兴趣的小伙伴支持,您的支持与批评将是创作的动力!