JAVA助力数字化营销:基于协同过滤算法实现个性化商品推荐智在碧得

周松杰:碧桂园服务后台开发gao级工程师,拥有8年开发经验。

1前言本文主要介绍基于协同过滤的推荐算法。在了解实践应用之前,我们先对推荐系统、Mahout学习框架以及算法进行简单介绍,然后再结合实践进行深入探讨。

第一部分概述了推荐系统的产生背景、作用和工作原理,并介绍了Mahout学习框架的算法。

第二部分则基于Mahout框架-协调过滤算法,实现个性化商品推荐。

**2推荐系统、智能推荐算法**2.1推荐系统--基本流程讲解2.1.1推荐系统的意义用户角度:推荐系统解决在“信息过载”的情况下,用户如何高效地获得感兴趣的物品的问题。例如在淘/宝、京/东、亚/马/逊等。公司角度:推荐系统解决了产品如何最大限度地吸引用户、留存用户、增加用户黏性,从而达到公司的营收目的。

根据以上想法,我们画一下推荐系统架构:

2.1.3个性化(千人千面)推荐系统基于以上的推荐系统,除了随机策略外,不同用户看到的商品是一致的,但每个用户感兴趣的物品不同。因此,推荐系统需要根据不同用户进行个性化推荐。为了解决这个问题,可以采用不同的推荐算法。常用的推荐算法分为以下三种:

从图中可以看出,协同过滤分为ItemCF(基于物品的协同过滤)和UserCF(基于用户的协同过滤),也是本文要讲的内容。基于Mahout一个分布式机器学习算法框架来实现协同过滤推荐。

2.2Mahout-CollaborativeFiltering(CF)2.2.1Mahout简介Mahout是一个分布式机器学习算法的集合和数据挖掘工具,它集成了包括聚类、分类、推荐过滤和频繁子项挖掘等算法。本文提到Mahout,是因为它提供了丰富的算法实现,有兴趣的同学可以进行深入研究。

从上图可以看出,Mahout的定位是基于原数据生成推荐商品数据。

2.2.2什么是协同过滤协同过滤的基本概念是将推荐方式变成自动化流程。它主要基于属性或兴趣相近的用户经验和建议,提供个性化推荐。通过协同过滤,可以收集具有类似偏好或属性的用户,并将其意见提供给同一集群中的其他用户作为参考,以满足人们在做决策时参考他人意见的心态。

2.2.3ItemCF(基于商品的协同过滤)算法思想:基于用户对物品的偏好找到相似物品,然后根据用户历史偏好,推荐相似物品。

计算方法:将所有用户对某个物品的偏好作为一个向量,利用这些向量计算物品之间的相似度。得到相似物品后,根据用户历史偏好预测当前用户还未涉及的物品偏好,最终计算出一个排序的物品列表作为推荐。

判断两个物品是否相似以及相似度为多少是协同过滤算法的难点。对于物品来说,相似度计算往往与业务本身有关。在这里,我们使用最通用的计算规则:如果喜欢两个物品的用户重合度越高,则证明物品越相似。

为了便于观看,我们把上图转成矩阵形式,用户作为矩阵行坐标,物品作为列坐标。

假设两物品A和B,判断相似度则通过用户的重合度比例进行计算,如上图协同过滤矩阵所示,要判断「苹果」与「橙子」的相似程度。

利用向量中余弦相似度进行计算,公式为:

将喜欢权重设置为1,不喜欢权重设置为-1,则「苹果」向量为(1,1,1,1),「橙子」向量为(1,1,-1,1)。

两者向量点积:1*1+1*1+1*-1+1*1=2

「苹果」向量长度:2

「橙子」向量长度:2

通过此方法以此类推可以将所有物品的相似度计算出来。

然后根据前面提到的公式进行套娃,则可以得出商品的相似度。在相似度计算上,任何合理的“向量相似度计算”都可以作为协同过滤的判断依据,根据自身业务进行算法迭代。

2.2.4UserCF(基于用户的协同过滤)基本思想:基于用户对物品的偏好找到邻居用户(相似用户),然后将邻居用户喜欢的东西推荐给当前用户。

