第四章:材料特征工程与描述符

做材料发现这些年,我越来越觉得:特征工程比模型本身更重要。你想想看,模型再牛,喂进去的是垃圾,出来的还是垃圾。这就像做菜——食材不好,厨神也救不了。

这一章,我们就聊聊怎么把材料的“基因”提取出来,变成计算机能理解的语言。

4.1 元素属性特征:材料的“身份证”

每个元素都有自己的脾气。比如电负性、原子半径、电离能、价电子数……这些基础属性,就是材料的“身份证号”。

我个人习惯,先把元素周期表上的常见属性整理成一个表:

属性 含义 典型用途
电负性 原子吸引电子的能力 判断键的极性、反应活性
原子半径 原子的大小 预测晶格常数、掺杂难易
电离能 失去电子的难易 判断金属性、催化活性
价电子数 参与成键的电子数 预测化合价、配位方式

但光有单个元素属性还不够。做合金或化合物时,我们得算组合属性。比如A-B二元体系,我常用:

  • 电负性差:Δχ = |χ_A - χ_B|,越大越容易形成离子键
  • 原子半径比:r_A / r_B,影响固溶度
  • 价电子浓度:VEC = (V_A + V_B) / 2,预测相稳定性

避坑指南:我曾经在预测高熵合金的相结构时,只用了电负性差,结果模型一塌糊涂。后来发现,必须同时考虑原子尺寸差和混合焓,三个特征缺一不可。

4.2 结构特征:RDF 与 ADF

元素属性是“静态”的,但材料性能往往取决于“动态”的结构。这里就要请出两个老朋友:径向分布函数(RDF)角分布函数(ADF)

4.2.1 径向分布函数(RDF)

RDF说白了就是:以某个原子为中心,其他原子在距离r处出现的概率。它能告诉我们材料的短程有序和长程有序。

举个例子,我做过一个非晶合金的项目。晶态和非晶的RDF长啥样?

  • 晶态:尖锐的峰,长程有序,峰位对应晶面间距
  • 非晶:宽化的峰,短程有序,长程无序

代码实现其实不复杂,用Python的pymatgen库就能算:

from pymatgen.analysis.diffraction.xrd import XRDCalculator
from pymatgen.core import Structure

# 加载结构
struct = Structure.from_file("POSCAR")
# 计算RDF(这里用XRD模拟,实际RDF用MD或DFT输出)
calculator = XRDCalculator()
pattern = calculator.get_pattern(struct)

# 提取峰位和强度
for peak in pattern.x:
    print(f"2θ = {peak:.2f}°, d = {pattern.d_hkls:.3f} Å")

我的经验:RDF的截断半径很关键。太短会丢失长程信息,太长又引入噪声。我一般取10-15 Å,具体看体系大小。

4.2.2 角分布函数(ADF)

ADF关注的是键角分布。比如水分子H-O-H的键角是104.5°,如果算出来偏离太多,说明结构有问题。

ADF在描述配位几何时特别有用。比如:

  • 四面体配位:键角约109.5°
  • 八面体配位:键角90°和180°
  • 三角平面:键角120°

我曾在做MOF材料时,用ADF判断孔道结构的扭曲程度。嗯,这个方法比肉眼盯着看靠谱多了。

4.3 组合特征:1+1 > 2

单个特征往往不够用。把多个特征组合起来,常常能发现意想不到的规律。

我常用的组合方式有:

  1. 加法组合:比如电负性 + 原子半径,形成“离子势”
  2. 乘法组合:比如电负性 × 价电子数,描述成键强度
  3. 比值组合:比如半径比、电负性比,无量纲化后更稳定
  4. 多项式组合:比如 (电负性差)^2,捕捉非线性关系

举个例子:预测钙钛矿的容忍因子t时,公式是 t = (r_A + r_O) / √2(r_B + r_O)。这就是一个典型的组合特征——把A位、B位和氧的半径组合在一起,直接决定了结构的稳定性。

4.4 领域知识嵌入:让模型“懂”物理

纯数据驱动的方法有个问题:它不知道物理规律。比如它可能预测出“负的弹性模量”,这在物理上是不可能的。

所以,我建议把领域知识嵌入到特征中。怎么做?

  • 物理约束:比如能量必须为正,力必须平衡
  • 对称性约束:比如晶体学对称操作,特征必须保持不变
  • 热力学约束:比如吉布斯自由能最小化

我做过一个项目,预测催化剂的吸附能。纯数据模型误差很大,后来我把d带中心(一个物理量)作为特征嵌入,误差直接降了一半。

注意:领域知识嵌入不是越多越好。加太多约束,模型会变得僵化,失去泛化能力。我的原则是:只加那些经过实验验证的、普适的物理规律。

4.5 本章知识体系

下面这张图,是我梳理的本章核心逻辑。你可以把它当作一个“特征工程路线图”:

材料特征工程与描述符:知识体系 材料特征工程 元素属性特征 结构特征 组合特征 领域知识嵌入 电负性、半径 电离能、价电子 RDF(径向分布) ADF(角分布) 加法/乘法组合 比值/多项式组合 物理约束 对称性/热力学约束 目标:将材料“基因”转化为机器可学习的特征向量

这张图把四个核心模块串起来了。从左到右,从基础到高级。我个人建议,做特征工程时,先走一遍这个流程:元素属性 → 结构特征 → 组合特征 → 领域知识嵌入。每一步都问自己:这个特征真的有用吗?

最后一个小技巧:特征不是越多越好。我见过有人堆了200个特征,结果模型过拟合得一塌糊涂。记住奥卡姆剃刀——如无必要,勿增实体。先选10-20个关键特征,跑通了再加。


公众号:蓝海资料掘金营,微信deep3321