4. 特征工程(上):元素属性特征(电负性、原子半径、价电子数)的提取与组合

各位同学,咱们今天聊聊特征工程。说实话,在材料基因组学这个领域,我见过太多人一上来就扔模型,结果跑出来的结果惨不忍睹。为什么?因为特征没做好。你想想看,模型再厉害,喂进去的是垃圾,出来的只能是更精致的垃圾。

我个人习惯,做任何材料预测项目之前,至少花40%的时间在特征工程上。今天我们先讲最基础、也最核心的一类特征——元素属性特征。

4.1 为什么元素属性这么重要?

材料是由元素组成的。这个道理很简单,但很多人做特征时反而忽略了。我记得有一次,一个学生拿了一堆钙钛矿的数据来问我,说模型准确率死活上不去。我一看他的特征,全是结构参数,元素本身的属性一个都没用。我说你试试把电负性加进去,结果准确率直接提升了15%。

元素属性特征,说白了就是给每个元素贴标签。这些标签包括:

  • 电负性:元素吸引电子的能力
  • 原子半径:原子的大小
  • 价电子数:参与成键的电子数量
  • 还有电离能、电子亲和能、原子序数等等

这些属性直接决定了元素之间的相互作用方式。你想想看,一个电负性高的元素和一个电负性低的元素放在一起,会发生什么?电荷转移。这就会影响材料的带隙、导电性、催化活性等等。

4.2 电负性:最被低估的特征

电负性这个概念,Pauling在1932年就提出来了。但直到今天,它仍然是材料特征工程中最有用的特征之一。

我在做高熵合金项目时遇到过一个问题:预测合金的相稳定性。一开始用了很多复杂的特征,效果一般。后来我尝试把组成元素的电负性差异作为一个特征加进去,结果模型的R²从0.72提升到了0.89。

为什么会这样?因为电负性差异直接反映了电荷转移的倾向。电荷转移越强,形成的化学键越稳定,相稳定性就越高。

常用的电负性标度有几种:

标度名称 提出者 特点
Pauling标度 Linus Pauling 最常用,基于键能数据
Mulliken标度 Robert Mulliken 基于电离能和电子亲和能
Allen标度 Leland Allen 基于光谱数据,更精确

我个人建议,做特征工程时优先用Pauling标度,因为数据最全,几乎所有元素都有。如果精度要求高,可以试试Allen标度。

4.3 原子半径:大小决定一切

原子半径这个特征,很多人觉得太简单了,不就是个大小吗?其实不然。原子半径直接影响材料的很多性质:

  • 晶格常数:原子越大,晶格常数越大
  • 扩散系数:原子越小,扩散越快
  • 固溶度:原子半径差异越大,固溶度越低
  • 力学性能:原子半径差异会导致晶格畸变,影响强度

我曾经做过一个项目,预测镁合金的屈服强度。一开始用了很多特征,包括成分、热处理参数等,效果还行。但后来我尝试把原子半径差异作为一个特征,模型的预测误差从±30MPa降到了±15MPa。

这里要注意一个坑:原子半径有多种定义方式。有共价半径、金属半径、离子半径、范德华半径等等。不同定义下数值差异很大。我曾经因为用了离子半径去预测金属间化合物的性质,结果完全不对。后来才意识到,金属间化合物应该用金属半径。

避坑指南:选择原子半径时,一定要根据材料的键合类型来选。金属材料用金属半径,共价材料用共价半径,离子材料用离子半径。混用会导致灾难性后果。

4.4 价电子数:电子决定性能

价电子数,就是元素最外层参与成键的电子数量。这个特征在预测电子相关性质时特别有用,比如:

  • 导电性:价电子数越多,自由电子越多,导电性越好
  • 磁性:未成对价电子数决定磁矩大小
  • 催化活性:d轨道价电子数影响催化性能

我记得有一次做热电材料预测,需要预测Seebeck系数。试了很多特征都不行,后来我想到价电子数这个特征。为什么?因为Seebeck系数和载流子浓度直接相关,而载流子浓度又和价电子数相关。把这个特征加进去后,模型的预测能力提升了一大截。

价电子数的提取其实很简单,看元素周期表就行:

