0

我使用矩阵分解作为基于用户点击行为记录的推荐系统算法。我尝试2点矩阵因式分解方法:我的方法检测矩阵分解中的过拟合是否正确?

第一种是基本SVD,其预测为用户因子矢量的只是产品ù和项目因子:R = ü *

我使用的第二个是带偏差分量的SVD。

R = ü * + b_u + b_i

其中b_ub_i表示用户和项目的偏好倾向。

我使用的一个模型的性能非常低,另一个是合理的。我真的不明白为什么后者表现更差,我怀疑它是否过度配合。

我使用搜索过滤方法来检测过度拟合,发现学习曲线是一个好方法。但是,x轴是训练集的大小,y轴是精度。这让我很困惑。我怎样才能改变训练集的大小?从数据集中挑出一些记录?

另一个问题是,我试图绘制迭代损失曲线(损失是)。它似乎曲线是正常的:

enter image description here

但我不知道,因为我用的指标是准确率和召回这种方法是否正确。我应该绘制迭代精度曲线吗?或者这个已经告诉我的模型是正确的?

任何人都可以告诉我我是否正朝着正确的方向前进吗?非常感谢。 :)

回答

0

我会以相反的回答:

所以你想两个不同的模式,一种是采用直板矩阵分解R = U * i和其进入偏差,另外,R = U * 1 + b_u + b_i。

您提到您正在为查看用户点击的推荐系统执行Matrix因式分解。所以我的问题在于:这是一个隐性评级案例吗?或明确的?如果是关于点击次数的话,我认为这是一个隐含评级问题。

这是您需要非常清楚的第一件重要的事情,无论您的问题是关于显式还是隐式评级。因为它们的使用和实施方式存在一些差异。

如果您点击这里: http://yifanhu.net/PUB/cf.pdf

隐含评级的方式,多次有人数量点击或购买例如一个给定的项目处理被用来推断的置信水平。如果您检查错误函数,则可以看到置信度几乎被用作权重因子。所以整个想法是,在这种情况下,偏见没有意义。

在明确评级的情况下,其中一个评分为例如1-5的评分,可以计算用户和产品的这些偏差(这些有界分数的平均值)并将它们引入评级公式中。他们的情景是有意义的。

重点在于,无论您是在一种情况下,还是在其他情况下,您都可以使用偏差。

另一方面,您的问题是关于过度拟合,因为您可以根据测试错误绘制训练错误,具体取决于数据的大小,您可以保留测试数据,如果错误差异很大,则您过度贴合。

另一件事是矩阵分解模型通常包括正则化术语,请参阅此处发布的文章,以避免过度拟合。

所以我认为在你的情况下,你有一个不同的问题,我之前提到的。

相关问题