一.协同过滤算法简介
在推荐系统的众多方法之中,基于用户的协同过滤是诞最早的,原理也比较简单。基于协同过滤的推荐算法被广泛的运用在推荐系统中,比如影视推荐、猜你喜欢等、邮件过滤等。该算法1992年提出并用于邮件过滤系统,两年后1994年被 GroupLens 用于新闻过滤。一直到2000年,该算法都是推荐系统领域最著名的算法。
当用户A需要个性化推荐的时候,可以先找到和他兴趣详细的用户集群G,然后把G喜欢的并且A没有的物品推荐给A,这就是基于用户的协同过滤。
根据上述原理,我们可以将算法分为两个步骤:
1. 找到与目标兴趣相似的用户集群
2. 找到这个集合中用户喜欢的、并且目标用户没有听说过的物品推荐给目标用户。
二、常用的相似度计算方法
下面,简单的举例几个机器学习中常用的样本相似性度量方法:欧式距离(Euclidean Distance)
余弦相似度(Cosine)
皮尔逊相关系数(Pearson)
修正余弦相似度(Adjusted Cosine)
汉明距离(Hamming Distance)
曼哈顿距离(Manhattan Distance)
1、 欧式距离(Euclidean Distance)
欧式距离全称是欧几里距离,是最易于理解的一种距离计算方式,源自欧式空间中两点间的距离公式。平面空间内的
与
间的欧式距离:
2. 三维空间里的欧式距离:
3. Python 代码简单实现:
def EuclideanDistance(x,y):
d = 0
for a,b in zip(x,y):
d += (a-b)**2
return d**0.5
4. 使用 numpy 简化:
import numpy as np
def EuclideanDistance(dataA,dataB):
# np.linalg.norm 用于范数计算,默认是二范数,相当于平方和开根号
return 1.0/(1.0 + np.linalg.norm(