模型选择
模型选择的因素
演算法选方面选择:PLA, pocket, linear regression, logistic regression
iteration的次数:100,1000
每步大小: 1,0.01
特征transform: linear线性的、quadratic二次的,poly-10 10次多项式,legendre-poly-10 10次垂直多项式。
regulation选什么: L2 regularizeer L2范数,L1范数,对称范数。。。
规范化的权重λ 0,0.01,1
验证资料的选择 validation set Dval
Ein与Eval
如果用训练样本做验证,其实是被污染了的资料,因为你在训练模型的时候已经使用了这些资料
如果使用测试样本做验证,那就不好了,因为这些测试样本给你的话,以后判定的指标就不准了呀。
所以可以在训练之前拿出一部分样本做测试。这些样本不参与训练;
数据分块的办法
所以我们现在把数据分成了两部分,k的那部分用来做验证,也就是计算Eval,N-k那部分用来训练模型。而在我们选择模型的时候,就不需要计算Ein了,而是计算Eval,以此来估计当前模型的Eout。
我们的finite hoffding不等式来计算Eout
选出合适的Gm之后还要用所有的资料重新来一次训练。
k的选择
有当test_data很小,train_data接近D时,才差不多。
一般情况下,我们的test_data选取总数据的20%.即N/5 .
留1法做交叉验证
留一法
留一个作为test_data,其余都作为train_data.循环N次,再把N个error取平均.
cross validation: 交叉验证指的是同一笔资料有时候当验证有时候当训练样本,最后取平均。
该方法理论上很好,但是实际上,并不常用.一般再数据量很小的时候用.
缺点有:
1.可能计算量很大
2.稳定性不是很好,因为每次仅仅留一个点作为test_data
k-fold 交叉验证
一般K取10. 也有取5的.k越大,越精确.但是运算量大.
总结
- 交叉验证其实对结果还是有一些乐观成分.
- 只要计算量允许,就用10折交叉验证,10折效果一般比5折好.
- cross validation 比single validation(普通验证法) 好,只要计算量允许,一定要用cross validation
其他资料
[验证法:如何选择模型,参数等 - 丁磊_ml的博客 - 博客频道 - CSDN.NET]
(http://blog.csdn.net/mosbest/article/details/52191916)