【问题标题】:K-Means clustering for multivariate data (with both discrete and continuous attributes)多变量数据的 K-Means 聚类(具有离散和连续属性)
【发布时间】:2023-03-26 03:57:01
【问题描述】:

我想知道如何使用 K-means 对多变量数据集进行聚类。这个数据集中的每个样本都对应一个人(我有 6000 人),每个人都有连续和离散的属性(10 个属性/人)。一个例子:

  • person_id:1234
  • 姓名:“John Doe”
  • 年龄:30
  • 身高:“5 英尺 10 英寸”
  • salary_value: 5000
  • Salary_currency:美元
  • is_customer:假
  • 公司:“Testing Inc.”
  • ...

我已经阅读了multidimensional k-means clustering 上的现有答案,但是数据集中的属性都是连续的。更有用的阅读是关于 clustering algorithm 的关于连续和离散变量的帖子。如后者所述,我接受我可能必须找到一个评估离散状态的函数。但我不能使用 ROCK 或 COBWEB 进行聚类,只能使用 k-means。

我可以使用哪些函数将离散值转换为连续值?此外,有什么方法可以优先考虑属性(比如基于薪水/年龄的聚类比身高更重要),还是应该改进整个方法?

【问题讨论】:

  • 如果k-means不是严格要求,那么你也应该看看像HDBSCAN,DBSCAN等聚类算法。希望你看过here

标签: python machine-learning cluster-analysis k-means


【解决方案1】:

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

K-means 是围绕三个重要假设构建的:

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

k-means 中的这些假设意味着您应该仅在区间尺度变量上使用它 (1),即不偏向 (2),并且 具有可比较的价值领域(不要混合不同的单位/尺度;例如薪水、年龄和身高)(3)。

类别的一种热编码不会使它们按区间缩放。如果您只是将数据投射到某个 IR^p 向量空间中,您将获得“一些输出”,但它在任何客观方面都不是。你回答错了问题,因为你一开始就没有费心提出问题。

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

【讨论】:

    【解决方案2】:

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

    将离散特征转换为连续特征的方法是一种热编码。这将公司名称等分类特征转换为数字数组。您可以查看文档here

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

    【讨论】:

    • 这个答案是正确的,你应该使用一个热编码。
    • 不,一种热编码是一种适用于 k-means 的 hack。虽然它使代码运行,但它对结果的质量弊大于利。
    猜你喜欢
    • 2010-10-24
    • 2014-12-19
    • 2018-11-16
    • 2015-05-29
    • 2017-10-02
    • 2019-06-01
    • 2020-01-18
    • 2013-02-07
    • 1970-01-01
    相关资源
    最近更新 更多