推荐算法之Co-Clustering算法

在数据分析中,聚类是最常见的一种方法,对于一般的聚类算法(kmeans, spectral clustering, gmm等等),聚类结果都类似下图所示,能挖掘出数据之间的类簇规律。

推荐算法之Co-Clustering算法_第1张图片

数据User-Item评分矩阵常见于各社交平台的数据之中,例如音乐网站的用户-歌曲评分矩阵,新闻网站的用户-新闻评分矩阵,电影网站的用户-电影评分矩阵等等。在聚类分析中,也常常将数据计算成User-User的相似度关系或Item-Item的相似度关系,计算方法诸如Jaccard距离,将User或Item分别当成另一个的特征,再在此基础上计算欧氏距离、cos距离等等。

推荐算法之Co-Clustering算法_第2张图片

但是如果能将User和Item同时聚类,如下图中的coclustering表现的关系,数据结果将会更具意义。在音乐网站中的用户和歌曲coclustering结果表明,某些用户大都喜欢某类歌曲,同时这类歌曲也大都只被这群用户喜欢着。这种特性表明,Co-Clustering方法在歌曲推荐或者电影推荐方面具有较好的适用性。

 

推荐算法之Co-Clustering算法_第3张图片

对于User-Item评分矩阵,这是一个典型的二部图(Bipartite Graph)。Item-User矩阵A,假设A为N*M,即N个item和M个user,可展开成以下的表达式:

 其中E为(M+N)*(M+N)的方阵,且是对称矩阵:

 对于A的二部图,只存在Item与User之间的邻接边,在Item和Item或User和User之间不存在邻接边,因此为0。 

 

得到矩阵E之后,可以采用谱聚类的方法。谱聚类(Spectral Clustering, SC)是一种基于图论的聚类方法,它主要的步骤将带权无向图划分为两个或两个以上的最优子图,使子图内部尽量相似,而子图间距离尽量距离较远,以达到常见聚类的目的。

 

谱聚类能够识别任意形状的样本空间且收敛于全局最优解,其基本思想是将样本数据的相似矩阵(拉普拉斯矩阵)进行特征分解后,根据得到的特征向量进行聚类。

归一化的对角矩阵D(diagonal),对角线上元素是对称矩阵所有行/列元素的总和。

Laplacian矩阵:L = D – E。

推荐算法之Co-Clustering算法_第4张图片

这样的聚类结果将Cut尽量少的边,分割出User和Item的类,如果类记Ci(U,I)为第i个由特定的User和Item组成的类,由谱聚类原理,Cut掉的Ci边为中的User或Item与其它类Cj(j≠i)的边,且其满足某种最优Cut方法。

简单地说,Cut掉的User到其它类Cj(j≠i)的Item的边,可理解为这些User与其它Item相似关系较小;同样Cut掉的Item到其它类Cj(j≠i)的User的边,可理解为这些Item与其它User相似关系较小。这正好满足coclusering的定义。

谱聚类算法的步骤如下:

  1. 数据准备,生成图的邻接矩阵;
  2. 归一化普拉斯矩阵;
  3. 生成最小的k个特征值和对应的特征向量;
  4. 将特征向量kmeans聚类(少量的特征向量);

你可能感兴趣的:(推荐系统,谱聚类)