r语言 - 在 MLR 包中调优而不进行重采样(聚类)



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

在此示例中,我使用 dbscan 包的卫星数据集。

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)

创建于 2019-06-06 由 reprex 软件包 (v0.3.0(

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

mlr

聚类方面非常差。它dbscan函数是围绕非常慢的fpc包的包装器。其他人包裹Weka,这也非常慢。

请改用dbscan包。

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

相关内容

  • 没有找到相关文章

最新更新