Vowpal Wabbit中的普通最小二乘回归

6
有人成功在Vowpal Wabbit中运行普通最小二乘回归吗?我正在尝试确认它是否会返回与精确解相同的答案,即选择a使得||y - X a||_2 + ||Ra||_2最小(其中R是正则化),我想得到解析答案a = (X^T X + R^T R)^(-1) X^T y。在numpy python中,执行这种类型的回归只需要大约5行代码。
VW的文档表明它可以做到这一点(可能是“平方”损失函数),但到目前为止,我无法让它接近匹配python的结果。因为平方是默认的损失函数,所以我只是调用:
$ vw-varinfo input.txt

输入文件input.txt的每一行内容如下:

1.4 | 0:3.4 1:-1.2 2:4.0  .... etc

我在VW调用中需要添加其他参数吗?我无法理解(相当简略的)文档。


这里的问题不太清楚。您能否提供更多信息,解释一下您期望得到什么,与您实际得到的有何不同? - Spaceghost
1
请记住,vw是一种在线算法,它仅针对每个示例轻微更新模型的权重(OLS系数),并且永远不会回退或无序。如果您想获得类似于批处理算法的性能,特别是当示例数量不比特征数量大得多时,您可能需要在输入上运行多次直到收敛(例如 -c --passes 100)。 - arielf
"--loss_function classic" 将提供普通的最小二乘法。"--loss_function squared" 通常表现更好,因为它具有“在线重要性权重感知更新”(参见:http://arxiv.org/abs/1011.1576)。 - Pake Beet
1个回答

5

我认为您应该使用以下语法(vowpal wabbit版本7.3.1):

vw -d input.txt -f linear_model -c --passes 50 --holdout_off --loss_function squared --invert_hash model_readable.txt

这个语法将指导VW读取您的input.txt文件,将模型记录和缓存(对于多次通过收敛是必要的)写入磁盘,并使用平方损失函数进行回归拟合。此外,它最终会将模型系数以可读的方式写入一个名为model_readable.txt的文件中。
--holdout_off选项是最近新增的,目的是抑制样本外自动损失计算(如果您使用早期版本,则必须将其删除)。
基本上,基于随机梯度下降的回归分析只有在不应用正则化且通过数目很高时(我建议50或更多,并随机洗牌输入文件行可以帮助算法更好地收敛)才会提供类似于精确解的系数向量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接