Jaccard 相似性通过比较两个集合的交集与并集来衡量它们的相似度。在推荐系统中,它有助于识别具有重叠交互行为的用户或物品,从而推动个性化推荐。公式为 J(A, B) = |A ∩ B| / |A ∪ B|,其中 A 和 B 是集合(例如,用户交互过的物品)。值为 1 表示集合完全相同,而值为 0 则表示没有重叠。这种方法对于二元数据(例如,已点击/未点击)特别有用,在这些数据中,交互行为的存在或缺失比其强度更重要。
例如,考虑一个电影推荐系统,用户 A 看过 {电影1, 电影2, 电影3},用户 B 看过 {电影1, 电影3, 电影4}。他们的交集是 {电影1, 电影3},并集是 {电影1, 电影2, 电影3, 电影4},因此 Jaccard 相似度为 2/4 = 0.5。如果系统识别到用户 B 与用户 A 相似,它可能会向用户 A 推荐电影 4。类似地,在电子商务中,如果两个用户购买了相似的产品,Jaccard 可以突出他们的共同偏好,以推荐新商品。这种方法对于大多数用户-物品交互缺失的稀疏数据集非常有效,因为它侧重于共同出现而非频率。
然而,Jaccard 也有局限性。它忽略了交互的强度(例如,评分或购买次数),并且可能受到集合大小的影响而产生偏差。例如,一个看了 100 部电影的用户和另一个看了 5 部电影的用户,即使这 5 部电影都在前者的集合中,他们的 Jaccard 分数也可能很低。为了解决可伸缩性问题,minhashing 或局部敏感哈希 (LSH) 等技术可以有效地近似计算 Jaccard 相似度。对于开发者来说,实现 Jaccard 通常涉及将数据预处理成集合,计算成对相似度,并将结果集成到协同过滤流程中。虽然简单,但它最适用于二元交互数据足够充分且计算资源得到仔细管理的场景。