我一直使用Matlab内置的kmeans函数进行聚类。由于算法中使用了随机性,如果我设置不同的种子,结果就会有所不同。这有点烦人。有没有办法减少聚类结果的差异?或者,Matlab中是否有用于聚类的确定性函数?
回答:
我想出了一些方法来减少聚类结果的差异。
- 在kmeans的参数中设置’OnlinePhase’,’on’。这将导致一个局部最小值,通常也是全局最小值。
- 在参数中设置’Replicates’, 5。这里的5可以替换为更大的数字。这要求Matlab进行5次kmeans操作,并选择最佳结果。
- 在参数中设置’MaxIter’, 1000。这将把最大迭代次数从默认的100增加到1000,这可能会,但可能性不大,提高精度。
只要我们致力于从kmeans中获得最佳结果,我们就更有可能获得一致的结果。