该示例显示如何使用质谱数据训练神经网络来检测癌症的蛋白质谱。
血清蛋白质组学诊断可用于区分有疾病和无疾病患者的样本。使用表面增强激光解吸和电离(SELDI)蛋白质谱生成谱图。这项技术有可能改善癌症病理的临床诊断测试。
目标是建立一个分类器,可以从质谱数据中区分癌症患者和对照组患者。
本例中遵循的方法是选择一组可用于使用分类器区分癌症患者和对照组患者的测量值或“特征”。这些特征是特定质量/电荷值下的离子强度水平。
在此示例中使用的数据,在文件中提供ovariar_dataset.mat
,来自FDA-NCI临床蛋白质组学项目数据库。有关该数据集的详细描述,请参见[1]和[2]。
创建数据文件OvarianCancerQAQCdataset.mat
按照下面的步骤使用顺序和并行计算的光谱批处理(生物信息学工具箱).新文件包含变量y
那MZ
,gr
.
每列y
表示从患者取出的测量。有216
列中的列y
代表216
病人,从中121.
是卵巢癌患者和95
是正常的病人。
每一行y
表示所示的特定质量电荷值的离子强度水平MZ
.有15000
大规模收费值MZ
每一行y
表示患者在特定质量-电荷值下的离子强度水平。
的变量gr
保存这些样本中哪些代表癌症患者,哪些代表正常患者的索引信息。
该任务是一个典型的分类问题,特征的数量远远大于观测的数量,但单个特征就可以实现正确的分类。因此,我们的目标是找到一个分类器,它能够适当地学习如何加权多个特征,同时产生一个不过度拟合的广义映射。
寻找重要特征的简单方法是假设每个M / Z值都是独立的并且计算双向T检验。randfeatures.
将索引返回到最高有效的M / Z值,例如由测试统计的绝对值排名的100个索引。
加载OvarianCancerQAQCdataset.mat
等级特征使用randfeatures.
(生物信息学工具箱)选择100个最高排名的测量值作为输入X
.
印第安纳州= rankfeatures (Y, grp,'标准'那的tt那'numberofindices', 100);: x = Y(印第安纳州);
定义目标T.
对于两个课程如下:
双(t = strcmp ('癌症',grp));t = [t;1-T];
上面列出的脚本和示例中的预处理步骤旨在演示一组具有代表性的可能的预处理和特性选择过程。使用不同的步骤或参数可以得到不同的甚至可能更好的结果。
[x,t] = ovariar_dataset;谁是XT.
名称大小字节类属性t 2x216 3456双x 100x216 172800 double
每列X
代表216个不同病人中的一个。
每一行X
表示每个患者的100个特定质量电荷值之一的离子强度水平。
的变量T.
有两排具有216个值的行,每个值是[1; 0],表明正常患者的癌症患者或[0; 1]。
现在您已经确定了一些重要的特征,您可以使用这些信息对癌症和正常样本进行分类。
由于神经网络是用随机初始权值初始化的,所以每次运行示例后,训练网络后的结果都会略有不同。为了避免这种随机性,随机种子被设置为每次都复制相同的结果。然而,对于您自己的应用程序来说,设置随机种子并不是必需的。
setdemorandstream (672880951)
创建和培训具有5个隐藏层神经元的1个隐藏层馈线前向神经网络。输入和目标样本自动分为培训,验证和测试集。训练集用于网络教学。只要网络在验证集上继续改进,训练就会继续进行。测试集提供了网络精度的独立度量。
输入和输出具有0的大小,因为网络尚未配置以匹配输入和目标数据。您培训网络时会发生这种配置。
网= patternnet (5);视图(净)
现在网络已经准备好接受训练了。这些样本被自动划分为训练集、验证集和测试集。训练集用于网络教学。只要网络在验证集上继续改进,训练就会继续进行。测试集提供了一个独立的网络准确性度量。
神经网络培训工具显示了培训的网络和用于训练它的算法。它还在培训期间显示培训状态,并以绿色突出显示训练的标准。
底部打开的按钮有用的图表,可以在训练期间和之后打开。算法名称旁边的链接和绘图按钮在这些主题上打开文档。
(净,tr) =火车(净,x, t);
要查看在训练过程中网络的性能如何提高,可以单击训练工具中的“性能”按钮,或使用plotperform
功能。
性能是用均方误差来衡量的,并在对数尺度上显示。随着网络的训练,它迅速下降。
为每个培训,验证和测试集显示性能。
plotperform (tr)
现在可以使用从主数据集分区的测试样本来测试培训的神经网络。测试数据不在任何方式培训中使用,因此提供了“超样”数据集以测试网络。这估计了网络与来自现实世界的数据进行测试时如何执行的。
网络输出的范围是0-1。将输出设置为1和0,分别表示癌症或正常患者。
testX = x (:, tr.testInd);testT = t (:, tr.testInd);暴躁的=净(testX);testClasses = testy> 0.5
testclasses =2x32逻辑阵列0 1 1 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1
一种衡量神经网络如何适应数据的衡量标准是混乱的图。
混淆矩阵显示正确和错误分类的百分比。正确的分类是矩阵对角线上的绿色方块。红色方块表示错误的分类。
如果网络是准确的,那么红色方块中的百分比就很小,表明很少有错误分类。
如果网络不准确,那么你可以尝试长时间的训练,或者训练一个有更多隐藏神经元的网络。
plotconfusion(Testt,Testy)
下面是正确和错误分类的总体百分比。
[c,cm] =混乱(Testt,睾丸);FPRINTF('正确分类百分比:%f%%\n', 100 * (1 - c));
正确分类百分比:90.625000%
FPRINTF('百分比错误分类:%f%%\n', 100 * c);
分类错误百分比:9.375000%
另一个衡量神经网络有多好的拟合数据是接收机操作特征图。这张图显示了当输出的阈值从0到1变化时,假阳性和真阳性率之间的关系。
越往左和越往上,越少的假阳性需要被接受,以获得较高的真阳性率。最好的分类器有一条线从左下角,到左上角,到右上角,或接近它。
第1类表明癌症患者和2类表明正常患者。
plotroc (testT暴躁的)
这个例子演示了如何使用神经网络作为癌症检测的分类器。为了提高分类器的性能,还可以尝试使用主成分分析等技术来降低用于神经网络训练的数据的维数。
[1] T.P.Conrads等人,“卵巢检测的高分辨率血清蛋白质组织特征”,内分泌相关癌症,11,2004,PP。163-178。
[2] E.F. Petricoin等,“血清蛋白质组学模式用于鉴别卵巢癌”,《柳叶刀》,359(9306),2002,第572-577页。