基于物品的协同过滤 基于物品的协同过滤系统

2024-11-10 09:55 - 立有生活网

算法小结

输入 :与用户相关的包含众多特征(feature)的数据:

基于物品的协同过滤 基于物品的协同过滤系统基于物品的协同过滤 基于物品的协同过滤系统


基于物品的协同过滤 基于物品的协同过滤系统


用户的注册信息(职业、年龄、性别等 显信息),行为信息(使用功能、有效使用时长等 隐信息)。

输出 :给用户的功能列表(根据得分高低排序)

函数 : 传统算法 、 机器学习算法 (Machine Learning)、 深度学习算法 (Deep Learning)

基于流行度的算法非常简单粗暴,类似于各大、微博热榜等,根据VV、UV、日均PV或分享率等数据来按某种热度(加权)排序来给用户。

访问次数 (VV):记录1天内所有访客访问了该网站多少次,相同的访客有可能多次访问该网站,且访问的次数累加。

访客 (UV):记录1天内所有访客访问了该网站多少次,虽然相同访客能多次访问网站,但只计算为1个访客。

PV访问量 (Page View):即页面访问量,每打开一次页面或者刷新一次页面,PV值+1。

优点:该算法简单,适用于刚注册的新用户

缺点:无法针对用户提供个性化的

改进:基于该算法可做一些优化,例如加入用户分群的流行度进行排序,通过把热榜上的体育内容优先给体育迷,把政要热文推给热爱谈论的用户。

基于用户的协同过滤算法 (UserCF):针对目标用户(A),先通过兴趣、爱好或行为习惯找到与他相似的“其他用户”(BCD...),然后把BCD...喜欢的并且A没有浏览过的物品或功能推给A。

基于物品的协同过滤算法 (ItemCF):例如由于我之前看过张艺谋导演的《英雄》这部电影,会给我《红高粱》、《归来》等同导演电影。

1)分析各个用户对物品的评价,通过浏览记录、购买记录等得到用户的隐性评分;

2)根据用户对物品的隐性评分计算得到所有用户之间的相似度;

3)选出与目标用户最相似的K个用户;

4)将这K个用户隐性评分并且目标用户又没有浏览过的物品给目标用户。

优点:

基于用户的协同过滤算法是给目标用户那些和他有共同兴趣的用户喜欢的物品,所以该算法较为化,即的物品是与用户兴趣一致的那个群体中的热门物品;

适于物品比用户多、物品时效性较强的情形,否则计算慢;

能实现跨领域、惊喜度高的结果。

缺点:

在很多时候,很多用户两两之间的共同评分几个,也即用户之间的重合度并不高,同时的共同打了分的物品,往往是一些很常见的物品,如票房大片、生活必需品;

用户之间的距离可能变得很快,这种离线算法难以瞬间更新结果;

结果的个性化较弱、较宽泛。

改进:

两个用户对流行物品的有相似兴趣,丝毫不能说明他们有相似的兴趣,此时要增加惩罚力度;

如果两个用户同时喜欢了相同的物品,那么可以给这两个用户更高的相似度;

在描述邻居用户的偏好时,给其最近喜欢的物品较高权重;

把类似地域用户的行为作为的主要依据。

1)分析各个用户对物品的浏览记录;

2)依据浏览记录分析得出所有物品之间的相似度;

3)对于目标用户评价高的物品,找出与之相似度的K个物品;

4)将这K个物品中目标用户没有浏览过的物品给目标用户

优点:

基于物品的协同过滤算法则是为目标用户那些和他之前喜欢的物品类似的物品,所以基于物品的协同过滤算法的较为个性,因为的物品一般都满足目标用户的独特兴趣。

物品之间的距离可能是根据成百上千万的用户的隐性评分计算得出,往往能在一段时间内保持稳定。因此,这种算法可以预先计算距离,其在线部分能更快地生产列表。

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

适于用户多、物品少的情形,否则计算慢

精度高,更具个性化

倾向于同类商品

缺点:

不同领域的最热门物品之间经常具有较高的相似度。比如,基于本算法,我们可能会给喜欢听许嵩歌曲的同学汪峰的歌曲,也就是不同领域的畅销作品,这样的结果可能并不是我们想要的。

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

