为什么我认为“有AI就不用学代码”,这个观念是不对的?细说R机器学习环境搭建
前言
我们已经有很多章内容介绍了各种机器学习的代码,很多朋友反应各种报错,特别是新手会因为包的安装感到困惑,比如版本问题等等,今天我们利用周日的时间更新一期环境搭建的问题,其实很简单,介绍R语言,Rstudio分别是什么,以及常用的机器学习的包,欢迎你根据实际需要选择对应的包,起到磨刀不误砍柴工的效果!
一、心理环境准备
在讲任何安装步骤之前,我想先说几句题外话。
每次提到”我们来写一段代码”,总会看到一些朋友的反驳型人格上线,什么自己数学不好、不是计算机专业的、从来没学过编程,所以觉得这件事天然就很难,现在又有新的理由:我有AI,不用自己写代码。我这么说吧,自动驾驶目前普及到了L2级别,但你也得有驾照。
这个心理门槛,比任何技术门槛都更难跨越。所以我们先把它处理掉。
编程,真的没有你想的那么难。但只有掌握基础的技能,你才能使用AI
你在实验室操作过高效液相色谱仪吗?调过激光共聚焦显微镜的参数吗?处理过核磁的谱图?如果你做过这些,你就已经证明了自己有能力掌握一套复杂的工具体系。相比之下,写一段 R 代码,逻辑要清晰得多,反馈也要直接得多——你输入什么,它就输出什么,出错了它会告诉你哪一行有问题。仪器坏了你还不一定知道原因在哪。
数学基础的问题也一样。你不需要手推反向传播,就像你开车不需要懂发动机的热力学原理。机器学习里大量的数学细节,已经被封装进各种包里了。你需要的是理解模型在做什么、结果意味着什么,而不是从零推导每一个公式。这个门槛,研究生都能跨过去。
还有一个更现实的理由,是很多人还没意识到的。
AI 写代码的时代已经来了,而且来得比大多数人预期的要快。现在随便打开一个 AI 工具,描述你的需求,它能给你生成一段看起来相当完整的 R 代码。但问题是,你看得懂吗?
如果你完全不懂代码,AI 给你的东西你就只能照单全收。它用错了数据集你不知道,它混淆了训练集和测试集你不知道,它选了一个根本不适合你数据结构的模型你也不知道。一个没有基本代码能力的研究者,在 AI 时代反而更容易出错,因为他丧失了判断的能力。
你不需要成为软件工程师,但你需要有能力读懂一段代码、判断它是不是在做你以为它在做的事。这个能力,是现在做研究的基本素养之一。
好,心理关过了,我们进入正题。
2. R 版本选择
安装 R 4.0 以上版本。torch、tidymodels 这些包对旧版本的支持越来越有限,早点升级省得以后麻烦。
去 CRAN 官网下载对应系统的安装包
RStudio 用最新的稳定版就行。装完之后在控制台确认一下:
R.version.string# 应该看到类似 "R version 4.4.1 (2024-06-14)"
3. 核心包生态
3.1 现代化建模框架:tidymodels
tidymodels 是一套包的集合,把数据预处理、模型定义、训练、调参、评估统一成一个语法体系。装它就等于装了一批常用工具:
install.packages("tidymodels")
这一行会把 recipes(特征工程)、parsnip(模型接口)、workflows(流水线)、tune(调参)、yardstick(评估指标)等全部装好。
3.2 传统框架:caret
如果你的代码库或者合作者还在用 caret,也值得装上:
install.packages("caret")
caret 历史悠久,文档和案例极多,遇到问题容易搜到解决方案。两套框架并不冲突,可以共存。
3.3 算法包
# 集成学习install.packages("randomForest") # 随机森林经典实现install.packages("ranger") # 随机森林高速版,大数据首选install.packages("xgboost") # XGBoostinstall.packages("lightgbm") # LightGBM# 支持向量机install.packages("e1071") # SVM,也包含朴素贝叶斯# 正则化回归install.packages("glmnet") # Ridge、Lasso、Elastic Net
3.4 深度学习:torch
install.packages("torch")torch::install_torch() # 首次运行会下载 LibTorch,需要一点时间
3.5 数据处理与可视化
install.packages(c("tidyverse", # dplyr + ggplot2 + tidyr 等一套"data.table", # 大数据集处理,速度快"skimr", # 快速数据概览"DataExplorer", # 自动化探索性分析"corrplot", # 相关性矩阵可视化"patchwork"# 多图拼接))
4. 包管理:用 renv 锁定环境
做研究最怕的事之一是:代码在自己电脑上跑通了,换台机器或者半年后包版本变了,结果就不一样了。renv 解决这个问题:
install.packages("renv")# 在项目目录初始化renv::init()# 安装包之后,记录当前环境快照renv::snapshot()# 换台机器,一行命令恢复完全相同的包版本renv::restore()
每个正式的研究项目都开 renv,写论文补充方法部分的时候也更好描述。
5. 验证环境是否就绪
装完之后跑一段小代码,确认核心组件正常:
library(tidymodels)library(ranger)library(xgboost)data(mtcars)rf_model <- rand_forest(trees = 100) %>% set_engine("ranger") %>% set_mode("regression")rf_fit <- rf_model %>% fit(mpg ~ ., data = mtcars)rf_fit
## parsnip model object## ## Ranger result## ## Call:## ranger::ranger(x = maybe_data_frame(x), y = y, num.trees = ~100, num.threads = 1, verbose = FALSE, seed = sample.int(10^5, 1)) ## ## Type: Regression ## Number of trees: 100 ## Sample size: 32 ## Number of independent variables: 10 ## Mtry: 3 ## Target node size: 5 ## Variable importance mode: none ## Splitrule: variance ## OOB prediction error (MSE): 5.478743 ## R squared (OOB): 0.8491706
没有报错、看到模型输出,说明环境没问题。
验证 torch:
library(torch)x <- torch_tensor(c(1, 2, 3, 4, 5))print(x)
## torch_tensor## 1## 2## 3## 4## 5## [ CPUFloatType{5} ]
# tensor([1., 2., 3., 4., 5.])
6. 项目目录结构
每个项目一个独立目录,配合 renv 使用:
my_project/├── data/ # 原始数据,不动├── R/ # 脚本文件├── output/ # 图表和结果├── renv/ # renv 自动生成└── renv.lock # 环境快照
小结
这套环境可以覆盖从回归、分类、聚类到深度学习的绝大多数场景,每个现在写代码很顺手的人,都经历过第一次看着报错不知道怎么办的时刻。那个时刻没什么特别的,搜一下,试一下,就过去了。你也一样。


群聊交流







夜雨聆风