✨ 欢迎关注Python机器学习AI ✨
本节介绍: 比PDP解释更可靠的ALE图解读单个与多个特征对模型预测的影响 。数据采用模拟数据,作者根据个人对机器学习的理解进行代码实现与图表输出,细节并不保证与原文一定相同,仅供参考。 详细数据和代码将在稍后上传至交流群,付费成员可在交流群中获取下载。需要的朋友可关注公众文末提供的购买方式。 购买前请咨询,避免不必要的问题。
✨ 方法介绍 ✨
ALE(Accumulated Local Effects)图是一种用于解释机器学习模型的工具,特别是用于查看模型预测的局部效应。它是一种模型解释方法,主要用于分析特征对预测结果的影响,尤其是在复杂模型(如随机森林、梯度提升树、神经网络等)中
ALE图的核心思想是,通过计算每个特征的局部效应,反映该特征值在不同值域中的变化对模型预测结果的影响。与传统的部分依赖图(PDP)相比,ALE图具有更好的局部性,它通过将数据切分成不同的区间(或者在特征的某个范围内做局部加权平均),避免了PDP中的一些假设和偏差,尤其是在特征分布不均匀时
它对特征的分布更为稳健,尤其是在特征分布不均时,比PDP更为可靠。可以更清楚地理解特征在模型中的局部影响。当前文献还是使用PDP、ICE较多可以参考文章——期刊配图:模型解释PDP可视化进阶置信区间+拟合曲线、从2D到3D:部分依赖图(PDP)如何揭示特征组合对模型预测的综合影响、PDP(部分依赖图)、ICE(个体条件期望)解释机器学习模型保姆级教程,但是并不是说就没有文献使用ALE,也存在文献进行使用可以参考文章——期刊配图:nature cities通过ALE(累积局部效应)解析特征对模型影响、期刊配图:ALE(累积局部效应)模型解释方法解决部分依赖图PDP多重共线性问题,前面进行ALE实现都是使用的比较老的库缺少维护难以安装或者就是自定义进行实现的代码量相对于来说就较大,接下来介绍的这个库是 基于 R 包 ALEPlot 实现的 ALE 图的 python 实现,可以直接一键运行,下面为Github链接
https://github.com/DanaJomar/PyALE?tab=readme-ov-file
✨ 代码实现 ✨
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'Times New Roman'
plt.rcParams['axes.unicode_minus'] = False
import warnings
# 忽略所有警告
warnings.filterwarnings("ignore")
path = r"2025-5-19公众号Python机器学习AI.xlsx"
df = pd.read_excel(path)
from sklearn.model_selection import train_test_split
# 划分特征和目标变量
X = df.drop(['log_price', 'UTM_X', 'UTM_Y'], axis=1)
y = df['log_price']
# 划分训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
from sklearn.ensemble import RandomForestRegressor
# 构建默认的随机森林回归模型
rf_model = RandomForestRegressor(random_state=42)
# 训练模型
rf_model.fit(X_train, y_train)
从一个Excel文件中读取数据,准备好特征和目标变量,划分训练集和测试集,并使用随机森林回归模型对训练集进行训练,主要是为ALE实现提供一个模型,当然读者在实际运用中不是这样的一个简单的默认参数模型
# 计算ALE(加法局部效应)值
ale_eff = ale(
X=X_test, # 输入数据集 X_test: 用于计算ALE的测试集数据
model=rf_model, # 模型 rf_model: 使用的随机森林回归模型
feature=["sqft_living"], # 特征 feature: 计算ALE的特征,这里是“sqft_living”
grid_size=50, # grid_size: 网格大小,表示在计算ALE时,特征值的离散化点数,这里为50
include_CI=False # include_CI: 是否包含置信区间,设为False表示不包括置信区间
)
计算了特征“sqft_living”(住宅面积)对随机森林回归模型预测结果的局部效应(ALE),并生成ALE图,在ALE图中,sqft_living(住宅面积)与预测的 log_price 之间的关系被展示出来,ALE图表示随着住宅面积的增加,模型预测的 log_price 也在增加,这表明住宅面积对房价的预测结果有正向影响。换句话说,较大的住宅面积会导致更高的预测房价(对数值),这里强调一下y轴的含义:
y轴的数值表示的是该特征在不同取值范围内对模型预测的贡献或影响。它是基于模型在不同特征值下的预测变化计算得出的,经过中心化处理(通常是减去预测的平均效应值),以便突出特征值变化对预测的相对影响,如果y轴的数值为正,表示该特征值的增加对预测结果产生正向影响,如果y轴的数值为负,表示该特征值的增加对预测结果产生负向影响,y轴显示的是 特征变化对预测值的具体影响大小和方向
import random
# 设置随机种子以确保可重复性
random.seed(123)
# 从 X_test 中随机选择 200 个样本
X_sample = X_test.loc[random.sample(X_test.index.to_list(), 400), :]
# 计算ALE(加法局部效应)值
ale_eff = ale(
X=X_sample, # 输入数据集 X_sample: 从 X_test 中随机选择的 200 个样本
model=rf_model, # 模型 rf_model: 使用的训练好的随机森林回归模型
feature=["sqft_living"], # 特征 feature: 计算ALE的特征
grid_size=50, # grid_size: 网格大小,表示特征值的离散化点数,这里为50
include_CI=True, # include_CI: 是否包含置信区间,设为True表示包括置信区间
C=0.95 # C: 置信水平,设为0.95表示计算95%的置信区间
)
这段代码相较于之前的代码,新增了从 X_test 中随机选择400个样本进行计算,并且在ALE图中包括了置信区间(置信水平为95%),如果数据集中的样本数少于400个,这会导致 random.sample() 函数报错,因为它无法从不足的样本中选择所需数量。因此,在运行此代码之前,确保 X_test 至少包含采样数量的样本。如果样本数不足,可以调整选择的样本数来避免报错,当然样本数量也会影响置信区间的计算
ale\_eff.head()
这里展示的是不同取值下的加法局部效应(ALE)值及其相应的置信区间具体的值
ale_eff = ale(X=X_test, model=rf_model,
feature=["sqft_lot", "sqft_living"], grid_size=100)
这里计算特征 "sqft_lot" 和 "sqft_living" 对模型预测结果的加法局部效应(ALE),使用了100个网格点进行离散化,结果是一个2D图,展示了这两个特征组合对预测值的影响。图中的颜色深浅代表了特征组合对预测结果的影响程度,通过颜色映射表示 对预测结果是正向影响还是 负向影响
上面强调的是对连续特征数据的解释,ALE作为一种模型解释方法,不仅适用于连续数据,还能有效解释离散数据和通过one-hot编码处理的类别特征
# 计算ALE(加法局部效应)值
ale_eff = ale(
X=X_test, # 输入数据集 用于计算ALE的特征数据
model=rf_model, # 模型 model: 用于计算ALE的已训练模型,通常是一个回归或分类模型
feature=["grade"] # 特征 feature: 计算ALE的特征,这里是“grade”,表示需要分析的特征
)
这里给一个简单的案例,计算了特征 "grade" 对模型预测结果的加法局部效应(ALE),并通过1D图展示了该特征在不同取值下对预测结果的影响。图中的曲线显示了"grade" 不同等级对预测效果的贡献,更多关于如何处理其他类型数据(如离散数据)的细节,感兴趣的读者可以参考ALE的官网
✨ 该文章案例 ✨
在上传至交流群的文件中,像往期文章一样,将对案例进行逐步分析,确保读者能够达到最佳的学习效果。内容都经过详细解读,帮助读者深入理解模型的实现过程和数据分析步骤,从而最大化学习成果。
同时,结合提供的免费AI聚合网站进行学习,能够让读者在理论与实践之间实现融会贯通,更加全面地掌握核心概念。
✨ 购买介绍 ✨
本节介绍到此结束,有需要学习数据分析和Python机器学习相关的朋友欢迎到淘宝店铺:Python机器学习AI,或添加作者微信deep_ML联系,购买作者的公众号合集。截至目前为止,合集已包含近300多篇文章,购买合集的同时,还将提供免费稳定的AI大模型使用,包括但不限于ChatGPT、Deepseek、Claude等。
更新的内容包含数据、代码、注释和参考资料。 作者仅分享案例项目,不提供额外的答疑服务。项目中将提供详细的代码注释和丰富的解读,帮助您理解每个步骤 。 购买前请咨询,避免不必要的问题。
✨ 群友反馈 ✨
✨ 淘宝店铺 ✨
请大家打开淘宝扫描上方的二维码,进入店铺,获取更多Python机器学习和AI相关的内容,或者添加作者微信deep_ML联系 避免淘宝客服漏掉信息 ,希望能为您的学习之路提供帮助!
往期推荐
机器学习在临床数据分析中的应用:从数据预处理到Web应用实现的完整流程教学
因果推断:利用EconML实现双重机器学习估计条件平均处理效应 (CATE)
期刊复现:基于XGBoost模型的网页工具SHAP力图解释单样本预测结果
期刊配图:nature cities通过ALE(累积局部效应)解析特征对模型影响
期刊复现:结合因果推断与SHAP可解释性的机器学习实现应用流程
nature communications:基于Light GBM与随机森林结合的多模型特征选择方法
如果你对类似于这样的文章感兴趣。
欢迎关注、点赞、转发~
个人观点,仅供参考