协同聚类¶
- 类 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
。