2013-01-18 38 views
2

我最近开始研究聚类和k-means算法,并试图提出一个很好的用例并解决它。非数值维上的聚类

我有关于在不同城市销售的物品的以下数据。

项目市

项目1纽约
项目2夏洛特
项目1旧金山
...

我想集群基于变量对城市和项目的数据找到城市群是可能有类似的销售物品的模式。问题是我使用的k-means不接受非数字输入。任何想法我应该如何着手寻找一个有意义的解决方案。

感谢 SV

回答

2

集群需要距离定义。根据某个距离函数,如果项目“更近”,则群集只是一个群集。它们越接近,它们就越有可能属于同一个群集。

就你而言,你可以尝试根据与城市相关的各种数据(如地理坐标或人口统计信息)进行聚类,并查看聚类在各种情况下是否重叠!

2

为了k均值,以产生有用的结果,所述装置必须有意义

即使你要例如使用二进制向量,这些k-手段不会产生很大的意义恕我直言。

可能是开始使用k-means的最佳用例是颜色量化。拍摄一张照片,并将每个像素的RGB值用作3d矢量。然后用k作为所需数量的颜色运行k-means。色彩中心是您的最终调色板,每个像素都将映射到最近的中心以减少色彩。

之所以这样使用k均值效果很好是双重的:

  • 平均实际上是有意义的查找多个像素
  • 轴线R的平均色,G和B具有类似的含义和规模,所以没有偏见

如果你想超越,尝试做同样的例如在HSB空间。如果你希望它真的很好,你会遇到困难。因为色调值是循环的,与平均值不一致。假设色调在0-360度,那么“1”和“359”的“平均”色调是而不是 180度,但是0.因此,在该数据中,k-均值结果将不是最佳的。

参见例如https://en.wikipedia.org/wiki/Color_quantization以获取详细信息以及关于稀疏和二进制数据的二十几个k-means问题。