2
私は素晴らしいmlr
パッケージを、タイタニックdata setで調べています。私の問題は、ランダムなフォレストを実装することです。具体的には、cutoff
(つまり、指定されたクラスに純粋でないリーフを割り当てるしきい値)を調整したいと思います。問題は、cutoff
引数が2つの値をとることですが、単一値の場合はmlr
にハイパーパラメータを設定することしかできません。MLRパッケージのrandomForestカットオフを調整する
コード:
library(mlr)
library(dplyr)
dTrain <- read.csv('path/to/data/')
#Defining the Task
trainTask <- makeClassifTask(data = dTrain %>%
select(-Name, -Ticket, -Cabin) %>%
filter(complete.cases(.)),
target = "Survived",
id = "PassengerId")
#Defining Learning
rfLRN <- makeLearner("classif.randomForest")
#Defining the Parameter Space
ps <- makeParamSet(
makeDiscreteParam("cutoff", values = list(c(.5,.5), c(.75,.25)))
)
が問題だった。これは、しかし、私はこれらの2つの値を渡す方法がわからないんだけど、cutoff
、ある2つの値を必要とします。上記の試みは間違っています。私はいくつかの他のパラメータメーカー、すなわちmakeDiscreteVectorParam
などを試しましたが、役に立たないです。任意のヒント?
代わりにmtry
のようなパラメータ(特定の分割点から選択するフィーチャの数)を調整しようとすると、すべて正常に動作します。あなたはこれらの分類カットオフ、例えばに名前を割り当てる必要がありますように
#Defining the Hyperparameter Space
ps = makeParamSet(
makeDiscreteParam("mtry", values = c(2,3,4,5))
)
#Defining Resampling
cvTask <- makeResampleDesc("CV", iters=5L)
#Defining Search
search <- makeTuneControlGrid()
#Tune!
tune <- tuneParams(learner = rfLRN
,task = trainTask
,resampling = cvTask
,measures = list(acc)
,par.set = ps
,control = search
,show.info = TRUE)
を同様の問題を持つ人のために、より良いアプローチは '使用することですmakeDiscreteParam( "cutoff")ではなく、makeNumericParam( "cutoff"、lower = .2、upper = .8、trafo = function(x、1-x) 50、.50)、b = c(.75、.25)) '。 –