推荐系统入门笔记二 : 推荐算法
一. 协同过滤推荐算法(基于邻域的算法)
1. 算法分类
- 基于用户的协同算法:
跟你喜好相似的人喜欢的东西你也很有可能喜欢 - 基于物品的协同算法:
跟你喜欢的东西相似的东西你也很有可能喜欢
- 找出最相似的人或物品:Top-N 相似的人或物品
通过计算两两的相似度来进行排序,即可找出TOP-N相似的人或物品 - 根据相似的人或物品产生推荐结果
利用TOP-N结果生成初始推荐结果,然后过滤掉用户已经有过记录的物品或明确表示不感兴趣的物品
1.2.1 基础算法 当一个用户A需要个性化推荐时,可以先找到和他有相似兴趣的其他用户,然后把那些用户喜欢的、而用户A没有听说过的物品推荐给A。这种方法称为基于用户的协同过滤算法。
用户的协同过滤算法主要包括两个步骤:
- 找到和目标用户兴趣相似的用户集合
- 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户
$$W_{uv}=\frac{|N(_u)\cup N(_v)|}{|N(_u)\cap N(_v)|}$$
或者通过余弦相似度计算:
$$ W_{uv}=\frac{|N(u)\cap N(_v)|}{\sqrt{|N(_u)||N(_v)}}$$
计算案例:
文章图片
- Jaccard 公式计算:
$$\frac{|\{a,b,d\}\cap\{a,c\}}{|\{a,b,d\}\cup\{a,c\}|}$$
结果:
$$\frac{\{a\}}{\{a,b,c,d\}}=\frac{1}{4}$$ - 余弦相似度计算:
$$\frac{|\{a,b,d\}\cap\{a,c\}|}{\sqrt{|\{a,b,d\}||\{a,c\}|}}=\frac{1}{\sqrt{6}}$$
同理:
$$W_{AC}=\frac{|\{a,b,d\}\cap\{b,e\}|}{\sqrt{|\{a,b,d\}||\{b,e\}|}}=\frac{1}{\sqrt6}$$
$$W_{AD}=\frac{|\{a,b,d\}\cap\{c,d,e\}|}{\sqrt{|\{a,b,d\}||\{c,d,e\}|}}=\frac{1}{3}$$
- 【推荐系统入门笔记二 : 推荐算法】jaccard 算法:
def jaccard(train): W=dict() # 计算两两用户之间的相似度 for u in train: for v in train: # 如果是同一个用户跳过 if u==v: continue # 两个用户点击物品的交集 cap=train[u]&train[v] # 两个用户点击物品的并集 cup=train[u]|train[v] # 两个用户的相似度 W[u,v]=len(cap)/len(cup) return W
推荐阅读
- 成交的种子咖啡冥想
- 历史教学书籍
- 如何在Mac中的文件选择框中打开系统隐藏文件夹
- 单点登陆
- 操作系统|[译]从内部了解现代浏览器(1)
- 游乐园系统,助力游乐园管理
- 【亲测好用】高逼格配色网站推荐
- 中国MES系统软件随工业化成长
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Cesium|Cesium 粒子系统学习