菜单

R实现

相关源文件

本页面介绍了 ML-For-Beginners 课程中使用的 R 实现方法。它解释了如何使用 R 编程语言来教授机器学习概念、使用的关键包以及跨不同模块遵循的一致模式。虽然 Python 实现已在 Python Implementation 中介绍,但本文档仅专注于 R 生态系统及其在课程中的应用。

R 实现概述

ML-For-Beginners 存储库为大多数课程提供了 Python 和 R 的并行实现,允许学生选择他们偏好的语言。R 实现利用了现代的 tidyverse 生态系统,特别是用于机器学习任务的 tidymodels 框架,为数据科学工作流程提供了统一、可读的方法。

来源: 2-Regression/4-Logistic/solution/R/lesson_4.Rmd38-46 4-Classification/1-Introduction/solution/R/lesson_10.Rmd53-62 4-Classification/2-Classifiers-1/solution/R/lesson_11.Rmd36-45

核心 R 包

R 实现课程中始终使用一组成熟的包。核心包包括

tidyverse

tidyverse 是一个为数据科学设计的 R 包集合,它们共享共同的理念和设计。使用的核心 tidyverse 包包括:

  • dplyr:用于数据操作(过滤、选择、变异、汇总)
  • ggplot2:用于数据可视化
  • tidyr:用于数据整理(在宽格式和长格式之间重塑数据)
  • readr:用于数据导入

tidymodels

Tidymodels 是一个使用 tidyverse 原则进行建模和机器学习的包集合。该框架为处理不同模型提供了统一的接口。关键组件包括:

  • parsnip:为各种建模包提供统一的接口
  • recipes:用于预处理和特征工程
  • rsample:用于数据拆分和重采样
  • yardstick:用于衡量模型性能
  • workflows:用于捆绑预处理、建模和后处理步骤

附加包

根据课程内容,还会使用其他专用包

  • janitor:用于数据清理
  • themis:用于处理不平衡数据
  • cluster:用于聚类方法
  • DataExplorer:用于自动探索性数据分析

来源: 2-Regression/4-Logistic/solution/R/lesson_4.Rmd38-46 4-Classification/1-Introduction/solution/R/lesson_10.Rmd53-62 4-Classification/2-Classifiers-1/solution/R/lesson_11.Rmd36-45 5-Clustering/2-K-Means/solution/R/lesson_15.Rmd73-75

标准数据科学工作流程

R 实现遵循所有课程中一致的数据科学工作流程。这为学生提供了一个可复制的模式,他们可以将其应用于不同的机器学习问题。

1. 数据加载与探索

数据通常使用 readr 包中的 read_csv() 加载,然后使用 glimpse()slice_head() 等基本函数或 DataExplorer 等包进行探索。

2. 数据清洗与预处理

数据清洗使用 dplyr 动词(filter, select, mutate)和 janitor 等专用包进行。例如:

3. 数据可视化

可视化主要使用 ggplot2 进行,根据数据类型和分析目标使用各种几何对象。

4. 数据拆分

数据通常使用 rsample 包拆分为训练集和测试集。

5. 使用 recipes 进行模型预处理

特征工程和预处理使用 recipes 包处理。

6. 模型规范

模型使用 parsnip 包以统一的接口进行指定。

7. 工作流程创建

使用 workflows 包组合预处理和建模步骤。

8. 模型训练

通过将工作流程拟合到训练数据来训练模型。

9. 模型评估

使用 yardstick 包评估模型性能。

来源: 2-Regression/4-Logistic/solution/R/lesson_4.Rmd100-112 2-Regression/4-Logistic/solution/R/lesson_4.Rmd249-262 2-Regression/4-Logistic/solution/R/lesson_4.Rmd270-293 2-Regression/4-Logistic/solution/R/lesson_4.Rmd304-307 4-Classification/2-Classifiers-1/solution/R/lesson_11.Rmd93-119 4-Classification/2-Classifiers-1/solution/R/lesson_11.Rmd230-236 4-Classification/2-Classifiers-1/solution/R/lesson_11.Rmd282-293

tidymodels 框架

tidymodels 框架是 ML-For-Beginners 中 R 实现的核心。它为处理不同的机器学习模型提供了统一的接口,并简化了许多常见任务。

关键组件

目的关键函数使用示例
parsnip模型规范logistic_reg()rand_forest()boost_tree()logistic_reg() %>% set_engine("glm")
recipes特征工程recipe()step_normalize()step_dummy()recipe(y ~ x) %>% step_normalize(all_predictors())
rsample数据拆分initial_split()vfold_cv()initial_split(data, prop = 0.75)
yardstick模型评估accuracy()roc_auc()conf_mat()results %>% accuracy(truth = outcome, estimate = .pred_class)
workflows工作流程管理workflow()add_recipe()add_model()workflow() %>% add_recipe(rec) %>% add_model(spec)
tune超参数调优tune_grid()select_best()tune_grid(wf, resamples, grid = 10)

