将2类模型扩展到多类问题
关于Adaboost的这篇论文提出了一些建议和代码(第17页),以将2类模型扩展到K类问题。我想对此代码进行概括,以便我可以轻松地插入不同的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 <- …