项目中的的创新点选择使用稀疏子空间聚类来对实验中的数据点进行分割,因此查阅了很多的子空间聚类的文献,并学习了Nicolas.Gillis的SR_SSC的理论和代码,现在做一个小小的总结。
一:子空间聚类
从高维数据中,去寻找一个最具代表性的低维子空间,一直都是机器学习和计算机视觉中的一个重要课题。而降维,则是理解和预处理数据集的重要方式,这其中,主成分分析法则是这之中最流行的一种。然而,主成分分析法忽略了数据集中往往包含了不同内在的数据结构的事实。比如,不同的光照下,多个个体的人脸图像,是属于多个流形。对于这个问题,我们需要使用多个子空间来逼近,而不是仅仅假设为一个。这也就是子空间聚类的思想。
形式上,子空间聚类的问题可以定义为:给定N个数据点:,来自于n个子空间,其中, ,其目标是根据数据点所在的子空间对其进行划分(聚类),并估计每个聚类对应的子空间参数。
近几年,人们提出了许多方法来解决这个问题。它们通常分为四类:迭代法、统计法、代数法和基于谱的方法。随着稀疏表示的进展,一组新的方法在基于谱的方法中引起了很多关注。其关键思想是每个数据点可以表示为同一子空间内其他数据点的稀疏线性组合。一种通常被称为自我表达的属性。这一类的三种主要代表方法是稀疏子空间聚类(SSC)、低阶表示子空间聚类(LRR)和最小二乘回归(LSR)。这三种方法都基于以下模型:
(1)
其中,为输入数据,为噪声,为亲和矩阵。
二:稀疏子空间聚类
在这里,项目中主要使用的是稀疏子空间聚类,因此本博客主要记录了对稀疏子空间聚类的学习和理解。
公式(1)中的在SSC、LRR、LSR中都存在着不一样的表示方法,其中,在SSC中,主要表示为 = ,表示为L1范数,用于约束C矩阵的稀疏性。在假设噪声不存在的理想情况下,将公式(1)进行修改,并使用拉格朗日乘子法。因此,SSC问题可以表示如下:
(2)
对式子(2)进行求解后,获得,其中表示为i、j特征点之间存在着某种联系,他们有可能来自于同一子空间。最终,我们设置仿射矩阵,对仿射矩阵W进行谱聚类,最终可以获取聚类结果。同时,我们可以通过谱聚类,观察邻接矩阵的拉普拉斯特征值的衰减,来估计簇的数量。
在本人的项目中,主要参考了Nicolas.Gillis的论文《Scalable and Robust Sparse Subspace Clustering Using Randomized Clustering and Multilayer Graphs》,论文从降低SSC本身的LASSO问题的规模入手,利用随机层次聚类的方法,从原始数据中选出部分数据,其中。我们可以理解为,从N个数据点中,选择出k个数据点作为整个数据集的支持集(锚定点)将自表达公式改为:,。 由此,SSC的公式可以修改为:
由于,在无任何先验条件的基础上,选择一组具有很好的代表性的D是非常困难的。因此,为了降低D选择好坏对算法带来的决定性,我们选择L组D的方式,每一组字典集D都进行一次求解,将获取得到的L组亲和矩阵C,通过图论的方式进行组合,并确定最终的亲和矩阵C。因此,我们假定选择的L组数据集定义为:,其中。最终的表达式可以表示如下:
(3)
上述式子(3)可以使用ADMM算法进行求解。