我正在尝试使用VW执行迭代测试。
理想情况下,我可以:
我发现有一个人也试图这样做(how to retrain the model for sequence of files in vowpal wabbit),但是当我运行我的代码并尝试使用其他数据进行重新训练时,它似乎覆盖了旧的数据,而不是添加到其中。
下面是我使用的代码的基本大纲:
vw initial_data.txt -b 26 --learning_rate 1.5 --passes 10 --
probabilities --loss_function=logistic --oaa 80 --save_resume --kill_cache
--cache_file a.cache -f initial_model.vw vw new_data.txt -b 26 --learning_rate 1.5 --
passes 10 -i initial_model.vw --probabilities --loss_function=logistic --
oaa 80 --save_resume --kill_cache --cache_file a.cache -f new_model.vw我知道这还不足以重现我正在做的事情,但我只想知道我的论点是否有任何问题,理论上是否应该这样做。当我使用经过再训练的模型进行预测时,它只对包含在新数据中的测试用例是准确的,而不是在原始培训文件中涵盖的任何内容。帮助感激!
发布于 2019-07-18 06:45:34
我可以看到问题中的论点有两个潜在的问题。如果你真的打算这样使用它们,你很清楚你在做什么,但它们看起来有点可疑。
1)每当您运行具有多次传递相同数据(--passes <n>)的--passes <n>时,vw隐式切换到保持模式,每10个示例中就有一个保持模式。提出的例子仅用于误差估计,而不是用于学习避免过度拟合.如果这是你想要做的,那么没问题,但如果你不想拿出任何你的例子,你应该使用选项--holdout_off,并注意到过度拟合的机会增加了。
2)初始学习率(--learning_rate 1.5)较高,增加了过度拟合的机会.如果你使用它是因为你的训练损失较少,这是错误的做法。在ML中,目标不是最小化训练损失,而是泛化损失。
另外:在第二批设置初始学习率似乎与--save_resume选项相矛盾。--save_resume的目标是开始一个新的批,每个特性的学习率(AdaGrad风格)都很低(在模型中已经腐烂了)。使学习速度在开始时跳升可能会使第二批中的第一个示例比第一批中的所有腐朽特征更加重要。
提示:通过将进度输出输入绘图实用程序vw-convergence,您可以感觉到自己做得有多好
vw -P 1.1 ... data.txt 2>&1 | vw-convergence(注:大众-融合需要R)
https://stackoverflow.com/questions/56364663
复制相似问题