这个例子展示了如何训练神经网络,利用蛋白质图谱上的质谱数据来检测癌症。
血清蛋白质组学模式诊断可用于区分来自患者和不含疾病的患者。使用表面增强的激光解吸和电离(SELDI)蛋白质质谱法产生谱模式。该技术有可能改善癌症病理学的临床诊断测试。
目标是建立一个分类器,能够从质谱数据中区分癌症患者和对照患者。
在该示例中遵循的方法是选择减少的一组测量或可用于区分癌症和控制患者使用分类器的“特征”集。这些特征是特定质量/充电值的离子强度水平。
本例中使用的数据,在文件中提供卵巢癌数据集.mat
,来自FDA-NCI临床蛋白质组学计划数据库。有关此数据集的详细说明,请参阅[1]和[2]。
创建数据文件ovararcancerqaqcdataset.mat
按照中的步骤进行操作使用顺序和并行计算的光谱批处理(生物信息学工具箱).新文件包含变量Y
,MZ.
, 和玻璃钢
.
中的每列Y
表示从患者身上获取的测量值。有216.
列Y
代表216.
患者,其中121
卵巢癌患者和95.
是正常的病人。
每行Y
表示特定质量电荷值下的离子强度水平,如中所示MZ.
. 有15000.
中的质量电荷值MZ.
每行Y
表示在特定质量电荷值的患者的离子强度水平。
变量玻璃钢
保存这些样本中哪些代表癌症患者,哪些代表正常患者的索引信息。
此任务是典型的分类问题,其中特征的数量远大于观察的数量,但单个功能达到了正确的分类。因此,目标是找到一个适当地了解如何重量多个特征的分类器,同时产生不合适的广义映射。
寻找重要特征的一种简单方法是假设每个M/Z值是独立的,并计算双向t检验。rankfeatures
返回最重要M/Z值的索引,例如,按测试统计的绝对值排序的100个索引。
加载ovararcancerqaqcdataset.mat
和等级功能使用rankfeatures
(生物信息学工具箱)选择100个排名最高的度量值作为输入x
.
ind = rancefeatures(y,grp,“标准”,'ttest',“数量指数”,100);x = y(ind,:);
确定目标T
对于以下两个类别:
t = double(strcmp(“癌症”,grp);t=[t;1-t];
上面列出的脚本和示例中的预处理步骤旨在演示一组具有代表性的可能预处理和特征选择过程。使用不同的步骤或参数可能会导致不同且可能更好的结果。
[x,t]=卵巢癌数据集;whosxT
名称大小字节类属性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);查看(网)
现在网络已准备好培训。样本自动分为培训,验证和测试集。培训集用于教导网络。只要网络继续改善验证集即可继续培训。测试集提供了一种独立的网络精度度量。
神经网络训练工具显示正在训练的网络和用于训练的算法。它还显示培训期间的培训状态,并以绿色突出显示停止培训的标准。
底部的按钮打开有用的绘图,可以在训练期间和训练后打开。算法名称和绘图按钮旁边的链接打开这些主题的文档。
[NET,TR] =火车(网,X,T);
要查看网络在培训期间的性能改进情况,请单击培训工具中的“性能”按钮,或使用plotperform.
作用
在平均平方误差方面测量性能,并以对数刻度显示。随着网络训练,它迅速下降。
显示每个培训、验证和测试集的性能。
PlotPerform(TR)
经过训练的神经网络现在可以使用我们从主数据集中划分的测试样本进行测试。测试数据没有以任何方式用于训练,因此提供了一个“样本外”数据集来测试网络。这提供了使用真实世界数据测试网络时的性能估计。
网络输出在0-1范围内。阈值分别获得输出以获得1和0的指示癌症或正常患者。
testx = x(:,tr.testind);testt = t(:,tr.testind);testy = net(testx);testclasses = yesty> 0.5
测试类=2x32逻辑阵列0 1 1 0 1 1 11 11 11 11 1 1 1 1 11 1 1 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 1 1 1 1 1 1 1 1 1
衡量神经网络对数据拟合程度的一个指标是混淆图。
困惑矩阵显示了正确和不正确的分类百分比。正确的分类是矩阵对角线上的绿色方块。红色方块表示不正确的分类。
如果网络准确,则红色方块中的百分比很小,表明少数错误分类。
如果网络不准确,那么您可以尝试培训更长的时间,或用更多隐藏的神经元培训网络。
绘图混乱(testT,testY)
以下是正确和不正确的分类的总体百分比。
[c,cm]=混淆(testT,testY);fprintf('百分比正确分类:%f %% \ n',100*(1-c));
百分比正确分类:90.625000%
fprintf('分类不正确的百分比:%f%%\n',100 * c);
百分比不正确的分类:9.375000%
另一个衡量神经网络如何拟合数据的衡量标准是接收器操作特征图。此图显示了假的正面和真正的阳性率如何与输出的阈值平均值不同0到1。
线越左越高,需要接受的误报越少,以获得较高的真阳性率。最好的分类器有一条线,从左下角到左上角,再到右上角,或者接近左上角。
1级表示癌症患者,2级表示正常患者。
Plotroc(Testt,Testy)
该示例演示了神经网络如何用作癌症检测的分类器。为了提高分类器性能,您还可以尝试使用主成分分析等技术来减少用于神经网络训练的数据的维度。
[1] T.P.Conrads等人,“卵巢检测的高分辨率血清蛋白质组学特征”,内分泌相关癌症,2004年11月,第163-178页。
[2]例如,百分之蛋白,等,“在血清中使用蛋白质组学模式以鉴定卵巢癌”,柳叶套,359(9306),2002,PP。572-577。