【机器学习】哪些模型可以解释?

article/2025/9/18 5:35:35

3be9c08ef398ed8c475e3166dac56656.png

模型解释是有监督机器学习中的一项重要任务。解释模型对于理解支配数据的动态至关重要。让我们看看一些易于解释的模型。

为什么我们需要解释我们的模型?

数据科学家的角色是从原始数据中提取信息。他们不是工程师,也不是软件开发人员。他们挖掘内部数据,从矿井中提取黄金。

了解模型的作用和工作原理是这项工作的一部分。黑箱模型虽然有时比其他模型工作得更好,但如果我们需要从数据中学习一些东西,那就不是一个好主意。相反,一些模型,就其本质而言,很好地解释了它们如何将数据转换为信息,始终受到青睐和深入研究。

机器学习模型是一种将信息翻译成合适且可理解的语言的方法,即数学。如果我们能把一些东西转化为数学,我们就能从中学到更多,因为我们可以掌握我们所需要的数学。因此,模型不仅仅是我们可以用来预测客户是否会买东西的算法。这是一种理解“为什么”一个拥有特定个人资料的客户可能会购买某些东西,而另一个拥有不同个人资料的用户则不会购买任何东西的方法。

因此,模型解释对于为我们正在寻找的信息提供正确的形状至关重要。

通过特征重要性进行解释

解释模型如何“思考”我们的数据以提取信息的一种可能方式是查看特征的重要性。重要性通常为正数。该数字越高,模型对该特定特征的重要性就越高。

在本文中,我将展示一些模型,这些模型使用Python和scikit-learn库为我们提供了自己的特征重要性解释。让我们永远记住,不同的模型对特征的重要性不同。这是完全正常的,因为每一个模型如何看待信息的方式不一样。我们从来没有完整的视图,因此特征的重要性在很大程度上取决于我们选择的模型。

让我们首先导入一些库和scikit-learn的“葡萄酒”数据集。

import numpy as np from sklearn.datasets import load_wine,load_diabetes from sklearn.tree import DecisionTreeClassifier 
from sklearn.ensemble import RandomForestClassifier,GradientBoostingClassifier from sklearn.linear_model import * 
from sklearn.svm import LinearSVC,LinearSVR import xgboost as xgb 
import matplotlib.pyplot as plt from sklearn.pipeline import make_pipeline 
from sklearn.preprocessing import StandardScaler

现在让我们加载数据集并存储特征的名称。

X,y = load_wine(return_X_y=True) features = load_wine()['feature_names']

现在,我们准备计算不同类型模型的特征重要性。

决策树

基于树的模型根据其在整个树上提供的叶子纯度的总体改善来计算特征的重要性。如果一个特征能够正确地分割数据集并提高特征的纯度,那么这是非常重要的。为了简单起见,基于树的模型中的重要性得分被归一化,使其总和为1。

在scikit-learn中,每个基于决策树的模型都有一个名为feature_importances_的属性,其中包含了特征的重要性。它可以在拟合我们的模型后访问。

让我们看看一个简单的决策树模型会发生什么。

tree = DecisionTreeClassifier() tree.fit(X,y) plt.barh(features,tree.feature_importances_)
1ecf768354e5ec7173c8864f77160108.png

正如我们所看到的,一些特征的重要性等于0。

基于树的一个非常重要的模型是随机森林,它对特征的重要性非常有用。一般来说,集成模型对每个弱学习者给出的每个特征的重要性得分进行平均,然后像决策树一样对最终得分进行归一化。

下面是如何计算随机森林模型的特征重要性。

rf = RandomForestClassifier() rf.fit(X,y) plt.barh(features,rf.feature_importances_)
93ec840a2ac2d1d9509b321e66235841.png

例如,由随机森林给出的特征重要性可用于执行特征选择。

即使是梯度增强决策树模型也可以给我们自己的特征重要性解释。

gb = GradientBoostingClassifier() gb.fit(X,y) plt.barh(features,gb.feature_importances_)
959f655745a8097cc591a16b308595be.png

即使对于XGBoost也是如此。

xgboost = xgb.XGBClassifier() xgboost.fit(X,y) plt.barh(features,xgboost.feature_importances_)
31d7e339b946008890fa430ecda53974.png

线性模型

线性模型也能给我们特征的重要性。实际上,它是特征系数的绝对值。如果我们使用多类线性模型进行分类,我们将对与单个特征相关的系数的绝对值求和。

在计算特征重要性时,所有线性模型都需要标准化或标准化的特征。一些模型默认情况下需要这种变换,但如果我们想相互比较系数,我们总是必须应用它。这就是为什么我将在训练模型之前使用scikit-learn中的管道对象来标准化我们的数据。

