【问题标题】:Tuning without resampling in mlr package (clustering)在 mlr 包中调整而不重新采样(聚类)
【发布时间】:2023-04-08 14:14:01
【问题描述】:

在 mlr 包中,我可以执行聚类。假设我不想知道模型在看不见的数据上的表现如何,但我只想知道关于给定性能度量的最佳集群数量是多少。

在这个例子中,我使用了 dbscan 包的 moons 数据集。

library(mlr)
library(dbscan)
data("moons")

db_task = makeClusterTask(data = moons)

db = makeLearner("cluster.dbscan")

ps = makeParamSet(makeDiscreteParam("eps", values = seq(0.1, 1, by = 0.1)),
  makeIntegerParam("MinPts", lower = 1, upper = 5))

ctrl = makeTuneControlGrid()

rdesc = makeResampleDesc("CV", iters = 3) # I don´t want to use it, but I have to 

res = tuneParams(db, 
  task = db_task, 
  control = ctrl,
  measures = silhouette, 
  resampling = rdesc, 
  par.set = ps)
#> [Tune] Started tuning learner cluster.dbscan for parameter set:
#>            Type len Def                                Constr Req Tunable
#> eps    discrete   -   - 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1   -    TRUE
#> MinPts  integer   -   -                                1 to 5   -    TRUE
#>        Trafo
#> eps        -
#> MinPts     -
#> With control class: TuneControlGrid
#> Imputation value: Inf
#> [Tune-x] 1: eps=0.1; MinPts=1
#> Error in matrix(nrow = k, ncol = ncol(x)): invalid 'nrow' value (too large or NA)

reprex package (v0.3.0) 于 2019 年 6 月 6 日创建

但是,mlr 强迫我使用重采样策略。知道如何在不重新采样的情况下在集群任务中使用 mlr 吗?

【问题讨论】:

  • 您的代码无法为我运行(请参阅上面插入的代表)。为什么不看一下调优时性能最佳的模型计算出的集群数量?
  • 我不明白为什么它不起作用(我把它放在那里,直到我明白原因)。我有一些数据集,其中 CV 和轮廓图的结果不同。

标签: r cluster-analysis dbscan mlr


【解决方案1】:

mlr 在集群方面非常糟糕。 dbscan 函数是 very 慢速 fpc 包的包装器。别人包Weka,也很慢。

改用dbscan 包。

但是,参数调整不仅仅适用于无人监督的设置。您没有标签,因此您只有不可靠的“内部”启发式方法。其中大多数对于 DBSCAN 来说并不可靠,因为它们会假设噪声是一个集群,但事实并非如此。很少有工具支持评估中的噪声(我在 ELKI 中看到了这方面的选项),而且我不相信任何一种处理噪声的变体都是好的。您可以为每个变体恕我直言构建不良案例。在评估带噪声的聚类时,您可能需要至少使用两种度量。

【讨论】:

  • 我已经用dbscan 包试过了。问题是,我必须事先设置集群的数量,然后制作 knn 图。但在我的情况下,它们并不清晰可见(即通过 PCA)。因此,基于指标进行调整似乎是一种解决方案。
  • 如果你想预定义簇的数量,k-means 似乎更合适,因为它强制执行这样的结构。不过,请考虑 OPTICS 和 HDBSCAN*,而不是 DBSCAN 上的网格搜索。这就是为什么首先发明 OPTICS,而不需要选择 epsilon。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-06
  • 1970-01-01
  • 2021-10-15
  • 2019-10-13
  • 1970-01-01
相关资源
最近更新 更多