我在 400x1000 矩阵上的 matlab 中运行 kmeans,由于某种原因,每当我运行算法时,我都会得到不同的结果。下面是一个代码示例:
[idx, ~, ~, ~] = kmeans(factor_matrix, 10, 'dist','sqeuclidean','replicates',20);
出于某种原因,每次运行此代码时都会得到不同的结果?有任何想法吗?
我正在使用它来识别多重共线性问题。
谢谢您的帮助!
我在 400x1000 矩阵上的 matlab 中运行 kmeans,由于某种原因,每当我运行算法时,我都会得到不同的结果。下面是一个代码示例:
[idx, ~, ~, ~] = kmeans(factor_matrix, 10, 'dist','sqeuclidean','replicates',20);
出于某种原因,每次运行此代码时都会得到不同的结果?有任何想法吗?
我正在使用它来识别多重共线性问题。
谢谢您的帮助!
正如您在 wiki上看到的那样,k-means 算法通常是启发式的和部分概率的,Matlab 中的算法也不例外。
这意味着该算法存在一定的随机部分(在Matlab 的情况下,重复使用随机起点来寻找全局解)。这使得kmeans
输出集群具有平均质量。但是:考虑到算法的伪随机性,每次你都会得到稍微不同的集群——这是正常的行为。
这称为初始化问题,因为 kmeans 从随机初始点开始对数据进行聚类。matlab 选择 k 个随机点并计算数据中的点到这些位置的距离,并找到新的质心以进一步最小化距离。因此对于质心位置,您可能会得到不同的结果,但答案是相似的。