第三章 机器学习基础:监督学习、无监督学习、强化学习、特征工程与模型评估

各位同学,今天咱们聊聊机器学习的四大支柱。说实话,我刚入行那会儿,觉得机器学习就是个黑盒子——数据扔进去,结果蹦出来。后来踩的坑多了,才明白这玩意儿跟材料实验一样,每一步都得讲究。

先看一张图,把今天要讲的内容串起来。

机器学习基础体系 机器学习 监督学习 有标签数据,预测目标 无监督学习 无标签数据,发现模式 强化学习 智能体与环境交互 特征工程 数据预处理与特征提取 模型评估 验证模型性能

3.1 监督学习:有老师带着学

监督学习,说白了就是给模型看一堆「标准答案」。你给它输入,告诉它输出应该是什么,让它自己琢磨中间的映射关系。

我在做合金成分设计时,经常用监督学习。比如我们有1000组实验数据,每组包含「元素比例」和「硬度值」。模型的任务就是学会从比例预测硬度。

核心思想:输入X → 模型 → 输出Y,用已知的Y去纠正模型。

常见的算法有:

  • 线性回归:适合连续值预测,比如预测材料的拉伸强度
  • 决策树/随机森林:适合分类,比如判断材料是金属还是陶瓷
  • 支持向量机:高维数据分类,我用来区分不同晶体结构
  • 神经网络:复杂关系建模,但数据量要够大

我的经验:做材料预测时,别一上来就上神经网络。先试试线性回归或随机森林,往往效果就不错。神经网络容易过拟合,尤其是数据量少于1000组的时候。

3.2 无监督学习:自己找规律

无监督学习没有标签。你扔一堆数据进去,让它自己发现结构。这就像把一堆矿石倒在地上,让模型自己分类——哪些是铁矿,哪些是铜矿。

为什么会用到无监督学习?因为很多时候我们根本不知道数据该怎么标。比如你有10000个XRD图谱,人工分类太费劲了。

常用方法:

  • K-means聚类:把数据分成K个簇,我用来分析不同合成条件下的产物类别
  • 主成分分析(PCA):降维利器,把几十个特征压缩到2-3个,方便可视化
  • DBSCAN:能发现任意形状的簇,还能识别异常点

避坑指南:我曾经用K-means分析一组材料数据,结果分出来的簇毫无物理意义。后来发现是没做标准化——不同特征的量纲差太多,距离计算全乱套了。记住:无监督学习前,一定要做数据标准化。

3.3 强化学习:试错中成长

强化学习跟前面两种完全不同。它没有现成的数据,而是让智能体跟环境互动,通过奖励信号学习策略。

你想想看,这像不像做实验?你调整一个参数,看结果好坏,然后继续调。强化学习就是把这个过程自动化了。

核心要素:

  • 智能体(Agent):做决策的模型
  • 环境(Environment):材料合成或性能模拟系统
  • 动作(Action):比如调整温度、压力
  • 奖励(Reward):比如目标性能的提升

材料领域的应用:我见过一个团队用强化学习优化催化剂配方。智能体每次选择元素组合,环境返回催化活性作为奖励。跑了500轮后,找到了比人类专家设计高30%活性的配方。

3.4 特征工程:数据预处理的艺术

特征工程,说白了就是把原始数据变成模型能听懂的语言。这一步做不好,再牛的算法也白搭。

我个人的习惯是,花70%的时间做特征工程,30%的时间调模型。为什么?因为模型只是工具,数据才是根本。

常用操作:

  1. 缺失值处理:删除或填充。我一般用均值或中位数填充,别用0,除非你知道0有物理意义
  2. 标准化/归一化:把不同尺度的特征拉到同一范围
  3. 编码分类变量:比如「立方晶系」「六方晶系」转成数值
  4. 特征选择:去掉冗余特征,减少噪声
# 一个简单的特征工程示例(Python伪代码)
from sklearn.preprocessing import StandardScaler

# 原始数据:温度(300-1500K),压力(1-100atm),成分(0-1)
data = [[300, 1, 0.5], [1500, 100, 0.8]]

# 标准化
scaler = StandardScaler()
scaled_data = scaler.fit_transform(data)
# 结果:所有特征都在0附近,方差为1

小技巧:做材料数据时,可以构造一些物理特征。比如「熔点与成分的关系」「带隙与电负性的差值」。这些领域知识往往比原始特征更有预测力。

3.5 模型评估:别被漂亮数字骗了

模型训练完了,怎么知道它好不好?光看训练集上的准确率没用——那叫「自欺欺人」。

评估的核心是看模型在未见过的数据上的表现。我见过太多人把训练集和测试集混在一起评估,结果模型一上线就崩。

常用指标:

任务类型 指标 说明
回归 MAE / RMSE / R² MAE是平均绝对误差,RMSE对大误差更敏感,R²越接近1越好
分类 准确率 / 精确率 / 召回率 / F1 类别不平衡时别看准确率,看F1更靠谱
聚类 轮廓系数 / 兰德指数 轮廓系数衡量簇内紧密度和簇间分离度

我曾经踩过的坑:有一次做材料性能预测,模型在测试集上R²=0.95,我高兴坏了。结果部署后发现预测值全是训练集的平均值。后来一查,是数据泄露了——测试集里混入了训练集的样本。所以,一定要用交叉验证,而且确保数据分割时没有「未来信息」泄露到过去。

评估方法:

  • 留出法:简单粗暴,70%训练,30%测试
  • K折交叉验证:把数据分成K份,轮流做测试集。我一般用5折或10折
  • 留一法:数据量少时用,每次留一个样本做测试

嗯,机器学习基础就聊到这儿。记住:模型是工具,数据是原料,领域知识才是灵魂。别光顾着调参,多想想你的数据从哪来、代表什么物理意义。


专注资料整理