# 一个简单的价电子数提取函数
def get_valence_electrons(element):
    # 主族元素:价电子数 = 族数
    main_group = {
        'H':1, 'Li':1, 'Na':1, 'K':1, 'Rb':1, 'Cs':1,
        'Be':2, 'Mg':2, 'Ca':2, 'Sr':2, 'Ba':2,
        'B':3, 'Al':3, 'Ga':3, 'In':3, 'Tl':3,
        'C':4, 'Si':4, 'Ge':4, 'Sn':4, 'Pb':4,
        'N':5, 'P':5, 'As':5, 'Sb':5, 'Bi':5,
        'O':6, 'S':6, 'Se':6, 'Te':6, 'Po':6,
        'F':7, 'Cl':7, 'Br':7, 'I':7, 'At':7,
        'He':2, 'Ne':2, 'Ar':2, 'Kr':2, 'Xe':2
    }
    # 过渡金属:价电子数 = d电子数 + s电子数
    transition_metals = {
        'Sc':3, 'Ti':4, 'V':5, 'Cr':6, 'Mn':7,
        'Fe':8, 'Co':9, 'Ni':10, 'Cu':11, 'Zn':12
    }
    if element in main_group:
        return main_group[element]
    elif element in transition_metals:
        return transition_metals[element]
    else:
        return None
小技巧:对于过渡金属,价电子数的定义其实有争议。有些人认为只算d电子,有些人认为d+s都算。我个人习惯两种都试一下,看哪个效果更好。

4.5 特征组合:1+1 > 2

单个元素属性特征已经很有用了,但真正厉害的是把它们组合起来。我常用的组合方式有:

  1. 差值特征:两个元素的属性差值,比如电负性差、半径差
  2. 比值特征:两个元素的属性比值,比如半径比
  3. 统计特征:对于多元素材料,计算所有元素属性的均值、方差、最大值、最小值
  4. 加权平均:按原子分数加权平均各元素的属性

举个例子,对于ABO₃型钙钛矿材料,我们可以这样组合特征:

# 钙钛矿ABO₃的特征组合示例
def perovskite_features(A, B, O):
    # 单个元素属性
    en_A = get_electronegativity(A)
    en_B = get_electronegativity(B)
    en_O = get_electronegativity(O)
    
    # 差值特征
    en_diff_AO = abs(en_A - en_O)
    en_diff_BO = abs(en_B - en_O)
    en_diff_AB = abs(en_A - en_B)
    
    # 加权平均
    en_avg = (en_A + en_B + 3*en_O) / 5
    
    # 统计特征
    en_list = [en_A, en_B, en_O]
    en_var = np.var(en_list)
    en_max = max(en_list)
    en_min = min(en_list)
    
    return {
        'en_A': en_A,
        'en_B': en_B,
        'en_diff_AO': en_diff_AO,
        'en_diff_BO': en_diff_BO,
        'en_diff_AB': en_diff_AB,
        'en_avg': en_avg,
        'en_var': en_var,
        'en_max': en_max,
        'en_min': en_min
    }

你看,就电负性这一个属性,通过组合就能衍生出七八个特征。原子半径和价电子数同理。这样组合下来,特征空间一下子就丰富起来了。

4.6 知识体系总览

下面这张图总结了本章的核心逻辑,我画了个SVG方便你理解:

元素属性特征工程知识体系 电负性 原子半径 价电子数 Pauling/Mulliken/Allen标度 共价/金属/离子/范德华半径 主族=族数,过渡金属=d+s 特征组合策略 差值 | 比值 | 统计特征 | 加权平均 应用:相稳定性 | 带隙 | 导电性 | 催化活性 | 力学性能

从这张图可以看得很清楚:三个核心元素属性通过不同的提取方式得到原始特征,再经过组合策略衍生出大量新特征,最终应用到各种材料性能预测中。

4.7 实战建议

最后,我给大家几个实战中的建议:

核心原则:特征不是越多越好,而是越有物理意义越好。每个特征加入前,先问自己:这个特征和我要预测的性质之间有没有物理关联?

嗯,这里要注意一点:不要盲目堆特征。我见过有人把几十个元素属性全部加进去,结果模型过拟合得一塌糊涂。我的经验是,先根据物理直觉选3-5个核心属性,然后做组合,最后用特征选择方法筛选。

另外,不同材料体系适合的特征不一样。做氧化物时,电负性和离子半径特别重要。做金属时,价电子数和金属半径更关键。做二维材料时,可能还要考虑范德华半径。这个需要你在实践中慢慢积累经验。

好了,今天的内容就到这里。元素属性特征是特征工程的基础,但也是最容易被忽视的。下一节我们会继续讲结构特征和工艺特征的提取,到时候你会看到,这些特征和元素属性特征结合起来,效果会更好。


专注资料整理