Matlab - 高斯混合和模糊C-均值比K-means在高维数据上更准确(26维向量的图像)

Hak*_*kim 6 matlab textures cluster-analysis image-processing k-means

matlab从本教程使用Gabor过滤器的纹理分割中获取了代码.

为了测试clustering得到的多维texture响应的算法gabor filters,我应用Gaussian MixtureFuzzy C-means不是K-means比较它们的结果(在所有情况下簇的数量= 2):

原始图片:

原始图像

K均值集群:

L = kmeans(X, 2, 'Replicates', 5);
Run Code Online (Sandbox Code Playgroud)

k均值

GMM集群:

options = statset('MaxIter',1000);
gmm = fitgmdist(X, 2, 'Options', options);
L = cluster(gmm, X);
Run Code Online (Sandbox Code Playgroud)

GMM

模糊C均值:

[centers, U] = fcm(X, 2);
[values indexes] = max(U);
Run Code Online (Sandbox Code Playgroud)

模糊C均值

在这种情况下,我发现奇怪的是K-means群集比使用GMM和提取的群集更准确Fuzzy C-means.

如果任何人都可以向我解释了高维(L x W x 26:26的数gabor filters使用)作为输入的数据GMMFuzzy C-means分类是什么导致聚类描述不太准确?

换句话说GMM,Fuzzy C-means聚类对数据的维数更敏感,而不是K-means

kma*_*mac 2

很高兴这个评论很有用,以下是我的回答形式的观察结果。

这些方法中的每一种都对初始化敏感,但通过使用 5和更高质量的初始化来作弊k-means( )。其余方法似乎使用单个随机初始化。'Replicates'k-means++

k-meansGMM如果你强制球面协方差。所以从理论上讲,它不应该做得更好(如果真正的协方差实际上是球形的,它可能会做得稍微好一些)。

我认为大部分差异都归因于初始化。您应该能够通过使用 k 均值结果作为其他算法的初始条件来测试这一点。或者正如您所尝试的那样,使用不同的随机种子运行几次,并检查 和 中的变化是否GMMFuzzy C-means中的变化更多k-means