使用无监督降维的模糊聚类
Fuzzy clustering using unsupervised dimensionality reduction
无监督降维算法将矩阵 NxC1 作为输入,其中 N 是输入向量的数量,C1 是每个向量的分量数(向量的维数)。结果,它 returns 一个新矩阵 NxC2 (C2 < C1),其中每个向量的分量都较少。
模糊聚类算法将矩阵 N*C1 作为输入,其中 N 再次是输入向量的数量,C1 是每个向量的分量数。结果,它 returns 一个新的矩阵 NxC2(C2 通常低于 C1),其中每个向量的每个分量表示该向量属于相应簇的程度。
我注意到两个类算法的输入和输出在结构上是相同的,只是结果的解释发生了变化。此外,scikit-learn 中没有模糊聚类的实现,因此出现以下问题:
使用降维算法执行模糊聚类是否有意义?
例如,将 FeatureAgglomeration or TruncatedSVD 应用于从文本数据中提取的 TF-IDF 向量构建的数据集,并将结果解释为模糊聚类是没有意义的吗?
从某种意义上说,当然。这在某种程度上取决于您希望如何在下游使用结果。
考虑 SVD 截断或排除主成分。我们已经投射到一个新的、保持方差的 space 中,对新流形的结构几乎没有其他限制。原始数据点的新坐标表示对于某些元素可能具有较大的负数,这有点奇怪。但是可以毫不费力地移动和重新缩放数据。
然后可以将每个维度解释为集群成员权重。但是请考虑模糊聚类的一个常见用途,即生成硬聚类。注意这对于模糊聚类权重是多么容易(例如,只取最大值)。考虑新降维 space 中的一组点,比如 <0,0,1>,<0,1,0>,<0,100,101>,<5,100,99>。如果阈值化,模糊聚类会给出类似 {p1,p2}, {p3,p4} 的东西,但是如果我们在这里取最大值(即将降维轴视为成员资格,我们得到 {p1,p3},{p2,p4 }, 例如 k=2。当然,可以使用比 max 更好的算法来推导硬隶属关系(比如通过查看成对距离,这对我的例子有用);这样的算法被称为聚类算法.
当然,不同的降维算法对此可能效果更好或更差(例如,专注于保留数据点之间的距离而不是方差的 MDS 更自然地类似于集群)。但从根本上说,许多降维算法隐含地保留有关数据所在的底层流形的数据,而模糊聚类向量仅保留有关数据点之间关系的信息(可能隐含也可能不隐含编码其他信息)。
总的来说,目的有点不同。聚类旨在查找相似数据组。特征选择和降维旨在通过改变嵌入space来减少数据的噪声and/or冗余。我们经常用后者来帮助前者。
无监督降维算法将矩阵 NxC1 作为输入,其中 N 是输入向量的数量,C1 是每个向量的分量数(向量的维数)。结果,它 returns 一个新矩阵 NxC2 (C2 < C1),其中每个向量的分量都较少。
模糊聚类算法将矩阵 N*C1 作为输入,其中 N 再次是输入向量的数量,C1 是每个向量的分量数。结果,它 returns 一个新的矩阵 NxC2(C2 通常低于 C1),其中每个向量的每个分量表示该向量属于相应簇的程度。
我注意到两个类算法的输入和输出在结构上是相同的,只是结果的解释发生了变化。此外,scikit-learn 中没有模糊聚类的实现,因此出现以下问题:
使用降维算法执行模糊聚类是否有意义? 例如,将 FeatureAgglomeration or TruncatedSVD 应用于从文本数据中提取的 TF-IDF 向量构建的数据集,并将结果解释为模糊聚类是没有意义的吗?
从某种意义上说,当然。这在某种程度上取决于您希望如何在下游使用结果。
考虑 SVD 截断或排除主成分。我们已经投射到一个新的、保持方差的 space 中,对新流形的结构几乎没有其他限制。原始数据点的新坐标表示对于某些元素可能具有较大的负数,这有点奇怪。但是可以毫不费力地移动和重新缩放数据。
然后可以将每个维度解释为集群成员权重。但是请考虑模糊聚类的一个常见用途,即生成硬聚类。注意这对于模糊聚类权重是多么容易(例如,只取最大值)。考虑新降维 space 中的一组点,比如 <0,0,1>,<0,1,0>,<0,100,101>,<5,100,99>。如果阈值化,模糊聚类会给出类似 {p1,p2}, {p3,p4} 的东西,但是如果我们在这里取最大值(即将降维轴视为成员资格,我们得到 {p1,p3},{p2,p4 }, 例如 k=2。当然,可以使用比 max 更好的算法来推导硬隶属关系(比如通过查看成对距离,这对我的例子有用);这样的算法被称为聚类算法.
当然,不同的降维算法对此可能效果更好或更差(例如,专注于保留数据点之间的距离而不是方差的 MDS 更自然地类似于集群)。但从根本上说,许多降维算法隐含地保留有关数据所在的底层流形的数据,而模糊聚类向量仅保留有关数据点之间关系的信息(可能隐含也可能不隐含编码其他信息)。
总的来说,目的有点不同。聚类旨在查找相似数据组。特征选择和降维旨在通过改变嵌入space来减少数据的噪声and/or冗余。我们经常用后者来帮助前者。