机器学习模型可解释性实战-预测世界杯当场最佳

本文使用FIFA 2018世界杯数据,通过构建随机森林和决策树模型,探讨了Permutation Importance、Partial Dependency Plot、Sharpley Value和LIME等机器学习模型可解释性工具,以理解哪些因素影响球队获得最佳球员。进球数被确定为最重要的特征,而跑动距离过多可能降低获奖概率。LIME和Sharpley Value提供了对单个实例的深入解释,揭示模型决策背后的细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

笔者在之前的一篇博客《谈谈机器学习模型的可解释性》介绍了机器学习可解释性的基本概念,那么今天我们就来看看如何具体的利用这些可解释的工具来对一个真实的模型进行可解释性的分析。

本文所有代码参见https://github.com/gangtao/ml-Interpretability

构建模型

首先我们获得了FIFA 2018年俄罗斯世界杯比赛的所有数据,我们利用这些数据来构建机器学习的模型。

import numpy as np
import pandas as pd
import warnings
warnings.filterwarnings('ignore')

data = pd.read_csv('./FIFA 2018 Statistics.csv')
data.head()

20401fd5ccfc5829bc4f3f70d679e883a10.jpg

该数据集记录了俄罗斯世界杯每一场比赛的数据,包含日期,本队,对手,得分,控球,射门,射中,射偏等等统计数据,其中有一个字段‘Man of the Match’是本队是否获得了当场比赛的最佳球员。我们利用这些数据来构建一个预测模型,利用所有的数据来预测本队是否获得了赛后评比的当场最佳球员。

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import DecisionTreeClassifier

y = (data['Man of the Match'])  
feature_names = [i for i in data.columns if data[i].dtype in [np.int64]]
X = data[feature_names]
train_X, val_X, train_y, val_y = train_test_split(X, y, random_state=1)
my_model_1 = RandomForestClassifier(random_state=0).fit(train_X, train_y)
my_model_2 = DecisionTreeClassifier(random_state=0).fit(train_X, train_y)

我们利用随机森林和决策树算法训练了两个分类模型,用于预测是否本队获得了最佳球员。

对于决策树模型,我们可以利用graphviz可视化该模型。

from sklearn import tree
import graphviz

tree_graph = tree.export_graphviz(my_model_2, out_file=None, feature_names=feature_names)
graphviz.Source(tree_graph)

2475a3e8a1ad9d3bf62efb574866227c789.jpg

Permutation Importance

对于一个模型的解释,我们可以从特征开始,首先分析那些特征是最重要的,对越策的结果影响最大。在之前我们看到的决策树模型中,我们看到SKlearn计算了一个我们称之为基尼指数(gini)或者信息熵的值,用于反应特征的重要性。另外我们也可以从特征在树中的的层级来推断出特征的重要性,一般来说,出现在里根结点越近的层级,表示该特征越重要。在我们之前的决策树模型中,得分位于根结点,显然这个特征是影响是否获得当场最佳球员的重要特征。

对于利用基尼指数来计算特征重要性的方法不具有通用性,我们需要一个与模型无关的方法来计算。

Permutation Importance提供了一个和模型无关的计算特征重要性的方法。Permutation的中文含义是排列的意思,该算法基本思路如下:

  • 选择一个特征
  • 在数据集上对该特征的所有值进行随机排列<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值