主要内容

癌症检测

这个例子展示了如何训练神经网络来检测癌症使用质谱数据的蛋白质谱。

介绍

血清蛋白质组学模式诊断可用于区分来自患者的样品,没有疾病。使用表面增强的激光解吸和电离(Seldi)蛋白质质谱法产生谱模式。该技术有可能改善癌症病理的临床诊断测试。

问题:癌症检测

目标是建立一个分类器,可以从质谱数据中区分癌症患者和对照组患者。

在该示例中遵循的方法是选择可用于区分癌症和控制患者的减少的测量或“特征”一组减少的测量集或使用分类器。这些特征是特定质量/充电值的离子强度水平。

格式化的数据

本例中使用的数据,在文件中提供ovarian_dataset.mat,来自FDA-NCI临床蛋白质组学计划数据库。有关此数据集的详细说明,请参阅[1]和[2]。

创建数据文件OvarianCancerQAQCdataset.mat按照下面的步骤使用顺序和并行计算的光谱批量处理(生物信息学工具箱).新文件包含变量YMZ., 和grp

每一列中Y表示病人的测量值。有216Y代表216患者,其中121卵巢癌患者和95.是正常的病人。

在每一行Y表示在特定的质量-电荷值下的离子强度级MZ..有15000.mass-charge值MZ.每一行Y表示患者在该特定质量电荷值的离子强度水平。

变量grp保存这些样本中哪些代表癌症患者,哪些代表正常患者的索引信息。

排名关键特征

此任务是典型的分类问题,其中特征数量远大于观测的数量,但单个功能达到了正确的分类。因此,目标是找到一个分类器,该分类器适当地了解如何重量多个特征,同时产生不合适的广义映射。

寻找重要特性的一个简单方法是假设每个M/Z值是独立的,并计算一个双向t检验。rankfeatures返回最重要的M/Z值的索引,例如按测试统计数据的绝对值排列的100个索引。

加载OvarianCancerQAQCdataset.mat等级特征使用rankfeatures(生物信息学工具箱)选择100个排名最高的测量值作为输入x

ind = rancefeatures(y,grp,“标准”'TTEST'“NumberOfIndices”,100);x = y(ind,:);

定义的目标t以下两类:

双(t = strcmp (“癌症”grp));t = [t;1 - t];

上面列出的脚本和示例中的预处理步骤旨在演示一组具有代表性的可能的预处理和特性选择过程。使用不同的步骤或参数可以得到不同的甚至可能更好的结果。

[x, t] = ovarian_dataset;谁xt
Name Size Bytes Class Attributes t 2x216 3456 double x 100x216 172800 double

每一列中x代表216个不同病人中的一个。

在每一行x表示每个患者在100个特定的质量-电荷值之一的离子强度水平。

变量t有两行216个值,每个值为[1;0],表示癌症患者,或[0;1]表示正常患者。

基于前馈神经网络的分类

现在您已经确定了一些重要的特征,您可以使用这些信息对癌症和正常样本进行分类。

由于神经网络是用随机初始权值初始化的,所以每次运行示例后,训练网络后的结果都会略有不同。为了避免这种随机性,随机种子被设置为每次都复制相同的结果。然而,对于您自己的应用程序来说,设置随机种子并不是必需的。

setDemorandStream(672880951)

建立并训练了包含5个隐层神经元的1-隐层前馈神经网络。输入样本和目标样本被自动划分为训练集、验证集和测试集。训练集用于网络教学。只要网络在验证集上继续改进,训练就会继续进行。测试集提供了对网络准确性的独立度量。

输入和输出的大小为0,因为网络还没有配置为匹配输入和目标数据。当您训练网络时,会发生这种配置。

net = patternnet(5);查看(网)

现在网络已经准备好接受训练了。这些样本被自动划分为训练集、验证集和测试集。训练集用于网络教学。只要网络在验证集上继续改进,训练就会继续进行。测试集提供了一个独立的网络准确性度量。

神经网络训练工具显示了被训练的网络和用来训练它的算法。它还显示训练期间的训练状态,并且停止训练的条件用绿色突出显示。

底部的按钮打开有用的图形,可以在训练期间和训练后打开。算法名称和绘图按钮旁边的链接打开了关于这些主题的文档。

[净,tr] =火车(网,x,t);

要查看在训练过程中网络的性能如何提高,可以单击训练工具中的“性能”按钮,或使用plotperform.函数。

性能在平均平方误差方面测量,并以对数刻度显示。随着网络训练,它迅速下降。

显示每个训练、验证和测试集的性能。

PlotPerform(TR)

图性能(plotperform)包含一个轴对象。标题为“最佳验证性能”的axes对象在epoch 33处为0.035332,包含6个类型为line的对象。这些对象代表Train, Validation, Test, Best。

经过训练的神经网络现在可以用我们从主数据集中分割出来的测试样本进行测试。测试数据没有以任何方式用于训练,因此提供了一个“样本外”数据集来测试网络。这样就可以估算出在使用来自真实世界的数据进行测试时,网络的性能如何。

网络输出在0-1范围内。阈值分别获得输出以获得1和0的表明癌症或正常患者。

testx = x(:,tr.testind);testt = t(:,tr.testind);testy = net(testx);testclasses =睾丸> 0.5
testClasses =2 x32逻辑阵列0 1 1 0 1 1 1 11 11 11 11 1 11 1 11 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 01 1 1 1 0 1 11 1 1 1 1 1 1 1

衡量神经网络与数据吻合程度的一个指标是混淆图。

困惑矩阵显示了正确和不正确的分类的百分比。正确的分类是矩阵对角线上的绿色方块。红色方块表示不正确的分类。

如果网络准确,则红色方块中的百分比很小,表示少数错误分类。

如果网络不准确,那么您可以尝试培训更长的时间,或用更多隐藏的神经元培训网络。

plotconfusion (testT暴躁的)

Figure Confusion (plotconfusion)包含一个轴对象。带有标题混淆矩阵的axis对象包含29个类型为patch, text, line的对象。

以下是正确和不正确的分类的总体百分比。

[c cm] =混乱(testT,暴躁的);流('正确分类百分比:%f%%\n', 100 * (1 - c));
百分比正确分类:90.625000%
流('百分比错误分类:%f%%\n',100 * c);
百分比不正确分类:9.375000%

神经网络具有拟合数据的另一个措施是接收器操作特征图。此图显示了假的正面和真正的阳性率如何与输出的阈值平均值不同0到1。

越往左和越往上,越少的假阳性需要被接受,以获得较高的真阳性率。最好的分类器有一条线从左下角,到左上角,到右上角,或接近它。

1级为癌症患者,2级为正常患者。

plotroc (testT暴躁的)

数字接收器操作特性(Plotroc)包含轴对象。具有标题ROC的轴对象包含4个类型的类型。这些对象代表1类,第2类。

该示例演示了神经网络如何用作癌症检测的分类器。为了提高分类器性能,您还可以尝试使用主成分分析等技术来减少用于神经网络训练的数据的维度。

参考文献

[1] T.P. Conrads等,“高分辨率血清蛋白质组学特征用于卵巢检测”,内分泌相关癌症,2004年11月,第163-178页。

[2]例如,百素,等,“在血清中使用蛋白质组学模式以鉴定卵巢癌”,柳叶套,359(9306),2002,PP。572-577。