Matlab - 高斯混合和模糊 C 均值在高维数据(26 维向量图像)上不如 K 均值准确
Matlab - Gaussian mixture and Fuzzy C-means less accurate than K-means on high-dimensional data (image of 26-dimension vectors)
我从本教程 Texture Segmentation Using Gabor Filters 中获取了 matlab
代码。
为了在对 gabor filters
的结果多维 texture
响应上测试 clustering
算法,我应用了 Gaussian Mixture
和 Fuzzy C-means
而不是 K-means
比较他们的结果(所有情况下的簇数 = 2):
原图:
K 均值聚类:
L = kmeans(X, 2, 'Replicates', 5);
GMM 集群:
options = statset('MaxIter',1000);
gmm = fitgmdist(X, 2, 'Options', options);
L = cluster(gmm, X);
模糊 C 均值:
[centers, U] = fcm(X, 2);
[values indexes] = max(U);
在这种情况下,我发现奇怪的是 K-means
聚类比使用 GMM
和 Fuzzy C-means
.
提取的聚类更准确
任何人都可以向我解释一下作为 GMM
和 Fuzzy C-means
分类器是什么导致聚类不太准确?
换句话说,GMM
和 Fuzzy C-means
聚类对数据的维数比 K-means
更敏感?
很高兴评论有用,这是我的回答形式的观察。
这些方法中的每一个都对初始化敏感,但是 k-means
通过使用 5 'Replicates'
和更高质量的初始化(k-means++
作弊 ).其余方法似乎使用单个随机初始化。
k-means
是 GMM
如果你强制球形协方差。所以从理论上讲,它不应该做得更好(如果真正的协方差实际上是球形的,它可能会做得更好)。
我认为大部分差异都归结为初始化。您应该能够通过使用 k-means 结果作为其他算法的初始条件来对此进行测试。或者正如您所尝试的那样,运行 多次使用不同的随机种子并检查 GMM
和 Fuzzy C-means
中的变化是否比 k-means
.
中的变化更多
我从本教程 Texture Segmentation Using Gabor Filters 中获取了 matlab
代码。
为了在对 gabor filters
的结果多维 texture
响应上测试 clustering
算法,我应用了 Gaussian Mixture
和 Fuzzy C-means
而不是 K-means
比较他们的结果(所有情况下的簇数 = 2):
原图:
K 均值聚类:
L = kmeans(X, 2, 'Replicates', 5);
GMM 集群:
options = statset('MaxIter',1000);
gmm = fitgmdist(X, 2, 'Options', options);
L = cluster(gmm, X);
模糊 C 均值:
[centers, U] = fcm(X, 2);
[values indexes] = max(U);
在这种情况下,我发现奇怪的是 K-means
聚类比使用 GMM
和 Fuzzy C-means
.
任何人都可以向我解释一下作为 GMM
和 Fuzzy C-means
分类器是什么导致聚类不太准确?
换句话说,GMM
和 Fuzzy C-means
聚类对数据的维数比 K-means
更敏感?
很高兴评论有用,这是我的回答形式的观察。
这些方法中的每一个都对初始化敏感,但是 k-means
通过使用 5 'Replicates'
和更高质量的初始化(k-means++
作弊 ).其余方法似乎使用单个随机初始化。
k-means
是 GMM
如果你强制球形协方差。所以从理论上讲,它不应该做得更好(如果真正的协方差实际上是球形的,它可能会做得更好)。
我认为大部分差异都归结为初始化。您应该能够通过使用 k-means 结果作为其他算法的初始条件来对此进行测试。或者正如您所尝试的那样,运行 多次使用不同的随机种子并检查 GMM
和 Fuzzy C-means
中的变化是否比 k-means
.