乐于分享
好东西不私藏

为什么我认为“有AI就不用学代码”,这个观念是不对的?细说R机器学习环境搭建

为什么我认为“有AI就不用学代码”,这个观念是不对的?细说R机器学习环境搭建

点击上方“科研代码”,关注我的公众号。
添加微信:smartcode2023   备注:R模板,免费领取50个R语言绘图代码

前言

我们已经有很多章内容介绍了各种机器学习的代码,很多朋友反应各种报错,特别是新手会因为包的安装感到困惑,比如版本问题等等,今天我们利用周日的时间更新一期环境搭建的问题,其实很简单,介绍R语言,Rstudio分别是什么,以及常用的机器学习的包,欢迎你根据实际需要选择对应的包,起到磨刀不误砍柴工的效果!

一、心理环境准备

在讲任何安装步骤之前,我想先说几句题外话。

每次提到”我们来写一段代码”,总会看到一些朋友的反驳型人格上线,什么自己数学不好、不是计算机专业的、从来没学过编程,所以觉得这件事天然就很难,现在又有新的理由:我有AI,不用自己写代码。我这么说吧,自动驾驶目前普及到了L2级别,但你也得有驾照。

这个心理门槛,比任何技术门槛都更难跨越。所以我们先把它处理掉。

编程,真的没有你想的那么难。但只有掌握基础的技能,你才能使用AI

你在实验室操作过高效液相色谱仪吗?调过激光共聚焦显微镜的参数吗?处理过核磁的谱图?如果你做过这些,你就已经证明了自己有能力掌握一套复杂的工具体系。相比之下,写一段 R 代码,逻辑要清晰得多,反馈也要直接得多——你输入什么,它就输出什么,出错了它会告诉你哪一行有问题。仪器坏了你还不一定知道原因在哪。

数学基础的问题也一样。你不需要手推反向传播,就像你开车不需要懂发动机的热力学原理。机器学习里大量的数学细节,已经被封装进各种包里了。你需要的是理解模型在做什么、结果意味着什么,而不是从零推导每一个公式。这个门槛,研究生都能跨过去。

还有一个更现实的理由,是很多人还没意识到的。

AI 写代码的时代已经来了,而且来得比大多数人预期的要快。现在随便打开一个 AI 工具,描述你的需求,它能给你生成一段看起来相当完整的 R 代码。但问题是,你看得懂吗?

如果你完全不懂代码,AI 给你的东西你就只能照单全收。它用错了数据集你不知道,它混淆了训练集和测试集你不知道,它选了一个根本不适合你数据结构的模型你也不知道。一个没有基本代码能力的研究者,在 AI 时代反而更容易出错,因为他丧失了判断的能力。

你不需要成为软件工程师,但你需要有能力读懂一段代码、判断它是不是在做你以为它在做的事。这个能力,是现在做研究的基本素养之一。

好,心理关过了,我们进入正题。


2. R 版本选择

安装 R 4.0 以上版本torchtidymodels 这些包对旧版本的支持越来越有限,早点升级省得以后麻烦。

去 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(12345))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      # 环境快照

小结

这套环境可以覆盖从回归、分类、聚类到深度学习的绝大多数场景,每个现在写代码很顺手的人,都经历过第一次看着报错不知道怎么办的时刻。那个时刻没什么特别的,搜一下,试一下,就过去了。你也一样。


群聊交流

最近建了一个9.9/年费,会员交流群,每周更新R、Python教程PPT,实用代码,AI提示词
感兴趣的朋友请扫描,备注:9.9进群,Michael来加你入群
感谢关注,你的支持是我不懈的动力!