基于混合模型与EM算法的无敏感属性公平机器学习实践
1. 项目概述与核心挑战
在构建机器学习模型时,我们常常面临一个两难境地:如何在不牺牲预测准确性的前提下,确保模型的决策是公平的?这个问题在信贷审批、招聘筛选、司法风险评估等直接影响个人福祉的高风险领域尤为尖锐。传统的公平性干预,如直接删除“性别”或“种族”这类敏感属性,往往治标不治本。因为其他看似中立的特征,如“居住地邮编”、“购物习惯”或“职业经历”,很可能与敏感属性高度相关,成为“代理变量”,让歧视以更隐蔽的方式卷土重来。
我最近深入实践了一个项目,核心就是应对这个挑战:在无法直接获取或使用敏感属性标签的情况下,如何从数据中识别并剥离与敏感属性相关的信息,从而构建一个既准确又公平的预测模型。这听起来有点像“无米之炊”,但我们的“米”就藏在数据的分布模式里。我们采用的核心工具是混合模型,特别是高斯混合模型和分类混合模型,配合期望最大化算法来“盲猜”出每个样本可能属于的敏感群体。
这个项目的核心洞见,也是所有从业者必须理解的准确性-公平性权衡:当你试图从数据中彻底抹去与敏感属性相关的信号时,你很可能也在丢弃一部分对预测目标至关重要的信息。这就好比为了确保收音机不收到任何杂音,你把信号强度也调到了最低。我们的工作,就是通过严谨的数学建模和大量的实验,量化这个权衡,并找到在具体业务约束下的最优操作点。
2. 核心思路:从数据分布中“盲解”敏感属性
2.1 为什么混合模型是合适的工具?
当敏感属性A(例如,种族、性别)未知时,我们观察到的特征X的分布,实际上是由不同敏感群体对应的子分布混合而成的。举个例子,在收入预测中,“工作经验”和“教育程度”这两个特征的联合分布,在男性和女性群体中可能存在系统性差异(例如,均值不同、方差不同)。这种差异不是随机的噪音,而是反映了潜在的社会结构性因素。
混合模型正是为描述此类数据而生。它假设观测数据来自K个不同的子总体(即“混合成分”),每个成分对应一个潜在的敏感群体类别。我们的目标是通过观测到的特征X,反向推断出每个样本属于各个潜在群体的后验概率。
高斯混合模型 适用于连续型特征。假设我们有d个连续特征,对于属于第k个敏感群体的个体,其特征向量服从一个多元高斯分布:X | A=k ~ N(μ_k, Σ_k)。这里,μ_k是第k个群体的特征均值向量,Σ_k是协方差矩阵。整个数据集的分布就是这些高斯分布的加权和:P(X) = Σ_{k=1}^K π_k * N(X | μ_k, Σ_k),其中π_k是群体k的先验概率。
分类混合模型 则适用于离散型特征。假设我们有D个分类特征,每个特征有M_d个类别。对于第k个群体,第d个特征取第m个类别的概率为θ_{k,d,m}。那么,一个样本的特征向量X的似然就是各特征类别概率的乘积(在给定群体下条件独立):P(X | A=k) = Π_{d=1}^D Π_{m=1}^{M_d} (θ_{k,d,m})^{I{X_d=m}}。
关键理解:混合模型的有效性依赖于一个核心假设——不同敏感群体在特征空间中的分布是可分离的。这种分离度(在公式中常体现为均值
μ的差异或概率θ的差异)越大,我们事后从X中推断A的准确性就越高。反之,如果不同群体的特征分布完全重叠,那么从数据中就不可能识别出任何群体信息,公平性问题也就不存在了(因为模型无法利用群体信息进行区分)。现实中的挑战通常处于这两者之间。
2.2 期望最大化算法:如何执行“盲解”?
知道了模型形式,接下来就是参数估计。由于敏感属性A是隐变量,我们无法直接使用最大似然估计。这时,期望最大化算法 就成了不二之选。EM算法通过迭代的“猜”和“改”两个步骤,逐步逼近最优参数。
E步:软分配
给定当前模型参数(混合权重π_k,高斯分布的μ_k, Σ_k或分类分布的θ_{k,d,m}),计算每个样本i属于每个群体k的后验责任γ_{ik}:
γ_{ik} = P(A_i=k | X_i) = [π_k * P(X_i | A_i=k)] / [Σ_{j=1}^K π_j * P(X_i | A_j=j)]
这个γ_{ik}是一个概率值,表示样本i“软归属”于群体k的程度。它构成了我们估计的敏感属性矩阵Â。
M步:参数更新
利用E步计算出的“软标签”γ_{ik}作为权重,重新估计模型参数,使得当前模型下数据的期望似然最大。
- 对于GMM:更新
π_k为所有样本γ_{ik}的平均值;更新μ_k为以γ_{ik}为权重的特征均值;更新Σ_k为以γ_{ik}为权重的协方差。 - 对于分类混合模型:更新
θ_{k,d,m}为,在属于群体k的样本中(按γ_{ik}加权),特征d取值为m的比例。
EM算法会持续迭代E步和M步,直到参数变化小于某个阈值或似然函数收敛。最终,我们不仅得到了模型参数,更重要的是得到了每个样本的敏感属性后验概率γ_{ik},即我们需要的Â。
实操心得:EM算法对初始值敏感。糟糕的初始化可能导致收敛到局部最优,得到毫无意义的群体划分。在实践中,我通常会采用多次随机初始化并选择似然最高的结果,或者使用K-means聚类的结果作为GMM的初始中心。对于分类数据,则可以随机初始化概率向量。
3. 公平性干预:从估计到矫正
拿到估计的敏感属性Â后,我们的目标不是用它来做预测,而是消除它对预测模型的影响。这里我们采用一种经典的预处理方法:残差化。
3.1 残差化操作详解
假设我们的预测特征集包含两部分:与敏感属性可能相关的特征X_a(例如,职业、消费记录),以及其他特征X_z(例如,信用历史长度、账户余额)。我们的预测目标是Y(例如,是否违约)。
- 构造设计矩阵:将估计出的敏感属性
Â(一个n×K的矩阵,每行是样本i属于K个群体的概率向量)作为回归自变量之一。 - 回归与求残差:将
X_a(可能还包括X_z,取决于设计)对Â进行线性回归(对于连续特征)或逻辑回归(对于二元特征)。然后,计算回归的残差U = X_a - X_a_hat。这里的U可以理解为X_a中无法被估计的敏感属性Â所解释的部分。 - 构建公平预测模型:使用残差
U(而非原始的X_a)和X_z一起作为特征,去训练最终预测Y的模型(如逻辑回归、梯度提升树等)。
数学原理:这个过程在理论上等同于从X_a中投影掉了在Â张成的空间上的分量。如果Â是对真实A的良好估计,那么U就近似与A独立。用U进行预测,模型就无法利用X_a中与A相关的信息来进行可能带有偏见的决策。
3.2 准确性-公平性权衡的数学刻画
这是整个项目的理论核心。我们可以用决定系数R^2来量化这个权衡。
R^2_x:使用原始特征(X_a, X_z)预测Y时模型所解释的方差比例。R^2_a:使用残差化后的特征(U, X_z)预测Y时模型所解释的方差比例。
理论推导(基于线性模型和GMM假设)给出了一个清晰的结论:
R^2_a = R^2_x - [β_a^T * μ^T * Σ_A * μ * β_a] / Var(Y)
其中,β_a是X_a在真实模型中的系数,μ是群体间特征均值差异,Σ_A是敏感属性的协方差矩阵。
这个公式揭示了权衡的本质:
- 组间分离度 (
μ):μ越大,不同群体的特征差异越明显,X_a携带的关于A的信息就越强。此时,原始模型R^2_x会很高,因为模型可以“利用”这种群体差异来提升预测精度。 - 公平性干预的代价:然而,
μ越大,上述公式中减去的项也越大。这意味着,当我们通过残差化移除X_a中与A相关的部分后,性能损失(R^2_x - R^2_a)也越严重。模型从群体差异中获得的“收益”有多大,在追求公平时需要付出的“代价”就有多大。 - 极限情况:当
μ → ∞(群体特征完全分离),R^2_x → 1(原始模型近乎完美),但R^2_a → 0(公平模型几乎失去所有预测能力)。当μ → 0(群体特征无差异),R^2_x ≈ R^2_a,公平性干预几乎不造成精度损失。
4. 仿真实验:在受控环境中验证理论
为了直观理解上述理论,并测试方法的稳健性,我们设计了一系列仿真实验。
4.1 敏感属性估计精度
实验1:高斯混合模型
我们生成一个三组分(K=3)的GMM数据,设定最小组分中心间距μ_min。理论分析给出了在指定错误率水平α下所需的最小分离度μ*_min。实验结果与理论高度吻合:当实际μ_min超过μ*_min时,基于EM算法的分类器错误率确实降到了α以下。这证实了,只要群体间特征差异足够大,我们就能以高概率从数据中准确还原出潜在的群体结构。
实验2:分类混合模型 我们生成了包含3个二元分类特征的数据,研究两个因素对估计精度的影响:
- 群体先验概率
p的影响:当两个群体的特征分布不可区分时,分类器精度随|p-0.5|线性变化,本质上是退化为猜测先验概率。当特征分布可区分时,精度在p=0.5时最低,并向p→0或p→1时趋近于1。 - 组分分离度的影响:固定
p=0.5,逐渐增大两个群体在某个特征上的概率差|θ_{2,1} - θ_{1,1}|。结果如预期所示,估计精度随分离度的增加而单调上升。
避坑指南:这个实验提醒我们,样本的群体比例(
p)会显著影响估计难度。在现实数据中,如果某个群体样本极少(p很小),即使其特征分布有差异,也可能难以准确估计。此时需要考虑过采样、代价敏感学习或贝叶斯先验等方法进行修正。
4.2 公平性调整后的预测效能
实验3:调整后R²的衰减
我们构造一个简单的线性模型:Y = X_a + X_z + ε,其中X_a = μA + e,X_z为噪声。通过改变μ来模拟不同的群体分离度。然后分别计算使用原始X_a和残差化后U的R^2。结果清晰显示,随着μ增大,原始模型的R^2_x上升,而公平调整后的R^2_a下降,且下降的极限值与理论预测值完美吻合。这直观展示了公平性干预带来的预测效能损失。
4.3 结合变量选择的回归与分类
实验4 & 5:高斯混合下的回归与分类
在更复杂的设定中,我们生成了多个与敏感属性A相关的混合特征Z1...Z4,以及大量无关特征。响应变量Y只与其中部分特征相关。我们对比了两种策略:
- 正确模型:使用与Y真正相关的特征。
- SEMMS变量选择模型:使用一种公平性感知的变量选择方法。
我们研究了不同群体分离度(μ)和公平性惩罚强度(λ)下,模型误差与公平性指标(如平均距离MD)的变化。
- 结果趋势:增大公平性惩罚
λ,在所有设置下都会导致预测错误率上升,同时降低组间性能差异(MD下降),印证了权衡的存在。 - 变量选择的影响:变量选择策略的效果好坏参半。当
μ较大时,与A强相关但不与Y直接相关的特征(如Z3)可能因均值突出而被错误选中,这反而会损害模型性能。这说明,在公平性约束下,单纯的统计显著性或预测强度不足以指导变量选择,必须考虑特征与敏感属性的关联。
实验6:分类混合下的逻辑回归 我们在分类数据上应用了带公平性惩罚的逻辑回归。设置了两种系数模式:
- 模式一:最大的系数分配给与A最相关的特征
X1。 - 模式二:最大的系数分配给与A最不相关的特征
X3。
实验发现,在模式一下,施加公平性惩罚会导致错误率急剧上升,因为模型被迫削弱了最主要的预测信号。而在模式二下,同样的惩罚对准确性的影响要小得多,因为主要预测信号本身与敏感属性关联弱。这给了我们一个至关重要的工程启示:在特征工程阶段,应尽可能寻找或构造那些与预测目标强相关、但与敏感属性弱相关的特征。这是缓解准确性-公平性权衡的最有效手段之一。
5. 真实数据应用与效果评估
理论仿真之后,我们最终要在真实数据上检验方法的有效性。我们选择了三个经典的数据集:Adult(收入预测)、COMPAS(再犯风险评估)和ARRHYTHMIA(心律失常诊断)。
5.1 数据集与实验设置
- Adult:目标预测收入是否>50K,敏感属性为性别。我们选择年龄、关系状态、婚姻状态作为估计敏感属性的相关变量,拟合一个高斯-分类混合模型。
- COMPAS:目标预测再犯风险,敏感属性为种族(处理为非洲裔与非非洲裔)。为确保模型可识别性,我们仅使用十进制分数、年龄、犯罪率和性别作为相关变量。
- ARRHYTHMIA:目标预测心律失常,敏感属性为性别。这是一个高维数据集,我们首先使用SEMMS进行变量选择,然后在选出的6个QRS持续时间相关特征上拟合高斯混合模型。
对于每个数据集,我们将数据按7:3划分为训练集和测试集。使用Adam优化器训练带公平性惩罚的逻辑回归模型。我们与多个基线方法对比,包括:无约束的原始模型、使用真实敏感属性进行约束的Oracle模型、对抗性重加权学习、基于合成过采样的公平分类平衡、相关特征移除法以及FairRF方法。
5.2 评估指标
我们从准确性和公平性两个维度进行评估:
- 准确性:分类准确率。
- 公平性:
- ∆EO:均衡几率差距。计算不同群体间真正例率和假正例率的最大绝对差值。理想值为0。
- ∆DP/MD:人口统计均等差距/平均距离。我们主要报告平均距离,作为组间性能差异的代理指标。理想值为0。
5.3 实验结果分析
敏感属性估计质量:我们的EM方法在Adult数据集上达到了0.70的AUC,与最先进的公平性方法(如FairWS)结果(0.76-0.77)具有可比性。在更复杂的COMPAS和ARRHYTHMIA数据集上,AUC分别为0.62和0.57。这表明,即使在真实、嘈杂的数据中,混合模型也能对潜在的敏感群体结构进行有意义的估计。
预测性能与公平性:
- Adult数据集:通过选择合适的正则化参数
λ=0.3,我们的方法将公平性差距(∆DP/MD)降低到了约0.058,相比原始模型(0.089)改善了约35%,而准确率仅从0.856下降到0.837,损失约1%。在∆EO指标上也达到了与最优基线方法相当的水平。 - COMPAS数据集:我们的方法取得了所有对比方法中最公平的结果(MD最低),同时准确率(0.678)与最佳基线(0.681)相比仅有轻微下降。考虑到该数据集的复杂性和噪声,0.68左右的准确率已是各方法的上限,我们的方法在几乎不损失精度的情况下显著提升了公平性。
- ARRHYTHMIA数据集:同样观察到了明确的权衡曲线:随着
λ增大,MD下降,准确率也逐步降低。
权衡曲线可视化:我们绘制了准确率和平均距离MD随公平性惩罚λ变化的曲线。在所有数据集上,曲线都呈现出经典的“权衡”形状:追求更高的公平性(更低的MD),必然伴随一定程度的准确性损失。我们的方法的价值在于,它提供了一条平滑、可控的路径,让模型开发者可以根据具体应用场景的容忍度,在这条曲线上选择合适的操作点。
6. 常见问题与实战排查技巧
在实际部署这套方法时,你肯定会遇到各种问题。以下是我从多次实践中总结出的核心排查清单:
问题1:EM算法不收敛或收敛到很差的局部最优解。
- 可能原因:初始化太差;数据中存在异常值;混合组分数K设置错误。
- 解决步骤:
- 多次随机初始化:运行EM算法多次(如50-100次),从不同的随机参数开始,选择似然函数值最高的那次结果。
- 使用K-means初始化:对于GMM,先用K-means聚类得到簇中心和样本标签,用这些结果来初始化
μ_k、Σ_k和π_k,通常比完全随机初始化更稳定。 - 检查K值:使用赤池信息准则或贝叶斯信息准则等模型选择标准,或通过轮廓系数等聚类评估指标,来辅助确定合适的混合组分数K。在公平性场景中,K通常对应敏感属性的类别数(如性别为2,种族可能更多)。
- 数据预处理:检查并处理异常值。对于连续特征,考虑标准化或归一化,特别是当不同特征量纲差异巨大时。
问题2:估计出的敏感属性Â与真实情况偏差很大,导致后续公平性调整无效甚至有害。
- 可能原因:特征选择不当,用于估计
Â的特征本身与真实敏感属性A关联很弱;或者不同群体的特征分布重叠严重(分离度μ太小)。 - 解决步骤:
- 特征相关性分析:在可能的情况下,利用一个小的、带有真实A标签的验证集,计算候选特征与A之间的统计关联(如点双列相关系数、卡方检验等),选择关联性强的特征用于混合模型。
- 分离度诊断:观察拟合后的混合模型参数。对于GMM,检查各组分均值
μ_k之间的距离是否显著;对于分类混合,检查不同组分的概率向量θ_{k,d}是否差异明显。如果差异很小,则意味着从数据中推断A本身就很困难,此时应谨慎依赖Â,或考虑其他不需要显式估计A的公平性方法(如对抗性去偏)。 - 后验概率的熵:检查样本的后验概率向量
γ_i。如果很多样本的γ_i接近均匀分布(即熵很高),说明模型对其群体归属非常不确定,这提示估计不可靠。
问题3:应用公平性调整后,模型性能下降远超预期。
- 可能原因:预测目标Y与敏感属性A之间存在过强的、无法被观测特征解释的关联;或者用于残差化的特征
X_a中包含了大量对预测Y至关重要的、且与A无关的信息,被错误地移除了。 - 解决步骤:
- 量化权衡:绘制类似我们实验中“准确率-MD”的权衡曲线。如果曲线在初始阶段(
λ很小时)MD下降很快而准确率暴跌,说明准确性-公平性权衡非常尖锐。这可能是一个根本性的数据问题,需要与业务方重新讨论公平性约束的合理性。 - 精细化特征分组:仔细审查
X_a(与A相关的特征)和X_z(其他特征)的划分。确保X_a中的特征确实是理论上或经验上与A相关的。将与A无关但对Y重要的特征坚决留在X_z中。 - 尝试部分调整:不一定对所有
X_a特征进行残差化。可以计算每个特征与估计Â的偏相关系数,只对那些相关性超过某个阈值的特征进行残差化处理。
- 量化权衡:绘制类似我们实验中“准确率-MD”的权衡曲线。如果曲线在初始阶段(
问题4:在高维数据(如ARRHYTHMIA)上运行缓慢或内存不足。
- 可能原因:GMM的协方差矩阵参数随特征维度d呈平方级增长;EM算法迭代次数多。
- 解决步骤:
- 变量选择先行:像我们做的那样,先使用SEMMS或其他特征选择方法(如基于L1正则化的方法)大幅降低特征维度。
- 约束协方差矩阵:采用对角协方差矩阵(假设特征间条件独立)甚至球状协方差矩阵(所有特征方差相同)。这能极大减少参数数量,加速计算,并在高维下往往效果更好,避免过拟合。
- 使用增量EM或在线EM:对于超大规模数据,可以考虑能分批处理数据的EM变种算法。
问题5:如何处理同时包含连续型和分类型特征的混合数据?
- 解决方案:采用混合类型混合模型。正如我们在Adult数据集实验中所做,假设连续特征部分服从高斯分布,分类特征部分服从分类分布,且在给定敏感群体下所有特征条件独立。这样,整个数据集的似然就是高斯密度和分类概率的乘积。E步中计算后验概率时需同时考虑两部分;M步中则分别用对应类型的更新公式来更新高斯参数和分类概率参数。现有的统计软件包(如R的
mclust, Python的sklearn.mixture的BayesianGaussianMixture结合自定义分类似然)可以辅助实现,但自定义实现能提供更大的灵活性。
最后,我想强调的是,机器学习公平性不是一个纯粹的算法问题,而是一个贯穿业务理解、数据评估、算法设计、结果验证和持续监控的系统工程。本文介绍的基于混合模型的去偏方法,为我们提供了一套强大的、可解释的技术工具。但它并非银弹。在启动任何公平性项目前,最关键的步骤是与法律、伦理和业务专家坐在一起,明确“公平”在具体上下文中的定义(是机会均等、人口均等还是其他),并确定可接受的性能损失边界。只有这样,技术上的权衡曲线才能真正指导我们做出负责任的、有价值的决策。