4. 机器学习基础回顾:监督学习、无监督学习与模型评估

各位同学,咱们今天聊点实在的。机器学习在材料科学里到底怎么用?说白了,就是让计算机从数据里找规律。我刚开始接触这个领域时,也觉得这东西玄乎,后来做了几个项目才明白——其实没那么复杂。

今天这一章,我带你快速过一遍机器学习的核心概念。别怕,咱们不搞数学推导,只讲你用得上的东西。

4.1 监督学习:回归与分类

监督学习,说白了就是“有老师带着学”。你给计算机一堆输入和对应的正确答案,让它自己琢磨出映射关系。材料科学里最常见的就是两类任务:回归和分类。

4.1.1 回归:预测连续值

回归任务,就是预测一个连续的数值。比如预测合金的屈服强度、预测电池的循环寿命、预测材料的带隙能量。这些都是回归问题。

我记得有一次做高熵合金项目,要预测不同成分组合的硬度。我们收集了200多组实验数据,用随机森林回归模型训练。结果还不错,预测误差控制在5%以内。嗯,这里有个坑——数据量太少时,复杂模型容易翻车。

常用回归算法:
  • 线性回归(简单快速,但只能捕捉线性关系)
  • 决策树回归(能处理非线性,但容易过拟合)
  • 随机森林回归(集成方法,稳定性好,我常用这个)
  • 支持向量回归(SVR,适合小样本数据)
  • 神经网络回归(数据量大时效果好,但调参麻烦)
# 一个简单的随机森林回归示例
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split

# 假设 X 是特征(成分、工艺参数等),y 是目标(强度)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)

model = RandomForestRegressor(n_estimators=100, max_depth=10)
model.fit(X_train, y_train)

# 预测
y_pred = model.predict(X_test)
print(f"R²分数: {model.score(X_test, y_test):.3f}")

4.1.2 分类:预测离散类别

分类任务,就是判断样本属于哪一类。比如判断一种材料是导体、半导体还是绝缘体,或者判断某个工艺参数组合是否会导致材料失效。

我个人习惯,做分类任务时先看数据是否平衡。如果正负样本比例悬殊,模型会偷懒——全预测成多数类,准确率还挺高,但实际没用。

避坑指南: 我曾经做过一个材料失效预测项目,正样本(失效)只占5%。直接用准确率评估,模型得分95%,但一个失效都没预测出来。后来改用F1分数和混淆矩阵,才看清问题。
算法 适用场景 优点 缺点
逻辑回归 二分类,概率输出 可解释性强 线性决策边界
K近邻(KNN) 小样本,低维数据 无需训练 计算量大
支持向量机(SVM) 高维数据,小样本 泛化能力强 调参复杂
随机森林 多分类,高维数据 鲁棒性好 模型较大

4.2 无监督学习:聚类与降维

无监督学习,就是“没有老师,自己找规律”。你只给计算机输入数据,不给标签,让它自己发现数据中的结构。这在材料科学里特别有用——比如发现新的材料类别、识别异常数据。

4.2.1 聚类:发现数据中的群组

聚类就是把相似的数据点归到一起。比如你有1000种材料的成分数据,想看看它们天然分成几类。K-means是最常用的方法,但有个问题——你得事先指定类别数K。

我建议用肘部法则来确定K值。画一条曲线,横轴是K值,纵轴是误差平方和。曲线拐弯的地方,就是合适的K。你想想看,这就像选衣服尺码——太小了不舒服,太大了不合身。

材料科学中的聚类应用:
  • 发现新的材料家族(比如新型高温合金)
  • 识别实验中的异常数据(可能是测量误差)
  • 对材料性能进行分级(比如强度等级)

4.2.2 降维:简化数据,保留关键信息

降维,就是把高维数据压缩到低维,同时尽量保留原始信息。为什么需要降维?因为材料数据往往特征很多——成分、工艺参数、微观结构特征,加起来几十上百维。直接分析,眼睛都看花了。

主成分分析(PCA)是我最常用的降维方法。它找到数据中方差最大的方向,把数据投影上去。说白了,就是找到最重要的几个“综合特征”。

# PCA降维示例
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# 假设 X 是1000种材料的50维特征
pca = PCA(n_components=2)  # 降到2维
X_reduced = pca.fit_transform(X)

# 看看前两个主成分解释了多大比例的信息
print(f"解释方差比例: {pca.explained_variance_ratio_}")
print(f"累计解释方差: {sum(pca.explained_variance_ratio_):.3f}")