计算方法:将一个用户对所有物品的偏好作为一个向量,计算用户之间的相似度。找到邻居后,根据邻居的相似度权重以及他们对物品的偏好,预测当前用户未涉及的物品,计算得到一个排序的物品列表作为推荐。相似度即为两个向量之间的距离,距离越小相似度越大。

判断两个用户是否相似以及相似度为多少也是协同过滤算法的难点。最常用的两种判断方式如下:

用户购买商品有很大重合度。

用户浏览商品有很大重合度。

在ItemCF我们已经说过,任何合理的判断方法都可以作为相似度计算规则,下面我们以“用户喜欢的物品有很大重合度”来作为相似度计算规则。

与ItemCF类似,我们也将有向图转变成矩阵,继续沿用ItemCF矩阵。

ItemCF是以商品的维度进行得出向量,最后通过余弦相似得出商品相似度。UserCF则以用户的维度进行得出向量,最后通过余弦相似得出商品相似度。

2.2.5CF推荐工程化1、离线计算

建立「用户」到「商品」的索引,记录每个用户行为跟「商品」的列表,我们俗称为LastN。给定一个「用户ID」,能够快速查询到该用户最近互动过的N个「商品」列表。

建立「商品」到「商品」的索引,利用相似度计算规则,离线计算出每个「商品」最相似的「商品」列表。给定一个「商品ID」,能够快速查询到最相似的TopK「商品」。

2、在线召回

根据当前「用户ID」,通过「用户」到「商品」索引查询用户行为-「商品」列表,再通过「商品」到「商品」索引,拿到最相似TopK「商品」集合。

以ItemCF为例:

3、其他召回方式

例如,根据地址位置进行推荐或者结合系统标签用户的形式进行推荐等等。

很多人估计想吐槽,说了这么多,又是算法计算,又要考虑各种维度才能得出相应的相似度来进行推荐,太麻烦了。别急,Mahout即将登场。

4、ItemCF、UserCF如何选择

(1)基于用户的协同过滤

基于用户的协同过滤适用于物品数量多、时效性强的场景,但在其他情况下计算速度较慢。推荐结果个性化程度较弱,但具有广泛的适用性和较高的惊喜度。

(2)基于物品的协同过滤

应用最广泛,尤其以电商行业为典型。

适于用户多、物品少的场景,否则计算速度慢。

在物品冷启动、数据稀疏时效果不佳。

推荐精度高,更具个性化。

倾向于推荐同类商品,推荐的多样性不足,形成信息闭环。

对于稀疏数据集(例如delicious书签、小众群体收藏等),基于物品的过滤方法通常要优于基于用户的过滤方法。而对于密集数据集而言,两种方法的效果几乎是一样的。

——摘自《集体智慧编程》

2.2.6Mahout推荐算法以及引擎注意:以下只列本文涉及到的算法,更多算法有兴趣的可自行Google。

原业务流程:

通过运营后台推荐,每天/月/年的商品曝光量最多十几个(推荐策略不变的情况下),所有用户看到的商品都是一样。

新业务流程:

结合后台运营推荐策略、算法策略、销量策略进行推荐。

3.2Mahout结合实际落地应用流程3.2.1数据生命周期

数据完整得生命周期如上图所示,分为以下几个步骤:

数据源:用户的行为日志以及其他行为(如购买行为等,根据业务需要而定)。

数据采集:从客户端采集用户的行为日志。

数据存储:日志文件或DB方式存储。

数据计算:基于用户的行为数据进行生成推荐数据。

数据应用。

注:第4点中的推荐数据生成是基于CachingItemSimilarity商品相似,EuclideanDistanceSimilarity基于欧几里德距离计算相似度的算法进行ItemCF协同过滤。

系统用户行为采集

推荐模型训练流程

3.2.2实践案例Mahout推荐引擎提高效率的使用建议:

ReloadFromJDBCDataModel(这个很重要,占整体耗时一半左右)包装DataModel的数据集CachingUserSimilarity或者CachingItemSimilarity包装用户相似度或者物品相似度//以cache方式保存相似度计算结果防止每次请求是重复计算//内部使用CachesimilarityCache保存相似度//如基于用户推荐,则使用该类包装相似结果集合CachingUserNeighborh效果展示:

