一、引言
随着大数据时代的到来,机器学习技术在各个领域得到了广泛的应用。然而,由于机器学习模型的复杂性和抽象性,理解和解释这些模型往往是一项挑战。因此,机器学习可视化成为了连接数据和模型理解之间的桥梁,具有至关重要的意义。
可视化技术可以将机器学习过程中的数据和模型转化为直观、易于理解的图形和图像,帮助研究人员和开发者更深入地理解数据的分布和特征,以及模型的内部结构和决策过程。通过可视化,我们可以更清晰地观察模型的性能、发现潜在问题,并进行优化和改进。
在这个背景下,'vivid'包应运而生。作为一款专门用于机器学习模型可视化的R包,'vivid'提供了丰富的功能和选项,使得模型的可视化变得更加简单、直观和有效。它不仅能够展示模型的结构和权重,还能够揭示模型的决策过程和预测结果,为我们提供了更深入的模型理解方式。
在本文中,我们将介绍'vivid'包的基本用法和功能,并展示如何利用它进行机器学习模型的可视化。通过具体的示例和案例,我们将展示'vivid'包在点亮机器学习模型图方面的惊艳效果,帮助读者更好地理解和应用这一强大的可视化工具。
二、vivid包概述
2.1 vivid包的来源与开发者介绍
vivid包是由《The R Journal》杂志主编及其团队开发的一款R语言包,专门为机器学习模型的可视化设计。作为R语言社区中的知名人士,该主编在机器学习和数据可视化领域具有深厚的学术背景和丰富的实践经验。他深知可视化在机器学习中的重要性,因此带领团队开发了这款功能强大的可视化工具,为研究者提供了更直观、便捷的方式来理解和分析机器学习模型。
2.2 vivid包的主要功能及特点
vivid包具有多种强大的功能,旨在帮助用户轻松创建令人印象深刻的机器学习模型图。其主要功能包括:
-
多样化的模型可视化:vivid包支持多种机器学习模型的可视化,包括但不限于决策树、神经网络、支持向量机等。用户可以根据模型类型选择合适的可视化方法,直观地展示模型的结构和决策过程。 -
高度自定义:vivid包提供了丰富的参数和选项,允许用户根据需求自定义图形的样式、布局和颜色等。这使得用户可以创建出符合自己审美和需求的个性化机器学习模型图。 -
交互式可视化:部分功能支持创建交互式图形,用户可以通过点击、拖动等方式与图形进行交互,进一步探索和理解模型的细节。 -
集成性与扩展性:vivid包与其他R语言包具有良好的集成性,用户可以结合其他可视化工具或分析方法,实现更复杂的可视化任务。同时,vivid包也支持用户自定义扩展功能,满足更多特定需求。
2.3 安装与加载vivid包的步骤
# 计算变量交互以及重要性图
install.packages("vivid")
# 制作网络图
install.packages(c("network", "sna", "scales", "intergraph", "lemon"))
if (!requireNamespace("graph", quietly = TRUE)){install.packages("BiocManager")
BiocManager::install("graph")
}
install.packages("zenplots")
library(vivid)
三、示例展示
-
「数据集准备」
library(survival)
head(gbsg)
结果展示:
pid age meno size grade nodes pgr er hormon rfstime status
1 132 49 0 18 2 2 0 0 0 1838 0
2 1575 55 1 20 3 16 0 0 0 403 1
3 1140 56 1 40 3 3 0 0 0 1603 0
4 769 45 0 25 3 1 0 4 0 177 0
5 130 65 1 30 2 5 0 36 1 1855 0
6 1642 48 0 52 2 11 0 0 0 842 1
-
「示例数据集介绍」
> str(gbsg)
'data.frame': 686 obs. of 10 variables:
$ age : int 49 55 56 45 65 48 48 37 67 45 ...
$ meno : int 0 1 1 0 1 0 0 0 1 0 ...
$ size : int 18 20 40 25 30 52 21 20 20 30 ...
$ grade : int 2 3 3 3 2 2 3 2 2 2 ...
$ nodes : int 2 16 3 1 5 11 8 9 1 1 ...
$ pgr : int 0 0 0 0 0 0 0 0 0 0 ...
$ er : int 0 0 0 4 36 0 0 0 0 0 ...
$ hormon : int 0 0 0 0 1 0 0 1 1 0 ...
$ rfstime: int 1838 403 1603 177 1855 842 293 42 564 1093 ...
$ status : Factor w/ 2 levels "0","1": 1 2 1 1 1 2 2 1 2 2 ...
age:患者年龄
meno:更年期状态(0表示未更年期,1表示已更年期)
size:肿瘤大小
grade:肿瘤分级
nodes:受累淋巴结数量
pgr:孕激素受体表达水平
er:雌激素受体表达水平
hormon:激素治疗(0表示否,1表示是)
rfstime:复发或死亡时间(以天为单位)
status:事件状态(0表示被截尾,1表示事件发生)
-
「划分训练集和测试集」
# 划分训练集和测试集
set.seed(123)
data <- gbsg[,c(-1)]
# 划分训练集和测试集
set.seed(123)
train_indices <- sample(x = 1:nrow(data), size = 0.7 * nrow(data), replace = FALSE)
test_indices <- sample(setdiff(1:nrow(data), train_indices), size = 0.3 * nrow(data), replace = FALSE)
train_data <- data[train_indices, ]
test_data <- data[test_indices, ]
-
「拟合模型」
library(randomForest)
set.seed(123)
rf_model <- randomForest(status~., data=train_data)
-
「构建vivid的解释器」
set.seed(123)
VIVI_rf <- vivi(data = train_data,
fit = rf_model,
response = "status",
reorder = TRUE,
normalized = FALSE,
importanceType = "agnostic",
gridSize = 50,
nmax = 500,
class = 1,
predictFun = NULL,
numPerm = 4)
print(VIVI_rf, digits = 1)
结果展示:
rfstime pgr size nodes er age grade hormon meno
rfstime 0.239 0.031 0.029 0.020 0.022 0.021 0.021 0.008 0.004
pgr 0.031 0.100 0.011 0.016 0.012 0.009 0.005 0.009 0.001
size 0.029 0.011 0.075 0.009 0.007 0.008 0.005 0.005 0.002
nodes 0.020 0.016 0.009 0.090 0.014 0.009 0.005 0.009 0.001
er 0.022 0.012 0.007 0.014 0.082 0.008 0.003 0.004 0.003
age 0.021 0.009 0.008 0.009 0.008 0.071 0.004 0.005 0.002
grade 0.021 0.005 0.005 0.005 0.003 0.004 0.032 0.001 0.001
hormon 0.008 0.009 0.005 0.009 0.004 0.005 0.001 0.028 0.002
meno 0.004 0.001 0.002 0.001 0.003 0.002 0.001 0.002 0.014
attr(,"class")
[1] "vivid" "matrix" "array"
-
「绘制特性相关性和重要性热图」
viviHeatmap(mat = VIVI_rf)
# 修改颜色
viviHeatmap(mat = VIVI_rf,
impPal = rev(colorspace::sequential_hcl(palette = "Red-Blue", n = 100)))
-
「绘制特性相关性和重要性网格图」
viviNetwork(mat = VIVI_rf)
-
「偏依赖图」
pdpVars(data = train_data,
fit = rf_model,
response = "status",
vars = colnames(VIVI_rf)[1:6],
nIce = 70)
vars = colnames(VIVI_rf)[1:6] 提取了矩阵的前面6个特征;nIce = 70指定了个体条件期望曲线的条数。
从上图可以看出,黑色的线条指代偏依赖图,而彩色的线条指代个体条件期望曲线。从上图的结果大致可以判断rfstime、pgr以及nodes对因变量有较大的影响。
四、总结
vivid包在机器学习可视化方面展现出了显著的优势与贡献。它提供了一套完整且易于使用的可视化工具,使得机器学习的过程变得更加直观和易于理解。通过vivid包,用户能够轻松地对数据集进行可视化探索,发现数据中的潜在规律和模式。同时,该包还支持对机器学习模型的训练和预测结果进行可视化展示,帮助用户更好地理解模型的性能和行为。
*「未经许可,不得以任何方式复制或抄袭本篇文章之部分或全部内容。版权所有,侵权必究。」