Mahout推荐系统中基于物品的推荐算法相似性策略的区别

我在使用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

要确定哪种方法最适合你的应用,你可能需要对你的数据及其含义有一定的直觉。如果你的数据是连续值特征,那么使用欧几里得距离或皮尔逊相关系数是有意义的。如果你的数据更多是离散值,那么使用城市街区距离或余弦相似度可能更合适。

另一种选择是设置一个交叉验证实验,看看每种相似性度量在预测所需输出值方面的表现如何,并从交叉验证结果中选择表现最佳的度量方法。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注