【问题标题】:How to think about weights in Myrrix如何考虑 Myrrix 中的权重
【发布时间】:2013-09-16 06:37:26
【问题描述】:

我对 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 差别很大),但当顺序甚至不是我的预期时,这显然是没有意义的。

我如何解释这些结果以及我应该如何考虑重量参数?我们正在与一个大客户在紧迫的期限内合作,如果有任何指点,我们将不胜感激。

【问题讨论】:

    标签: machine-learning collaborative-filtering myrrix


    【解决方案1】:

    很难根据小型综合数据集进行判断。我认为最大的因素将是这里的参数——特征的数量是多少?拉姆达?我希望 features = 2 这里。如果它更高,我认为您很快就会过度拟合,结果主要是在完美解释用户 11 不与 222 和 333 交互之后留下的噪音。

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

    【讨论】:

    • 好的。我使用的是默认参数。我用-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 一致,也没有。与其他项目相同。此处的拉锯,与其说是强弱之间的拉锯,不如说是强拉和弱拉的副作用之间的拉锯。您可以将权重解释为未将现有交互评分为“1”的惩罚。惩罚是 1 与预测值之差的平方乘以权重。
    • 如果您熟悉平方误差损失函数会更有意义,该函数在统计数据中随处可见。您尝试构建一个模型,该模型可以准确地返回您的输入。它不能完全正确,你在复制一些输入的同时对其他输入做出更大的错误。您最小化所有输入的总平方误差。权重作为错误权重出现。上述某些输入的错误比其他输入的“代价”高出 1000 倍。
    猜你喜欢
    • 1970-01-01
    • 2021-12-29
    • 2021-09-26
    • 2015-05-21
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多