推荐系统中常用计算相似度的方法和工具 常用的相似度计算方法:(1)欧氏距离(2)余弦相似度 (3)皮尔逊相关系数 (4)修正余弦相似度(5)汉明距离 (6)曼哈顿距离 1、欧式距离:就是计算空间中两点的距离
def EuclideanDistance(x,y): d = 0 for a,b in zip(x,y): d += (a-b)2 return d0.5 2、余弦相似度(cosine) 夹角越小,余弦值越接近1,越相似
*欧式距离和夹角余弦的区别:夹角余弦反应的是二者之间的变动趋势,而欧式距离反应的是数值上的差距。所以这两种算法是不一致的。 欧氏距离体现数值上的绝对差异,而余弦距离体现方向上的相对差异 3、皮尔逊相关系数(pearson correlation coefficient)
皮尔逊相关系数是余弦相似度在维度值缺失情况下的一种改进 余弦相似度的问题是: 其计算严格要求”两个向量必须所有维度上都有数值”, 比如:v1 = (1, 2, 4), v2=(3, -1, null), 那么这两个向量由于v2中第三个维度有null, 无法进行计算.然而, 实际我们做数据挖掘的过程中, 向量在某个维度的值常常是缺失的, 比如v2=(3, -1, null), v2数据采集或者保存中缺少一个维度的信息, 只有两个维度. 那么, 我们一个很朴素的想法就是, 我们在这个地方填充一个值, 不就满足了”两个向量必须所有维度上都有数值”的严格要求了吗? 填充值的时候, 我们一般这个向量已有数据的平均值, 所以v2填充后变成v2=(3, -1, 1), 接下来我们就可以计算cos<v1, v2>了.而皮尔逊相关系数的思路是, 我把这些null的维度都填上0, 然后让所有其他维度减去这个向量各维度的平均值, 这样的操作叫作中心化. 中心化之后所有维度的平均值就是0了, 也满足进行余弦计算的要求. 然后再进行我们的余弦计算得到结果. 这样先中心化再余弦计得到的相关系数叫作皮尔逊相关系数. 4、修正余弦相似度
计算方法和 皮尔逊方法类似,只是,去中心化的方式不一样。皮尔森区中心化的方式,很好理解(减去的均值是 item的均值)。修正的余弦,减去的是(这个user 的评分均值)。 《Programming Collective Intelligence》读书笔记(2)–协同过滤 5、汉明距离:《Programming Collective Intelligence》读书笔记(2)–协同过滤 5、汉明距离: 汉明距离就是两个相同长度的字符串,对应位不同的数量。比如“” 与“”汉明距离就是 4 6、曼哈顿距离 曼哈顿距离就是两个点在标准坐标系上的绝对轴距总和。
# 曼哈顿距离(Manhattan Distance)def Manhattan(dataA,dataB): return np.sum(np.abs(dataA – dataB))print(Manhattan(dataA,dataB)) 7、Jaccard相似度
备注参考:推荐系统基础-常用相似度算法今晚的风儿很喧嚣:推荐算法入门(1)相似度计算方法大全
2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/51658.html