的多样性不足,形成信息闭环

改进:

如果是热门物品,很多人都喜欢,就会接近1,就会造成很多物品都和热门物品相似,此时要增加惩罚力度;

活跃用户对物品相似度的贡献小于不活跃的用户;

同一个用户在间隔很短的时间内喜欢的两件商品之间,可以给予更高的相似度;

在描述目标用户偏好时,给其最近喜欢的商品较高权重;

同一个用户在同一个地域内喜欢的两件商品之间,可以给予更高的相似度。

(相似度计算:余弦相似度、Jaccard系数、皮尔森相关系数等)

常见经典 ML 分类算法:

逻辑回归 (Logistics Regression)

支持向量机 (SVM)

随机森林 (Random Forest)

提升类算法 (Boosting):Adaboost、GBDT、XGboost

一般处理流程:数据处理 -> 特征工程 -> 模型选择 -> 交叉验证 -> 模型选择与模型融合

特征清洗 :剔除不可信样本,缺省值极多的字段不予考虑

特征预处理 :单个特征(归一化,离散化,缺失值补全,数据变换),多个特征(PCA/LDA降维,特征选择)

使用工具 :pandas(python开源库)

模型选择与模型融合 :根据交叉验证得分选择前几名模型,然后进行模型融合(Bagging、Boosting、Stacking)

DL 优势 :ML 征工程是十分重要并且要根据行业经验确定,DL 可以自己从数据中学习特征。DL 能自动对输入的低阶特征进行组合、变换,得到高阶特征。对于公司产品应用领域来说,用户的注册信息(职业、年龄、性别等 显信息),行为信息(使用功能、有效使用时长等 隐信息)。这些就可以作为低阶特征输入。

RNN系列 (处理文本数据)

系列 (处理图像数据)

DNN (处理一般性分类)

系统UserCF和ItemCF

UserCF(User Collaboration Filter),又称 基于用户的协同过滤算法。

协同过滤:就是指众多的用户可以齐心协力,通过不断地和网站互动,使 自己的列表能够不断过滤掉自己不感兴趣的物品,从而越来越满足自己的需求。

而基于用户是指通过分析用户对商品的行为(如浏览、收藏、加入购物车、购买……)计算出哪些用户是兴趣相似的,然后把兴趣相似的用户所关注的商品相互。

举个例子:

由上表可以看出用户A和用户C比较相似,所以把用户A感兴趣的商品4给用户C。

步骤一般分为两步:

再举个详细点的例子:

设我们这么一些数据(用户(字母) 商品(数字)_行为,):

我们可以给不同的行为赋予不同的评分(设浏览1分、收藏3分、加入购物车5分、购买10分),得到以下数据:

这样看着比较累,而且也不方便计算,可以把它转换为矩阵形式,称之为 评分矩阵 :

计算相似度

计算相似度的方式有很多,如余弦相似度、切比雪夫距离、欧里几得距离、曼哈顿距离、杰卡德距离、皮尔森系数……计算相似度的方式不同计算出来的相似度也不同。

这里只介绍余弦相似度,其他的请自行百度。

设有二维向量a,b如下图所示

则他们的余弦相似度为

推广到向量a(a1,a2,a3,a4……),b(b1,b2,b3,b4……)

有了公式就能计算出用户相似度了:

列表 = 相似度矩阵 X 评分矩阵

由于用户已经对列表中的一些商品有过行为,所以还要把这些商品给滤除掉

得到最终的列表,其数值代表的意义是用户对商品的感兴趣程度:

ItemCF(Item Collaboration Filter),又称 基于商品(物品)的协同过滤算法。

其原理与UserCF类似,是基于用户对商品的偏好找到相似的商品,然后相似的商品品给他。

计算过程也非常相似,区别在于计算时把UserCF的 评分矩阵转置 ,再计算商品与商品之间的相似度得到 商品之间的相似度矩阵 。

的 列表 = 商品之间的相似度矩阵 X 评分矩阵转置

对于电子商务,用户数量一般大大超过商品数量,此时Item CF的计算复杂度较低。

比如在购书网站上,当你看一本书的时候,引擎会给你相关的书籍,这个的重要性进进超过了网站首页对该用户的综合。可以看到,在这种情况下,Item CF 的成为了用户浏览的重要手段。基于物品的协同过滤算法,是目前电子商务采用最广泛的算法。

