解释Vowpal Wabbit结果:为什么有些行附加"h"?

jar*_*rfa 5 vowpalwabbit

以下是培训我的大众汽车模型​​的日志的一部分.

为什么这些行中的一些后跟h?您会注意到最后的摘要中的"平均损失"行是正确的.我不确定这意味着什么,或者我是否应该关心.

...  
average    since         example     example  current  current  current    
loss       last          counter      weight    label  predict features    
1.000000   1.000000            1         1.0  -1.0000   0.0000       15    
0.500000   0.000000            2         2.0   1.0000   1.0000       15    
1.250000   2.000000            4         4.0  -1.0000   1.0000        9    
1.167489   1.084979            8         8.0  -1.0000   1.0000       29    
1.291439   1.415389           16        16.0   1.0000   1.0000       45    
1.096302   0.901166           32        32.0  -1.0000  -1.0000       21    
1.299807   1.503312           64        64.0  -1.0000   1.0000        7    
1.413753   1.527699          128       128.0  -1.0000   1.0000       11    
1.459430   1.505107          256       256.0  -1.0000   1.0000       47    
1.322658   1.185886          512       512.0  -1.0000  -1.0000       59    
1.193357   1.064056         1024      1024.0  -1.0000   1.0000       69    
1.145822   1.098288         2048      2048.0  -1.0000  -1.0000        5    
1.187072   1.228322         4096      4096.0  -1.0000  -1.0000        9    
1.093551   1.000031         8192      8192.0  -1.0000  -1.0000       67    
1.041445   0.989338        16384     16384.0  -1.0000  -0.6838       29    
1.107593   1.173741        32768     32768.0   1.0000  -1.0000        5    
1.147313   1.187034        65536     65536.0  -1.0000   1.0000        7    
1.078471   1.009628       131072    131072.0  -1.0000  -1.0000       73    
1.004700   1.004700       262144    262144.0  -1.0000   1.0000       41 h  
0.918594   0.832488       524288    524288.0  -1.0000  -1.0000        7 h  
0.868978   0.819363      1048576   1048576.0  -1.0000  -1.0000       21 h  

finished run  
number of examples per pass = 152064  
passes used = 10  
weighted example sum = 1.52064e+06  
weighted label sum = -854360  
average loss = 0.809741 h  
...
Run Code Online (Sandbox Code Playgroud)

谢谢

tru*_*ruf 6

大众使用文件中的样本训练模型并打印出平均列车损失值(没有'h'后缀).如果--passes n需要对文件进行多次传递(指定)以训练模型,则保留每个第k个示例(可以更改--holdout_period k)以进行测试,不要将它们用于训练.在第二次和更多次通过时,它估计这些测试示例的损失而不是训练示例并用'h'打印出损失值.如果你得到非常小的值而没有'h'而且更大的值与'h'之后可能意味着你的模型被过度拟合.如果已经确保您的模型不会过度拟合并希望在整个数据集上使用多次传递进行训练,则应指定--holdout_off.否则你将丢失10%的数据(--holdout_period默认为10).


sds*_*sds 5

h是打印时

(!all.holdout_set_off && all.current_pass >= 1)
Run Code Online (Sandbox Code Playgroud)

为true(请参阅输出grep -nH -e '\<h\\n' vowpalwabbit/*.cc并查看代码).

--holdout_off命令行参数中搜索:

--holdout_off禁用多次通过学习的保持验证.默认情况下,只要 - 通过> 1,VW就会保留一个(可控的默认值= 1/10)子集,并在打印输出时报告测试丢失.这用于防止多次通过学习中的过度拟合.在生产线末尾打印一个额外的h,以指定报告的损失是保持验证损失,而不是累进验证损失.