Настройка без пересэмплирования в пакете mlr (кластеризация) - PullRequest
2 голосов
/ 06 июня 2019

В пакете mlr я могу выполнить кластеризацию. Допустим, я не хочу знать, как модель работает с невидимыми данными, но я просто хочу знать, какое количество кластеров является наилучшим в отношении данного показателя производительности.

В этом примере я использую набор данных moons из пакета 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 пакетом Представления (v0.3.0)

Однако, млр заставляет меня использовать стратегию пересчета. Есть идеи, как использовать mlr в задачах кластера без пересэмплирования?

1 Ответ

1 голос
/ 07 июня 2019

mlr довольно плохо, когда дело доходит до кластеризации.Эта функция dbscan является оболочкой для пакета очень медленного fpc.Другие обертывают Weka, что тоже очень медленно.

Вместо этого используйте пакет dbscan.

Однако настройка параметров работает не только в неконтролируемых настройках.У вас нет меток, поэтому у вас есть только ненадежная «внутренняя» эвристика.И большинство из них не надежны для DBSCAN, потому что они предполагают, что шум является кластером, но это не так.Немногие инструменты поддерживают шум при оценке (я видел варианты для этого в ELKI), и я не уверен, что любой из вариантов для обработки шума хорош.Вы можете построить нежелательные случаи для каждого варианта ИМХО.Вероятно, вам нужно использовать как минимум две меры при оценке кластеризации с шумом.

...