在非社交网络的网站中,内容内在的联系是很重要的原则,它比基于相似用户的原则更加有效。在社交网络站点中,User CF 是一个更好错的选择,User CF 加上网络信息,可以增加用户对解释的信服程度。

多样性和精度,各有千秋。

参考:

Spark基于用户的协同过滤算法

系统_CF和userCF

算法-协同过滤3 基于物品

amazon , netflix, hulu ,

ItemCF 并不利用物品的内容属性计算物品之间的相似度,他主要通过分析用户行为记录物品的相似度。

算法认为:A 和B 相似,是由于喜欢A 的用户大都也喜欢B

利用用户的历史行为给结果提供解释。例如喜欢或者收藏过的射雕,天龙八部。

1、计算物品相似度

2、根据物品相似度和用户的历史行为生成列表

Wij = |同时喜欢物品i,j 的人数| / |喜欢物品i的人数|

惩罚热门物品:

Wij = |同时喜欢物品i,j 的人数| / sqrt(喜欢i 的人数x 喜欢j的人数)

计算用户u对一个物品的兴趣:

Puj = sum(Sji, Rui) j (- 和j 最类似的k个物品

该公式的含义是:

和用户历史上感兴趣的物品越相似的物品,越可能在用户的列表中获得高排名。

CF 流行度效果更好些,但是准确率随k值提高没有改善。

1、IUF

Sij = cij /match.sqrt(N[i]N[j]) 计算物品相似度

弱化,那么仅仅忽略 Cij = (1+1/log(1+N(u))

2、当然也可以忽略掉活跃度过高的用户。

W' ij = wij / maxJ(wij) 按类归一化

归一化后,覆盖率能够提高4个百分点

基于物品的协同过滤 基于物品的协同过滤系统


协同过滤和基于内容有什么区别?

协同过滤和基于内容核心思想是不同的:

协同过滤侧重于从大数据(集体智慧)中寻找某些隐含的模式,以物品为核心,它是对基于用户的协同过滤的一种改良。基于内容则侧重于通过对象的属性信息来进行匹配建模进而寻找相似的用户或者商品,本质是“你喜欢某一事物,给你近似的事物。”。

个性化,是系统的智能。个性化的原理使用较多的是这3种方式:基于内容的、基于用户的协同过滤、基于物品的协同过滤这3种方式的核心则是计算相似度。

算法总结

一、协同过滤

基于用户协同过滤UserCF

基于物品协同过滤ItemCF

基于模型协同过滤Mode_based

基于用户和基于物品协同过滤都称为以记忆为基础的协同过滤技术,共同缺点是资料稀疏、难以处理大数据量下的即时结果,因此发展出基于模型的协同过滤

核心思想:

基于历史资料得到一个模型,再用此模型进行预测用户对物品的评分

二、聚类算法

三、分类算法:

主要思路:根据文本特征或属性,划分到已有的类别中。常用分类算法包括:决策树分类法、朴素的贝叶斯分类算法、基于支持向量机的分类器,神经网络法,K-最近邻法,模糊分类法

#朴素贝叶斯分类算法

pmp 材料 pmp材料保鲜罩

关于pmp 材料,pmp材料保鲜罩这个很多人还不知道,今天小怡来为大家解答以上的问题,现在让我们一起来看看吧! pmp 材料 pmp材料保鲜罩 pmp 材料 pmp材料保鲜罩 1、1、加热油性食物时,保鲜膜与食···

spel表达式注入 spel表达式解析

SpringBoot中所有@Conditional注解和作用说明 上面例子,当下游服务返回502状态码时,gateway会重试3次。 1、@ConditionalOnClass,当classpath下发现该类的情况下进行自动配置。 spel表达式注入 spel表达式解析···

林暗草惊风的下一句 林暗草惊风的上一句

平明寻白羽的下一句 欲将轻骑逐,大雪满弓刀。 平明寻白羽,没在石棱中。 林暗草惊风的下一句 林暗草惊风的上一句 林暗草惊风的下一句 林暗草惊风的上一句 将军夜引弓。出自卢纶的《和张仆···