杰卡德相似度(Jaccard)详解及在UserCF中的应用
创始人
2024-05-10 05:58:08
0

1、杰卡德相似度(Jaccard)

这个是衡量两个集合的相似度一种指标。 两个集合A和B的交集元素在A,B的并集中所占的比例,称为两个集合的杰卡德相似系数,用符号J(A,B)表示

在这里插入图片描述

另一种表示的方法:

在这里插入图片描述

jaccard系数衡量维度相似性

jaccard系数很适合用来分析多个维度间的相似性,也多被用于推荐系统中用来给用户推荐相似的产品或业务。

举个例子,要计算某网站的两个用户的相似性,可以从性别、地区、年龄、浏览时间等等维度进行分析,我们把这些维度再进行细化:

男性、女性、小于18岁、18岁-40岁、40岁以上、浏览时间为早上、浏览时间为中午、浏览时间为下午
将以上维度作为一个集合,对两个用户A 和B ,将符合以上维度的指标值置为1,其他置为0。

假设用户A = [男性=1, 女性=0, 小于18岁=0, 18岁-40岁=1, 40岁以上=0, 浏览时间为早上=0, 浏览时间为中午=0, 浏览时间为下午=1]
假设用户B = [男性=1, 女性=0, 小于18岁=1, 18岁-40岁=0, 40岁以上=0, 浏览时间为早上=0, 浏览时间为中午=0, 浏览时间为下午=1]

即他们只有年龄不同,则根据计算公式,得到的jaccard系数值为:

在这里插入图片描述

在这里插入图片描述

jaccard系数衡量文本相似性

虽然jaccard主要是在维度分析这样的稀疏向量中作用比较大,但是在文本相似度计算时也可用jaccard。

用在文本相似度上,就是将字符串A, B分别进行分词,用交集中的词语数和并集中的词语数求比值。

A = [今天,天气,真好]

B = [今天,天气,不错]

在这里插入图片描述

转换为01向量

在这里插入图片描述

jaccard相似度在UserCF中应用示例
import numpy as np
import pandas as pd#构建用户购买记录数据集(1买了,0没买)
users = ["User1","User2","User3","User4","User5",]
items = ["ItemA","ItemB","ItemC","ItemD","ItemE"]
datasets = [[1,0,1,1,0],[1,0,0,1,1],[1,0,1,0,0],[0,1,0,1,1],[1,1,1,0,1]
]
df = pd.DataFrame(datasets,columns=items,index=users)df

在这里插入图片描述

在这里插入图片描述

# 计算所有数据两两之间的杰卡德相似系数from sklearn.metrics.pairwise import  pairwise_distances# 计算用户的相似度 ( 相似度 = 1 - 杰卡德距离 )
user_similar = 1 - pairwise_distances(df.values,metric='jaccard')
user_similar = pd.DataFrame(user_similar,columns=users,index=users)
print("用户之间的相似度")
user_similar

在这里插入图片描述

#为每个用户找到最相似的K个用户(k=2)
topN_users = {}
for i in user_similar.index:_df = user_similar.loc[i].drop(i)#取出第i个用户的那一行,删除自身(自己与自己的相似度为1)_df_sorted = _df.sort_values(ascending = False)  #降序排列top2 = list(_df_sorted.index[:2])#找到前两个topN_users[i] = top2print("每个用户最相似的两个用户")
topN_users

在这里插入图片描述

rs_users = {}
for user,sim_users in topN_users.items():rs_user = set()# 每个用户都有一个推荐结果for sim_user in sim_users:#和该用户相似的用户都买过什么,放在一起,set去重rs_user = rs_user.union(set(df.loc[sim_user].replace(0,np.nan).dropna().index))rs_user -= set(df.loc[user].replace(0,np.nan).dropna().index)#除去自己买了的rs_users[user] = rs_user
print("基于用户推荐")
rs_users

在这里插入图片描述

与传统相似性度量方法相比,杰卡德方法完善了余弦相似性只考虑用户评分而忽略了其他信息量的弊端,特别适合于应用到稀疏度过高的数据

相关内容

热门资讯

中央农村工作会议关键提法之二:...   近日召开的中央农村工作会议分析了当前“三农”工作面临的形势和挑战,部署2026年“三农”工作。为...
视频丨开局一碗拦门酒 收官一锅...   这几天,贵州凯里和浙江湖州两地分别举办了各具特色的民俗活动,为游客带来别具一格的元旦体验,展现出...
年终特稿·回望2025④丨岗稳...   新疆日报1月3日【A01版●要闻】  石榴云/新疆日报记者 赵春华  “民生无小事,枝叶总关情。...
电影市场火爆 为经济发展打开新...   2026年元旦假期,电影市场强势开局,迎来“开门红”。据网络平台数据,截至1月3日零时,2026...
记者手记:一间小店里的新年心愿   新华社天津1月2日电(记者 包庆龄、马博文)新年伊始,凌晨四点半,彻夜狂欢的城市还未醒来,天津市...
当足球飞过重建的村庄——一个河...   西藏日喀则定日县6.8级地震发生将满一周年。去年1月,中国之声记者的现场报道中,有灾区孩子们在心...
晶采观察丨新一年4个关键词,关...   刷到这条的朋友,先给自己点个赞!2025奋力奔跑,2026全新启程!这4个核心关键词、四大重点任...
能源→交通→民生 建设者以马不...   央视网消息:元旦假期,在全国各地重大工程的建设现场,成千上万建设者们仍坚守岗位,以实干精神推动工...
“真金白银”惠民叠加多彩冰雪“...   央视网消息:冷空气阻挡不了大家出游的热情。2026年元旦假期,全国各地冰雪游热度持续升温。在内蒙...
海外吸引力与好感度持续攀升 “...   “中国变酷了!”2025年,谈及中国的海外吸引力与好感度,“酷炫中国”成为外媒高频评价词。这一年...