2

k の複数の値と、トレーニングおよびテスト データの複数のサブセット (たとえば、K 分割クロス検証のすべてのフォールド、別名リサンプリング メトリック) の単一パス予測で計算できる ak 最近傍の実装があります。私の実装では、複数のコアを活用することもできます。

メソッドをキャレットパッケージで使用するようにインターフェースしたいと思います。train 関数のカスタム メソッドを簡単に作成できます。ただし、これにより、モデルの適合に対する複数の呼び出しが発生します (パラメーターとフォールドの組み合わせごとに 1 つ)。

私の知る限り、trainControl を使用する場合のチューニング戦略を示すことはできません。train のコード ソースには、「seq」モデル フィッティングに関する記述があります。

## There are two types of methods to build the models: "basic" means that each tuning parameter
## combination requires it's own model fit and "seq" where a single model fit can be used to
## get predictions for multiple tuning parameters.

しかし、それをカスタム モデルで実際に使用する方法がわかりません。

これにアプローチする方法についての手がかりはありますか?

より一般的には、1 つのモデル フィットを使用して複数のパラメーターの予測誤差を推定できるモデル クラスがあるとします (たとえば、線形回帰 LOOCV トリックですが、複数のパラメーター値についても同様です)。それをキャレットでどのようにインターフェイスしますか?

キャレットで (空の) カスタム モデルを設定するコードの例を次に示します。

# Custom caret
library(caret)
learning_data = data.frame(y=sample(c("one","two","three"),200,replace=T))
learning_data = cbind(learning_data,matrix(runif(3*200),ncol=3))
testRatio=0.75
inTrain <- createDataPartition(learning_data$y, p = testRatio, list = FALSE)
trainExpr <- learning_data[inTrain,]
testExpr <- learning_data[-inTrain,]

trainClass <- trainExpr$y
testClass <- testExpr$y

trainExpr$y<-NULL
testExpr$y<-NULL
cv_opts = trainControl(method="cv", number=4,verboseIter=T)

my_knn <- function(data,weight,parameter,levels,last,...){
        print("training")
        # print(dim(data))
        # str(parameter)
        # list(fit=rdist(data$,data))
        list(fit=NA)
}
my_knn_pred <- function(object,newdata){
    print("testing")
    # str(object)
    # print(dim(newdata))
    return("one")
}

sortFunc <- function(x)  x[order(x$k),]
# Values of K to test
knn_opts = data.frame(.k=c(seq(7,11, 2))) #odd to avoid ties
custom_tr = trainControl(method="cv", number=4,verboseIter=T,   custom=list(parameters=knn_opts,model=my_knn,prediction=my_knn_pred,probability=NULL,sort=sortFunc))

# This will result in 12 calls, 6 to my_knn, 6 to my_knn_pred, one per combination of fold and parameter value
custom_knn_performances <- train(x = trainExpr, y = trainClass,method = "custom",trControl=custom_tr,tuneGrid=knn_opts)

1 回の呼び出しですべての折り畳みとパラメーター値の予測を生成するように、トレーニング手順を制御したいと考えています。

4

1 に答える 1

4

の現在のカスタム モデル フィット パーツでtrainは、連続したパラメーターを使用できません。

次のリリースになります。特定のモデル コードはすべてハードコーディングされなくなり、モジュール化されます (シーケンシャル パラメーターを含む)。

作業は約 80% 完了しており、年末までにリリースできることを願っています。このバージョンで多くのテストを行いたいと思います。

リリース前に試用したい場合は、私に電子メールを送ってください (ただし、保証はありません)。

マックス

于 2013-11-04T21:26:01.690 に答える