多元数据的 K-Means 聚类(具有离散和连续属性)

K-Means clustering for multivariate data (with both discrete and continuous attributes)

我想知道如何使用 K 均值对多元数据集进行聚类。这个数据集中的每个样本都对应一个Person(我有6000个人),每个Person既有连续属性又有离散属性(10attributes/Person)。一个例子:

  • person_id: 1234
  • name: "John Doe"
  • age: 30
  • height: '5 ft 10 in'
  • salary_value: 5000
  • Salary_currency: USD
  • is_customer: False
  • Company: "Testing Inc."
  • ...

我已经阅读了关于 multidimensional k-means clustering, but the attributes in the dataset there are all continuous. Even a more helpful reading was a post about clustering algorithm 的关于连续变量和离散变量的现有答案。正如后者所提到的,我承认我可能必须找到一个重视离散状态的函数。但是我不能使用 ROCK 或 COBWEB 进行聚类,只能使用 k-means。

我可以使用哪些函数将离散值转换为连续值?此外,有什么方法可以让我也确定属性的优先级(比如基于 Salary/Age 的聚类比高度更重要),还是我应该改进整个方法?

K-means算法对具有连续特征的数据点进行聚类。

将离散特征转换为连续特征的方法是一种热门方法encoding.This将公司名称等分类特征转换为数值数组。您可以查看文档 here

您还需要对每个特征进行归一化,使它们处于相同的范围内,比如 0 到 1。要重视某些特征,请保持重要特征的范围更高。

不要对此类数据使用 k-means!

K-means 建立在三个重要假设之上:

  1. 每个属性的均值代表数据
  2. 平方偏差要最小化
  3. 它们都同样重要

k 均值中的这些假设意味着您应该仅将其用于区间尺度变量 (1),即不偏斜 (2),并且具有可比较的值域(不要混合使用不同的单位/尺度;例如薪水、年龄和身高)(3).

类别的一种热编码不会使它们间隔缩放。如果你只是将数据转换成一些 IR^p 向量 space,你会得到 "some output",但它不是 good objective .你回答错了问题,因为你一开始就没有刻意去表述问题。

如果幸运的话,只有一个属性(在您的情况下可能是薪水)支配结果,而所有其他属性无论如何都不会影响结果...