【问题标题】:Clustering with non independent variables and very large data set使用非自变量和非常大的数据集进行聚类
【发布时间】:2020-11-22 05:48:57
【问题描述】:

我有一个非常大的数据集 ~ 400 000 个实例,看起来像下面的数据。

data  <- as.data.frame(matrix(0, 10, 5))
samp <- function(){
  x <-sample( c(0:9), 5, replace =TRUE, prob = c(0.5, 0.1, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05))
  return(x)
}
data <- lapply(split(data, c(1:10)), function(x)  samp() )
data <- do.call(rbind.data.frame, data)
colnames(data) <- c("fail","below_a",  "aver", "above_a", "exceed")
data$class_size <- apply(data[1:5] , 1, FUN = sum) 
class_prof <- sample(letters[1:6], nrow(data), replace = T)   
data$class_prof <- class_prof

我正在尝试对这个集合进行聚类,但存在以下问题:

  • 类大小是前五列的总和 - 我认为这可能会导致共线性问题,但它是一个重要的变量。
  • 前五个变量不是独立的,它们是衡量相同质量的结果,班级中的每个人都必须属于其中一个类别。
  • 集合真的很大,唯一没有收敛问题的算法是 kmeans,(不使用类配置文件变量)。

我可以删除分类变量,因为它可以包含在后期的模型中,但我很想尝试一些使用它的方法并比较结果。

对于收敛问题,我尝试了下采样,但是对于很多方法,我需要下采样到 5000-7000 以避免内存问题,这是原始数据的不到 2%。

使用 r 包可以在这里应用什么方法?

【问题讨论】:

    标签: r cluster-analysis


    【解决方案1】:

    尝试对数据进行主成分分析,然后对您决定所需的维数进行 kmeans 或 knn。

    有几个不同的包使用起来相当简单,您必须先将数据居中并缩放。您还必须使用一种热方法将任何因子转换为数值(原始因子列的每个可能因子对应一列)。

    查看“prcomp”或“princomp”

    【讨论】:

    • 谢谢你,乔希,我考虑了一下,试了一下。问题是,我需要能够解释和分析与原始变量相关的集群。另外,我现在只有 7 个维度,我认为这还可以,问题是实例的数量以及无法计算许多方法使用的相异矩阵。另一个问题可能是,前五列是稀疏的 - 如果类很小,通常只有一个或有时两个非 0 值。
    猜你喜欢
    • 2014-03-25
    • 2021-08-17
    • 2010-09-25
    • 2013-06-04
    • 1970-01-01
    • 2018-11-05
    • 2012-09-22
    • 2019-08-02
    • 2012-10-22
    相关资源
    最近更新 更多