余弦相似度

【机器学习】几种相似度算法分析

匿名 (未验证) 提交于 2019-12-03 00:30:01
最近开始研究推荐系统,其中常见的相似度算法有以下几种: 1. 欧几里得距离 欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点之间的实际距离。 注意事项: a.因为计算是基于各维度特征的绝对数值,所以欧氏度量需要保证各维度指标在相同的刻度级别,比如对身高(cm)和体重(kg)两个单位不同的指标使用欧式距离可能使结果失效。 b.欧几里得距离是数据上的直观体现,看似简单,但在处理一些受主观影响很大的评分数据时,效果则不太明显;比如,U1对Item1,Item2 分别给出了2分,4分的评价;U2 则给出了4分,8分的评分。通过分数可以大概看出,两位用户褒Item2 ,贬Item1,也许是性格问题,U1 打分更保守点,评分偏低,U2则更粗放一点,分值略高。在逻辑上,是可以给出两用户兴趣相似度很高的结论。如果此时用欧式距离来处理,得到的结果却不尽如人意。即评价者的评价相对于平均水平偏离很大的时候欧几里德距离不能很好的揭示出真实的相似度。 2. 皮尔逊相关系数 Pearson 相关系数是用协方差除以两个变量的标准差得到的,虽然协方差能反映两个随机变量的相关程度(协方差大于0的时候表示两者正相关,小于0的时候表示两者负相关)

推荐算法-余弦相似度

匿名 (未验证) 提交于 2019-12-02 23:55:01
/*--> */ /*--> */ /*--> */ /*--> */ /*--> */ 一、余弦相似度: 余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性" 二维向量的余弦相似度: 多维向量的余弦相似度(类比) /*--> */ /*--> */ /*--> */ /*--> */ /*--> */ 协同过滤(Collaborative Filtering , 简称 CF ): 收集用户行为 减噪与归一化处理 减噪:用户行为数据是用户在使用应用过程中产生的,它可能存在大量的噪音和用户的误操作,我们可以通过经典的数据挖掘算法过滤掉行为数据中的噪音,这样可以是我们的分析更加精确 归一化:将各个行为的数据统一在一个相同的取值范围中,从而使得加权求和得到的总体喜好更加精确。 二、基于物品的协同过滤推荐算法(itemCF): 算法思想:给用户推荐那些和他们之前喜欢的物品相似的物品 用户行为与权重:点击 -1、搜索 -3、收藏 -5 、付款 -10 用户 A 、B 、C 商品 1 、2 、3 、4 、5 、6 根据用户行为列表计算用户、物品的评分矩阵 根据用户、物品的评分矩阵计算物品、物品的相似矩阵 相似度矩阵x评分矩阵=推荐列表 推荐列表中用户之前已经有过行为的元素置为0 /*--> */ /*--> */ /*--> */ /*--> */ /*--> */

余弦相似度和余弦距离的推导与理解

匿名 (未验证) 提交于 2019-12-02 23:47:01
1 余弦相似度 余弦相似度是通过测量两个向量之间的夹角的余弦值来度量他们之间的一个相似度.0度角的余弦值是1,其他的任何角度的余弦值都不大于1,最小值是-1,从而两个向量之间角度的余弦值确定了两个向量是否指向同一个方向.两个向量的指向相同时,余弦相似度为1,当两个向量的夹角是90度时,余弦相似度的值为0,两个向量的指向完全相反时,余弦相似度的值为-1.*这个结果与向量的长度无关,仅仅与向量的指向有关. 余弦相似度通常用于正空间,因此一般的值为0到1之间.这个界限对任意维度的向量空间都适用,而且余弦相似度最长应用于高维正空间.它通常应用于文本挖掘中的文件比较,另外,在数据挖掘领域,常用来度量集群内部的凝聚力. 两个向量之间的余弦值可以通过使用欧几里得点积公式求出: 给定两个属性向量,A和B,其余弦相似性由点积和向量长度给出,如下所示: 公式推导: 2 余弦距离 简单来说,余弦距离就是用1 减去我们的余弦相似度获得的.余弦相似度的取值范围是[-1,1],方向相同的两个向量之间的相似度是1,余弦距离的取值范围是[0,2] 我们看下余弦距离与欧式距离之间的关系: 1 非负性 根据上述的介绍,余弦距离的取值范围为[0,2],满足非负性的性质 2 对称性 d i s t ( A , B ) = 1 cos θ =

