网站注册怎么做屏蔽过滤,在线教育网站开发实例,市场营销课程,wordpress 影视主题比传统机器学习更先进的深度学习神经网络的二分类建模全流程分析教程
深度学习介绍和与传统机器学习的区别
深度学习#xff08;Deep Learning#xff09;是一种机器学习的分支#xff0c;基于多层神经网络模型#xff0c;能够自动从大量数据中学习特征并进行预测。深度学…比传统机器学习更先进的深度学习神经网络的二分类建模全流程分析教程
深度学习介绍和与传统机器学习的区别
深度学习Deep Learning是一种机器学习的分支基于多层神经网络模型能够自动从大量数据中学习特征并进行预测。深度学习通过层层的神经元结构提取数据的抽象信息使其在图像识别、语音处理、自然语言处理等领域取得了显著成果。
深度学习与传统机器学习的区别
1. 特征提取方式不同 传统机器学习依赖人工提取特征通常需要专家对数据进行处理和特征工程如PCA主成分分析或手动设计的特征。 深度学习能够自动从原始数据中学习特征尤其在复杂任务上可以通过多层神经网络自动捕捉高层次的抽象特征。
2. 模型结构 传统机器学习模型较为简单通常是单层或少量层次的模型如线性回归、支持向量机SVM等。 深度学习模型深度较大通常包括多个隐藏层深层神经网络如卷积神经网络CNN和循环神经网络RNN。
3. 数据依赖性 传统机器学习在中小规模数据上表现较好但在海量数据上难以处理。 深度学习依赖大量数据训练数据越多模型的表现越好能够更好地应对海量数据和复杂任务。
4. 计算资源需求 传统机器学习计算量相对较低可以在一般计算设备上运行。 深度学习计算需求较高通常需要高性能的GPU或TPU支持以加速训练。
5. 应用场景 传统机器学习在一些结构化数据如表格数据处理上依然表现优异适合较简单任务。 深度学习在图像、视频、语音等非结构化数据处理领域表现优越。
总的来说深度学习适合复杂、海量数据的场景而传统机器学习在小规模数据集上依然有其优势。
对要进行机器学习或深度学习的数据进行整理和预处理
分析模块位置 分析模块界面 参数文件下载和使用
该模块的parms_file 需要给一个excel表的表格格式的参数文件该参数文件可以在我的百度网盘中下载。 只需要在分析参数的这个xlsx的excel文件中修改一下mldl_data_preprocess分析模块下对应的在param_value列我标红的参数值改成你自己的训练集和测试集文件所在的列名和文件中的基因id列名和样本id列名,样本分组列名即可具体可以参考该模块下我的那个详细的教学视频,该视频观看链接已经放在了分析模块的内部了。
用到的训练集和测试集文件
文件目录下的所有文件 这是分析用到的所有数据文件存放的目录路径,其中
data1.txt是训练数据集文件sample_group1.txt是该data1.txt对应的样本分组分类标签文件data2.txt, data3.txt, data4.txt是三个测试数据集文件sample_group2.csv,sample_group3.csv,sample_group4.csv是这三个测试数据集分别对应的样本分组分类标签文件。当前这里是用了3个测试数据集文件和分类标签文件大家也可以用更少或更多的测试数据集文件和分类标签文件hub_gene.csv 是机器学习或深度学习用到的一组关键基因列表后面只会从data1.txt, data2.txt, data3.txt, data4.txt这些训练数据集和测试数据集中提取出这一组基因对应的表达数据进行建模和预测。
文件的具体内容
data1.txt, data2.txt, data3.txt, data4.txt这些基因表达数据集的文件内容 这些文件基本上都是第1列为基因名列其它列都是样本列的这样的数据格式即是一个行名为基因名列名为样本编号的基因表达矩阵。
sample_group1.csv, sample_group2.csv,sample_group3.csv,sample_group4.csv对应的文件内容 这些分类标签文件都只有两列列名是sample.id和group.level, sample.id是样本id编号group.level是样本的分类组名这里的两个分类是Normal和Disease.
hub_gene.csv对应的文件内容 该文件中只有一组基因列表列名是gene_symbol, 后续在分析中只会用到这一组基因进行数据处理特征筛选和建模预测。
该分析模块的运行结果
分析界面执行完成的显示信息 运行完成的结果目录 结果文件包括预处理好的测试集和训练集的表达数据集文件和分类标签文件每个文件都有一份tsv文件和rds文件,tsv文件可以直接用excel打开rds文件可以用Rstudio打开二者的内容基本一致。
运行完成的文件内容
表达数据集的处理好的内容如下 提取除了一组hub gene对应的表达矩阵行名是样本编号列名是这一组hub gene对应的表达数据
分组标签处理好的内容如下训练集标签文件处理好的内容
训练集标签文件data_process_train_labels.tsv处理好的内容如下 有两列数据第一列是样本id,第二列是0,1分类标签把原来的Normal变成了0, 把Disease变成了1多个测试数据集的分类标签处理文件处理好的内容如下
1.data_process_test_labels_total.tsv文件内容 这里有三列数据第一列是样本id,第二列是0,1分类标签把原来的Normal变成了0, 把Disease变成了1第三列是样本对应的数据集来源因为这里用到了三个测试集所有data.source列是data2,data3, data4这三个数据集的名称。
构建深度学习多层神经网络模型进行二分类预测
深度学习神经网络的架构示意图 分析模块位置 分析参数文件的位置和内容
分析参数文件位置
分析参数文件在我的电脑本地位置为D:/omics_tools/demo_data/total_analysis_params_demo_test.xlsx 在百度网盘的位置为 参数文件内容 参数文件修改讲解
在这个分析模块里面只需要修改我标红的参数值即可没有标红的参数值用默认的就行不需要修改。
分析的需要数据文件修改
func_train_label_file
D:/data/machine_leanring/2class_total_ml/1.data_process/1.data_process_train_labels.rds
func_total_test_exp_file
D:/data/machine_leanring/2class_total_ml/1.data_process/1.data_process_test_exps_total.rds
func_total_test_label_file
D:/data/machine_leanring/2class_total_ml/1.data_process/1.data_process_test_labels_total.rds
run_file_path
D:/data/machine_leanring/2class_total_ml/1.data_process/1.data_process_train_exp.rds
这四个数据文件路径都在上一步数据预处理的结果目录下。
神经网络设计训练调优需要修改的参数
神经网络训练的batch_size修改batch_size参数值填写介绍
batch_size是func_batch_size_str对应的参数值默认用了5和10两个batch_size可以多用几个batch_size进行训练最后选取最好的结果多个batch_size之间用分号;隔开。
func_batch_size_str
5;10
Batch size 是指在一次前向传播和反向传播中传递给神经网络的样本数量。简单来说batch size 决定了每次模型权重更新时所使用的样本数量。Batch size 的选择对模型训练效率、收敛速度和内存占用都有影响。常见的 Batch Size 设置
1. 小 Batch size例如 1、8、16 优点每次更新都基于较少的样本模型权重更新频繁有助于更快地跳出局部最优解。适合较小数据集和内存有限的情况。 缺点梯度波动较大收敛速度可能会较慢且训练可能会不稳定。
2. 大 Batch size例如 64、128、256 优点梯度较为平滑收敛更加稳定训练效率高。 缺点需要更多内存资源并且可能陷入局部最优解不利于模型泛化。
3. 中等 Batch size例如 32、64 综合了小和大 Batch size 的优缺点通常是一个较为稳健的选择尤其是对于中等规模的数据集。如何为生信分析中的小样本数据集选择合适的 batch size
很多GEO的数据集可能只有几十个样本这里以40个样本的训练为例
由于你只有 40个样本建议选择较小或中等的 batch size。具体设置可以参考以下几点
1. Batch size 8 或 16 在40个样本中8或16的batch size可以是一个比较好的选择。这样可以保持梯度更新的频率适中同时不会造成过大内存开销。 Batch size 840个样本将分为5个batch。 Batch size 1640个样本分为2-3个batch更新频率较低但模型每次迭代使用更多样本来计算梯度。
2. 小 batch size如4 如果你的模型较为复杂或者计算资源有限你可以将 batch size 设置得更小如 4。这样模型会在每次更新时处理更少的样本更新更频繁。
3. 特殊情况Batch size 1 或 40 Batch size 1称为逐样本更新虽然每次更新频繁但容易导致梯度波动较大可能使训练不稳定。 Batch size 40一次性使用全部样本相当于“批量梯度下降”训练稳定但梯度更新慢可能导致模型需要更多迭代才能收敛。
对于你的40个样本建议你可以从 batch size 8 或 16 开始尝试兼顾更新频率和计算效率。如果训练不稳定或者过拟合现象严重可以进一步调整 batch size 或结合其他正则化手段。
学习率设置参数值填写介绍
学习率Learning Rate 是神经网络训练过程中最重要的超参数之一它决定了模型在每次梯度更新时权重的调整幅度。合适的学习率可以加快模型的收敛速度而不合适的学习率可能导致模型无法有效学习或收敛到次优解。
学习率是func_learning_rate_str对应的值我默认是填了0.001;0.005;0.01这几个值
func_learning_rate_str
0.001;0.005;0.01如何设置合适的学习率
学习率的影响
1. 学习率过大 优点训练速度快。 缺点模型可能会跳过全局最优解梯度更新幅度过大导致损失函数波动剧烈无法收敛甚至发散。
2. 学习率过小 优点更精确地找到全局最优解。 缺点训练速度非常慢模型需要更多迭代次数才能收敛可能陷入局部最优解训练时间较长。常见的学习率范围 一般而言常用的初始学习率通常介于 0.001 到 0.1 之间。 选择几个不同的学习率比如 0.1、0.01、0.001、0.0001然后在训练中测试每个学习率的效果选择最优的学习率。
神经元丢弃比例dropout设置参数值填写介绍
dropout神经元丢弃比例在分析参数中是func_dropout_rate_str对应的参数值默认使用了0.25;0.5这两个值多个值间用分号;隔开在训练后会从所有参数训练的结果中选出最好的结果。
func_dropout_rate_str
0.25;0.5
Dropout 是一种防止神经网络过拟合的正则化技术特别在深度神经网络中应用广泛。它的基本原理是在每一次训练过程中随机丢弃即关闭一部分神经元避免神经元之间过度依赖特定的激活模式从而提高模型的泛化能力。Dropout的工作原理 在前向传播时对于每一层的神经元以一定的概率 p 随机将一部分神经元“关闭”即将它们的输出设为0而其他神经元继续工作。 在反向传播时仅对未关闭的神经元进行梯度更新。 在测试阶段所有神经元都保持激活但它们的输出会乘以 1 - p 来补偿训练过程中丢弃的神经元数量。Dropout值的选择
Dropout 的值通常表示被丢弃神经元的比例范围是 0 到 1。常见的设置是选择一个适当的丢弃比例以找到训练和泛化性能之间的平衡。
1. 较低的 Dropout 值0.1-0.3 Dropout 值设置较低时只丢弃较少的神经元神经网络的表达能力保持较强但过拟合的可能性依然存在。 适用于较简单的模型或者较小的训练数据集。
2. 适中的 Dropout 值0.4-0.5 这是较常见的 Dropout 设置。通常 0.5 是一个推荐的起点这意味着在训练过程中随机丢弃 50% 的神经元。这个值能有效防止神经元过度拟合训练数据并且保留了足够的表达能力。 适用于中等规模的数据集和较为复杂的网络结构。
3. 较高的 Dropout 值0.6-0.8 设置较高的 Dropout 值比如 0.6-0.8会丢弃更多的神经元这种设置可以防止模型严重过拟合但也可能导致模型训练不稳定或收敛缓慢。 适用于非常复杂的神经网络或训练数据量较大的情况但需要谨慎使用。如何选择合适的 Dropout 值
1. 模型的复杂性 对于简单模型例如只有几层的浅层网络可以使用较低的 Dropout 值如 0.1-0.3因为模型本身不容易过拟合。 对于深层神经网络例如有多层隐藏层推荐使用 0.5 左右的 Dropout 值。
2. 数据集的规模 如果数据集较大模型容易学到更多的有用特征因此可以适当减少 Dropout如 0.3-0.5以便充分利用数据。 如果数据集较小则需要更强的正则化来防止过拟合因此可以适当增加 Dropout如 0.5-0.7。
二分类的分类阈值cutoff选择参数值填写介绍
func_cutoff_str
0.25;0.5;0.75
这里的二分类cutoff阈值是func_cutoff_str对应的值默认用了0.25;0.5;0.75这三个值多个值间用分号;隔开。
神经网络模型预测的结果是一个0-1的概率值我们需要对预测的概率值设置一个分类的阈值大于这个阈值cutoff就归为分类标签1小于这个阈值就归为分类标签0.
这里每层神经元的激活函数都用的Relu激活函数
神经网络的层数和每层的神经元数量选择参数值填写介绍
func_layer_neurons_str
32;16;8;1
这里神经网络的层数和每层数量是func_layer_neurons_str对应的值默认值是32;16;8;1表示神经网络一共有四层第一个隐藏层层有32个神经元第二个隐藏层有16个神经元第三个隐藏层有8个神经元输出层有1个神经元。如何选择神经元的层数和每层神经元的数量
对于一个包含20多个基因表达数据和40个样本的神经网络模型网络的层数和每层神经元数量的选择取决于任务的复杂性如分类、回归等以及是否存在过拟合的风险。
以下是一般的建议
1. 网络层数 由于数据集的规模较小样本数仅40个不建议使用过深的神经网络。通常1到3层的隐含层就足够。 层数越多网络的复杂性越高但也更容易过拟合。在小样本情况下可以从1-2层开始尝试。
2. 每层神经元数量 第一层的神经元数量可以设置为与输入特征基因表达数20多个相当或稍多例如 20-64个。 后续层的神经元数量可以逐层递减。例如第二层可以设置为 32-16个 神经元。 为了避免过拟合可以使用Dropout正则化或者L2正则化。
可以先从简单的结构开始逐步调整模型复杂度观察验证集的表现。
l2正则化罚项设置参数值填写介绍
func_l2_reg_lambda_str
0;0.001
这里神经网络的l2正则化罚项是通过func_l2_reg_lambda_str参数来设置默认的值是0;0.001,多个值之间用分号隔开。如何设置合适的l2正则化罚项系数
L2正则化也称为权重衰减是神经网络中常用的一种正则化技术用于防止模型过拟合提高其泛化能力。以下是对L2正则化的详细介绍以及如何设置L2正则化系数的建议。
1. 什么是L2正则化
L2正则化通过在损失函数中添加一个基于模型权重的罚项限制权重的大小从而防止模型在训练数据上过度拟合。具体来说L2正则化会惩罚权重向量的平方和使得权重趋向于较小的值。 作用
防止过拟合通过限制权重的大小L2正则化减少了模型对训练数据的过度依赖从而提升其在未见数据上的表现。提高模型的泛化能力使模型更加简洁避免复杂模型在训练数据上表现良好但在测试数据上表现不佳的情况。稳定训练过程防止权重变得过大避免数值不稳定的问题。
2. L2正则化系数的设置
正则化系数 ( λ ) 决定了L2罚项在损失函数中的权重进而影响模型训练过程中的权重更新。选择合适的 (λ ) 对于模型性能至关重要。
影响因素
模型复杂度 复杂模型具有大量参数的深层神经网络可能需要较强的正则化较大的 ( λ )。简单模型参数较少的模型可能只需要较弱的正则化较小的 ( λ )。数据集大小 小数据集更容易过拟合可能需要较大的 ( λ )。大数据集过拟合风险较低可以使用较小的 ( λ )。任务性质 高风险任务如医疗诊断可能更倾向于强正则化以确保模型简洁可靠。其他任务根据具体需求调整 ( λ )。
推荐的 ( lambda ) 范围
常见范围通常在 1e-5 到 1e-2 之间。 0.0001 (1e-4)适用于大多数情况作为初始值。0.001 (1e-3)常用的默认值。0.01 (1e-2)用于需要较强正则化的场景。 定义一组候选的 ( λ ) 值例如 [0.0001, 0.001, 0.01, 0.1]。
训练多个模型每个模型使用不同的 ( λ )并在验证集上评估其性能。选择在验证集上表现最好的 ( λ )。
深度学习训练轮数epochs设置参数值填写介绍
func_epochs
50
Epochs轮次 是神经网络训练过程中的一个关键概念它指的是整个训练数据集被完整地送入模型进行一次前向和反向传播的过程。理解和合理设置epochs的数量对于模型的训练效果和性能优化至关重要。如何设置合适的epochs
1. 什么是Epochs
定义 Epoch轮次一次Epoch表示将所有训练样本完整地通过神经网络一次。换句话说模型在一个Epoch中见到了所有的训练数据一次。Batch批次由于一次处理整个数据集可能计算量过大通常将数据集分成若干小批次Batch每个Batch包含一定数量的样本。一个Epoch包含多个Batch的训练过程。示意图
数据集40个样本
├─ Batch 1 (16)
├─ Batch 2 (16)
└─ Batch 3 (8) 一个Epoch Batch 1 Batch 2 Batch 3
2. Epochs的重要性
模型收敛 随着Epochs的增加模型逐渐学习和拟合训练数据损失函数逐步减小性能指标如准确率逐渐提升。避免过拟合和欠拟合 欠拟合Epochs过少模型未充分学习表现为训练损失高、验证损失高。过拟合Epochs过多模型在训练数据上表现良好但在验证或测试数据上表现较差泛化能力下降。3. 如何选择合适的Epochs数量
选择合适的Epochs数量需要综合考虑模型复杂度、数据集大小、训练速度以及避免过拟合等因素。以下是一些常见的方法和建议
a. 观察损失曲线和性能指标 训练过程监控 在训练过程中实时监控训练损失Training Loss和验证损失Validation Loss以及其他性能指标如准确率。损失曲线分析 训练损失持续下降验证损失先下降后上升说明模型开始过拟合此时应停止训练。训练损失和验证损失均下降继续训练可能提升性能。训练损失和验证损失趋于平稳说明模型已基本收敛。初始尝试 对于中小型数据集如40个样本可以从 100到500 个Epochs开始尝试。动态调整 根据训练和验证损失的变化趋势动态调整Epochs的数量。通过交叉验证选择一个使模型在验证集上表现最好的Epochs。4. 具体设置建议
a. 初始Epochs设置
建议范围100 到 500 个Epochs。原因样本量较小过多的Epochs可能导致过拟合因此需要结合Early Stopping等策略动态调整。6. 总结
Epochs的选择需要结合数据集规模、模型复杂度和训练过程中的表现。合理设置Epochs可以通过监控损失曲线、使用Early Stopping和学习率调度等策略实现避免过拟合和欠拟合。实践中推荐从 100 到 500 个Epochs开始我的OmicsTools神经网络建模预测模块会结合Early Stopping等方法动态调整并通过交叉验证和实验记录找到最适合的设置。
分析界面 点击提交后会自动弹出一个终端界面进行深度学习的分析计算 等计算完成后该终端界面会自动关闭
运行完成的结果
结果目录和文件 分析结果包括在训练集中的一个最优模型以及5个在测试集中auc score最高的top5个模型以及5个在测试集中roc auc值最高的top5 个模型。
训练过程的损失曲线和性能指标 左侧图损失曲线解读 Training Loss蓝线 随着Epochs的增加训练损失持续下降说明模型在训练集上逐渐拟合得更好。 但是到第4个Epoch时训练损失出现了明显的波动这可能是由于数据集较小或优化器设置导致的。 Validation Loss橙线 验证损失在最初几个Epoch下降但从第2-3个Epoch后开始趋于平稳甚至略有上升。 这种现象可能意味着模型开始在训练集上过拟合虽然训练损失持续降低但验证损失没有继续降低反而变得更高表明模型在验证集上泛化能力变弱。
右侧图准确率曲线解读 Training Accuracy蓝线 随着训练进行训练集上的准确率逐步上升说明模型对训练数据的学习效果在增强。 在4个Epoch之后训练准确率趋于较高但仍然波动说明训练过程不够稳定。 Validation Accuracy橙线 验证集上的准确率在最初迅速上升在2个Epoch之后几乎稳定在一个很高的值接近90%。 尽管验证损失有些上升但验证准确率保持平稳说明模型的预测在验证集上依旧较为准确但要留意这种情况可能是由于验证集上较简单的数据模式或者模型对验证集过度拟合。
总结 目前模型在训练集上表现较好但存在轻微的过拟合现象。验证集上的准确率虽然保持较高但验证损失的上升值得注意。 通过引入正则化、Early Stopping 和调整学习率等方法可以进一步提升模型的稳定性和泛化能力。
各种参数组合最好的aucscore值对应的模型
aucscore含义
auc Score 是一种用于衡量分类模型性能的指标特别适用于 不平衡数据集即正负样本数量差异较大的情况下。它结合了 精确率Precision 和 召回率Recall是它们的调和平均数。
主要概念 适用场景 数据不平衡时auc Score 在数据不平衡时能提供更好的模型性能评估。当正负样本数量相差悬殊时单独看准确率Accuracy会有误导性但 auc Score 会平衡考虑模型对正负样本的预测表现。 二分类问题auc Score 常用于二分类问题例如疾病诊断正类为有病负类为健康。
举个例子
假设在癌症检测中模型预测出 100 个样本为阳性有病其中 80 个样本实际确实是阳性True Positives但也有 20 个是误报False Positives。同时实际中有 100 个病人而模型只找到了 80 个剩下 20 个漏检了False Negatives。 Precision 80 / (80 20) 0.8 Recall 80 / (80 20) 0.8 通过 auc Score我们可以得到一个综合评价来判断模型在精确性和全面性之间的平衡表现。
汇总的auc score结果文件
运行完成会生成一个2class_mlp_model_all_result_FS.csv文件会生成排序好的每个参数组合对应的data2,data3,data4三个测试集和train训练集以及三个测试集均值的auc score值用于筛选最好的参数组合下性能最优的模型。我们一般选ave_test aucscore最高的参数组合的模型。 各种参数组合最好的auc值对应的模型
ROC AUC值的含义
ROC AUC 是一种用于评估分类模型性能的指标特别适合于 二分类问题通过综合考虑模型的 真阳性率True Positive Rate, TPR 和 假阳性率False Positive Rate, FPR可以评估模型在不同阈值下的表现。下面详细解释 ROC 曲线和 AUC 的概念。 ROC 曲线通过绘制在不同阈值下的 TPR 和 FPR 值来反映模型的整体性能。理想的模型 ROC 曲线应该靠近左上角意味着在几乎不增加假阳性的情况下大幅提高真阳性。
3. ROC AUC 的优势
阈值无关与准确率等指标不同ROC AUC 不依赖特定的分类阈值而是考察模型在不同阈值下的表现因而更全面。数据不平衡的鲁棒性在样本不平衡正负样本数量差异较大的情况下ROC AUC 仍然能很好地评估模型性能而准确率往往会被误导。
2. AUC (Area Under the ROC Curve)不同范围的值的意义
AUC 是 ROC 曲线下的面积是一个 数值化的指标用来衡量模型的分类能力。AUC 值的范围在 0 到 1 之间。
AUC 0.5模型性能低于随机猜测说明模型存在问题可能完全反转了正负类的判断。AUC 0.5随机猜测模型没有任何区分正负样本的能力。 0.7 ≤ AUC 0.8模型表现一般具有一定的分类能力但可能需要进一步优化。 0.8 ≤ AUC 0.9模型表现良好具有较强的区分能力。 0.9 ≤ AUC 1.0模型表现非常好几乎能很好地区分正负类。AUC 1完美分类器模型在任何阈值下都能完美区分正负样本。
汇总的auc score结果文件
运行完成会生成一个2class_mlp_model_all_result_auc.csv文件会生成排序好的每个参数组合对应的data2,data3,data4三个测试集和train训练集以及三个测试集均值的auc score值用于筛选最好的参数组合下性能最优的模型。我们一般选ave_test auc最高的参数组合的模型。 使用最前沿最先进的可解释性shap图来解释top5 排名最高的模型
shap图介绍
SHAP 图 是一种用于解释机器学习模型的工具特别是黑箱模型如深度学习或集成方法帮助我们理解模型是如何做出决策的。SHAP 通过量化每个特征对模型预测的贡献揭示了各个特征如何影响模型的输出。以下是对 SHAP 的详细解释1. 什么是 SHAP?
SHAP全称 SHapley Additive exPlanations基于 Shapley值这是合作博弈论中的一种方法用于衡量每个参与者在合作中的贡献。引入机器学习领域时每个特征被看作是博弈中的“玩家”模型预测结果被看作是合作的“收益”。SHAP 值度量了每个特征对预测结果的独立贡献。2. SHAP 的工作原理
SHAP 的基本思想是计算一个特征在不同组合下对模型输出的边际贡献。具体来说它计算当某个特征值加入到其他特征组合时模型输出的变化。这种计算方式可以给出每个特征在模型决策中的平均贡献从而帮助我们解释模型。3. 为什么使用 SHAP? 解释性强相比其他解释方法SHAP 值具有良好的理论基础能提供全球解释和局部解释。每个特征的贡献可以通过 SHAP 图清晰展示出来。 公平性SHAP 值通过考虑所有特征组合提供了对各个特征影响的公平评价能够量化每个特征的边际贡献。 适用广泛SHAP 可以应用于许多不同类型的机器学习模型如回归、分类、深度学习等。SHAP Summary Plot 显示了所有特征对模型的全局影响。通过将所有样本的 SHAP 值绘制成散点图可以看到哪些特征对模型预测影响最大。 横轴SHAP 值表示特征对模型输出的影响方向和大小。 颜色表示特征值的大小通常红色表示特征值高蓝色表示特征值低。5. 如何解读 SHAP 图 正负 SHAP 值正值的 SHAP 值意味着特征推动模型输出为正类或预测值更高负值意味着特征推动模型输出为负类或预测值更低。 全局影响通过 summary plot可以看到哪些特征对模型预测的整体影响最大点的分布越广特征影响越大。6. SHAP 的应用场景 模型解释帮助数据科学家和工程师理解模型的决策逻辑。 模型调试通过分析 SHAP 图可以发现模型的偏差或过拟合问题。 特征重要性分析帮助识别哪些特征对模型的贡献最大以便优化特征选择。总结
SHAP 图是一种非常强大的工具它提供了对机器学习模型透明和公平的解释。它通过量化每个特征对模型输出的贡献帮助我们理解模型是如何做出决策的以及哪些特征对预测结果影响最大。这对于改进模型、发现数据问题、以及在高风险决策场景中如医学、金融解释模型尤为重要。
运行完成的结果的shap图展示和结果解读
运行完成后会绘制出F1 score top5 模型的5个shape图以及auc score top 5的shap图。
可解释性shap图是最前沿最先进的机器学习和深度学习的可解释图形可能以往太旧的生信分析和机器学习建模论文一般都没有这种图。
以其中的一个shap图为例 这个图是一个 SHAP Summary Plot用于解释机器学习模型中特征对模型输出的影响。我们可以从几个方面来解读
1. 图表概览 横轴SHAP value代表每个特征对模型预测结果的影响。值越靠右正方向说明该特征越倾向于推动模型输出为正类例如预测患病。反之值越靠左负方向说明该特征越倾向于推动模型输出为负类例如预测健康。 纵轴特征名称列出了在模型中使用的各个特征。每一行表示一个特征对模型输出的影响。 颜色Feature value颜色条表示每个点对应特征值的大小。红色表示特征值高蓝色表示特征值低。例如红色代表特征值较高而蓝色则表示特征值较低。
2. 解读 影响力的大小每一行中的点在横轴上的分布反映了该特征对模型预测的影响。横坐标上的散点越分散说明该特征对模型预测的影响越大。例如DACH1 特征的 SHAP 值分布较宽表示它对模型预测的贡献很大。而像 ASPM 这样的特征分布较窄说明它的贡献较小。 特征值与影响的关系 如果高特征值红色点主要分布在右边正向说明该特征值越大越倾向于推动预测为正类。例如DACH1 和 ANGPTL6 的红色点在右边较多说明这些特征的高值会推动模型输出为正类。 如果高特征值红色点主要分布在左边负向说明该特征值越大越倾向于推动预测为负类。图中部分特征如 CDC25C其红色点更多分布在左侧表示该特征的高值倾向于推动模型输出为负类。 零线的含义零线表示该特征对模型输出的影响为中性即对正负类预测没有明显倾向。如果大多数点都接近 0说明该特征对模型的预测影响较小。
3. 结论
从这个 SHAP Summary 图表中可以得出以下结论 主要影响特征DACH1、CDC25C、LOC344887 等特征对模型的预测影响较大因为它们的 SHAP 值分布较广说明这些特征的值变化对预测的影响显著。 特征值与预测的关系 一些特征如 DACH1、ANGPTL6的高值红色点主要推动模型预测为正类。 另一些特征如 CDC25C、HSPB1的高值主要推动模型预测为负类。
通过这个图你可以看到哪些特征对模型的预测起到了重要作用并且了解这些特征值的大小如何影响预测结果。这有助于更深入理解模型的决策过程也可以用于后续特征优化和模型调试。