1.数据分类
- 实物值(物品或者其他的评分)
- 布尔值(是或者否的行为),1,0这种布尔值,表肯定或者否定的行为
2.余弦相似度
- 度量的是两个向量之间的夹角,用夹角的余弦值来度量相似的情况
- 两个向量的夹角为0时余弦值为1,当夹角为90°时余弦值为0,当夹角为180°时余弦值为-1
- 余弦相似度在度量文本相似度,用户相似度,物品相似度的时候较为常用
- 余弦相似度的特点,与向量长度无关,余弦相似度计算要对向量长度归一化,两个向量只要方向一致,无论程度强弱,都可以视为‘相似’
如图:
说明:
比如8这个样本,可以从原点出发到8做出一个向量来,每一个点都可以从原点开始做一个向量,比如9样本和6样本,
预算向量考虑的就是夹角,举个例子,9样本向量和8样本向量的夹角,可以去算他两之间的cos值,我们知道余弦值的范围是[-1,1],
如果两个向量的角度余弦值算出来是1,那认为两个物品就是相似的或者说是相关的,如果说是0,就是不相似或者说是不相关的,如果是-1的话,就是负相关。实际上利用负相关或者完全不相关也可以做推荐,比如说你和他爱好完全不一样,是相反的,他不喜欢的那你就喜欢,他喜欢的你就不喜欢,是一种负相关的状态,只是说明这种负相关的概念,真正情况下不会用负相关去做推荐的,这就是余弦相似度
注意余弦相似度不考虑长度,如上图,这个从原点出发到样本点,不会考虑多长,只要大方向是一致的,就认为它是相似的。所以有时候考虑余弦长度的话,可能是会有不考不的结果。
举个例子,如上图,x轴和y轴一共两部电影,9样本,一个电影评分给了8分,一个给了5分,图上新加的10号样本,一个给了2分,一个给了1分,从余弦角度去算,10号样本和9号样本很相似,因为10号样本和9号样本夹角很小,实际上他俩不相似,比如9号给了y轴上的电影算是一个高分,而10号确实很低的分。
这就是余弦相似度恰恰没考虑这个长度通过这种方式算可能是有点问题的。
就有了另外一种计算相似度的方法,皮尔逊相关系数
3.皮尔逊相关系数
这个皮尔逊相关系数实际上就是对余弦相似度的一个优化,会去做一个向量的中心化
Python协同过滤推荐算法(Collaborative Filtering)2.相似度的计算,相似度计算方法
最新推荐文章于 2023-05-13 10:38:12 发布