Vowpal Wabbit:低秩矩阵分解?

     2023-03-13     30

关键词:

【中文标题】Vowpal Wabbit:低秩矩阵分解?【英文标题】:Vowpal Wabbit: Low-rank matrix factorization? 【发布时间】:2016-12-26 17:08:05 【问题描述】:

我有一个非常基本的问题。我想做低秩矩阵分解,我正在查看有关该主题的Vowpal Wabbit documentation。我的问题是:

这两种方法有区别吗?(实施或其他方式)

$ vw --lrq ab5

$ vw -q ab --rank 5

这里,ab 是特征命名空间,5 是潜在因子维度。


可能的后续行动:

如果它们是等价的,--rank 是否也适用于高阶交互?

【问题讨论】:

【参考方案1】:

简短回答:

--rank--lrq 是两个独立且非常不同的 vowpal wabbit 中矩阵分解/分解的实现。

“矩阵分解”,有时也称为“矩阵分解”,是 ML 中的一个通用术语,有很多方法可以使用更简单的因子来近似矩阵(有时会丢失信息)。

尽管它们有一些相似之处,因为它们都试图捕捉两个特征子集之间最强的潜在交互,但它们在实现和生成的模型的质量上并不相同。他们的表现很大程度上取决于手头的问题。

更详细:

--rank 是 Jake Hofman 在 vw 中首次实现 MF。它的灵感来自SVD (Singular Value Decomposition) --lrq 几年后由 Paul Mineiro 实施。它的灵感来自libfm

在难以泛化的数据集上(例如,movielens 1M,其中用户每部电影最多有一个评分),--lrq 似乎表现更好。它似乎使用了更好的默认值,收敛速度更快,效率更高,并且生成了更小的磁盘模型。 --rank 可能在其他数据集上表现更好,因为每个用户/项目有更多示例可以从中进行概括。

您可以通过运行示例来判断这两种实现产生不同的结果。例如在test 目录下选择一个数据集并在其上运行两个算法:

vw --lrq aa3       test/train-sets/0080.dat

对比:

vw --rank 3 -q aa  test/train-sets/0080.dat

请随意添加:--holdout_off -c --passes 1000 以延长它们的运行时间,以便您比较两者的运行时间。

您会注意到,两者在每个示例中使用不同数量的特征(--lrq 更加简约,只会查看您明确告诉它的子集),收敛性和最终平均损失使用 @ 更好987654341@。如果您使用-f modelname 存储模型 - 您会注意到使用--lrq 会小得多,尤其是在大数据集上。

OTOH,如果您在源代码树中尝试像 test/train-sets/ml100k_small_train 这样的数据集,命名空间 u(用户)和 i(项目)之间的排名为 10,您将获得更好的损失--rank--lrq。这表明哪个更好取决于手头的数据集。

更高的互动(例如--cubic

关于你的第二个问题:--rank 不允许更高级别的交互。如果你尝试添加--cubic,你会得到一个错误:

vw (gd_mf.cc:139): cannot use triples in matrix factorization

但它将允许多个/额外的-q(二次)交互。

--lrq 不那么挑剔,因此您可以为其添加更高阶的交互选项。

更多区别:

通常,--lrq 更加不可知,并且独立于其他 vw 选项,而 --rank 使用自己的独立 SGD 代码并且不接受其他选项(例如 --normalized--adaptive) .此外,--rank 的内存要求更高。

同样,结果将取决于数据、其他选项和特定交互。

进一步阅读

--排名

--rank example in the wiki SVD on wikipedia

--lrq

--lrq demo in the source tree libfm (by Steffen Rendle) after which --lrq was designed 有更多参考资料。

【讨论】:

最后,有一位大众汽车人愿意分享一个答案:-) 那么,lrq 优化了一个应该与 fm 相似的目标函数,而 rank 优化了不同的目标函数? 是的,我相信--rank N 会迭代逼近SVD,其中只计算前 N 个对角线项。 感谢@arielf 的详细回答,非常感谢! 感谢@Kris 和@avocado。我注意到这个旧 Q 的主要原因是,当我回答一个新的相关 Q 时,它以 0 个答案出现在“相关”列中。我通常尝试用 vowpal-wabbit 标签回答 Q,当我觉得我知道答案时,情况并非总是如此。多年来,vw 已经发展到涵盖了许多我不太了解以提供帮助的算法。查看源代码会有所帮助,在小数据上添加--audit 选项可能是一个很好的说明。

