Cross Validation
-
什么是Cross Validation?
假设目前已有的数据集全集为D,从中选出一部分作为交叉验证集。
其余集作为训练集,将已有的模型 A 1 A_1 A1在训练集上训练,在验证集上得到 E r r o r 1 Error_1 Error1,再轮换选出另一部分作为验证集,重复。得到 E ( A 1 ) ‾ \overline{E(A_1)} E(A1),对模型 A 2 A_2 A2同样操作,得到 E ( A 2 ) ‾ \overline{E(A_2)} E(A2),最终选出 E ‾ \overline{E} E最小的模型A,在全集上训练,得到最终的矩 g 。
-
为什么需要Cross Validation?
我们已经有了很多的机器学习模型,linear regression,PLA,Pocket,Logistic,同时每种模型又有各种超参数,是否加regularization,learning-rate,Logistic的维数,从中如何选择合适的模型成了重点,因此需要一种评判优劣的标准,如果都在全集上训练,测试,可能无法做到泛化。而留出一部分未被污染的数据作为测试,更客观。
-
如何使用Cross Validation?
- 将全集分为几部分,常常分为5或10.
- 选出一部分作为验证集,取一个模型在其余数据上训练。
- 在验证集上得到 E r r o r 1 Error_1 Error1
- 轮流去其余部分作为验证集,重复 b,c
- 得到对应于该模型的 E ( A i ) ‾ = 1 N ∑ n = 1 N E r r o r n \overline {E(A_i)}=\frac{1}{N}\sum_{n=1}^N Error_n E(Ai)=N1∑n=1NErrorn
- 对于其余模型,重复a, b, c, d, e
- 比较所有模型的 E ( A ) ‾ \overline {E(A)} E(A) 选出最小的作为最终模型 A ∗ A^* A∗.
- 在全集上训练 A ∗ A^* A∗,得到合适的参数。确定最终的矩 g .