K折交叉验证是一种评估机器学习模型的常用方法,它通过将数据集分割成K个大小相等的部分来进行。模型在其中的K-1个部分上进行训练,并在剩余的那一个部分上进行测试;这个过程会重复K次。最终的性能表现是所有测试结果的平均值,这为模型的有效性提供了一个更可靠且无偏的估计。
K折交叉验证的工作原理
- 确定折数。
- 将数据集随机划分为K个相等的部分(折)。
- 选择第一个折作为测试集,使用剩余的K-1个折来训练模型。
- 在选定的测试折上测试模型并记录结果。
- 重复该过程K次,每次使用不同的折作为测试集。
- 计算所有K个结果的平均值以获得最终性能得分。
在分类任务中实现K折交叉验证
我们将在一个分类任务上应用K折交叉验证,使用随机森林算法,通过将数据集分割为多个训练集和测试集来评估模型的性能。
1. 安装必需的包
我们正在安装并加载构建、训练和评估随机森林分类模型所必需的包。
- randomForest:用于创建和训练随机森林模型。
- caret:提供用于训练机器学习模型、交叉验证和评估的函数。
- ISLR:包含像
Smarket这样用于模型训练的数据集。 - lattice 和 tidyverse:用于常规数据操作和可视化。
R
CODEBLOCK_53a7cec7
2. 加载库和数据集
我们正在从ISLR中加载库和Smarket数据集,然后移除含有缺失值的行,并剔除Year列以准备模型训练。
- na.omit():移除包含任何缺失(NA)值的行。
- select(-Year):从数据集中删除
Year列,以确保它不会包含在模型训练中。
R
CODEBLOCK_570c4811
3. 探索数据集
让我们检查数据集的结构,并查看目标变量Direction的类别分布。
- glimpse(): 提供数据结构和类型的简明概览。
- table(): 计算因子变量中每个类别的出现次数。
R
CODEBLOCK_4e9eb05b
输出:
!Screenshot-2025-07-02-163743Output
4. 使用10折交叉验证训练模型
我们正在使用带有10折CV(交叉验证)的随机森林算法来训练分类模型。
- set.seed(): 确保结果的可复现性。
- trainControl(method = "cv", number = 10): 指定10折交叉验证。
- train(): 使用指定的算法(rf 随机森林)训练模型。
- Direction ~ .: 使用所有其他变量来预测Direction。
R
CODEBLOCK_e2693996
5. 评估模型性能
我们正在使用混淆矩阵来评估模型的性能,它将预测值与目标变量Direction的实际值进行比较。
- print():显示模型摘要,包括准确率等性能指标。
R
CODEBLOCK_54f3a38e
输出:
!cross-validation-Output
在回归问题上实现K折技术
我们使用回归模型来预测连续值(如价格或销售额),并应用K折交叉验证来检查模型的准确性,确保其在不同的数据集上表现良好。
1. 安装必需的包
我们正在安装并加载用于数据操作、训练模型和访问数据集所必需的包。
- lattice: 提供用于创建统计图形的函数。
- tidyverse: 一组用于数据操作和可视化的R包集合。
- caret: 用于训练机器学习模型和执行交叉验证的包。
- datarium: 包含像marketing这样数据集的包。
- install.packages(): 用于安装包的函数。