常见模型类型

R 实现涵盖了几种模型类型,每种模型都使用统一的 tidymodels 接口。

  1. 回归模型

    • 线性回归
    • 逻辑回归
  2. 分类模型

    • 逻辑回归
    • 随机森林
    • 支持向量机
    • 神经网络
  3. 聚类模型

    • K-均值聚类

来源: 2-Regression/4-Logistic/solution/R/lesson_4.Rmd270-293 4-Classification/2-Classifiers-1/solution/R/lesson_11.Rmd230-236 4-Classification/2-Classifiers-1/solution/R/lesson_11.Rmd282-293

示例用例

R 实现涵盖了多种机器学习任务。以下是一些示例:

逻辑回归

用于预测二元结果,例如南瓜是橙色还是白色。

多项分类

用于根据配料预测菜肴类型。

K-Means 聚类

用于在没有预定义标签的情况下发现数据中的模式。

来源: 2-Regression/4-Logistic/solution/R/lesson_4.Rmd279-306 4-Classification/2-Classifiers-1/solution/R/lesson_11.Rmd230-259 5-Clustering/2-K-Means/solution/R/lesson_15.Rmd182-189

示例数据集

课程中使用了各种数据集来演示不同的机器学习概念

数据集任务类型目标变量示例特征应用场景
南瓜价格回归,分类color (橙色/白色)variety, package, origin, item_size逻辑回归
菜肴分类cuisine (例如:泰式,印度式)食材列 (例如:anise, ginger)多项分类
尼日利亚歌曲聚类无 (无监督)popularity, danceability, energy, acousticnessK-Means 聚类

来源: 2-Regression/4-Logistic/solution/R/lesson_4.Rmd31-36 4-Classification/1-Introduction/solution/R/lesson_10.Rmd127-132 5-Clustering/2-K-Means/solution/R/lesson_15.Rmd83-95

预处理技术

R实现中使用了多种预处理技术

数据清洗

处理不平衡数据

使用themis包来处理不平衡数据

特征工程

使用recipes包进行特征工程

来源: 4-Classification/1-Introduction/solution/R/lesson_10.Rmd290-337 2-Regression/4-Logistic/solution/R/lesson_4.Rmd273-277 4-Classification/2-Classifiers-1/solution/R/lesson_11.Rmd140-142

模型评估

R实现使用各种技术来评估模型性能

分类指标

ROC曲线

聚类评估

来源: 2-Regression/4-Logistic/solution/R/lesson_4.Rmd340-341 2-Regression/4-Logistic/solution/R/lesson_4.Rmd379-383 2-Regression/4-Logistic/solution/R/lesson_4.Rmd390-394 5-Clustering/2-K-Means/solution/R/lesson_15.Rmd217-225 5-Clustering/2-K-Means/solution/R/lesson_15.Rmd270-275

文件结构

R实现跨课程保持一致的文件结构

ML-For-Beginners/
├── N-Topic/
│   ├── M-Lesson/
│   │   ├── solution/
│   │   │   ├── R/
│   │   │   │   ├── lesson_X.Rmd       # R Markdown document
│   │   │   │   ├── lesson_X-R.ipynb   # R Notebook
│   │   │   │   └── lesson_X.html      # Rendered HTML

其中

  • N 是主题编号(例如:2-回归,4-分类)
  • M 是主题中的课程编号
  • X 是总课程编号

每门课程通常都有一个 R Markdown (.Rmd) 文件和一个 R Notebook (.ipynb) 文件,其中包含相同的内容,但格式不同。

来源:跨 2-Regression/4-Logistic/solution/R/lesson_4.Rmd, 4-Classification/1-Introduction/solution/R/lesson_10.Rmd4-Classification/2-Classifiers-1/solution/R/lesson_11.Rmd5-Clustering/2-K-Means/solution/R/lesson_15.Rmd 的文件结构观察得出

总结

ML-For-Beginners 中的 R 实现通过现代 R 包和最佳实践提供了一种结构化、一致的机器学习方法。通过利用 tidyverse 和 tidymodels 框架,它提供了用于数据操作、可视化和建模的干净、可读的语法,遵循了整洁数据原则。

这种跨不同机器学习任务的一致方法使学习者更容易理解核心概念,并专注于每个算法的具体细节,而不是迷失在不同的语法和编程范式中。

该实现遵循可预测的模式

  1. 加载和探索数据
  2. 清洗和预处理数据
  3. 将数据分割为训练集和测试集
  4. 创建预处理配方
  5. 指定模型
  6. 将配方和模型捆绑成工作流
  7. 训练模型
  8. 评估模型性能

无论构建回归模型、分类模型还是聚类模型,此模式都得到一致应用,为学习者提供了一个可用于新问题的可重用框架。