假设商品推荐位最大为12个,根据以下逻辑优先级进行补位:推荐置顶>算法推荐>销量。

后台推荐置顶配置:

图示:某个用户所处同一个项目下推荐的商品:

结果期望:基于浏览记录,推荐同类商品。

关闭算法推荐后效果对比:

业务效果:

可以看出,自上线后,随着开放的试点项目越多,通过推荐商品栏目转化订单量,从每月十来单增长到目前的峰值几百单,增长了近二十倍(数据统计截至2023.12.110点)。

成交用户数方面,在去重的情况下,6月份前成交人数是几千人,而在后半年(截至12月份),成交人数已经达到了几万人。

4总结

Mahout是基于Hadoop的机器学习和数据挖掘的一个分布式框架,是一个强大的算法库,具有极高的可扩展性以及易用性。此外,Mahout还提供了一些预处理和特征提取的方法,帮助用户快速构建机器学习模型,它还支持多种编程语言,如Java、Python等,方便不同背景的用户使用。

本文没有讨论混合方法。在许多情况下,结合协同过滤和基于内容的方法可以达到最优的结果,因此在许多大型推荐系统中使用。混合方法的组合主要有两种形式:一是可以独立训练两个模型(一个协同过滤模型和一个基于内容的模型),二是直接构建一个统一这两种方法的单一模型(通常是神经网络)。

可尝试使用向量数据库将商品数据向量化后,获得商品之间的相似性,结合用户画像行为进行推荐。

可以结合用户标签画像提高精准颗粒度。

针对提高推荐数据实时性,可采取缩短数据清洗周期(离线)、分布式(提高并发处理能力)或Canal监控,Flink及队列等方式来消费用户行为,从而提高用户体验。

推荐方法的核心是基于历史数据,所以还需要考虑新物品和新用户存在的“冷启动”问题。

