使用R语言的caret包构建预测模型

在商业分析中,预测模型对于各种业务功能有着重要的影响。构建这类模型通常是一个迭代过程,需要根据数据的大小(观测值和变量)进行大量的试验。预测模型最常解决的问题包括回归和分类两大类,而可以实施的技术则涵盖了最小二乘回归、逻辑回归、基于树的模型、神经网络和支持向量机等。在模型构建过程中,最初建议逐一进行所有迭代,以便更好地理解基本概念。在积累了一定的专业知识后,可以考虑使用更多的自动化来替代模型迭代。

R语言中的“caret”包专门用于处理这个问题,并包含了适用于所有建模技术的内置通用函数。让通过在“mtcars”数据上运行一个简单的线性回归模型来了解一些最有用的“caret”包函数。本文将更多地关注“caret”包函数如何用于构建预测模型,而不是模型输出的解释或业务洞察的生成。

数据加载和分割

在这个示例项目中,将使用R中内置的数据集“mtcars”。加载数据后,首先需要执行的任务之一是将数据分割为开发样本和验证样本。使用“caret”包中的“createDataPartition”函数可以轻松执行数据分割任务。可以通过在R控制台中运行以下函数来访问此函数的语法和其他参数。

library(caret) library(datasets) data(mtcars) split <- createDataPartition(y = mtcars$mpg, p = 0.6, list = FALSE) dev <- mtcars[split,] val <- mtcars[-split,]

模型构建和调整

“train”函数可以用来估计各种建模函数的系数值,如随机森林等。这个函数设置了一组调整参数的网格,并且可以计算基于重采样的性能度量。

lmFit <- train(mpg ~ ., data = dev, method = "lm") summary(lmFit)

如果想使用不同的建模函数,只需更改“train”函数的method参数中的相应模型名称即可。例如,对于逻辑回归模型,方法将采用“glm”,对于随机森林模型,方法将采用“rf”等。通常,模型构建不会在单次迭代中完成,通常需要更多的试验。这可以通过使用“expand.grid”函数来实现,特别是对于随机森林、神经网络、支持向量机等高级模型非常有用。

ctrl <- trainControl(method = "cv", number = 10) lmCVFit <- train(mpg ~ ., data = mtcars, method = "lm", trControl = ctrl, metric="Rsquared") summary(lmCVFit)

模型诊断和评分

一旦确定了最终模型,下一步应该是计算模型诊断,这将根据使用的建模技术而有所不同。例如,对于线性回归模型,标准的诊断测试包括残差图、多重共线性检查以及实际值与预测值的图表。对于逻辑回归模型,这些将变为AUC值、分类表、增益图等。以下脚本展示了R语法,用于绘制残差值与实际值以及预测值与实际值的图表。

residuals <- resid(lmFit) predictedValues <- predict(lmFit) plot(dev$mpg, residuals) abline(0,0) plot(dev$mpg, predictedValues)
varImp(lmFit) plot(varImp(lmFit))
predictedVal <- predict(lmFit, val) modelvalues <- data.frame(obs = dev$mpg, pred=predictedVal) defaultSummary(modelvalues)
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485