【问题标题】:DBSCAN Clustering returning single cluster with noise pointsDBSCAN Clustering 返回带有噪声点的单个集群
【发布时间】:2021-11-05 20:52:53
【问题描述】:

我正在尝试对数据 https://www.kaggle.com/arjunbhasin2013/ccdata 执行 DBSCAN 聚类。我已经清理了数据并应用了算法。

data1 <- read.csv('C:\\Users\\write\\Documents\\R\\data\\Project\\Clustering\\CC GENERAL.csv')

head(data1)

data1 <- data1[,2:18]

dim(data1)

colnames(data1)

head(data1,2)

#to check if data has empty col or rows
library(purrr)
is_empty(data1)

#to check if data has duplicates
library(dplyr)
any(duplicated(data1))

#to check if data has NA values
any(is.na(data1))
data1 <- na.omit(data1)
any(is.na(data1))
dim(data1)

算法应用如下。

#DBSCAN
data1 <- scale(data1)

library(fpc)
library(dbscan)

set.seed(500)
#to find optimal eps
kNNdistplot(data1, k =  34)
abline(h = 4, lty = 3)

图中显示了'膝盖'来识别'eps'值。由于聚类需要考虑 17 个属性,所以我取了 k=17*2 =34。

db <- dbscan(data1,eps = 4,minPts = 34)
db

我得到的结果是“聚类包含 1 个簇和 147 个噪声点。”

无论我为 eps 和 minPts 更改什么值,结果都是一样的。

谁能告诉我哪里出错了?

提前致谢。

【问题讨论】:

  • 您应该从扩展数据开始。
  • @det 我已经缩放并应用了算法。它仍然是一个带有噪声点的单个集群。

标签: r dbscan


【解决方案1】:

你有两个选择:

  1. 增加中心点的半径(由 epsilon 参数给出)
  2. 减少最小点数 (minPts) 以定义中心点。

我会从减小 minPts 参数开始,因为我认为它非常高,并且由于它没有找到该半径内的点,所以它不会在一个组中分组更多点

【讨论】:

    【解决方案2】:

    使用 DBSCAN(以及一般的聚类)的一个典型问题是,真实数据通常不会落入很好的聚类中,而是形成一个连接的点云。在这种情况下,DBSCAN 将始终只找到一个集群。您可以使用多种方法进行检查。最直接的方法是使用配对图(散点图矩阵):

    plot(as.data.frame(data1))
    

    由于您有许多变量,散点图面板非常小,但您可以看到几乎所有面板中的点都非常靠近。 DBSCAN 会将这些密集区域中的所有点连接成一个集群。 k-means 只会划分密集区域。

    另一种选择是使用 VAT 或 iVAT (https://link.springer.com/chapter/10.1007/978-3-642-13657-3_5) 等方法检查集群性。

    library("seriation")
    
    ## calculate distances for a small sample
    d <- dist(data1[sample(seq(nrow(data1)), size = 1000), ])
    
    iVAT(d)
    

    您将看到该图在对角线周围没有显示块结构,表明聚类不会找到太多。

    要改进聚类,您需要处理数据。您可以删除不相关的变量,您可能有非常偏斜的变量,应该首先进行转换。您也可以在聚类之前尝试非线性嵌入。

    【讨论】:

      猜你喜欢
      • 2021-07-06
      • 2015-08-15
      • 2018-12-23
      • 1970-01-01
      • 1970-01-01
      • 2020-01-25
      • 2017-08-27
      • 2023-02-22
      • 2018-09-01
      相关资源
      最近更新 更多