推荐算法初探

丶灬走出姿态 提交于 2019-12-01 05:02:22
1. 推荐算法简介 0x1:关于推荐的几个小故事 在开始讨论抽象具体的算法和公式之前,笔者希望先通过几个小故事,来帮助读者朋友建立一个对推荐算法的感性理解。同时我们也可以更好地体会到在现实复杂世界中,推荐是一项非常复杂的事情,现在的最新的推荐算法可能只模拟了其中30%不到的程度。 1. 150年前美国西部小镇的生活情形 假想150年前一个美国小镇的生活情形,大家都互相认识: 百货店某天进了一批布料,店员注意到这批布料中某个特定毛边的样式很可能会引起Clancey夫人的高度兴趣,因为他知道Clancey夫人喜欢亮花纹样,于是他在心里记着等Clancey夫人下次光顾时将该布料拿给她看看。 Chow Winkler告诉酒吧老板Wilson先生,他考虑将多余的雷明顿(Renmington)来福枪出售,Wilson先生将这则消息告诉Bud Barclay,因为他知道Bud正在寻求一把好枪。 Valquez警长及其下属知道Lee Pye是需要重点留意的对象,因为Lee Pye喜欢喝酒,并且性格暴躁、身体强壮 100年前的小镇生活都与 人和人之间的联系 有关。人们知道你的喜好、健康和婚姻状况。不管是好是坏,大家得到的都是 个性化的体验 。那时,这种高度个性化的社区生活占据了当时世界上的大部分角落。 请注意,这里每个人都对其他 每个人的个性和近期情况 非常了解

推荐算法-余弦相似度

邮差的信 提交于 2019-11-28 11:28:00
/*--> */ /*--> */ 一、余弦相似度: 余弦值越接近1,就表明夹角越接近0度,也就是两个向量越相似,这就叫"余弦相似性" 二维向量的余弦相似度: 多维向量的余弦相似度(类比) /*--> */ /*--> */ 协同过滤(Collaborative Filtering , 简称 CF ): 收集用户行为 减噪与归一化处理 减噪:用户行为数据是用户在使用应用过程中产生的,它可能存在大量的噪音和用户的误操作,我们可以通过经典的数据挖掘算法过滤掉行为数据中的噪音,这样可以是我们的分析更加精确 归一化:将各个行为的数据统一在一个相同的取值范围中,从而使得加权求和得到的总体喜好更加精确。 二、基于物品的协同过滤推荐算法(itemCF): 算法思想:给用户推荐那些和他们之前喜欢的物品相似的物品 用户行为与权重:点击 -1、搜索 -3、收藏 -5 、付款 -10 用户 A 、B 、C 商品 1 、2 、3 、4 、5 、6 根据用户行为列表计算用户、物品的评分矩阵 根据用户、物品的评分矩阵计算物品、物品的相似矩阵 相似度矩阵x评分矩阵=推荐列表 推荐列表中用户之前已经有过行为的元素置为0 /*--> */ /*--> */ 三、基于用户的协同过滤推荐算法( UserCF) 算法思想:给用户推荐和他兴趣相似的其他用户喜欢的物品 用户行为与权重:点击 -1、搜索 -3、收藏 -5

利用word分词来计算文本相似度

懵懂的女人 提交于 2019-11-27 01:11:16
word分词 提供了多种文本相似度计算方式: 方式一:余弦相似度,通过计算两个向量的夹角余弦值来评估他们的相似度 实现类: org.apdplat.word.analysis.CosineTextSimilarity 用法如下: String text1 = "我爱购物"; String text2 = "我爱读书"; String text3 = "他是黑客"; TextSimilarity textSimilarity = new CosineTextSimilarity(); double score1pk1 = textSimilarity.similarScore(text1, text1); double score1pk2 = textSimilarity.similarScore(text1, text2); double score1pk3 = textSimilarity.similarScore(text1, text3); double score2pk2 = textSimilarity.similarScore(text2, text2); double score2pk3 = textSimilarity.similarScore(text2, text3); double score3pk3 = textSimilarity.similarScore