协同聚类

surprise.prediction_algorithms.co_clustering.CoClustering(n_cltr_u=3, n_cltr_i=3, n_epochs=20, random_state=None, verbose=False)

基础类:AlgoBase

一种基于协同聚类的协同过滤算法。

这是 [GM05] 的一个直接实现。

基本上,用户和物品会被分配到一些聚类 \(C_u\)\(C_i\),以及一些协同聚类 \(C_{ui}\)

预测值 \(\hat{r}_{ui}\) 被设置为

\[\hat{r}_{ui} = \overline{C_{ui}} + (\mu_u - \overline{C_u}) + (\mu_i - \overline{C_i}),\]

其中 \(\overline{C_{ui}}\) 是协同聚类 \(C_{ui}\) 的平均评分,\(\overline{C_u}\) 是用户 \(u\) 所属聚类的平均评分,\(\overline{C_i}\) 是物品 \(i\) 所属聚类的平均评分。如果用户未知,预测值为 \(\hat{r}_{ui} = \mu_i\)。如果物品未知,预测值为 \(\hat{r}_{ui} = \mu_u\)。如果用户和物品都未知,预测值为 \(\hat{r}_{ui} = \mu\)

聚类是使用一种直接的优化方法进行分配的,很像 k-means。

参数:
  • n_cltr_u (int) – 用户聚类数量。默认值为 3

  • n_cltr_i (int) – 物品聚类数量。默认值为 3

  • n_epochs (int) – 优化循环的迭代次数。默认值为 20

  • random_state (int, RandomState instance from numpy, or None) – 确定用于初始化的 RNG(随机数生成器)。如果为 int,random_state 将用作新的 RNG 的种子。这对于在多次调用 fit() 时获得相同的初始化非常有用。如果为 RandomState 实例,则使用此实例作为 RNG。如果为 None,则使用 numpy 当前的 RNG。默认值为 None

  • verbose (bool) – 如果为 True,则会打印当前 epoch(迭代周期)。默认值为 False