24小时热门版块排行榜    

查看: 1048  |  回复: 6
当前主题已经存档。

yalefield

金虫 (文坛精英)

老汉一枚

[交流] 再谈QSAR模型验证

对于帖子:QSAR模型的验证
http://www.muchong.com/bbs/viewthread.php?tid=429473
以及老汉的《关于新药发现(Drug Discovery)》
http://www.muchong.com/bbs/viewthread.php?tid=429702

这里再补充一些,但是有些符号是来自不同的资源,可能不一致。
(1)如何选择训练集和测试集数据?

一般需要将样本分成独立的三部分:

训练集(train set)用来估计模型
验证集(validation set) 用来确定网络结构或者控制模型复杂程度的参数
测试集(test set)检验最终选择最优的模型的性能如何

一个典型的划分是训练集占总样本的50%,而其它各占25%,三部分都是从样本中随机抽取。样本少的时候,上面的划分就不合适了。

(2) K折交叉验证法

常用的是留少部分做测试集,然后对其余N个样本采用K折交叉验证法。就是将样本打乱,然后均匀分成K份,轮流选择其中K-1份训练,剩余的一份做验证,计算预测误差平方和,最后把K次的预测误差平方和再做平均作为选择最优模型结构的依据。特别的K取N,就是留一法(leave one out)。

研究表明,5折或者10折交叉验证可能倾向于产生较大的预测误差,而留一法(N折交叉验证)则倾向于较小的预测误差但却可能有较大的方差。

对于留一法来说,通用交叉验证(Generalized Cross-validation,GCV)是比较好的。关于GCV的详情,请参考有关书籍资料。

(3) 最优停止法

最优停止法参看《神经网络结构设计的理论与方法》中相关的内容,书后有该方法的程序

(4)
引用回帖:
留20% 交叉验证,得到五个交叉验证Q2值。
若再作外部验证的话,直接用Q2 最大的4/5的训练集建的模型进行预测就行了吗?
那样就不能保证全部的训练集都来建模了呀?
可以这样吗?

原则问题需要澄清:每个模型都是有其“内在质量”。

即使是Q2很差,只是说明该模型对留下来的样本预测很差,而模型本身的“内在质量”其实并不单单由Q2来衡量(或者说,并不仅仅是由留下来的样本来衡量的)。

然而,我们有什么办法来衡量模型的“内在质量”?,因此只好用交叉验证的办法。通俗地说,你能不能当三好学生,不是由你内在品质决定的,而是由你周围的“群众(老师、同学)”(根据你的表现)来判定的。如果用全部的训练组来建模,那么如何检验模型的“表现”呢?这就如同你独自一个人在孤岛上,怎么评三好学生呢?

因为模型参数是根据训练集估计的,泛化能力(即预测能力)是估计模型在训练集以外的样本的预测能力。只要选择足够复杂的结构,神经网络可以任意地降低训练误差,但泛化能力很差。泛化能力的解决关键在于选择合适的模型评价函数,合适的模型评价函数能够反映模型偏差和方差的折衷。常用的R2拟合优度不是一个好的评价函数,更好的是Aikaike信息标准(Aikaike’s Information Criterion, AIC)和Bayesian信息标准(Bayesian’s Information Criterion, BIC)。

AIC=-2log(L)+2d
BIC=-2log(L)+dlog(N)

其中,L是似然密度(Likelyhood),log(L)是对数似然密度,d是有效参数个数,N为训练样本数。

对于神经网络,有效参数个数为:
d=sum ai/(ai+c)

其中,ai是Hessian矩阵(误差平方和目标函数对参数二次导数)的特征值。

另一个办法就是交叉验证。交叉验证适用于有效参数难以定义的模型,虽然需要更多的计算量,但比较稳健。

交叉验证就是用不断变换留下来的样本,来考验那些建立在(n – m)个样本基础上的模型(假设留m个)。那种办法能得到好的Q2,就“记录”下来备用。

可问题是,留多少、留哪些来作为“群众”?

