2

我正在使用基于 mahout 推荐项的算法。所有可用的 --similarity 类之间有什么区别?如何知道我的应用程序的最佳选择是什么?这些是我的选择:

SIMILARITY_COOCCURRENCE
SIMILARITY_LOGLIKELIHOOD
SIMILARITY_TANIMOTO_COEFFICIENT
SIMILARITY_CITY_BLOCK
SIMILARITY_COSINE
SIMILARITY_PEARSON_CORRELATION       
SIMILARITY_EUCLIDEAN_DISTANCE

每一个是什么意思?

4

2 回答 2

3

我不熟悉所有这些,但我可以提供一些帮助。

共现是指同一用户出现两个项目的频率。http://en.wikipedia.org/wiki/Co-occurrence

对数似然是根据您推荐的特征推荐该项目的概率的对数。http://en.wikipedia.org/wiki/Log-likelihood

不确定谷本

如果您假设您只能像在棋盘式城市中一样四处走动,那么城市街区就是两个实例之间的距离。http://en.wikipedia.org/wiki/Taxicab_geometry

余弦相似度是两个特征向量之间夹角的余弦值。http://en.wikipedia.org/wiki/Cosine_similarity

皮尔逊相关是由标准差归一化的特征的协方差。http://en.wikipedia.org/wiki/Pearson_correlation_coefficient

欧几里得距离是两点之间的标准直线距离。http://en.wikipedia.org/wiki/Euclidean_distance

要确定哪个最适合您的应用程序,您很可能需要对您的数据及其含义有一些直觉。如果您的数据是连续值特征,那么像欧几里得距离或皮尔逊相关性之类的东西是有意义的。如果您的离散值比城市街区或余弦相似度的值更多,则可能更有意义。

另一种选择是设置一个交叉验证实验,您可以在其中查看每个相似性度量在预测所需输出值方面的效果,并从交叉验证结果中选择效果最佳的度量。

于 2014-04-28T15:50:50.060 回答
0

Tanimoto 和 Jaccard 是相似的,是用于比较样本集的相似性和多样性的统计量。

https://en.wikipedia.org/wiki/Jaccard_index

于 2015-08-06T23:41:45.967 回答