让我们看一个带有线性核的支持向量机的例子。

svm = make_pipeline(StandardScaler(),LinearSVC()) svm.fit(X,y) plt.barh(features,np.abs(svm[1].coef_).sum(axis=0))
23f3769129ea2a04af1b4846b3737508.png

这同样适用于逻辑回归。

logit = make_pipeline(StandardScaler(),LogisticRegression()) logit.fit(X,y) plt.barh(features,np.abs(logit[1].coef_).sum(axis=0))
987e0a38fb401f134e869e3ab11065e1.png

可用于特征重要性的其他线性模型是回归模型,因此我们必须加载回归数据集以查看它们的工作方式。对于以下示例,我将使用“糖尿病”数据集。

X,y = load_diabetes(return_X_y=True) features = load_diabetes()['feature_names']

让我们看看线性回归如何计算特征重要性。

lr = make_pipeline(StandardScaler(),LinearRegression()) lr.fit(X,y) plt.barh(features,np.abs(lr[1].coef_))
b5e9b82fc7d4c0939f02f4fdc89491e5.png

LASSO回归是一个非常强大的模型,可以用于特征重要性(以及特征选择)

lasso = make_pipeline(StandardScaler(),Lasso()) lasso.fit(X,y) plt.barh(features,np.abs(lasso[1].coef_))
3b801fd825b873307df87ffe6ef93f58.png

LASSO回归最亲密的朋友是岭回归,这也很有帮助。

ridge = make_pipeline(StandardScaler(),Ridge()) ridge.fit(X,y) plt.barh(features,np.abs(ridge[1].coef_))
577a76541831ec83e6932fd9bfceb2f8.png

我们将看到的最后一个模型将LASSO回归和岭回归混合在一起,这就是Elastic Net回归。

en = make_pipeline(StandardScaler(),ElasticNet()) en.fit(X,y) plt.barh(features,np.abs(en[1].coef_))
238d8d0c3f6d8bceac5592d06f5aa264.png

结论

模型解释通常是通过计算特征的重要性来完成的,一些模型给出了对特征重要性的解释。对于那些不能给出特征重要性的模型,我们可以使用一些与模型无关的方法,如SHAP(例如,对于解释神经网络非常有用)。正确使用特征重要性可以比模型本身的预测能力更好地提高数据科学项目的价值。

感谢阅读!

 

f0637b1c7ddcaa47c4348b86fca5eee9.jpeg

 
 
 
 
往期精彩回顾适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑机器学习交流qq群955171419,加入微信群请扫码

26cd235347834c16d20eaa50a1193a49.jpeg


http://chatgpt.dhexx.cn/article/jHVp3kOq.shtml

相关文章

机器学习建模

文章目录 1.机器学习模型概述1.1 模型与算法1.2 机器学习中的三要素1.3 机器学习模型 2.传统机器学习模型(单模型)2.1 按任务类型划分2.1.1 分类2.1.2 回归 2.2 按性质划分2.2.1 非概率模型(决策函数)2.2.2 概率模型 2.3 按知识体…

机器学习(三):线性模型

📢📢📢📣📣📣 🌻🌻🌻Hello,大家好我叫是Dream呀,一个有趣的Python博主,多多关照😜😜😜 &#x1f3…

机器学习基础:模型评估(下)

目录 1. 引言 2. 进一步评估 3. 机器学习中的偏差和方差种类 3.1 过拟合 3.2 欠拟合 3.3 训练曲线观察泛化性 3.4 模型偏差和方差(bias and variance) 3.4.1 偏差 Bias 3.4.2 方差 Variance 3.4.3 方差偏差总结 4. 模型的泛化性(G…

机器学习基础模型

文章目录 朴素贝叶斯——概率模型朴素贝叶斯分类原理贝叶斯定理的公式朴素贝叶斯的优缺点以及优化 决策树——不需要进行归一化决策树基本模型介绍?决策树的特性?信息增益和信息增益比?有什么不同(信息增益作为分类指标有什么问题…

3.1 机器学习模型

3.1 机器学习模型 李沐 B站:https://space.bilibili.com/1567748478/channel/collectiondetail?sid28144 课程主页:https://c.d2l.ai/stanford-cs329p/ 1. 机器学习算法类型: 监督学习:顾名思义就是监督着模型去学习,…

机器学习之神经网络学习及其模型

1、神经元模型 历史上,科学家一直希望模拟人的大脑,造出可以思考的机器。人为什么能够思考?科学家发现,原因在于人体的神经网络。 神经网络最基本的成分是神经元模型 其中,W表示的是向量,代表的是权重&am…

机器学习建模分析

机器学习 机器学习分类 1、递进关系:深度学习–>机器学习–>人工智能 2、机器学习任务分为两大类方法: (1)有监督的学习:利用经验数据,学习表示事物的模型,关注利用模型预测未来&#x…

机器学习——神经网络模型

在“M-P神经元模型”中,神经元接收到来自个其他神经元传递过来的输入信号,这些输入信号通过带权重的连接进行传递,神经元接收到的总输入值将与神经元的阈值进行比较,然后通过“激活函数”处理以产生神经元的输出。常用Sigmoid函数…

机器学习模型

一、LR 1. 逻辑回归与线性回归的区别 引入sigmoid函数映射,使样本映射到[0,1]之间的数值,从而来处理分类问题。是广义线性模型,本质上还是线性回归。逻辑回归是假设变量服从伯努利分布,线性回归假设变量服从高斯分布。逻辑回归是…

我们如何学习 2:如何建立模型

我们如何学习 2:如何建立模型 战略性资源学习:构建一颗知识树提炼概念建立连接结构分析纵向拆解横向拆解 加强连接 战略性资源 每个人都有天生的学习能力,所以都能学习 —— 但是学习了如何学习,能让我们更聪明、更高效地学习 如…

机器学习中的模型是什么?

在机器学习中,模型是指一种数学函数,它能够将输入数据映射到预测输出。模型是机器学习算法的核心部分,通过学习训练数据来自适应地调整模型参数,以最小化预测输出与真实标签之间的误差。 机器学习中的模型是什么? 机器…

机器学习 —— 简单模型的构建

文章目录 对于简单线性模型的机器学习对简单像素图片的学习构建简单的卷积神经网络一维卷积二维卷积三维卷积 对于简单线性模型的机器学习 对于以下对应 x x x, y y y的值来预测当 x 10 x 10 x10时 y y y的值 xy-1-30-111233547 通过找规律发现这是一个关于 y 2 x − 1 y…

机器学习——线性模型学习

线性回归 线性回归多元线性回归对数线性回归对数几率回归线性判别分析(LDA)多分类任务中的LDA 多分类学习OvR、OvOMvM 线性回归 主要目标确定 如何确定w和b呢?关键在于如何衡量f(x)与y的差别 此种衡量误差的方法称为均方误差也称为欧式距离…

机器学习-模型训练

目录 1.逻辑回归模型 2. KNN模型 3.随机森林模型 4.决策树模型 5.贝叶斯模型 6.支持向量机模型 步骤: 导入必要的第三方库读取数据划分数据集可选操作,引入停用词,当作参数传入特征提取器特征提取提取的向量当作特征传入逻辑回归模型…

机器学习——训练模型

机器学习——训练模型 线性回归 y ^ h Θ ( x ) Θ ∗ x 其中 Θ 是模型的参数向量,其中包括偏置项 Θ 0 和特征权重 Θ 1 至 Θ n x 是实例的特征向量,包括从 x 0 至 x n , x 0 始终为 0 Θ ∗ x 是向量 Θ 与 x 点积 h Θ 是假设函数,使…

从机器学习到大模型(零基础)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 前言 一、机器学习 1.监督学习 (1)线性回归模型 (2)多元线性回归模型 (3)二元分类模型 &a…

模型学习

LeNet AlexNet LeNet: 在大的真实数据集上的表现并不尽如⼈意。 1.神经网络计算复杂。 2.还没有⼤量深⼊研究参数初始化和⾮凸优化算法等诸多领域。 神经网络的特征提取:通过学习得到数据的多级表征,并逐级表示越来越抽象的概念或模式。 神经网络发展…

建模师经验分享:模型学习方法!零基础小白必备知识速看

游戏建模初学者大多存在三个大问题,一是工具的使用不够熟练,甚至有些功能还不知道,二是对布线的规范没有太大的要求和了解,三是对游戏制作流程不清晰和板绘下的功力不够,对贴图制作用工少,甚至有些人还处于一直做白膜的阶段。 那么对大多说想要要学游戏建模的学习者想要…

vue3实现抽屉组件中实现上一条和下一条

简单的模拟在用户查看学员详情时,点击上一条和下一条实现数据切换。 实现逻辑:首先将点击的用户的下标传给抽屉组件,然后监听下标的变化,判断是否为最后一个用户,是就设置样式并禁用按钮。上一条和下一条按钮绑定点击…

SQL 获取下一条数据

这里假设有一张员工表,有三个字段 (ID,员工姓名,年龄): CREATE TABLE [dbo].[Employee] ( [ID] [int] IDENTITY(1,1) NOT NULL, [Name] [varchar](50) NOT NULL, [Age] [int] NOT NULL ) ON [PRIMARY] 这…