Vowpal Wabbit 如何表示分类特征

】VowpalWabbit如何表示分类特征【英文标题】:VowpalWabbithowtorepresentcategoricalfeatures【发布时间】:2015-04-2219:57:57【问题描述】:我有以下所有分类变量的数据:classeducationincomesocial_standing1basiclowgood0lowhighV_good1highlownot_good0v_highhighgood... 查看详情

Vowpal Wabbit 的梯度提升

】VowpalWabbit的梯度提升【英文标题】:GradientboostingonVowpalWabbit【发布时间】:2015-07-1214:11:02【问题描述】:有没有办法使用VowpalWabbit对回归使用梯度提升?我使用VowpalWabbit附带的各种有用的技术。我想尝试梯度提升,但我找不到... 查看详情

vowpal-wabbit:使用多次通过、保持和保持期来避免过度拟合?

】vowpal-wabbit:使用多次通过、保持和保持期来避免过度拟合?【英文标题】:vowpal-wabbit:useofmultiplepasses,holdout,&holdout-periodtoavoidoverfitting?【发布时间】:2017-08-2920:01:27【问题描述】:我想使用很棒的vowpalwabbittool使用以下命令... 查看详情

Vowpal Wabbit 多类线性分类

】VowpalWabbit多类线性分类【英文标题】:VowpalWabbitMulticlassLinearClassification【发布时间】:2016-09-2103:19:40【问题描述】:是否可以使用VowpalWabbit库训练多类(多项式)线性分类模型?我尝试将--oaa与--loss_function平方一起使用,但似... 查看详情

Vowpal Wabbit:不平衡的类

】VowpalWabbit:不平衡的类【英文标题】:VowpalWabbit:unbalancedclasses【发布时间】:2016-02-0812:36:24【问题描述】:我想使用VowpalWabbit执行逻辑回归。如何处理不平衡的类(例如1000/50000)?我知道我可以使用重要性加权,但我不确定... 查看详情

使用 Vowpal Wabbit 时计算 AUC

】使用VowpalWabbit时计算AUC【英文标题】:CalculatingAUCwhenusingVowpalWabbit【发布时间】:2014-08-0712:10:39【问题描述】:有没有在VowpalWabbit中计算AUC?我使用VowpalWabbit的原因之一是数据文件的大小。我可以使用VowpalWabbit的输出计算VowpalW... 查看详情

Vowpal Wabbit - 精确召回 f 测量

】VowpalWabbit-精确召回f测量【英文标题】:VowpalWabbit-precisionrecallf-measure【发布时间】:2015-08-1108:16:33【问题描述】:您通常如何从VowpalWabbit中针对分类问题创建的模型获得准确率、召回率和f-measure?是否有任何可用的脚本或程序... 查看详情

使用 Vowpal wabbit 的上下文强盗

】使用Vowpalwabbit的上下文强盗【英文标题】:ContextualBanditusingVowpalwabbit【发布时间】:2015-08-0620:42:25【问题描述】:在这种情况下,输入之一是选择手臂/动作的概率,但我们如何找到该概率?找到这个概率本身不是一项艰巨的... 查看详情

Vowpal Wabbit中逻辑回归的正确性?

】VowpalWabbit中逻辑回归的正确性?【英文标题】:CorrectnessoflogisticregressioninVowpalWabbit?【发布时间】:2014-09-0910:21:17【问题描述】:我已经开始使用VowpalWabbit进行逻辑回归,但是我无法重现它给出的结果。也许它确实有一些未记... 查看详情

