SpringBoot 协同过滤算法分析和实践

日暮汉宫传蜡烛,轻烟散入五侯家。

一、前言

协同过滤算法是一种常用于推荐系统的技术,能够根据用户的行为和偏好,向其提供个性化的推荐内容。在当今互联网时代,个性化推荐已经成为了用户获取信息和消费产品的重要途径之一。协同过滤算法作为一种主流的推荐算法,能够根据用户的历史行为和与其他用户的关联,预测用户的偏好并向其提供个性化的推荐内容。本文将对协同过滤算法进行技术总结,旨在帮助读者更好地理解该算法的原理和应用。

二、协同过滤算法原理

协同过滤算法的基本原理是基于用户之间的相似性或项目之间的相似性,利用历史数据来进行推荐。它分为两种主要类型:基于用户的协同过滤 (User CF) 和基于物品 (Item CF) 的协同过滤。基于用户的协同过滤算法通过找到与目标用户兴趣相似的其他用户,来进行推荐。基于项目的协同过滤算法则是根据项目的相似性,向用户推荐与其历史偏好相似的商品。协同过滤算法在电子商务、社交媒体、电影和音乐推荐、新闻推荐、旅游推荐等领域有着广泛的应用。

基于用户推荐的示意图如下:

基于物品推荐示意图如下:

UserCF和ItemCF的对比

事项

用户推荐 UserCF

物品推荐 ItemCF

场景

适用于用户较少的场合,如果用户较多,用户相似度矩阵计算量很大

适用于物品明显少于用户的场景,物品较多会导致计算物品相似度矩阵难度加大

领域

时效性较强,用户个性化兴趣不太明显的领域,强调人与人之间的共性、

长尾物品丰富,用户个性化需求强烈的领域,强调人的个性

实时性

在用户有新行为,推荐结果不会立即变化

用户有新行为会导致推荐结果的实时变化

冷启动

在新用户对很少的物品产生行为后,不能立即对他进行个性化推荐,因为用户相似度表是定时离线计算的

新用户只要对一个物品产生行为,就可以给他推荐和该物品相关的其他物品

新物品

新物品上线一段时间后,如果有用户对物品产生行为,就可以推荐给和对它产生行为的用户兴趣相似的其他用户

新物品跟其他物品的相似度还没有计算,没有办法在不离线更新物品相似度表的情况下将新物品推荐给用户

推荐理由

很难提供令用户信服的推荐解释

利用用户的历史行为给用户做推荐解释,可以令用户比较信服

三、协同过滤算法实现过程分析

如下表所示,是一组关注对电影的打分数据,数据已经做了归一化处理,展现的方式就是矩阵:

选用皮尔逊相关相似来计算,具体公式如下(Pearson相关系数),实际上来说皮尔逊相关系数就是余弦相似度计算之前两个向量都先进行中心化(centered)。

两个连续变量(X,Y)的皮尔逊相关系数等于他们之间的协方差cov(X,Y)除以它们各自标准差的乘积(xσx,σY),系数的取值总是在-1.0到1.0之间,接近0的变量被成为无相关性,接近1被称为具有强正相关性,接近-1被称为具有强负相关性。

我们选《墨攻》(X)和《英雄》(Y)作为例子,来算一下相似度,则

X=(3.5,5.0,3.0)
Y=(3.0,3.5,2.0)

数字就是评分,因为只有三个人同时看了这两个电影,所以X,Y两个向量都只有三个元素。按照公式逐步计算:

1.  x和y的乘积再求和:3.5 3.0+5.0 3.5+3.0 2.0 = 34
2.  x求和乘以y求和,再除以个数:((3.5+5.0+3.0) (3.0+3.5+2.0))/ 3 = 32.58
3.  x的平方和:3.5^2+5.0^2+3.0^2 = 46.25
4.  x和的平方除以个数:((3.5+5.0+3.0)^2)) / 3 = 44.08
5.  y的平方和:3.0^2+3.5^2+2.0^2 = 25.25
6.  y和的平方除以个数:((3.0+3.5+2.0)^2)) / 3 = 24.08

最终,我们带入公式,可以计算出 墨攻和英雄两部电影之间的相关系数为 0.89。

1、基于用户的协同过滤推荐,要找出兴趣爱好相似的人来推荐,下表是基于用户计算的相关系数:

2、基于物品的协同过滤推荐,要找出与自己喜欢的物品相似的物品来推荐,下图是基于物品计算的相关系数:

关于以上的计算逻辑

1. 数据准备

2. 相似度计算

3. 计算结果

基于以上的相似度,就可以为用户推荐相关的物品。

四、协同过滤算法优势和缺点

协同过滤算法具有以下优势:

协同过滤算法有以下的劣势:

五、算法实践

对于协同推荐算法,作者进行了大量的尝试,其中最大的困惑在于不能够推荐出物品,这有以下几个原因:

  1. 数据的样本太小
  2. 数据的相关性需要在造数据时就给定一些初始导向。
  3. 参数的设置不合理。

需要用到的依赖如下:



    org.apache.mahout
    mahout-core
    0.9



    org.apache.mahout
    mahout-collections
    1.0




    org.apache.mahout
    mahout-math
    0.9



    org.apache.mahout
    mahout-examples
    0.11.1
    
        
            org.slf4j
            slf4j-log4j12
        
    

1.一些用到的工具类

2.数据制造

3.基于物品推荐和用户推荐的模型

4.基于用户推荐

5.基于物品推荐

6.数据运行结果

作者:斜月
链接:https://juejin.cn/post/7288963080864874552
来源:稀土掘金

展开阅读全文

页面更新:2024-02-06

标签:算法   平方和   相似性   扩展性   相关性   系数   物品   项目   数据   用户

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top