Algorithm 我们应该使用k-means++;而不是k-means?
该算法有助于原始k-均值算法的以下两点:Algorithm 我们应该使用k-means++;而不是k-means?,algorithm,performance,comparison,cluster-analysis,k-means,Algorithm,Performance,Comparison,Cluster Analysis,K Means,该算法有助于原始k-均值算法的以下两点: 原始的k-means算法在输入大小上具有超多项式的最坏情况运行时间,而k-means++声称是O(logk) 在目标函数方面,与最优聚类相比,所发现的近似可以产生不太令人满意的结果 但是k-means++有什么缺点吗?从现在起,我们应该一直使用它而不是k-均值吗?没有人声称在O(lgk)时间内运行;它的解决方案质量是O(lgk)-与最优解决方案竞争。k-means++和常用的劳埃德算法都是NP难优化问题的近似算法 我不确定k-means++最糟糕的运行时
这就是说,如果您的k-means库支持k-means++,那么请务必尝试一下。这不是您的问题,而是对大N的任何kmeans方法的简单加速: 1) 首先对点的任意样本(如sqrt(N))进行k均值检验
2) 然后从这些中心运行完整的k-means 对于N 10000,k 20,我发现这个速度比kmeans++快5-10倍,结果类似。
它对您的效果将取决于sqrt(N)样本的效果 近似于整体,以及N、dim、k、ninit、delta 您的N(数据点数量)、dim(特征数量)和k是多少?
用户的N、dim、k、数据噪声、度量的巨大范围。。。 更不用说缺乏公共基准了,这使得比较方法变得很困难 添加:kmeans()和kmeanssample()的Python代码为
依此类推;欢迎评论。只是吹毛求疵。这是log K与optimal竞争,而不是与Lloyd竞争。事实上,劳埃德可以是任意糟糕的w.r.t最优,并且没有合理的近似保证。@Suresh:这不是吹毛求疵,而是我的想法。更正。Bradley和Fayyad撰写的论文《为K-均值聚类细化初始点(1998)》,更详细地描述了一种类似的技术:感谢预测;你用过这个吗?(好主意会被重新发现,但也不是很好的主意。)你有没有试过先在随机样本上运行k-means++然后再进行改进?@Anony mouse,听起来很合理,但没有。请纠正我,数据集变化如此之大,以至于说“在像Y这样的数据上使用变量X”是不可能的?好吧,k-means++是一种比选择随机对象更聪明的方法,可以在几乎任何类型的数据上播种。因此,实际上没有什么理由不总是使用k-means++除非您有一个特定于领域的启发式方法来选择更好的种子。