您的位置:首页 > 其它

几种相似度计算公式

2014-05-13 16:42 253 查看
参考论文: Item-Based Collaborative Filtering Recommendation Algorithms

余弦相似度、改进的余弦相似度、皮尔森相似度,具体描述参考:http://blog.csdn.net/bornhe/article/details/7425642

Cosine Similarity:





Adjusted Cosine Similarity:





Pearson’s Collection Similarity



注意:以上给出的例子公式中,改进的余弦相似度和皮尔森相似度公式都是计算的物品间的相似度,注意两个公式的区别。皮尔森相似度中减去的平均值为物品的平均评分,改进的余弦相似度减去的平均值为用户的平均评分。若是计算用户间的相似度,该减去的平均值需要作相应的调整。《推荐系统》p10中提到,对于基于用户的推荐系统(至少在研究最充分的推荐领域)来说,
Pearson相关系数比其他度量用户相似度的方法更胜一筹,不过对于后来发现的基于物品的推荐技术,余弦相似度方法比Pearson相关度量表现更好。下面式子为计算用户间的皮尔森相似度:



Mahout中相似度计算,对评分向量进行归一化操作:

AbstractVector.java

public Vector normalize() {
return divide(Math.sqrt(dotSelf()));
}
//计算向量模的平方
public double dotSelf() {
double result = 0.0;
Iterator<Element> iter = iterateNonZero();
while (iter.hasNext()) {
double value = iter.next().get();
result += value * value;
}
return result;
}
//归一化,每一维的值除以模
public Vector divide(double x) {
if (x == 1.0) {
return like().assign(this);
}
Vector result = like().assign(this);
Iterator<Element> iter = result.iterateNonZero();
while (iter.hasNext()) {
Element element = iter.next();
element.set(element.get() / x);
}
return result;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: