使用非自变量和非常大的数据集进行聚类
Clustering with non independent variables and very large data set
我有一个非常大的数据集 ~ 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
我正在尝试对这个集合进行聚类,但存在以下问题:
- class 大小是前五列的总和 - 我认为这可能会导致共线性问题,但它是一个重要的变量。
- 前五个变量不是独立的它们是测量相同质量的结果,class中的每个人都必须属于其中一个类别。
- 这个集合真的很大,唯一没有收敛问题的算法是 kmeans,(没有使用 class 配置文件变量)。
我可以放弃分类变量,因为它可以在后期包含在模型中,但我很想尝试一些也使用它的方法并比较结果。
对于收敛问题,我尝试了降采样,但对于很多方法,我需要降采样到 5000-7000 以避免内存问题,这是原始数据的不到 2%。
这里使用r包可以应用什么方法?
尝试对数据进行主成分分析,然后根据您决定的维数进行 kmeans 或 knn。
有几个不同的包可以非常简单地使用它,您必须先将数据居中和缩放。您还必须使用一种热方法将任何因子转换为数值(原始因子列的每个可能因子对应一列)。
查看 'prcomp' 或 'princomp'
我有一个非常大的数据集 ~ 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
我正在尝试对这个集合进行聚类,但存在以下问题:
- class 大小是前五列的总和 - 我认为这可能会导致共线性问题,但它是一个重要的变量。
- 前五个变量不是独立的它们是测量相同质量的结果,class中的每个人都必须属于其中一个类别。
- 这个集合真的很大,唯一没有收敛问题的算法是 kmeans,(没有使用 class 配置文件变量)。
我可以放弃分类变量,因为它可以在后期包含在模型中,但我很想尝试一些也使用它的方法并比较结果。
对于收敛问题,我尝试了降采样,但对于很多方法,我需要降采样到 5000-7000 以避免内存问题,这是原始数据的不到 2%。
这里使用r包可以应用什么方法?
尝试对数据进行主成分分析,然后根据您决定的维数进行 kmeans 或 knn。
有几个不同的包可以非常简单地使用它,您必须先将数据居中和缩放。您还必须使用一种热方法将任何因子转换为数值(原始因子列的每个可能因子对应一列)。
查看 'prcomp' 或 'princomp'