本页面介绍了 ML-For-Beginners 课程中使用的 R 实现方法。它解释了如何使用 R 编程语言来教授机器学习概念、使用的关键包以及跨不同模块遵循的一致模式。虽然 Python 实现已在 Python Implementation 中介绍,但本文档仅专注于 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 实现课程中始终使用一组成熟的包。核心包包括
tidyverse 是一个为数据科学设计的 R 包集合,它们共享共同的理念和设计。使用的核心 tidyverse 包包括:
Tidymodels 是一个使用 tidyverse 原则进行建模和机器学习的包集合。该框架为处理不同模型提供了统一的接口。关键组件包括:
根据课程内容,还会使用其他专用包
来源: 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 实现遵循所有课程中一致的数据科学工作流程。这为学生提供了一个可复制的模式,他们可以将其应用于不同的机器学习问题。
数据通常使用 readr 包中的 read_csv() 加载,然后使用 glimpse()、slice_head() 等基本函数或 DataExplorer 等包进行探索。
数据清洗使用 dplyr 动词(filter, select, mutate)和 janitor 等专用包进行。例如:
可视化主要使用 ggplot2 进行,根据数据类型和分析目标使用各种几何对象。
数据通常使用 rsample 包拆分为训练集和测试集。
特征工程和预处理使用 recipes 包处理。
模型使用 parsnip 包以统一的接口进行指定。
使用 workflows 包组合预处理和建模步骤。
通过将工作流程拟合到训练数据来训练模型。
使用 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 框架是 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 接口。
回归模型
分类模型
聚类模型
来源: 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 实现涵盖了多种机器学习任务。以下是一些示例:
用于预测二元结果,例如南瓜是橙色还是白色。
用于根据配料预测菜肴类型。
用于在没有预定义标签的情况下发现数据中的模式。
来源: 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, acousticness | K-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实现使用各种技术来评估模型性能
来源: 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.Rmd、4-Classification/2-Classifiers-1/solution/R/lesson_11.Rmd 和 5-Clustering/2-K-Means/solution/R/lesson_15.Rmd 的文件结构观察得出
ML-For-Beginners 中的 R 实现通过现代 R 包和最佳实践提供了一种结构化、一致的机器学习方法。通过利用 tidyverse 和 tidymodels 框架,它提供了用于数据操作、可视化和建模的干净、可读的语法,遵循了整洁数据原则。
这种跨不同机器学习任务的一致方法使学习者更容易理解核心概念,并专注于每个算法的具体细节,而不是迷失在不同的语法和编程范式中。
该实现遵循可预测的模式
无论构建回归模型、分类模型还是聚类模型,此模式都得到一致应用,为学习者提供了一个可用于新问题的可重用框架。