THE END
1.小禾数科取得基于大数据的网络智能测试系统及方法专利国家知识产权...金融界2024年11月6日消息,国家知识产权局信息显示,小禾数科(北京)科技有限公司取得一项名为“基于大数据的网络智能测试系统及方法”的专利,授权公告号 CN 115883429 B,申请日期为2022年12月。 本文源自:金融界 作者:情报员 特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台...https://www.163.com/dy/article/JGAHQ16H0519QIKK.html
2.基于改进协同过滤算法的分布式推荐系统设计与实现信息数据的高速度增长带来了信息过载问题,如何在海量数据中挖掘出数据的潜在价值,为用户作出更好的推荐,关乎着一个企业的生存乃至发展。推荐系统的推荐效果离不开推荐算法、推荐模型的支撑。协同过滤算法作为推荐系统主流推荐算法,对提供更好的推荐服务起到十分重要的作用。因此,本文对传统协同过滤算法进行改进,在此基础...http://sjk15.e-library.com.cn/D/Thesis_D02731305.aspx
3.毕业设计网写毕业设计程序定制基于大数据的井盖监控系统的设计与开发 基于大数据技术的职位推荐平台 基于大数据分析的智能公交站点预测系统 基于大数据分析的共享单车调度优化算法研究 基于图像分割模型的通感图像海西溢油监测 基于卷积神经网络的图像识别与分类系统设计与实现 基于协同过滤算法的音乐推荐系统设计与实现 ...http://www.taolw.com/
4.抖音快手小视频推荐算法之协同过滤算法剖析首先,要实现协同过滤,需要一下几个步骤 收集用户偏好 找到相似的用户或物品 计算推荐 收集用户偏好 要从用户的行为和偏好中发现规律,并基于此给予推荐,如何收集用户的偏好信息成为系统推荐效果最基础的决定因素。用户有很多方式向系统提供自己的偏好信息,而且不同的应用也可能大不相同,下面举例进行介绍: ...https://developer.aliyun.com/article/1376065
1.springboot毕设协同过滤算法的体育用品推荐系统程序+论文本研究将采用以下方案:首先,通过问卷调查和数据分析等方法,收集用户行为数据和体育用品销售数据;其次,基于协同过滤算法,设计并实现体育用品推荐算法,包括用户相似度计算、商品相似度计算以及推荐列表生成等步骤;然后,构建体育用品推荐系统原型,并进行功能测试和性能测试;最后,根据测试结果,对系统进行优化和改进,以提高推荐准...https://blog.csdn.net/bishe903/article/details/143580266
2.基于协同过滤的电影推荐系统的设计与实现(协同过滤推荐算法伪代码)Apache Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。经典算法包括聚类、分类、协同过滤、进化编程等等,并且,在 Mahout 中还加入了对ApacheHadoop的支持,使这些算法可以更高效的运行在云计算环境中。 https://cloud.tencent.com/developer/article/2059754
3.基于协同过滤算法的推荐系统推荐系统有着广泛的应用,电影推荐,商品推荐等都用到推荐系统。本文介绍协同过滤算法的基本原理,进而理解推荐系统的实现原理。 推荐系统的描述 我们以电影推荐系统来看一下怎么样以机器学习的角度来描述推荐系统。我们记 $n_u$ 为用户的数量,$n_m$ 为电影的数量,$r(i,j) = 1$ 表示用户 j 对电影 i 进行过...https://www.jianshu.com/p/9b06ef8c79fa
4.基于协同过滤算法商品推荐系统计算机毕业设计源码+LW文档因此,在计算机上安装协同过滤算法商品推荐系统软件来发挥其高效地信息处理的作用,可以规范信息管理流程,让管理工作可以系统化和程序化,同时,协同过滤算法商品推荐系统的有效运用可以帮助管理人员准确快速地处理信息。 协同过滤算法商品推荐系统在对开发工具的选择上也很慎重,为了便于开发实现,选择的开发工具为Eclipse,选择的...https://blog.51cto.com/u_15745565/8506534
5.数字协同范文10篇(全文)本文在对分布式环境下数字教育资源协同的需求进行分析的基础上,设计了SOA环境下数字教育资源协同共享框架模型(MERSCA, Model of E-learning Resources Sharing andCoordination Architecture),然后从协同数字教育资源一站式访问和数字教育资源服务基于序关系的协同两个方面讨论了MERSCA实现的关键技术。实践研究表明,MERSCA模型...https://www.99xueshu.com/w/ikeykz5h440z.html
6.相似度算法(精选十篇)由于每年会有大量的论文得以公开发表,因此已有论文的数量逐年增多,因此在算法设计时应着重考虑系统的审查匹配效率。该算法在论文匹配时主要以有效句为单位进行字符串的完全匹配比较,虽然精度上不是很高但可满足对大量论文进行快速匹配的效率要求,以提供一种简捷的辅助审查手段。在算法实现时还可采用多线程的机制,以能更...https://www.360wenmi.com/f/cnkeyytvb26n.html
7.基于音乐基因的混合音乐推荐系统的设计与实现这也就是音乐推荐系统的主要任务。 鉴于用户对音乐的理解和喜欢的多样性和模糊性以及音乐自身旋律的准确性,即使是准确度最高的推荐算法产生的推荐结果也无法完全匹配用户的兴趣。本文的主要工作是针对这种匹配不完整的问题,提出了协同过滤算法和基于音乐基因的推荐算法的混合推荐算法,设计并实现了一个基于此混合推荐算法...https://wap.cnki.net/touch/web/Dissertation/Article/10357-1014230982.nh.html
8.推荐系统的本质是建立用户与物品的联系,根据推荐算法的不同,推荐...C.实现UserCF算法的关键步骤是计算物品与物品之间的相似度D.基于物品的协同过滤算法(简称ItemCF算法)是目前业界应用最多的算法 点击查看答案进入题库练习 单项选择题 下列哪一项不属于完整推荐系统的三个模块之一?() A.用户建模模块B.推荐对象建模模块C.推荐算法模块D.数据采集模块 点击查看答案进入题库练习 单项...https://m.ppkao.com/tiku/shiti/bda0fe6697aa4ae9885644fe7e336679.html