将推荐系统视为多类分类或二元分类问题

数据挖掘 机器学习 推荐系统 矩阵分解
2021-10-01 05:42:21

我正在考虑以下两种方法来构建推荐系统,以使用隐式数据作为分类器推荐产品:

  • 将其视为多类分类问题。模型的特征是用户特征,目标是物品。这是本 Google 文档中使用的方法。
  • 将其视为二元分类问题。模型的特征是用户和物品的特征,目标变量是一个二元变量,表示用户是否购买了这个物品。这是Tensorflow 推荐器中使用的方法。

使用其中一种的优点和缺点是什么?第一种方法是否在任何推荐系统库中实现?

3个回答

将其构建为多类分类问题的主要优点之一是能够为所有项目构建单个模型并直接比较不同项目的预测。多类分类的典型损失函数是 softmax。Softmax 提供了预测每个项目的相对概率。

这也是最大的缺点之一。它要求数据是同质的。如果不是所有项目都具有相同的特征,建模将更加困难或不可能。

二进制分类框架的主要优点之一是对异构数据的鲁棒性。例如,稀疏或丢失的数据更容易处理。由于每个项目都是独立的,因此具有很少示例或缺失数据的项目可以与具有密集或完整数据的项目不同地建模。

缺点是需要为每个项目训练和预测单独的模型。

最大的挑战可能是如何衡量模型的性能。例如,您可以使用 Accuracy 或 AUC 进行二进制分类 - 但在多类中会更难。

  1. 推荐系统中的误差测量通常很棘手。不同于典型的分类问题。预测一件绝对令人惊叹的物品是糟糕的,与向用户展示一件糟糕的物品作为钻石具有不同的成本/价值。

  2. 特别是如果您的项目是分层连接的。例如,您有以下对象, A: toilet paper, B: kitchen paper, C: beer如果模型预测A预测B一样糟糕所以必须对 X 做一个成本函数,其中 i 和 j 是项目,而 的值是预测的分数ACx_ijij

1.5) 可解释模型:调查哪个特征有助于识别多类设置中的哪个类更为复杂。然而,这不是二进制分类的情况。

  1. 不平衡的数据:你必须确保模型是“公平的”并且已经看够了。在这两种类型的建模中。这在多类中可能更为严重。你将不得不制作大量的图表来解释你的模型在哪里糟糕,例如在什么情况下它将 A 识别为 B 或 C。换句话说,你将处理一个nxn错误矩阵。这在二元分类中并不像您想象的那样令人头疼。

  2. 您放置链接的两种方法存在细微差别。DNN 适用于不一定是结构化的用户查询。这甚至可以考虑到他们也提到它的时间。例如,如果您觉得用户在您的页面上花费时间,您可以recommend他们某事。也许他们正在搜索不同于经典 Netflix 推荐系统(用户项目矩阵)的特定信息。

  3. 尽管这听起来很无聊——部分决定应该来自业务。是否联系用户并“向他们推荐一些东西”以避免流失可能与“向上销售”具有不同的价值。每个模型的特征也可能非常不同。例如,在第一种情况下,应该使用用户使用平台的时间,但是这个功能很可能与追加销售无关。

  4. 推荐系统是一个活跃的领域。有一个名为 RecSys https://recsys.acm.org/的年度会议,公司/大学会在这里展示他们的最新工作。那里有很多不同的方法,但没有一种解决方案!经过 16 年的研究,Netflix 仅将推荐系统的召回率提高了 4%。所以要为小范围的性能改进做好准备。

更新

决定使用二分类还是多分类的一种方法是利用 PCA(或任何其他降维方法)和color与类相关的点。因此,如果你使用二进制,你最终会得到一个两色图,如果你进行多类回归,你会得到多种颜色。在视觉上,您可以检查在哪个设置中获得更好的分离。

我在这里得到了同样问题的答案

主要是说的是:

一般来说,目录的softmax意味着一组固定的输出项。因此,每当将新项目添加到目录中时,您都必须更改输出层并重新训练模型。此外,使用大的 softmax 层进行训练非常耗时。通常,softmax 层被限制(限制在一组有限的项目上)以加快训练时间,或者采用负采样方法。在此处查看 TripAdvisor 和 YouTube 的最后一层。

另一方面,用户-项目对的 sigmoid 可以处理任意数量的项目以及新项目(前提是项目嵌入可用)。也就是说,它需要对每个用户-项目对进行一次预测,如果有很多对,可能会很昂贵。(与 softmax 方法相比,您只需要预测一次即可获得所有项目的概率)。我见过的大多数实现都采用这种方法(请参阅本文中的其他方法)。