余弦相似度 —— Cosine Similarity
来源:互联网 发布:java性能测试环境搭建 编辑:程序博客网 时间:2024/05/16 10:40
余弦相似度用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异的大小。相比距离度量,余弦相似度更加注重两个向量在方向上的差异,而非距离或长度上。
与欧几里德距离类似,基于余弦相似度的计算方法也是把用户的喜好作为n-维坐标系中的一个点,通过连接这个点与坐标系的原点构成一条直线(向量),两个用户之间的相似度值就是两条直线(向量)间夹角的余弦值。因为连接代表用户评分的点与原点的直线都会相交于原点,夹角越小代表两个用户越相似,夹角越大代表两个用户的相似度越小。同时在三角系数中,角的余弦值是在[-1, 1]之间的,0度角的余弦值是1,180角的余弦值是-1。
借助三维坐标系来看下欧氏距离和余弦相似度的区别:
从图上可以看出距离度量衡量的是空间各点间的绝对距离,跟各个点所在的位置坐标(即个体特征维度的数值)直接相关;而余弦相似度衡量的是空间向量的夹角,更加的是体现在方向上的差异,而不是位置。如果保持A点的位置不变,B点朝原方向远离坐标轴原点,那么这个时候余弦相似度cosθ是保持不变的,因为夹角不变,而A、B两点的距离显然在发生改变,这就是欧氏距离和余弦相似度的不同之处。
根据欧氏距离和余弦相似度各自的计算方式和衡量特征,分别适用于不同的数据分析模型:欧氏距离能够体现个体数值特征的绝对差异,所以更多的用于需要从维度的数值大小中体现差异的分析,如使用用户行为指标分析用户价值的相似度或差异;而余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感,更多的用于使用用户对内容评分来区分用户兴趣的相似度和差异,同时修正了用户间可能存在的度量标准不统一的问题(因为余弦相似度对绝对数值不敏感)。
调整余弦相似度 —— Adjusted Cosine Similarity
在余弦相似度的介绍中说到:余弦相似度更多的是从方向上区分差异,而对绝对的数值不敏感。因此没法衡量每个维数值的差异,会导致这样一个情况:比如用户对内容评分,5分制,X和Y两个用户对两个内容的评分分别为(1,2)和(4,5),使用余弦相似度得出的结果是0.98,两者极为相似,但从评分上看X似乎不喜欢这2个内容,而Y比较喜欢,余弦相似度对数值的不敏感导致了结果的误差,需要修正这种不合理性,就出现了调整余弦相似度,即所有维度上的数值都减去一个均值,比如X和Y的评分均值都是3,那么调整后为(-2,-1)和(1,2),再用余弦相似度计算,得到-0.8,相似度为负值并且差异不小,但显然更加符合现实。
- 余弦相似度 —— Cosine Similarity
- 余弦相似度 —— Cosine Similarity
- 余弦相似度 —— Cosine Similarity
- 445.Cosine Similarity-余弦相似度(容易题)
- Cosine similarity
- Cosine Similarity
- "余弦相似性"(cosine similiarity)比较相似文章
- tensorflow cosine相似度 实现
- 机器学习分类算法(一)——余弦相似度
- 图像基础7 图像分类——余弦相似度
- 余弦相似度的计算——C++
- 相似度计算(euclidean, cosine, pearson)
- 余弦相似度
- 余弦相似度
- 余弦相似度
- 余弦相似度
- 余弦相似度
- 余弦相似度
- Android-蓝牙详解【占坑中】
- 8天学通MongoDB——第七天 运维技术
- java泛型详解
- 第四十讲 项目1 小明借书
- android自定义View
- 余弦相似度 —— Cosine Similarity
- UITabBarController+UINavigationController多层嵌套
- PHP多图片上传并按照比例修改像素
- H264的句法和语义(二)
- Android 检测手机IMEI值
- C++Primer 第5章笔记整理
- Javascript 中 atob 方法解码中文字符乱码问题
- CentOS 必知命令 & Composer部署
- 人脸检测研究2015最新进展