| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Python知识库 -> 任务3 实现用户和物品的相似性计算 -> 正文阅读 |
|
[Python知识库]任务3 实现用户和物品的相似性计算 |
任务3 实现用户和物品的相似性计算根据协同过滤基础资料当中的相似度的定义,主要有以下几种。 物品和用户计算相似度其实是一样的,只需要将打分矩阵转置一下即可。下面我就只以用户相似度的计算为例 1. 杰卡德(Jaccard)相似系数定义这个是衡量两个集合的相似度一种指标。两个用户
u
u
u和
v
v
v交互商品交集的数量占这两个用户交互商品并集的数量的比例,称为两个集合的杰卡德相似系数,用符号
s
i
m
u
v
sim_{uv}
simuv?表示,其中
N
(
u
)
,
N
(
v
)
N(u),N(v)
N(u),N(v)分别表示用户
u
u
u和用户
v
v
v交互商品的集合。 代码实现
测试一下 生成测试数据
我们手算第一个行向量与第二个行向量的Jaccard相似度来验证一下
算法基本正确 2. 余弦相似度余弦相似度衡量了两个向量的夹角,夹角越小越相似。这个应该不难理解,公式如下
s
i
m
u
v
=
c
o
s
(
u
,
v
)
=
u
?
v
∣
u
∣
?
∣
v
∣
sim_{uv} = cos(u,v) =\frac{u\cdot v}{|u|\cdot |v|}
simuv?=cos(u,v)=∣u∣?∣v∣u?v?
测试例子,这个例子是参考资料里面给出的,省的手算了。
0.975答案符合手算的结果
3. 皮尔逊相关系数余弦相似度的计算公式为 差别就是把 r u i r_{ui} rui?替换成了 r u i ? r ˉ u r_{ui}-\bar r_u rui??rˉu?,稍微改动一下即可
还是用这个例子测试
0.8528和上面手算的结果相符合。
结束三种相似度的计算的实现大致如上,以后有空再利用这些相似度来实现一下userCF和itemCF。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/15 18:36:05- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |