【问题标题】:Is sklearn.cluster.KMeans sensative to data point order?sklearn.cluster.KMeans 对数据点顺序敏感吗?
【发布时间】:2018-05-16 05:37:00
【问题描述】:

正如this post回答关于特征缩放的所述,KMeans 的一些(全部?)实现对特征数据点的顺序很敏感。基于 sklearn.cluster.KMeans documentationn_init 只改变质心的初始位置。这意味着必须循环遍历 features 数据点的几次洗牌,以测试这是否是一个问题。我的问题如下:

  1. scikit-learn 的实现是否像帖子建议的那样对排序敏感?
  2. n_init 会为我处理吗?
  3. 如果我自己这样做,我应该根据最小惯性取最好的还是按照here的建议取平均值?
  4. 是否有一个很好的规则可以根据数据点的数量知道多少个随机排列就足够了?

更新:这个问题最初询问的不是问题的特征(列)顺序。这是对链接帖子中“对象”一词的误解。它已更新为询问数据点(行)的顺序。

【问题讨论】:

    标签: python scikit-learn cluster-analysis k-means


    【解决方案1】:

    K-means 对特征顺序不敏感。

    你提到的帖子是关于规模,而不是顺序。

    如果您查看 kmeans 方程,应该很明显顺序无关紧要。

    有研究(van Luxbourg,如果我没记错的话)基本上说如果有一个好的kmeans结果,那么它一定很容易找到。如果在多次运行 kmeans 时得到非常不同的结果,那么没有一个结果是好的。

    有“n 选择 k”个可能的初始化。虽然它们不可能都是坏的,n_iter 只会尝试其中的极少数。所以不能保证找到“最好的”。该函数将返回具有最低 SSQ 的那个,但这并不意味着这最终是最有用的结果,除非你只关心 SSQ .

    【讨论】:

    • 我意识到问题是关于规模的,但答案有一个很长的脚注,表明特征顺序很重要。另一个链接的答案中也说明了这一点。他们分别使用术语“对象顺序”和“观察顺序”。它们是指数据点的顺序而不是特征吗?该等式意味着情况并非如此,但回答者说这与实施有关。
    • 行的顺序对kmeans很重要,尤其是初始化。
    • 谢谢!您能否更新答案以回答我的子问题?即这如何影响 scikit-learn 实现以及 n_init 是否足以解决此问题?
    猜你喜欢
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2010-12-16
    相关资源
    最近更新 更多