我在使用Mahout的基于物品的推荐算法。所有可用的–similarity类之间有什么区别?我如何知道哪一个最适合我的应用?这些是我的选择:
SIMILARITY_COOCCURRENCESIMILARITY_LOGLIKELIHOODSIMILARITY_TANIMOTO_COEFFICIENTSIMILARITY_CITY_BLOCKSIMILARITY_COSINESIMILARITY_PEARSON_CORRELATION SIMILARITY_EUCLIDEAN_DISTANCE
这些分别代表什么意思?
回答:
我对这些并不都熟悉,但我可以帮助解释一些。
共现(Cooccurrence)是指两个物品在同一个用户中出现的频率。 http://en.wikipedia.org/wiki/Co-occurrence
对数似然(Log-Likelihood)是指根据你推荐的特征,物品被推荐的概率的对数。 http://en.wikipedia.org/wiki/Log-likelihood
关于Tanimoto系数我不确定
城市街区距离(City block)是指如果假设你只能像在棋盘式城市中移动那样计算两个实例之间的距离。 http://en.wikipedia.org/wiki/Taxicab_geometry
余弦相似度(Cosine similarity)是指两个特征向量之间的角度的余弦值。 http://en.wikipedia.org/wiki/Cosine_similarity
皮尔逊相关系数(Pearson Correlation)是特征的协方差除以它们的标准偏差。 http://en.wikipedia.org/wiki/Pearson_correlation_coefficient
欧几里得距离(Euclidean distance)是指两点之间的标准直线距离。 http://en.wikipedia.org/wiki/Euclidean_distance
要确定哪种方法最适合你的应用,你可能需要对你的数据及其含义有一定的直觉。如果你的数据是连续值特征,那么使用欧几里得距离或皮尔逊相关系数是有意义的。如果你的数据更多是离散值,那么使用城市街区距离或余弦相似度可能更合适。
另一种选择是设置一个交叉验证实验,看看每种相似性度量在预测所需输出值方面的表现如何,并从交叉验证结果中选择表现最佳的度量方法。