similarities 模块¶
模块 similarities
包含了计算用户或物品之间相似度度量的工具。您可能需要参考符号标准,参考文献页面。另请参阅用户指南的相似度度量配置部分。
可用相似度度量
计算所有用户(或物品)对之间的余弦相似度。 |
|
计算所有用户(或物品)对之间的均方差相似度。 |
|
计算所有用户(或物品)对之间的皮尔逊相关系数。 |
|
计算所有用户(或物品)对之间的(收缩)皮尔逊相关系数,使用基线进行中心化而不是均值。 |
- surprise.similarities.cosine(n_x, yr, min_support)¶
计算所有用户(或物品)对之间的余弦相似度。
只考虑共同的用户(或物品)。余弦相似度定义为
\[\text{cosine_sim}(u, v) = \frac{ \sum\limits_{i \in I_{uv}} r_{ui} \cdot r_{vi}} {\sqrt{\sum\limits_{i \in I_{uv}} r_{ui}^2} \cdot \sqrt{\sum\limits_{i \in I_{uv}} r_{vi}^2} }\]或
\[\text{cosine_sim}(i, j) = \frac{ \sum\limits_{u \in U_{ij}} r_{ui} \cdot r_{uj}} {\sqrt{\sum\limits_{u \in U_{ij}} r_{ui}^2} \cdot \sqrt{\sum\limits_{u \in U_{ij}} r_{uj}^2} }\]取决于
sim_options
的user_based
字段(参见 相似度度量配置)。有关余弦相似度的详细信息,请参见 Wikipedia。
- surprise.similarities.msd(n_x, yr, min_support)¶
计算所有用户(或物品)对之间的均方差相似度。
只考虑共同的用户(或物品)。均方差定义为
\[\text{msd}(u, v) = \frac{1}{|I_{uv}|} \cdot \sum\limits_{i \in I_{uv}} (r_{ui} - r_{vi})^2\]或
\[\text{msd}(i, j) = \frac{1}{|U_{ij}|} \cdot \sum\limits_{u \in U_{ij}} (r_{ui} - r_{uj})^2\]取决于
sim_options
的user_based
字段(参见 相似度度量配置)。MSD 相似度则定义为
\[\begin{split}\text{msd_sim}(u, v) &= \frac{1}{\text{msd}(u, v) + 1}\\ \text{msd_sim}(i, j) &= \frac{1}{\text{msd}(i, j) + 1}\end{split}\]\(+ 1\) 项仅用于避免除以零。
有关 MSD 的详细信息,请参见 Wikipedia 的第三个定义。
- surprise.similarities.pearson(n_x, yr, min_support)¶
计算所有用户(或物品)对之间的皮尔逊相关系数。
只考虑共同的用户(或物品)。皮尔逊相关系数可视为均值中心化的余弦相似度,定义为
\[\text{pearson_sim}(u, v) = \frac{ \sum\limits_{i \in I_{uv}} (r_{ui} - \mu_u) \cdot (r_{vi} - \mu_{v})} {\sqrt{\sum\limits_{i \in I_{uv}} (r_{ui} - \mu_u)^2} \cdot \sqrt{\sum\limits_{i \in I_{uv}} (r_{vi} - \mu_{v})^2} }\]或
\[\text{pearson_sim}(i, j) = \frac{ \sum\limits_{u \in U_{ij}} (r_{ui} - \mu_i) \cdot (r_{uj} - \mu_{j})} {\sqrt{\sum\limits_{u \in U_{ij}} (r_{ui} - \mu_i)^2} \cdot \sqrt{\sum\limits_{u \in U_{ij}} (r_{uj} - \mu_{j})^2} }\]取决于
sim_options
的user_based
字段(参见 相似度度量配置)。注意:如果没有共同的用户或物品,相似度将为 0(而不是 -1)。
有关皮尔逊系数的详细信息,请参见 Wikipedia。
- surprise.similarities.pearson_baseline(n_x, yr, min_support, global_mean, x_biases, y_biases, shrinkage=100.0)¶
计算所有用户(或物品)对之间的(收缩)皮尔逊相关系数,使用基线进行中心化而不是均值。
当只有少量评分可用时,收缩参数有助于避免过拟合(参见 相似度度量配置)。
皮尔逊基线相关系数定义为
\[\text{pearson_baseline_sim}(u, v) = \hat{\rho}_{uv} = \frac{ \sum\limits_{i \in I_{uv}} (r_{ui} - b_{ui}) \cdot (r_{vi} - b_{vi})} {\sqrt{\sum\limits_{i \in I_{uv}} (r_{ui} - b_{ui})^2} \cdot \sqrt{\sum\limits_{i \in I_{uv}} (r_{vi} - b_{vi})^2}}\]或
\[\text{pearson_baseline_sim}(i, j) = \hat{\rho}_{ij} = \frac{ \sum\limits_{u \in U_{ij}} (r_{ui} - b_{ui}) \cdot (r_{uj} - b_{uj})} {\sqrt{\sum\limits_{u \in U_{ij}} (r_{ui} - b_{ui})^2} \cdot \sqrt{\sum\limits_{u \in U_{ij}} (r_{uj} - b_{uj})^2}}\]收缩的皮尔逊基线相关系数则定义为
\[ \begin{align}\begin{aligned}\text{pearson_baseline_shrunk_sim}(u, v) &= \frac{|I_{uv}| - 1} {|I_{uv}| - 1 + \text{shrinkage}} \cdot \hat{\rho}_{uv}\\\text{pearson_baseline_shrunk_sim}(i, j) &= \frac{|U_{ij}| - 1} {|U_{ij}| - 1 + \text{shrinkage}} \cdot \hat{\rho}_{ij}\end{aligned}\end{align} \]显然,收缩参数为 0 等于完全没有收缩。
注意:同样地,如果没有共同的用户/物品,相似度将为 0(而不是 -1)。
可以在《推荐系统手册》第 5.4.1 节中找到对此类相似度度量的动机。