推荐系统入门笔记五: 相似度计算

一.相似度计算方法

  1. 欧式距离
  2. 杰卡德(Jaccard)相似度
  3. 余弦相似度
  4. 皮尔逊(Pearson)相似度

1.欧式距离

欧式空间下度量距离的方法,两个物体, 都在同一个空间下表示为两个点, 假如叫做p,q, 分别都是n个坐标, 那么欧式距离就是衡量这两个点之间的距离. 欧氏距离不适用于布尔向量之间
计算公式:

$$ xE(p,q) = \sqrt{\sum_{i=1}^n (p_i - q_i)^2} $$

欧氏距离的值是一个非负数, 最大值正无穷, 通常计算相似度的结果希望是[-1,1]或[0,1]之间,一般可以使用
​ 如下转化公式:

$$ 1/1+E(p,q) $$

2.杰卡德(Jaccard)

两个集合的交集元素个数在并集中所占的比例, 非常适用于布尔向量表示,分子是两个布尔向量做点积计算, 得到的就是交集元素的个数,母是两个布尔向量做或运算
计算公式:
image.png

代码实现:

def jaccard_similar():
    Nu = {'A', 'C', 'D'}
    Nv = {'A', 'B', 'D', 'E'}
    similarity = len(Nu & Nv) / len(Nu | Nv)
    print(similarity)

3.余弦相似度

度量的是两个向量之间的夹角, 用夹角的余弦值来度量相似的情况,余弦相似度在度量文本相似度, 用户相似度,物品相似度的时候较为常用余弦相似度的特点, 与向量长度无关,余弦相似度计算要对向量长度归一化, 两个向量只要方向一致,无论程度强弱, 都可以视为'相似'
image.png
计算公式:
image.png

代码实现:

def UserSimilarity(train):
 W = dict()
 for u in train.keys(): 
    for v in train.keys():
         if u == v:
             continue
         W[u][v] = len(train[u] & train[v])
         W[u][v] /= math.sqrt(len(train[u]) * len(train[v]) * 1.0)
 return W 

4.皮尔逊(Pearson)相似度

实际上也是一种余弦相似度, 不过先对向量做了中心化, 向量a b 各自减去向量的均值后, 再计算余弦相似度,皮尔逊相关系数度量的是两个变量的变化趋势是否一致, 不适合计算布尔值向量之间的相关度
计算公式:
image.png

代码实现:
调用pandas.DataFrame中的corr()方法

ratings_matrix.T.corr()
32 声望
13 粉丝
0 条评论
推荐阅读
推荐系统评测指标
一. 评测指标用户满意度、预测准确度、覆盖率、多样性、 新颖性、惊喜度、信任度、实时性、健壮性、商业目标1. 用户满意度满意度是评测推荐系统的最重要指标,只能通过用户调查或者在线实验获得,主要是通过调查...

捕风阅读 607评论 1

Python3 全能安装详解
小编今天折腾了一天,整个Python3 人工智能开发包。卡在pip 包管理器上大半天。找遍大部分资料,就搞不懂为嘛每篇文章就只写一个片面的知识点就不能汇总一下嘛。下面来啦,小编来整理一下,避免下次找不到了。微...

叶剑飞雪阅读 715

Linux下Python3.9任意目录快速编译安装和配置上手实用指南
本文叙述在Linux Centos7系统下,在任意非标准目录(意味着不需要root或sudo权限)通过官方源码包编译安装Python3.9的快速安装指南。

apollo008阅读 590

pandas 分组合并字段(qbit)
前言环境 {代码...} 正文初始化数据 {代码...} 单字段合并 {代码...} 多字段合并 {代码...} 本文出自 qbit snap

qbit阅读 461

pat 1004(dfs)
简单搜索题,主要熟悉python语法。通过字典,一个父结点对应多个儿子结点,进行储存。代码: {代码...}

十八闲客阅读 376

美团外卖推荐情境化智能流量分发的实践与探索
美团外卖推荐团队在推荐算法的长期落地实践中,针对外卖业务情境化特点对排序模型进行深入探索与优化。本文介绍了面向情境化建模的“情境细分+统一模型”建模思路,通过用户行为序列建模以及专家网络两个模块的优化...

美团技术团队阅读 319

封面图
Y 分钟速成 Python
Python 是由吉多·范罗苏姆(Guido Van Rossum)在 90 年代早期设计。它是如今最常用的编程语言之一。它的语法简洁且优美,几乎就是可执行的伪代码。

小X学技术阅读 223

32 声望
13 粉丝
宣传栏