【问题标题】:Clustering algorithm in R for missing categorical and numerical valuesR中缺少分类和数值的聚类算法
【发布时间】:2014-07-24 11:09:40
【问题描述】:

我想对 R 中缺少分类值和数值的数据集执行营销细分聚类。由于缺少值,我无法执行 k-means 聚类。

R 版本 3.1.0 (2014-04-10)

平台:x86_64-apple-darwin13.1.0(64 位)

Mac OSX 10.9.3 4GB 硬盘

R 中是否有可以适应部分填充率的聚类算法包?查看有关缺失值的学术文章,研究人员为特殊用例创建了一种新算法,并且包在 R 中不可用。例如,具有软约束的 k-means 和具有部分距离策略的 k-means 聚类。

我有 36 个变量,但这里是前 5 个变量的描述:

head(df)

  user_id    Age   Gender Household.Income Marital.Status
1   12945           Male                                
2   12947           Male                                
3   12990                                                  
4   13160   25-34   Male   100k-125k         Single
5   13195           Male    75k-100k         Single
6   13286                                               

如果我可以提供更多信息,请告诉我。

【问题讨论】:

  • @EDi,在传统聚类方法之前,面向矩阵的方法存在可扩展性问题。我收到一个关于无法分配特定大小的向量的错误。

标签: r machine-learning cluster-analysis missing-data


【解决方案1】:

k-means 算法在存在分类变量的情况下通常不是首选。 k-means 有一个变体,称为 k-prototypes,它可以处理混合数据类型。你可以找到更多关于可以做到这一点的包here。

对于缺失值,您可以删除这些行(这通常不是首选)或估算合适的值。通常,对于数值,可以估算平均值,对于分类变量,可以估算众数。或者,对于插补,可以使用标准包,例如鼠标。

参考:

Z.Huang (1998):使用分类变量对大型数据集进行聚类的 k-Means 算法的扩展、数据挖掘和知识发现 2, 283-304。

【讨论】:

    【解决方案2】:

    Eduardo 的答案的一个变体是使用稀疏矩阵近似来填充缺失的单元格,然后进行聚类。一旦对所有值进行了估计,就可以使用分层或 k-means。请参阅 Amelia 或 softImpute 包。

    【讨论】:

      【解决方案3】:

      我建议使用带有 Gower 指标的层次聚类 (HC)。检查用空单元格替换 NA 的可能性。

      HC 可以处理分类值和数值。查看 R 中的 daisy 包。

      daisy(x, metric ="gower",stand = FALSE, type = list(), weights = rep.int(1, p))
      

      更多信息,这里是:https://stat.ethz.ch/R-manual/R-devel/library/cluster/html/daisy.html

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-02-14
        • 2016-09-03
        • 2011-12-29
        • 1970-01-01
        • 2020-07-29
        • 2016-06-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多