看起来很简单,但是,你可以简单地推算:
如果训练组有100个样本,而你打算用留20法(n=100, m=20),那么,要建立多少模型呢?(或者说,有多少种留法呢?)
这是一个简单的排列组合问题。
20个位置。
第一个位置有100种可能(可以留#1, #2, …, #100中的任何一个);
第二个位置有99种可能(除了已经留在第一个位置的,其他99个都有可能);
依此类推,第i个位置有(100 – i + 1) 种可能;
最终答案是:100x99x98x97x96x…x81=天文数字!
即使是留2法,也要有100x99种模型。
当然,留1法,有100种模型。

这个问题,属于优化算法。目前比较普遍的是用遗传算法来进行“群众”选择,用比较少的选择来找到“表现比较优(即Q2较大)”的模型。

至于你所说的“留20%交叉验证,得到五个交叉验证Q2值”,则是一种5折交叉验证做法。试回答两个问题:(1)每次选哪20%?(2)被选中留下的20%样本的活性,是不是“均匀地”散布于那些用于建模的样本活性区间?(根据活性来选,应该活性高、中、低的,都选到)。

更多内容待续。
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yalefield

金虫 (文坛精英)

老汉一枚

(5)数据归一化问题

数据归一化属于数据的预处理。因为sigmoid函数根据不同的变换,输出在0到1或者-1到1之间,因此如果不做归一,就会出现样本输出超出神经网络输出的范围。选择最大的值max和最小值min,做如下变换:

x=(x-min)/(max-min)

这就是归一化。

需要注意的是,max和min不应该直接选择为x中的最大值和最小值。原因是样本只是有限的观测,有可能还有更大或者更小的观测,因此合适的选择应该选取比max大一些和min比min小一些的值。

归一化并不总是合适的预处理,因为它不能使分布不对称的样本变得更对称一些,标准化要好一些。另外,有时候主成分分析也能起到降维的作用。

(6)关于目标训练误差的设置以及LM训练算法

关于目标训练的误差值,我觉得不应该人为地设定误差平方和目标,设定太小的目标会出现过度拟合。倒是可以设定本次权值与上次权值的平方和距离除以所有的权值数目,这个指标反映了收敛性。然后多算几次,以避免局部收敛,保留验证集误差平方和最小的权值作为最终的权值。

(7)神经元数量的选择问题

神经元数量的选择有很多经验法则,但都没有理论的依据,有时好用有时好用。建议采用岭回归方法,选择较多的神经元数目。有人可能担心,一般神经元数目都是宁缺勿滥,这样行吗?即使选择了过多的数目,通过选择惩罚系数c,它会使过多的权值收缩到0。问题是如何选择惩罚系数,方法是根据交叉验证法,选择在验证集预测误差平方和最小的惩罚系数。

(8)用遗传算法优化神经网络

遗传算法是一个通用的优化算法,通常是在面对一个复杂的问题,没有特定的高效的优化算法可用的时候才用它。神经网络本来就慢,再用遗传算法更是慢上加慢。采用岭回归办法,遗传算法根本没有必要。遗传算法并不是化腐朽为神奇的万能灵药。技术的使用效果不取决于技术的高级程度和复杂程度,而取决于各种技术和问题的针对性和紧密性。
2楼2007-04-12 02:00:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

veradpp

木虫 (正式写手)

我在做五折交叉验证的时候是把数据随机分成五份的,并没有考虑验证集活性的分布问题。分别用bp建立了五个不同的模型,五个模型的神经元个数和训练次数都不相同,那也就是说五折验证的目的就是挑选出一个比较好的网络结构来作预测,可以这样说吗? 文献中提到选择模型的标准是Q2大于0.5,R2大于0.6 ,我只要用满足这个条件的模型来预测是不是就可以了?

我对活性数据也进行了数据归一化,预测完之后是不是得求得原始值之后再计算R2?
3楼2007-04-12 09:29:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yalefield

金虫 (文坛精英)

老汉一枚

训练组的活性应该考虑。
(1)均匀选取,即高、中、低都有自己的代表
(2)有时故意只选高的(或只选低的),可以让模型有偏好(Bias)

我对当前的单一模型预测一直持有异议。
我认为应该选择多个模型共同(不是同时)进行预测。
这就像请多个专家会诊。

而最终结果是各个专家/模型的综合。线性组合是最简单的,也可以采用不同权重来调整。

如果5个模型,
有3个用的是高活性训练组,预测也将偏好高活性。
有2个用的是低活性训练组,预测也将偏好低活性。
那么,
w1 + w2 + ...+w5 = 1
令:
w1=w2=w3=0.3
w4=w5=0.05
于是
FinalPre = 0.3 pre1 + 0.3 pre2 + 0.3 pre3 + 0.05 pre4 + 0.05 pre5
(仅供参考)

至于选择模型的标准,主要看模型质量的分布,一般选择“中等偏上”的,而不选“最好的”,为的是避免偏好。但如果故意要引入偏好,可以自己进行调整。

80年代,一般要求Q2, R2大于0.9;
90年代,一般要求Q2, R2大于0.75;
现在,呵呵,一般要求Q2, R2大于0.6!

计算R2,是不是需要“复原”之后,您可以自己试试。
4楼2007-04-12 10:55:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

veradpp

木虫 (正式写手)

再次谢谢你的指导,

受益匪浅
5楼2007-04-12 17:51:22
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

电泳

木虫 (著名写手)

非常好,可是为什么不能给你加分呢
心中有路,何惧海角天涯。
6楼2007-09-08 17:25:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yalefield 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见