Caret R 包用于应用预测建模2025 年 6 月 17 日 | 阅读 14 分钟 预测建模是一项极其重要的活动。它允许数据科学家和分析师使用历史数据来预测结果。R 语言中的 caret 包 - 分类与回归训练 (Classification And REgression Training) 是一个功能强大的工具,可以创建、评估和调整预测模型。由于其灵活性、易用性以及与几乎所有机器学习算法的广泛兼容性,它在应用预测建模领域尤其出名。 Caret R 包R 语言中的 caret 包以统一的方式提供了模型构建和评估的交互。caret 的一些功能包括 数据预处理、变量选择、模型训练、重采样和模型性能评估。实际上,caret 包通过提供统一的接口并将大量常用的模型导入到一个框架中,简化了处理各种 机器学习 算法的工作。这在快速原型设计和比较不同机器学习模型方面特别有用。 Caret 的主要特点之一是它能够访问 200 多种不同的机器学习算法,包括相对容易的简单线性回归模型,一直到像 随机森林 和 梯度提升 这样的复杂集成方法。 现在,我们将使用 caret 包进行预测建模,以获取数据集中房屋的价格。 导入包输出 ![]() ![]() 我们需要加载数据。 现在我们将两个数据集合并为一个统一集,这为我们提供了在所有数据上统一应用转换的空间。在测试集中,我们在 SalePrice 变量上附加一个 `NA` 值,并标记每个条目,以便我们能够跟踪这些数据中有多少来自原始训练集,有多少来自测试集。 输出 ![]() 数据准备实际的清理过程涉及多个转换。首先,将因子变量转换为文本格式,以实现一致的值校正。这种转换有助于更顺畅的数据准备,并确保每个变量的格式与其预期的分析用途一致。 现在我们将进行验证和纠正——标称和有序。这些分类字段包含不一致或错误。它们描述了一个离散值,在正常情况下,该值应该适合某种逻辑或有序结构。 让我们查找缺失数据。一种方法是完全删除不完整的观测值,这会减小数据集,但也可能减小数据的大小和多样性。另一种方法是有效消除包含缺失值的变量(列),如果缺失数据集中在少数几列中。这可能导致重要特征的丢失。更复杂和创新的技术包括插补,即使用可用信息估计缺失值。替换甚至可以包括均值、中位数或众数;更复杂的过程可能包括 K-最近邻等算法或涉及的详尽过程。这取决于缺失的变量数量以及分析的需求,尽管插补在平衡数据保留和准确性方面具有很大价值。 输出 ![]() 通常,任何模型都会丢弃缺失值超过 80% 的变量。这主要是因为包含此类变量可能会在使用用于训练和验证的数据子集时导致一些错误。 我们检查并调整剩余的重要缺失值。 输出 ![]() 将有序变量转换为数值。 任何仍为字符格式的变量都将被视为标称变量。 只有两个值的变量被转换为数字格式。例如,
GrLivArea 代表地面以上居住面积(以平方英尺为单位)。数据集中有两个异常值,相对于训练集中的价格,其值异常高。这些行将被删除,因为该变量在预测过程中起着关键作用。 LotArea 是地块面积(以平方英尺为单位)。有四个值明显超出范围。我们建议创建一个新变量,通过构造类型将这些异常值替换为中位数。 LowQualFinSF 是所有楼层低质量装修面积。有几个可疑的值,因此我们建议创建一个新变量,并将这些值修改为所有非零条目的中位数。 MasVnrArea 指的是砖石贴面面积(以平方英尺为单位)。我们发现了一个异常值。 WoodDeckSF 代表木制甲板的面积(以平方英尺为单位)。这个值很奇怪,但也许房子完全是木制的。由于该值在测试集中,因此无法进行训练,并且最终的模型也不会预测完全由木材建造的房屋的价格。因此,我们将其替换为基于表面积的中位数。 SFPorchOpen 代表开放式门廊面积(以平方英尺为单位)。我们发现了一些异常值:一个在训练集中,有一个非常大的门廊但价格很低;另一个在测试集中,其表面积异常大。 EnclosedPorch 指的是封闭式门廊的面积(以平方英尺为单位)。测试集中似乎有一个异常值,其表面积异常大。 RemodAdd 指的是翻新年份。在我看来,对于 1950 年之前建造的房屋,分配了翻新日期,而对于之后建造的房屋则不适用。我们将更正 1950 年之前建造房屋的翻新日期,并将其赋值为这些房屋首次建造的年份。 GarageYrBlt 指的是车库建造的年份。该变量的数据似乎不正确,因此我们将删除它。 特征工程目标变量 SalePrice 不会通过 caret 进行修改。相反,它将直接使用 log 函数进行归一化,因为比赛是基于 SalePrice 对数的 RMSE。 现在我们将分离数据。 输出 让我们检查 recipe 对象 输出 ![]() 我们需要训练 recipe 对象。 输出 ![]() 这两种转换都应用于训练集和测试集,因为这些数据集将用作后续过程的输入。因此,这意味着数据将始终以相似的方式准备好,并为建模做好准备,从而通过整个工作流程正确维护数据集的完整性和可比性。 目标是利用 Caret 提供的各种特征减少技术之一,确保模型中只包含与目标变量相关的预测变量。 输出 我们将使用随机森林来删除递归特征。 输出 ![]() ![]() 基于 pickSizeTolerance 函数,重点介绍了具有最佳绝对 RMSE 和最佳性能的预测变量。 输出 ![]() 输出 ![]() 我们遵循简约原则选择由“容差”指定的变量,该原则认为最简单的模型最有效。 我们将使用各种机器学习算法来构建回归模型,以预测目标变量 SalePrice。 输出 在这里,将训练各种模型以评估哪个模型可能是最好的。 现在我们将使用各种模型。 我们将首先进行 SVM。 输出 ![]() 然后是 Elasticnet。 输出 ![]() 继续进行 LASSO。 输出 ![]() 我们不能忘记线性模型。 输出 ![]() 最后,将进行 XGBoost。 输出 ![]() 模型比较让我们进行模型比较。 输出 ![]() 现在我们将用图表来展示它。 输出 ![]() ![]() 我们将选择 RMSE 最低的模型。 下一话题机器学习专家在印度的薪资 |
我们请求您订阅我们的新闻通讯以获取最新更新。