如何将 Vowpal Wabbit 逻辑预测转换为概率

】如何将VowpalWabbit逻辑预测转换为概率【英文标题】:HowtoconvertVowpalWabbitlogisticpredictionstoprobabilities【发布时间】:2015-09-2902:01:29【问题描述】:我给了vowpalwabbit一个带有两个标签的数据集,并用它进行了逻辑回归。问题是,它... 查看详情

在守护进程模式下从 Vowpal Wabbit 获取原始预测

】在守护进程模式下从VowpalWabbit获取原始预测【英文标题】:GetrawpredictionsfromVowpalWabbitindaemonmode【发布时间】:2014-10-0613:54:59【问题描述】:我正在使用以下命令以守护程序模式启动VowpalWabbit:vw--loss_functionhinge--ect250--quiet--passes... 查看详情

在交叉验证方面需要一些关于 Vowpal Wabbit 的指示

】在交叉验证方面需要一些关于VowpalWabbit的指示【英文标题】:NeedsomepointersonVowpalWabbitwithrespecttocrossvalidation【发布时间】:2013-09-2108:21:07【问题描述】:我的目标是在参数空间中对各种VW模型进行网格搜索(尝试不同的损失函数... 查看详情

使用 Vowpal Wabbit 获得未校准的概率输出,广告转化预测

】使用VowpalWabbit获得未校准的概率输出,广告转化预测【英文标题】:GettinguncalibratedprobabilityoutputswithVowpalWabbit,ad-conversionprediction【发布时间】:2016-10-0817:17:51【问题描述】:我正在尝试使用VowpalWabbit来预测广告展示的转化率,... 查看详情

由于 vowpal wabbit 对 boost 库的依赖而导致的错误

】由于vowpalwabbit对boost库的依赖而导致的错误【英文标题】:Errorsduetovowpalwabbit\'sdependenciesonboostlibrary【发布时间】:2012-07-1108:48:55【问题描述】:我正在努力安装vowpalwobbit,但当我运行make文件时它失败了,抛出:cdlibrary;make;cd..g... 查看详情

Vowpal Wabbit 不预测二进制值,可能是过度训练?

】VowpalWabbit不预测二进制值,可能是过度训练?【英文标题】:VowpalWabbitnotpredictingbinaryvalues,maybeovertraining?【发布时间】:2016-11-2903:50:00【问题描述】:我正在尝试使用VowpalWabbit进行二进制分类,即给定特征值vw会将其分类为1或0... 查看详情

Vowpal Wabbit 中的纠错锦标赛 (ect) 多类分类

】VowpalWabbit中的纠错锦标赛(ect)多类分类【英文标题】:ErrorCorrectingTournaments(ect)MultiClassClassificationinVowpalWabbit【发布时间】:2014-08-2718:05:29【问题描述】:我试图通过描述ECT算法的thispaper来了解它,但无法从中得到太多。我知道... 查看详情

Vowpal Wabbit reverse_hash 选项产生空输出,但为啥呢?

】VowpalWabbitreverse_hash选项产生空输出,但为啥呢?【英文标题】:VowpalWabbitinverted_hashoptionproducesemptyoutput,butwhy?VowpalWabbitreverse_hash选项产生空输出,但为什么呢?【发布时间】:2014-08-1716:44:43【问题描述】:我正在尝试使用倒置... 查看详情

推荐系统(recommendersystems):预测电影评分--构造推荐系统的一种方法:低秩矩阵分解(lowrankmatrixfactorization)

...中的predictedratings矩阵可以分解成X与ΘT的乘积,这个叫做低秩矩阵分解。我们先学习出product的特征参数向量,在实际应用中这些学习出来的参数向量可能比较难以理解,也很难可视化出来,但是它们是做为区分不同电影的特征怎... 查看详情