2クラスモデルのマルチクラス問題への拡張
Adaboostに関するこのペーパーでは、2クラスモデルをKクラスの問題に拡張するための提案とコード(17ページ)を示します。このコードを一般化して、さまざまな2クラスモデルを簡単にプラグインして結果を比較できるようにします。ほとんどの分類モデルには数式インターフェースとpredictメソッドがあるため、これの一部は比較的簡単なはずです。残念ながら、2クラスモデルからクラス確率を抽出する標準的な方法が見つからないため、各モデルにはカスタムコードが必要になります。 Kクラス問題を2クラス問題に分解し、Kモデルを返すために私が書いた関数は次のとおりです。 oneVsAll <- function(X,Y,FUN,...) { models <- lapply(unique(Y), function(x) { name <- as.character(x) .Target <- factor(ifelse(Y==name,name,'other'), levels=c(name, 'other')) dat <- data.frame(.Target, X) model <- FUN(.Target~., data=dat, ...) return(model) }) names(models) <- unique(Y) info <- list(X=X, Y=Y, classes=unique(Y)) out <- list(models=models, info=info) class(out) <- 'oneVsAll' return(out) } これは、各モデルを反復処理して予測を行うために私が書いた予測方法です。 predict.oneVsAll <- …