真 · 推荐系统入门

本文介绍了推荐系统的意义及其与搜索的区别,并详细解析了基于邻域的传统推荐算法,包括UserCF和ItemCF的工作原理及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本人有幸在秋招的节骨眼上,在大厂实习,又恰好需要做推荐这一块。故写下零星,抛砖引玉。

简述

推荐出现的意义:在日常生活中,很多时候,信息太多,无法自己甄别;这时候又需要了解新姿势,那不如让代码替你实现。这就是推荐,推荐和搜索的最大区别就是是否有明确的目的性。
譬如:听歌,看电影,逛淘宝 很多时候都是APP默默为你实现推送

了解了推荐的目的,再来看看传统的推荐过程——算法

1. 基于邻域的推荐

这类算法完全就只是分析统计信息,连loss函数都木有

场景 有场景更好理解:有 A B C D 4个user;同时有a b c d e 5个item

Aa b d
Ba c
Cb e
Dc d e

购买行为如上文所示。

1.1 UserCF

UserCF就是基于用户的协同过滤。一句话概括就是给你推荐和你兴趣相符的User(下面统称为U)喜欢的Item(统称为III),并且你没有接触过。

首先:
直观感受是 购买行为越相似的用户越有参考价值。如此构建用户相似度矩阵WWW

ABCD
A0111
B1001
C1001
D1110

其中WijW_{ij}Wij表示 UiU_iUiUjU_jUj 买过的相同的 item多少次
这样得到了每个UUU的表示

计算相似度
一般来说余弦相似度是最好的衡量标准。假定两两间的相似度已经算好了为SSS (similarity)

推荐
那没有买过的东西理论上都可以推荐,实际操作是通过与当前User的top K个最相似的User来计算推荐得分(不同item取的Top K个User不一样 那些没有购买的User尽管和当前User很像也不计算在内)。
对于上面场景的A来说,对c d没有购买行为,对c有购买行为是B D,当K=3K=3K=3时,B D都会被算上来,推荐得分为:
p(A,c)=∑SA(?)=SAB+SADp(A, c) = \sum S_{A(?)}=S_{AB}+S_{AD}p(A,c)=SA(?)=SAB+SAD
以此类推,得到每一个没有购买记录的商品的推荐得分。并设定阈值,决定是否推送~

自此UserCF的框架就讲完了,是不是很easy呢~~

1.2 ItemCF

ItemCF就是基于物品的协同过滤。一句话概括就是根据你以往有兴趣的Item 给你推荐类似的,你没有接触过的Item(统称为III

首先:
每个item的怎么表示呢?最简单的想法就是根据user的购买行为来确定。如此构建物品相似度矩阵WWW

abcde
a01020
b10221
c02021
d22201
e01100

其中WijW_{ij}Wij表示 IiI_iIiIjI_jIj 两个 item同时出现在同一个user中的次数
这样得到了每个III的表示

计算相似度
一般来说余弦相似度是最好的衡量标准。假定两两间的相似度已经算好了为SSS (similarity)

推荐
那没有买过的东西理论上都可以推荐,对于 IiI_iIi的推荐得分是通过与当前IiI_iIi最相似的并且有过购买的top K个item来计算(不同item取的Top K个item也不一样)。
对于上面场景的A来说,对c d没有购买行为,当K=3K=3K=3时,a b d 都会被算上来,推荐得分为:
p(A,c)=∑S(?)c=Sac+Sbc+Sdcp(A, c) = \sum S_{(?)c}=S_{ac}+S_{bc}+S_{dc}p(A,c)=S(?)c=Sac+Sbc+Sdc
以此类推,得到每一个没有购买记录的商品的推荐得分。并设定阈值,决定是否推送~

如图:
user A对a b d有购买行为(可以有购买意向权重 本文都是1),基于Item的相似度,计算出c d的推荐得分。
在这里插入图片描述
自此ItemCF的框架就讲完了,可以发现ItemCF的可解释性强多了,可以告诉你是因为哪个Item系统才会推荐给你

User v.s. Item

我们来总结下这两个经典算法吧!

UserCFItemCF
适用场景因为算法需要维护一个User相似度矩阵,适合item于太多,而user远小于item,节约计算资源 比如新闻领域,每天产生的新闻增量太大,浏览很快,而user不会;并且他的本质是推荐和你兴趣相似user喜欢的item,而大多数user肯定都会喜欢热门商品,对于长尾部分发掘不利,但也是因为它更追热点,所以相对来说推荐得更有时效性。因为算法需要维护一个Item相似度矩阵,适合于user太多,而item远小于user,节约计算资源;它的本质是挖掘你之前的喜好,进而推荐,可以说更具个性化,而个性化和挖掘长尾正是电商所需要的~ 并且相对来说电商行业item不会增长得过于迅速,相对稳定
实时性当user自己有新喜欢的东西时,因为本质是根据别的user来推荐,所以对自己的推荐列表并不会有即时的改变,相当于“隔山打牛”hhh当用户有新喜欢的东西时,因为本质是对历史兴趣进行推荐,所以TOP K个item里就有刚刚点?的那个~ 推荐列表在下次更新时立马发生变化
冷启动结合实时性进行分析,当user只对少数item点?时,分两块:1. 对于自己来说选取的TOP K个user很难和之前的user有明显差异,自己是处于冷启动的;但是对于TOP K列表出现自己的user,改变是即时的(可以不更新user相似度矩阵);2. 对于新上线的物品,只要有用户对它表示喜欢,立马就有可能被推荐(可以不更新user相似度矩阵)结合实时性进行分析,当user只对一个item点?时,分两块:1. 对于这个user本身推荐列表改变都是即时的,对于已有item,推荐列表的更新可以不更新user相似度矩阵,对于别的user不更新物品相似度表毫无影响(冷启动);2. 对于新上线的物品,那么冷启动在于一定需要更新一遍物品相似度表才可以,很容易理解了
可解释性根据以往user的行为

以上就是最传统的两种推荐方法…后续会有更多的解读,长期更新~
同时本博文的思路和部分内容均来自《推荐系统实战》

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值