微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

通过效用矩阵SVD训练推荐系统时,如何预测测试集?

如何解决通过效用矩阵SVD训练推荐系统时,如何预测测试集?

这听起来可能很愚蠢,但我没有得到效用矩阵来构建推荐系统的工作流程:X [i,j] =第i个用户喜欢第j个对象。有关实际问题,请参阅blog of Simon Funk

formula

假设仅从训练集中创建的 X 一个稀疏矩阵,其条目主要是未知/缺失。通过某种方法,我们设法找到 U V ,它们将 X 的已知条目与 UV的相应条目之间的差异最小化。现在该对测试集进行预测了。

  • 如果 X 的未知条目中已包含一对(用户,对象),我们是否应该信任 UV 相同位置的值?我认为这是效用矩阵和SVD的全部要点,直到Simon写了很多关于“ SVD算法往往使一堆稀疏观看的电影或用户混乱”,然后我迷路了。

2000万个免费参数对于训练集来说仍然是很多 仅有1亿个示例。虽然这似乎是一个好主意 只需忽略隐式评分矩阵中的所有空白, 事实是我们对其中的东西有一些期望,我们可以 利用它对我们有利。照原样,这种修改后的SVD算法倾向于 弄乱了稀疏观看的电影或用户。举个例子 假设您有一个只给一部电影评分的用户,例如American 美丽。假设他们给它一个2而平均值是 4.5),并且其偏移量仅为-1,所以我们 甚至在使用SVD之前,都希望他们将其评级为3.5。所以 给SVD的误差是-1.5(真实等级比1.5小1.5 我们期盼)。现在,假设当前的电影端功能基于 在更广泛的背景下,正在培训以衡量行动的数量,以及 假设这只是American Beauty的微不足道的0.01(这意味着 略高于平均水平)。回想一下,SVD正在尝试优化 我们的预测,最终可以通过设置用户的 动作偏好偏高到-150.0。即,天真的算法 查看该用户偏好的一个唯一示例, 到目前为止,它只了解一个唯一的功能 (动作),并确定我们的用户讨厌这样的动作电影: 即使是《 American Beauty》中最微小的动作也让它很烂 比其他方式要多。对于我们拥有的用户来说,这不是问题 大量的观察结果,因为那些随机的表观相关性 平均,真实趋势占主导。

  • 如果用户已包含在训练集中,但对象未包含(或相反),我们是否可以使用培训集中的用户?还是需要Simon博客中的 BetterMean ?更重要的是,我们应该使用 X UV 来计算(原始或混合)平均值吗?

但是,即使这样也不像看起来那么简单。您会认为电影的平均评分只是……它的平均评分! O,那天奥卡姆(Occam)的剃刀有点生锈。举一个极端的例子,麻烦的是,如果一部电影只出现在训练集中一次,比如评级为1。它的平均评级为1吗?可能不会!实际上,您可以将单个观察视为从您想要的平均值的真实概率分布中提取内容...,并且您可以将真实平均本身视为从平均值的概率分布中得出-本质上是平均电影收视率的直方图。如果我们假设两个分布都是高斯分布,那么根据我的伪劣数学,实际最佳猜测均值应该是观察到的均值和先验均值之间的线性混合,混合比等于方差比。也就是说:如果Ra和Va是所有电影平均收视率的均值和方差(标准差的平方)(这是您在观察到任何实际收视率之前对新电影的平均收视率的先前期望),而Vb是各个电影收视率的平均方差(这告诉您每个新观察值对真实均值的指示性,例如,如果平均方差低,则收视率往往接近电影的真实均值,而如果平均方差高, ,那么评分往往会更加随机且指示性较低),然后:

BogusMean = sum(Observedratings)/ count(Observedratings)

K = Vb / Va

BetterMean = [GlobalAverage * K + sum(Observedratings)] / [K + count(Observedratings)]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。