相似度算法之欧几里得距离
在计算用户相似度的过程中,欧几里得距离是比较直观,常见的一种相似度算法。
根据两用户之间共同评价的Item为维度,建立一个多维的空间,那么通过用户对单一维度上的评价Score组成的坐标系X(s1,s2,s3……,si)即可定位该用户在这个多维度空间中的位置,那么任意两个位置之间的距离Distance(X,Y)(即:欧式距离)就能在一定程度上反应了两用户兴趣的相似程度。
上图即二维空间中6位用户对Snakes 和 Dupree 这两Item评价的直观体现
就其意义而言,欧氏距离越小,两个用户相似度就越大,欧氏距离越大,两个用户相似度就越小。
在日常使用中,一般习惯于将相似度与1类比,相似度在数值上反映为0<=Similarity(X,y)<=1,越接近1,相似度越高;
那么我们在使用欧几里得距离时,可以通过 1/(1+Distance(X,Y))来贯彻上一理念。
1.定义
欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。
2.公式
3.注意事项
a.因为计算是基于各维度特征的绝对数值,所以欧氏度量需要保证各维度指标在相同的刻度级别,比如对身高(cm)和体重(kg)两个单位不同的指标使用欧式距离可能使结果失效。
b.欧几里得距离是数据上的直观体现,看似简单,但在处理一些受主观影响很大的评分数据时,效果则不太明显;比如,U1对Item1,Item2 分别给出了2分,4分的评价;U2 则给出了4分,8分的评分。通过分数可以大概看出,两位用户褒Item2 ,贬Item1,也许是性格问题,U1 打分更保守点,评分偏低,U2则更粗放一点,分值略高。在逻辑上,是可以给出两用户兴趣相似度很高的结论。如果此时用欧式距离来处理,得到的结果却不尽如人意。即评价者的评价相对于平均水平偏离很大的时候欧几里德距离不能很好的揭示出真实的相似度。
4.代码实现
#得到两者共同评分项
defGetSameItem(UL,p1,p2):
si = {}
for item in UL[p1]:
if item in UL[p2]:
si[item] = 1
return si
#欧几里得相似度算法
defEuclidSimilarity(UL,p1,p2):
si = GetSameItem(UL,p1,p2)
if len(si) == 0:
return 0
sum_of_squares = sum([pow(UL[p1][item] -UL[p2][item] , 2) for item in si])
return 1/(1+math.sqrt(sum_of_squares))
相似度算法之欧几里得距离相关推荐
- 文本相似度算法之欧几里得距离(欧氏距离)
欧氏距离也称欧几里得距离,是最常见的距离度量,衡量的是多维空间中两个点之间的绝对距离. 也可以理解为:m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离).在二维和三维空间中的欧氏 ...
- 短文本相似度算法研究
短文本相似度,即求解两个短文本之间的相似程度:它是文本匹配任务或文本蕴含任务的一种特殊形式,返回文本之间相似程度的具体数值.然而在工业界中,短文本相似度计算占有举足轻重的地位. 例如:在问答系统任务( ...
- 相似度算法(http://blog.sina.com.cn/s/blog_62b83291010127bf.html)
在数据分析和数据挖掘的过程中,我们经常需要知道个体间差异的大小,进而评价个体的相似性和类别.最常见的是数据分析中的相关分析,数据挖掘中的分 类和聚类算法,如K最近邻(KNN)和K均值(K-Means) ...
- 使用余弦相似度算法计算文本相似度
在求相似度的时候经常会有以下一些方法, 1.基于词向量 余弦相似度 曼哈顿距离 欧几里得距离 明式距离(是前两种距离测度的推广),在极限情况下的距离是切比雪夫距离 2.基于字符的 编辑距离 simha ...
- 相似度算法和距离算法
常见的距离算法和相似度(相关系数)计算方法 查看原文 摘要: 1.常见的距离算法 1.1欧几里得距离(Euclidean Distance)以及欧式距离的标准化(Standardized Euclid ...
- 使用余弦相似度算法计算文本相似度-数学
20211201 也就是效果 皮尔逊>余弦>欧式 余弦相似度的局限 皮尔逊的优势,相当于是改进版余弦相似度 欧式与 余弦 欧式侧重于直线距离 归一化之后的欧式和余弦的效果也不同 比如 0, ...
- 有关任意多条曲线的拟合度算法
为什么80%的码农都做不了架构师?>>> 在股市中,经常会遇到趋势的预判.所谓趋势,即相对而言的规律化的模式识别形态.形象来讲,就是个股的一段时间内的曲线分布状况. 那么,问题 ...
- php数据分析引擎,PHP数据分析引擎计算余弦相似度算法示例
php 的 PHP数据分析引擎计算余弦相似度算法示例 本文实例讲述了PHP数据分析引擎计算余弦相似度算法.分享给大家供大家参考,具体如下: 关于余弦相似度的相关介绍可参考百度百科: /** * 数据分 ...
- Levenshtein 相似度算法——Levenshtein(编辑距离)
https://www.iteye.com/blog/wdhdmx-1343856 原文讲的挺有道理的: 奇妙的地方就是将字符串的对比,转换为了数值之间的计算: 相似度算法--Levenshtein( ...
最新文章
- 从0到1,苏宁API网关的演进之路
- Sunrun2016年Q3财务业绩强劲 冲刺全年目标
- “火震”太多打乱NASA计划,火星探测计划将推迟到2022年底
- 无线传输层安全协议WTLS安全机制详解
- python调用matlab环境配置、非常详细!!!_Python调用Matlab2014b引擎
- oracle 数据立方_大数据之数据仓库分层
- CentOS6.5搭建SVN服务器(Apache+SVN)
- Android 8.0 linux内核,在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序---Android8.0版本实现-对照老罗版本...
- c语言存储的逻辑顺序,栈是不是顺序储存的线性结构啊?
- VB 判断是否文本文件
- 移动应用开发平台UDE上线V2.0,升级引擎,推出应用云托管服务
- [XCTF-Reverse] 69 XCTF 3rd-RCTF-2017_MyDriver2-397
- 移动APP开发框架盘点
- STM32MP157C-DK2 开机测试
- http://blog.csdn.net/wrp920227/article/details/54588238
- Uni-app 实战社区交友类app开发
- 赵小楼《天道》《遥远的救世主》解读(12)丁元英操盘私募基金这事
- Oracle表空间清理
- Android开发之--从app中跳转到淘宝店铺
- minicom指令_Linux系统minicom命令详解
热门文章
- python之函数传递,形式参数和实际参数
- PG 备份策略及 WAL 日志清理策略
- websocket 占用 端口_WebSocket断开原因分析,再也不怕为什么又断开了
- 类 BorderLayout
- Python爬虫获取网页源代码出现乱码
- 莫言妻透露想用奖金买房原因:一家三代住91平米
- 描述CANOE-CAPL脚本编辑
- java计算机毕业设计商超零售送货到家购物系统源码+系统+数据库+lw文档+mybatis+运行部署
- java异常[java.util.regex.patternsyntaxexception dangling meta character ‘+‘ near index]解决
- 微信小程序登陆页跳转tabBar页