# 可视化
plt.scatter(X_reduced[:, 0], X_reduced[:, 1])
plt.xlabel('第一主成分')
plt.ylabel('第二主成分')
plt.show()
注意: PCA假设数据是线性可分的。如果数据分布很复杂(比如流形结构),可以考虑t-SNE或UMAP。但t-SNE有个毛病——每次运行结果可能不一样,不适合做定量分析。

4.3 模型评估与交叉验证

模型建好了,怎么知道它好不好?不能只看训练集上的表现——那叫“自欺欺人”。我见过太多人,模型在训练集上得分99%,一上测试集就掉到60%。

4.3.1 评估指标

不同任务用不同指标。回归任务看均方误差(MSE)和R²分数。分类任务看准确率、精确率、召回率和F1分数。

我个人习惯,回归任务先看R²,它告诉你模型解释了多大比例的方差。R²接近1说明好,接近0说明模型还不如直接猜平均值。

任务类型 常用指标 说明
回归 MSE, RMSE, MAE, R² MSE对异常值敏感,MAE更稳健
分类 准确率, 精确率, 召回率, F1 数据不平衡时别只看准确率
聚类 轮廓系数, 戴维森堡丁指数 没有真实标签时的评估方法

4.3.2 交叉验证

交叉验证,就是把数据分成几份,轮流做训练和测试。最常用的是K折交叉验证(K=5或10)。

为什么要这么做?因为单次划分可能运气好或运气差。交叉验证能给你一个更稳定的性能估计。我曾经做过一个项目,单次划分测试集得分0.85,但5折交叉验证的平均分只有0.72——差距很大。

# 5折交叉验证示例
from sklearn.model_selection import cross_val_score

model = RandomForestRegressor(n_estimators=100)
scores = cross_val_score(model, X, y, cv=5, scoring='r2')

print(f"每折得分: {scores}")
print(f"平均得分: {scores.mean():.3f} ± {scores.std():.3f}")

4.4 过拟合与正则化

过拟合,就是模型把训练数据背下来了,但遇到新数据就懵了。你想想看,这就像学生只背了考试原题,题目一换就不会了。

怎么判断过拟合?训练集得分远高于测试集得分,就是典型信号。我见过最夸张的一次,训练集R²=0.99,测试集R²=0.12——模型基本废了。

4.4.1 防止过拟合的方法

  • 增加数据量: 最直接的方法,但材料实验数据往往很贵
  • 简化模型: 减少特征数量,降低模型复杂度
  • 正则化: 给损失函数加惩罚项,让模型参数不要太大
  • 早停法: 训练过程中监控验证集性能,一旦开始下降就停止
  • Dropout: 神经网络中随机丢弃一些神经元,防止共适应

4.4.2 正则化详解

正则化,说白了就是给模型“上枷锁”。L1正则化(Lasso)会让一些特征系数变成0,相当于自动做特征选择。L2正则化(Ridge)会让系数变小但不为0。

我建议,如果你特征很多但大部分没用,用L1正则化。如果所有特征都有用但需要控制模型复杂度,用L2正则化。当然,也可以两者结合——弹性网络(Elastic Net)。

# L2正则化(岭回归)示例
from sklearn.linear_model import Ridge

# alpha是正则化强度,越大惩罚越重
model = Ridge(alpha=1.0)
model.fit(X_train, y_train)

print(f"训练集R²: {model.score(X_train, y_train):.3f}")
print(f"测试集R²: {model.score(X_test, y_test):.3f}")
我的经验: 正则化参数alpha怎么选?用交叉验证!sklearn里有RidgeCV,自动帮你选最优alpha。别自己瞎调,容易过拟合验证集。

知识体系总览

下面这张图,把今天讲的内容串起来了。你可以把它当作一个快速参考——做项目时忘了哪个概念,回来瞄一眼就行。

机器学习在材料科学中的应用框架 机器学习 监督学习 无监督学习 模型评估与优化 回归 分类 聚类 降维 交叉验证 正则化 材料科学应用:性能预测 | 新材料发现 | 异常检测 | 工艺优化 图:机器学习方法在材料科学中的分类与应用框架 关键要点 ① 监督学习需要标签数据 ② 无监督学习发现数据内在结构 ③ 交叉验证防止偶然性 ④ 正则化是防止过拟合的利器

好了,这一章的内容就到这里。机器学习的基础概念,说白了就是这些——监督学习、无监督学习、模型评估、过拟合处理。你把这些搞明白了,后面讲材料设计的具体应用时,就不会觉得云里雾里。

记住,做材料科学中的机器学习项目,数据质量比模型复杂度更重要。我见过太多人花大量时间调模型参数,却忽略了数据本身的问题。先把数据搞清楚,模型自然就work了。

专注资料整理