推荐系统 Mahout

Mahout 使用的算法

欧氏距离相似度:利用欧氏距离定义的相似度,取值范围在[0,1],其值越小,说明距离越近,相似度越高。

余弦相似度:和向量空间模型(VSM)类似,利用多维空间两点与所设定的点形成夹角的余弦值来定义相似度。取值范围在[–1,1],取值越大,说明夹角越小,两点相距就越近,相似度就越高。在Mahout中,实现了数据中心化的过程,所以皮尔森相似度值也是数据中心化后的余弦相似度。
另外,在新版本中,Mahout提供了非中心化数据的余弦相似度。

皮尔森(Pearson)相关系数:用来反映两个变量线性相关程度的统计量。取值范围在[–1,1],绝对值越大,说明相关性越高。负数表示负相关,可以看作用户“讨厌”这个物品,对其进行推荐的意义非常小,甚至是相反意义,需要避免推荐。和欧氏距离一样,该系数没有考虑重叠数对结果的影响。Mahout中,为皮尔森相关计算提供了一个扩展,通过增加一个枚举类型(Weighting)的参数来使得重叠数也成为计算相似度的影响因子。因为其比较容易被理解,因此在早期的研究中经常被提起。

斯皮尔曼(Spearman)相关系数:该相关系数通常被认为是排列后的变量之间的皮尔森线性相关系数。取值范围在[–1.0,1.0],当完全一致时为1.0,完全不一致时为–1.0。缺点是有大量排序,计算缓慢,不太适合实时性强的推荐系统。谷本(Tanimoto)系数:又名广义杰卡德(Jaccard)系数,是对杰卡德系数的扩展。取值范围在[0,1],忽略了用户对物品具体的偏好程度,只考虑0或1。完全重叠时为1,无重叠项时为0,越接近1说明越相似。对数似然相似度:与谷本系数类似,处理无打分的偏好数据。

协同过滤

固定数量的近邻:用“最近”的K个用户或物品作为邻居。如图5-19所示,假设要计算点1的5个邻居,那么根据各点之间的距离,我们取最近的5个点,分别是点2、点3、点4、点7和点5。很明显可以看出,因为要取固定个数的邻居,这种方法对于孤立点的计算效果不太好。当它附近没有足够多比较相似的点,就会被迫取一些不太相似的点作为邻居,这样就影响了近邻相似的程度,比如在图5-19中,点1和点5其实并不是很相似。

image.png

基于相似度阈值的近邻:与计算固定数量的近邻的原则不同,基于相似度阈值的邻居计算是对邻居的远近进行最大值的限制,落在以当前点为中心,距离为K的区域中的所有点都作为当前点的邻居,这种计算方法得到的邻居个数不确定,但相似度不会出现较大的误差。如图5-20所示,从点1出发,计算相似度在K内的邻居,得到点2、点3、点4和点7,这种方法计算出的邻居的相似度程度比前一种更合理,尤其是对孤立点的处理。这种方式要表现的就是“宁缺勿滥”,在数据稀疏的情况下效果是非常明显的。

image.png

你可能感兴趣的:(推荐系统 Mahout)