Machine learning 如何看待Myrrix中的重量

Machine learning 如何看待Myrrix中的重量,machine-learning,collaborative-filtering,myrrix,Machine Learning,Collaborative Filtering,Myrrix,我对Myrrix有以下输入: 11, 101, 1 11, 102, 1 11, 103, 1 11, 104, 1000 11, 105, 1000 11, 106, 1000 12, 101, 1 12, 102, 1 12, 103, 1 12, 222, 1 13, 104, 1000 13, 105, 1000 13, 106, 1000 13, 333, 1000 我正在寻找项目推荐给用户11。预期将首先推荐项目333(因为用户13和项目104、105、106的权重较高) 以下

我对Myrrix有以下输入:

11, 101, 1
11, 102, 1
11, 103, 1
11, 104, 1000
11, 105, 1000
11, 106, 1000

12, 101, 1
12, 102, 1
12, 103, 1
12, 222, 1

13, 104, 1000
13, 105, 1000
13, 106, 1000
13, 333, 1000
我正在寻找项目推荐给用户11。预期将首先推荐项目333(因为用户13和项目104、105、106的权重较高)

以下是Myrrix的推荐结果:

11, 222, 0.04709
11, 333, 0.0334058
请注意,建议项目222的强度为0.047,但项目333的强度仅为0.033,与预期结果相反

我也曾期望强度的差异会更大(因为1000和1是如此不同),但显然,当顺序甚至不是我所期望的时,这是没有意义的


我如何解释这些结果?我应该如何考虑权重参数?我们正在与一个大客户合作,时间紧迫,如果有任何建议,我们将不胜感激。

很难根据一个小的合成数据集来判断。我认为最大的因素将是这里的参数——特性的#是什么?兰姆达?我希望这里的features=2。如果它更高,我认为你很快就过适应了这个,结果大部分是因为它完美地解释了用户11没有与222和333交互后留下的噪音


这些值非常低,这表明这两种结果都不太可能,因此它们的顺序可能比任何东西都更具噪音性。如果从另一个随机起点重建模型,是否会看到不同的结果?

OK。我使用的是默认参数。我已经用
-Dmodel.features=2运行了几次相同的示例,我得到了333和222的不同值,现在波动非常大:(.0800111.0614549),(.195253.0825095),(.170418.0889612),(.117045.0754171),(.00336292.00375809)。在大多数情况下,333得到了更高的分数(上一个例子除外),因此这肯定是一个进步。你认为我可以通过调整lambda参数来稳定结果吗?Myrrix是否可以用于这样的小数据集(用于演示目的)?是的,您可以尝试将lambda增加到0.1甚至1。在一个很小的合成数据集上,我认为它对初始条件非常敏感,直到被正则化参数压倒。你可以将它用于微小的数据集,但它肯定是为数百万人设计的。通过增加lambda,我可以得到相当一致的结果。走到了极端,,您可以运行更多的迭代,并大量增加lambda,使分数稳定在5%左右:
ava-Dmodel.lambda=10-Dmodel.als.iterations.convergenceThreshold=0.000001-Dmodel.iterations.max=1000-Dmodel.features=2-jar myrrix…
我想直觉是,模型在解释为什么13:333之间摇摆不定存在,但11:333不存在。你有“有力”的证据表明它与104/105/106相符,也与104/105/106不相符。另一项也一样。这里的拔河与其说是在强大的力量与弱小的力量之间,不如说是在强大拔河与弱小拔河的副作用之间。您可以将权重解释为未将现有交互评分为“1”的惩罚。惩罚是1和预测值之差的平方,乘以权重。如果你熟悉平方误差损失函数,它会更有意义,它在统计中随处可见。您尝试构建一个模型,该模型将准确地返回您的输入。它不能精确地复制一些输入,而在其他输入上产生更大的错误。您可以最小化所有输入的总平方误差。权重作为误差的权重出现在图片中。上述某些输入的错误比其他输入的“成本”高1000倍。