sklearn.cluster.KMeans 对数据点顺序敏感吗?
Is sklearn.cluster.KMeans sensative to data point order?
正如 answer 到 this post about feature scaling, some(all?) implementations of KMeans are sensitive to the order of features data points. Based on the sklearn.cluster.KMeans documentation 中所述,n_init 仅更改质心的初始位置.这意味着必须循环遍历 features 数据点的一些洗牌以测试这是否是一个问题。我的问题如下:
- scikit-learn 实现是否像 post 所建议的那样对排序敏感?
- n_init会帮我处理吗?
- 如果我自己去做,我应该根据最小惯性取最佳值还是按照建议取平均值here?
- 是否有一个好的规则可以根据数据点的数量知道多少次随机排列就足够了?
更新:问题最初询问的是关于特征(列)顺序的问题,这不是问题。这是对链接 post 中术语 "objects" 的误解。已更新询问数据点(行)顺序。
K-means 对特征顺序不敏感。
您所指的post是关于比例,而不是顺序。
如果您查看 kmeans 方程,应该会明显看出顺序无关紧要。
有研究(van Luxbourg,如果我没记错的话)基本上说 如果 有一个好的 kmeans 结果,那么它一定很容易找到。如果多次 运行 kmeans 得到非常不同的结果,那么 none 的结果是好的。
有 "n choose k" 种可能的初始化。虽然它们不可能都是坏的,但 n_iter
只会尝试其中的很少一部分。所以不能保证找到 "best"。该函数将 return 具有最低 SSQ 的那个,但这并不意味着这是最 有用的 结果最后,除非你只关心SSQ。
正如 answer 到 this post about feature scaling, some(all?) implementations of KMeans are sensitive to the order of features data points. Based on the sklearn.cluster.KMeans documentation 中所述,n_init 仅更改质心的初始位置.这意味着必须循环遍历 features 数据点的一些洗牌以测试这是否是一个问题。我的问题如下:
- scikit-learn 实现是否像 post 所建议的那样对排序敏感?
- n_init会帮我处理吗?
- 如果我自己去做,我应该根据最小惯性取最佳值还是按照建议取平均值here?
- 是否有一个好的规则可以根据数据点的数量知道多少次随机排列就足够了?
更新:问题最初询问的是关于特征(列)顺序的问题,这不是问题。这是对链接 post 中术语 "objects" 的误解。已更新询问数据点(行)顺序。
K-means 对特征顺序不敏感。
您所指的post是关于比例,而不是顺序。
如果您查看 kmeans 方程,应该会明显看出顺序无关紧要。
有研究(van Luxbourg,如果我没记错的话)基本上说 如果 有一个好的 kmeans 结果,那么它一定很容易找到。如果多次 运行 kmeans 得到非常不同的结果,那么 none 的结果是好的。
有 "n choose k" 种可能的初始化。虽然它们不可能都是坏的,但 n_iter
只会尝试其中的很少一部分。所以不能保证找到 "best"。该函数将 return 具有最低 SSQ 的那个,但这并不意味着这是最 有用的 结果最后,除非你只关心SSQ。