From 16906f6e8c432b811ddf99da1b18a2a357a75235 Mon Sep 17 00:00:00 2001 From: Benjamin Auder Date: Tue, 25 Apr 2023 09:48:36 +0200 Subject: [PATCH] Preparing for CRAN upload --- .gitignore | 3 +- R/compareTo.R | 1 - agghoo.Rcheck/00_pkg_src/agghoo/DESCRIPTION | 26 -- agghoo.Rcheck/00_pkg_src/agghoo/LICENSE | 2 - agghoo.Rcheck/00_pkg_src/agghoo/NAMESPACE | 13 - .../00_pkg_src/agghoo/R/A_NAMESPACE.R | 7 - .../00_pkg_src/agghoo/R/R6_AgghooCV.R | 115 -------- agghoo.Rcheck/00_pkg_src/agghoo/R/R6_Model.R | 157 ----------- agghoo.Rcheck/00_pkg_src/agghoo/R/agghoo.R | 58 ---- agghoo.Rcheck/00_pkg_src/agghoo/R/checks.R | 102 -------- agghoo.Rcheck/00_pkg_src/agghoo/R/compareTo.R | 247 ------------------ agghoo.Rcheck/00_pkg_src/agghoo/R/utils.R | 30 --- agghoo.Rcheck/00_pkg_src/agghoo/README.md | 15 -- agghoo.Rcheck/00_pkg_src/agghoo/TODO | 2 - .../00_pkg_src/agghoo/example/example.R | 43 --- agghoo.Rcheck/00_pkg_src/agghoo/test/TODO | 1 - agghoo.Rcheck/00check.log | 52 ---- agghoo.Rcheck/00install.out | 12 - agghoo.Rcheck/Rdlatex.log | 22 -- agghoo.Rcheck/agghoo-manual.tex | 44 ---- agghoo.Rcheck/agghoo/DESCRIPTION | 27 -- agghoo.Rcheck/agghoo/LICENSE | 2 - agghoo.Rcheck/agghoo/Meta/Rd.rds | Bin 172 -> 0 bytes agghoo.Rcheck/agghoo/Meta/features.rds | Bin 122 -> 0 bytes agghoo.Rcheck/agghoo/Meta/hsearch.rds | Bin 198 -> 0 bytes agghoo.Rcheck/agghoo/Meta/links.rds | Bin 46 -> 0 bytes agghoo.Rcheck/agghoo/Meta/nsInfo.rds | Bin 292 -> 0 bytes agghoo.Rcheck/agghoo/Meta/package.rds | Bin 1146 -> 0 bytes agghoo.Rcheck/agghoo/NAMESPACE | 13 - agghoo.Rcheck/agghoo/R/agghoo | 27 -- agghoo.Rcheck/agghoo/R/agghoo.rdb | Bin 90608 -> 0 bytes agghoo.Rcheck/agghoo/R/agghoo.rdx | Bin 584 -> 0 bytes agghoo.Rcheck/agghoo/help/AnIndex | 0 agghoo.Rcheck/agghoo/help/agghoo.rdb | 0 agghoo.Rcheck/agghoo/help/agghoo.rdx | Bin 125 -> 0 bytes agghoo.Rcheck/agghoo/help/aliases.rds | Bin 69 -> 0 bytes agghoo.Rcheck/agghoo/help/paths.rds | Bin 74 -> 0 bytes agghoo.Rcheck/agghoo/html/00Index.html | 24 -- agghoo.Rcheck/agghoo/html/R.css | 120 --------- agghoo_0.1-0.tar.gz | Bin 9062 -> 0 bytes test/TODO | 1 - 41 files changed, 1 insertion(+), 1165 deletions(-) delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/DESCRIPTION delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/LICENSE delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/NAMESPACE delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/A_NAMESPACE.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/R6_AgghooCV.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/R6_Model.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/agghoo.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/checks.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/compareTo.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/R/utils.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/README.md delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/TODO delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/example/example.R delete mode 100644 agghoo.Rcheck/00_pkg_src/agghoo/test/TODO delete mode 100644 agghoo.Rcheck/00check.log delete mode 100644 agghoo.Rcheck/00install.out delete mode 100644 agghoo.Rcheck/Rdlatex.log delete mode 100644 agghoo.Rcheck/agghoo-manual.tex delete mode 100644 agghoo.Rcheck/agghoo/DESCRIPTION delete mode 100644 agghoo.Rcheck/agghoo/LICENSE delete mode 100644 agghoo.Rcheck/agghoo/Meta/Rd.rds delete mode 100644 agghoo.Rcheck/agghoo/Meta/features.rds delete mode 100644 agghoo.Rcheck/agghoo/Meta/hsearch.rds delete mode 100644 agghoo.Rcheck/agghoo/Meta/links.rds delete mode 100644 agghoo.Rcheck/agghoo/Meta/nsInfo.rds delete mode 100644 agghoo.Rcheck/agghoo/Meta/package.rds delete mode 100644 agghoo.Rcheck/agghoo/NAMESPACE delete mode 100644 agghoo.Rcheck/agghoo/R/agghoo delete mode 100644 agghoo.Rcheck/agghoo/R/agghoo.rdb delete mode 100644 agghoo.Rcheck/agghoo/R/agghoo.rdx delete mode 100644 agghoo.Rcheck/agghoo/help/AnIndex delete mode 100644 agghoo.Rcheck/agghoo/help/agghoo.rdb delete mode 100644 agghoo.Rcheck/agghoo/help/agghoo.rdx delete mode 100644 agghoo.Rcheck/agghoo/help/aliases.rds delete mode 100644 agghoo.Rcheck/agghoo/help/paths.rds delete mode 100644 agghoo.Rcheck/agghoo/html/00Index.html delete mode 100644 agghoo.Rcheck/agghoo/html/R.css delete mode 100644 agghoo_0.1-0.tar.gz delete mode 100644 test/TODO diff --git a/.gitignore b/.gitignore index 812f17e..ae9cf7e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,2 @@ -/data/ -/doc/ +/man/ .RData diff --git a/R/compareTo.R b/R/compareTo.R index fe5b24d..0eb517c 100644 --- a/R/compareTo.R +++ b/R/compareTo.R @@ -203,7 +203,6 @@ compareTo <- function( compareMulti <- function( data, target, method_s, N=100, nc=NA, floss=NULL, verbose=TRUE, ... ) { - base::require(parallel) if (is.na(nc)) nc <- parallel::detectCores() diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/DESCRIPTION b/agghoo.Rcheck/00_pkg_src/agghoo/DESCRIPTION deleted file mode 100644 index 21f9ca3..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/DESCRIPTION +++ /dev/null @@ -1,26 +0,0 @@ -Package: agghoo -Title: Aggregated Hold-Out Cross Validation -Date: 2022-08-30 -Version: 0.1-0 -Description: The 'agghoo' procedure is an alternative to usual cross-validation. - Instead of choosing the best model trained on V subsamples, it determines - a winner model for each subsample, and then aggregate the V outputs. - For the details, see "Aggregated hold-out" by Guillaume Maillard, - Sylvain Arlot, Matthieu Lerasle (2021) - published in Journal of Machine Learning Research 22(20):1--55. -Author: Sylvain Arlot [cph,ctb], - Benjamin Auder [aut,cre,cph], - Melina Gallopin [cph,ctb], - Matthieu Lerasle [cph,ctb], - Guillaume Maillard [cph,ctb] -Maintainer: Benjamin Auder -Depends: R (>= 3.5.0) -Imports: class, parallel, R6, rpart, FNN -Suggests: roxygen2 -URL: https://git.auder.net/?p=agghoo.git -License: MIT + file LICENSE -RoxygenNote: 7.2.1 -Collate: 'compareTo.R' 'agghoo.R' 'R6_AgghooCV.R' 'R6_Model.R' - 'checks.R' 'utils.R' 'A_NAMESPACE.R' -NeedsCompilation: no -Packaged: 2022-09-09 15:45:56 UTC; auder diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/LICENSE b/agghoo.Rcheck/00_pkg_src/agghoo/LICENSE deleted file mode 100644 index 094ff81..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/LICENSE +++ /dev/null @@ -1,2 +0,0 @@ -YEAR: 2021-2022 -COPYRIGHT HOLDER: Sylvain Arlot, Benjamin Auder, Melina Gallopin, Matthieu Lerasle, Guillaume Maillard diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/NAMESPACE b/agghoo.Rcheck/00_pkg_src/agghoo/NAMESPACE deleted file mode 100644 index 7bbddef..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/NAMESPACE +++ /dev/null @@ -1,13 +0,0 @@ -# Generated by roxygen2: do not edit by hand - -export(AgghooCV) -export(Model) -export(agghoo) -export(compareMulti) -export(compareRange) -export(compareTo) -importFrom(FNN,knn.reg) -importFrom(R6,R6Class) -importFrom(class,knn) -importFrom(rpart,rpart) -importFrom(stats,ppr) diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/A_NAMESPACE.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/A_NAMESPACE.R deleted file mode 100644 index 0466833..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/R/A_NAMESPACE.R +++ /dev/null @@ -1,7 +0,0 @@ -#' @include utils.R -#' @include checks.R -#' @include R6_Model.R -#' @include R6_AgghooCV.R -#' @include agghoo.R -#' @include compareTo.R -NULL diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_AgghooCV.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_AgghooCV.R deleted file mode 100644 index 328c141..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_AgghooCV.R +++ /dev/null @@ -1,115 +0,0 @@ -#' @title R6 class with agghoo functions fit() and predict(). -#' -#' @description -#' Class encapsulating the methods to run to obtain the best predictor -#' from the list of models (see 'Model' class). -#' -#' @importFrom R6 R6Class -#' -#' @export -AgghooCV <- R6::R6Class("AgghooCV", - public = list( - #' @description Create a new AgghooCV object. - #' @param data Matrix or data.frame - #' @param target Vector of targets (generally numeric or factor) - #' @param task "regression" or "classification". - #' Default: classification if target not numeric. - #' @param gmodel Generic model returning a predictive function - #' Default: tree if mixed data, knn/ppr otherwise. - #' @param loss Function assessing the error of a prediction - #' Default: error rate or mean(abs(error)). - initialize = function(data, target, task, gmodel, loss) { - private$data <- data - private$target <- target - private$task <- task - private$gmodel <- gmodel - private$loss <- loss - }, - #' @description Fit an agghoo model. - #' @param CV List describing cross-validation to run. Slots: \cr - #' - type: 'vfold' or 'MC' for Monte-Carlo (default: MC) \cr - #' - V: number of runs (default: 10) \cr - #' - test_size: percentage of data in the test dataset, for MC - #' (irrelevant for V-fold). Default: 0.2. \cr - #' - shuffle: wether or not to shuffle data before V-fold. - #' Irrelevant for Monte-Carlo; default: TRUE \cr - #' Default (if NULL): type="MC", V=10, test_size=0.2 - fit = function(CV = NULL) { - CV <- checkCV(CV) - n <- nrow(private$data) - shuffle_inds <- NULL - if (CV$type == "vfold" && CV$shuffle) - shuffle_inds <- sample(n, n) - # Result: list of V predictive models (+ parameters for info) - private$pmodels <- list() - for (v in seq_len(CV$V)) { - # Prepare train / test data and target, from full dataset. - # dataHO: "data Hold-Out" etc. - test_indices <- get_testIndices(n, CV, v, shuffle_inds) - d <- splitTrainTest(private$data, private$target, test_indices) - best_model <- NULL - best_error <- Inf - for (p in seq_len(private$gmodel$nmodels)) { - model_pred <- private$gmodel$get(d$dataTrain, d$targetTrain, p) - prediction <- model_pred(d$dataTest) - error <- private$loss(prediction, d$targetTest) - if (error <= best_error) { - newModel <- list(model=model_pred, param=private$gmodel$getParam(p)) - if (error == best_error) - best_model[[length(best_model)+1]] <- newModel - else { - best_model <- list(newModel) - best_error <- error - } - } - } - # Choose a model at random in case of ex-aequos - private$pmodels[[v]] <- best_model[[ sample(length(best_model),1) ]] - } - }, - #' @description Predict an agghoo model (after calling fit()) - #' @param X Matrix or data.frame to predict - predict = function(X) { - if (!is.matrix(X) && !is.data.frame(X)) - stop("X: matrix or data.frame") - if (!is.list(private$pmodels)) { - print("Please call $fit() method first") - return (invisible(NULL)) - } - V <- length(private$pmodels) - oneLineX <- X[1,] - if (is.matrix(X)) - # HACK: R behaves differently with data frames and matrices. - oneLineX <- t(as.matrix(oneLineX)) - if (length(private$pmodels[[1]]$model(oneLineX)) >= 2) - # Soft classification: - return (Reduce("+", lapply(private$pmodels, function(m) m$model(X))) / V) - n <- nrow(X) - all_predictions <- as.data.frame(matrix(nrow=n, ncol=V)) - for (v in 1:V) - all_predictions[,v] <- private$pmodels[[v]]$model(X) - if (private$task == "regression") - # Easy case: just average each row - return (rowMeans(all_predictions)) - # "Hard" classification: - apply(all_predictions, 1, function(row) { - t <- table(row) - # Next lines in case of ties (broken at random) - tmax <- max(t) - sample( names(t)[which(t == tmax)], 1 ) - }) - }, - #' @description Return the list of V best parameters (after calling fit()) - getParams = function() { - lapply(private$pmodels, function(m) m$param) - } - ), - private = list( - data = NULL, - target = NULL, - task = NULL, - gmodel = NULL, - loss = NULL, - pmodels = NULL - ) -) diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_Model.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_Model.R deleted file mode 100644 index d48825e..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/R/R6_Model.R +++ /dev/null @@ -1,157 +0,0 @@ -#' @title R6 class representing a (generic) model. -#' -#' @description -#' "Model" class, containing a (generic) learning function, which from -#' data + target [+ params] returns a prediction function X --> y. -#' Parameters for cross-validation are either provided or estimated. -#' Model family can be chosen among "tree", "ppr" and "knn" for now. -#' -#' @importFrom FNN knn.reg -#' @importFrom class knn -#' @importFrom stats ppr -#' @importFrom rpart rpart -#' -#' @export -Model <- R6::R6Class("Model", - public = list( - #' @field nmodels Number of parameters (= number of [predictive] models) - nmodels = NA, - #' @description Create a new generic model. - #' @param data Matrix or data.frame - #' @param target Vector of targets (generally numeric or factor) - #' @param task "regression" or "classification" - #' @param gmodel Generic model returning a predictive function; chosen - #' automatically given data and target nature if not provided. - #' @param params List of parameters for cross-validation (each defining a model) - initialize = function(data, target, task, gmodel = NULL, params = NULL) { - if (is.null(gmodel)) { - # (Generic) model not provided - all_numeric <- is.numeric(as.matrix(data)) - if (!all_numeric) - # At least one non-numeric column: use trees - gmodel = "tree" - else - # Numerical data - gmodel = ifelse(task == "regression", "ppr", "knn") - } - if (is.null(params)) - # Here, gmodel is a string (= its family), - # because a custom model must be given with its parameters. - params <- as.list(private$getParams(gmodel, data, target, task)) - private$params <- params - if (is.character(gmodel)) - gmodel <- private$getGmodel(gmodel, task) - private$gmodel <- gmodel - self$nmodels <- length(private$params) - }, - #' @description - #' Returns the model at index "index", trained on dataHO/targetHO. - #' @param dataHO Matrix or data.frame - #' @param targetHO Vector of targets (generally numeric or factor) - #' @param index Index of the model in 1...nmodels - get = function(dataHO, targetHO, index) { - private$gmodel(dataHO, targetHO, private$params[[index]]) - }, - #' @description - #' Returns the parameter at index "index". - #' @param index Index of the model in 1...nmodels - getParam = function(index) { - private$params[[index]] - } - ), - private = list( - # No need to expose model or parameters list - gmodel = NULL, - params = NULL, - # Main function: given a family, return a generic model, which in turn - # will output a predictive model from data + target + params. - getGmodel = function(family, task) { - if (family == "tree") { - function(dataHO, targetHO, param) { - base::require(rpart) - method <- ifelse(task == "classification", "class", "anova") - if (is.null(colnames(dataHO))) - colnames(dataHO) <- paste0("V", 1:ncol(dataHO)) - df <- data.frame(cbind(dataHO, target=targetHO)) - model <- rpart::rpart(target ~ ., df, method=method, control=list(cp=param)) - if (task == "regression") - type <- "vector" - else { - if (is.null(dim(targetHO))) - type <- "class" - else - type <- "prob" - } - function(X) { - if (is.null(colnames(X))) - colnames(X) <- paste0("V", 1:ncol(X)) - predict(model, as.data.frame(X), type=type) - } - } - } - else if (family == "ppr") { - function(dataHO, targetHO, param) { - model <- stats::ppr(dataHO, targetHO, nterms=param) - function(X) predict(model, X) - } - } - else if (family == "knn") { - if (task == "classification") { - function(dataHO, targetHO, param) { - base::require(class) - function(X) class::knn(dataHO, X, cl=targetHO, k=param) - } - } - else { - function(dataHO, targetHO, param) { - base::require(FNN) - function(X) FNN::knn.reg(dataHO, X, y=targetHO, k=param)$pred - } - } - } - }, - # Return a default list of parameters, given a gmodel family - getParams = function(family, data, target, task) { - if (family == "tree") { - # Run rpart once to obtain a CV grid for parameter cp - base::require(rpart) - df <- data.frame(cbind(data, target=target)) - ctrl <- list( - cp = 0, - minsplit = 2, - minbucket = 1, - xval = 0) - method <- ifelse(task == "classification", "class", "anova") - r <- rpart(target ~ ., df, method=method, control=ctrl) - cps <- r$cptable[-1,1] - if (length(cps) <= 1) - stop("No cross-validation possible: select another model") - if (length(cps) <= 11) - return (cps) - step <- (length(cps) - 1) / 10 - cps[unique(round(seq(1, length(cps), step)))] - } - else if (family == "ppr") - # This is nterms in ppr() function - 1:10 - else if (family == "knn") { - n <- nrow(data) - # Choose ~10 NN values - K <- length(unique(target)) - if (n <= 10) - return (1:(n-1)) - sqrt_n <- sqrt(n) - step <- (2*sqrt_n - 1) / 10 - grid <- unique(round(seq(1, 2*sqrt_n, step))) - if (K == 2) { - # Common binary classification case: odd number of neighbors - for (i in 2:11) { - if (grid[i] %% 2 == 0) - grid[i] <- grid[i] + 1 #arbitrary choice - } - } - grid - } - } - ) -) diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/agghoo.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/agghoo.R deleted file mode 100644 index 48ac741..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/R/agghoo.R +++ /dev/null @@ -1,58 +0,0 @@ -#' agghoo -#' -#' Run the (core) agghoo procedure. -#' Arguments specify the list of models, their parameters and the -#' cross-validation settings, among others. -#' -#' @param data Data frame or matrix containing the data in lines. -#' @param target The target values to predict. Generally a vector, -#' but possibly a matrix in the case of "soft classification". -#' @param task "classification" or "regression". Default: -#' regression if target is numerical, classification otherwise. -#' @param gmodel A "generic model", which is a function returning a predict -#' function (taking X as only argument) from the tuple -#' (dataHO, targetHO, param), where 'HO' stands for 'Hold-Out', -#' referring to cross-validation. Cross-validation is run on an array -#' of 'param's. See params argument. Default: see R6::Model. -#' @param params A list of parameters. Often, one list cell is just a -#' numerical value, but in general it could be of any type. -#' Default: see R6::Model. -#' @param loss A function assessing the error of a prediction. -#' Arguments are y1 and y2 (comparing a prediction to known values). -#' loss(y1, y2) --> real number (error). Default: see R6::AgghooCV. -#' -#' @return -#' An R6::AgghooCV object o. Then, call o$fit() and finally o$predict(newData) -#' -#' @examples -#' # Regression: -#' a_reg <- agghoo(iris[,-c(2,5)], iris[,2]) -#' a_reg$fit() -#' pr <- a_reg$predict(iris[,-c(2,5)] + rnorm(450, sd=0.1)) -#' # Classification -#' a_cla <- agghoo(iris[,-5], iris[,5]) -#' a_cla$fit() -#' pc <- a_cla$predict(iris[,-5] + rnorm(600, sd=0.1)) -#' -#' @seealso Function \code{\link{compareTo}} -#' -#' @references -#' Guillaume Maillard, Sylvain Arlot, Matthieu Lerasle. "Aggregated hold-out". -#' Journal of Machine Learning Research 22(20):1--55, 2021. -#' -#' @export -agghoo <- function( - data, target, task = NULL, gmodel = NULL, params = NULL, loss = NULL -) { - # Args check: - checkDaTa(data, target) - task <- checkTask(task, target) - modPar <- checkModPar(gmodel, params) - loss <- checkLoss(loss, task) - - # Build Model object (= list of parameterized models) - model <- Model$new(data, target, task, modPar$gmodel, modPar$params) - - # Return AgghooCV object, to run and predict - AgghooCV$new(data, target, task, model, loss) -} diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/checks.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/checks.R deleted file mode 100644 index a19d55f..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/R/checks.R +++ /dev/null @@ -1,102 +0,0 @@ -# Internal usage: check and fill arguments with default values. - -defaultLoss_classif <- function(y1, y2) { - if (is.null(dim(y1))) - # Standard case: "hard" classification - mean(y1 != y2) - else { - # "Soft" classification: predict() outputs a probability matrix - # In this case "target" could be in matrix form. - if (!is.null(dim(y2))) - mean(rowSums(abs(y1 - y2))) - else { - # Or not: y2 is a "factor". - y2 <- as.character(y2) - # NOTE: the user should provide target in matrix form because - # matching y2 with columns is rather inefficient! - names <- colnames(y1) - positions <- list() - for (idx in seq_along(names)) - positions[[ names[idx] ]] <- idx - mean(vapply( - seq_along(y2), - function(idx) sum(abs(y1[idx,] - positions[[ y2[idx] ]])), - 0)) - } - } -} - -defaultLoss_regress <- function(y1, y2) { - mean(abs(y1 - y2)) -} - -# TODO: allow strings like "MSE", "abs" etc -checkLoss <- function(loss, task) { - if (!is.null(loss) && !is.function(loss)) - stop("loss: function(y1, y2) --> Real") - if (is.null(loss)) { - loss <- if (task == "classification") { - defaultLoss_classif - } else { - defaultLoss_regress - } - } - loss -} - -checkCV <- function(CV) { - if (is.null(CV)) - CV <- list(type="MC", V=10, test_size=0.2, shuffle=TRUE) - else { - if (!is.list(CV)) - stop("CV: list of type('MC'|'vfold'), V(integer, [test_size, shuffle]") - if (is.null(CV$type)) { - warning("CV$type not provided: set to MC") - CV$type <- "MC" - } - if (is.null(CV$V)) { - warning("CV$V not provided: set to 10") - CV$V <- 10 - } - if (CV$type == "MC" && is.null(CV$test_size)) - CV$test_size <- 0.2 - if (CV$type == "vfold" && is.null(CV$shuffle)) - CV$shuffle <- TRUE - } - CV -} - -checkDaTa <- function(data, target) { - if (!is.data.frame(data) && !is.matrix(data)) - stop("data: data.frame or matrix") - if (is.data.frame(target) || is.matrix(target)) { - if (!is.numeric(target)) - stop("multi-columns target must be a probability matrix") - if (nrow(target) != nrow(data) || ncol(target) == 1) - stop("target probability matrix does not match data size") - } - else if (!is.numeric(target) && !is.factor(target) && !is.character(target)) - stop("target: numeric, factor or character vector") -} - -checkTask <- function(task, target) { - if (!is.null(task)) - task <- match.arg(task, c("classification", "regression")) - ifelse(is.numeric(target), "regression", "classification") -} - -checkModPar <- function(gmodel, params) { - if (is.character(gmodel)) - gmodel <- match.arg(gmodel, c("knn", "ppr", "rf", "tree")) - else if (!is.null(gmodel) && !is.function(gmodel)) - stop("gmodel: function(dataHO, targetHO, param) --> function(X) --> y") - if (is.numeric(params) || is.character(params)) - params <- as.list(params) - if (!is.list(params) && !is.null(params)) - stop("params: numerical, character, or list (passed to model)") - if (is.function(gmodel) && !is.list(params)) - stop("params must be provided when using a custom model") - if (is.list(params) && is.null(gmodel)) - stop("model (or family) must be provided when using custom params") - list(gmodel=gmodel, params=params) -} diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/compareTo.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/compareTo.R deleted file mode 100644 index fe5b24d..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/R/compareTo.R +++ /dev/null @@ -1,247 +0,0 @@ -#' standardCV_core -#' -#' Cross-validation method, added here as an example. -#' Parameters are described in ?agghoo and ?AgghooCV -standardCV_core <- function(data, target, task, gmodel, params, loss, CV) { - n <- nrow(data) - shuffle_inds <- NULL - if (CV$type == "vfold" && CV$shuffle) - shuffle_inds <- sample(n, n) - list_testinds <- list() - for (v in seq_len(CV$V)) - list_testinds[[v]] <- get_testIndices(n, CV, v, shuffle_inds) - gmodel <- agghoo::Model$new(data, target, task, gmodel, params) - best_error <- Inf - best_p <- NULL - for (p in seq_len(gmodel$nmodels)) { - error <- Reduce('+', lapply(seq_len(CV$V), function(v) { - testIdx <- list_testinds[[v]] - d <- splitTrainTest(data, target, testIdx) - model_pred <- gmodel$get(d$dataTrain, d$targetTrain, p) - prediction <- model_pred(d$dataTest) - loss(prediction, d$targetTest) - }) ) - if (error <= best_error) { - if (error == best_error) - best_p[[length(best_p)+1]] <- p - else { - best_p <- list(p) - best_error <- error - } - } - } - chosenP <- best_p[[ sample(length(best_p), 1) ]] - list(model=gmodel$get(data, target, chosenP), param=gmodel$getParam(chosenP)) -} - -#' CVvoting_core -#' -#' "voting" cross-validation method, added here as an example. -#' Parameters are described in ?agghoo and ?AgghooCV -CVvoting_core <- function(data, target, task, gmodel, params, loss, CV) { - CV <- checkCV(CV) - n <- nrow(data) - shuffle_inds <- NULL - if (CV$type == "vfold" && CV$shuffle) - shuffle_inds <- sample(n, n) - gmodel <- agghoo::Model$new(data, target, task, gmodel, params) - bestP <- rep(0, gmodel$nmodels) - for (v in seq_len(CV$V)) { - test_indices <- get_testIndices(n, CV, v, shuffle_inds) - d <- splitTrainTest(data, target, test_indices) - best_p <- NULL - best_error <- Inf - for (p in seq_len(gmodel$nmodels)) { - model_pred <- gmodel$get(d$dataTrain, d$targetTrain, p) - prediction <- model_pred(d$dataTest) - error <- loss(prediction, d$targetTest) - if (error <= best_error) { - if (error == best_error) - best_p[[length(best_p)+1]] <- p - else { - best_p <- list(p) - best_error <- error - } - } - } - for (p in best_p) - bestP[p] <- bestP[p] + 1 - } - # Choose a param at random in case of ex-aequos: - maxP <- max(bestP) - chosenP <- sample(which(bestP == maxP), 1) - list(model=gmodel$get(data, target, chosenP), param=gmodel$getParam(chosenP)) -} - -#' standardCV_run -#' -#' Run and eval the standard cross-validation procedure. -#' Parameters are rather explicit except "floss", which corresponds to the -#' "final" loss function, applied to compute the error on testing dataset. -standardCV_run <- function( - dataTrain, dataTest, targetTrain, targetTest, floss, verbose, ... -) { - args <- list(...) - task <- checkTask(args$task, targetTrain) - modPar <- checkModPar(args$gmodel, args$params) - loss <- checkLoss(args$loss, task) - CV <- checkCV(args$CV) - s <- standardCV_core( - dataTrain, targetTrain, task, modPar$gmodel, modPar$params, loss, CV) - if (verbose) - print(paste( "Parameter:", s$param )) - p <- s$model(dataTest) - err <- floss(p, targetTest) - if (verbose) - print(paste("error CV:", err)) - invisible(err) -} - -#' CVvoting_run -#' -#' Run and eval the voting cross-validation procedure. -#' Parameters are rather explicit except "floss", which corresponds to the -#' "final" loss function, applied to compute the error on testing dataset. -CVvoting_run <- function( - dataTrain, dataTest, targetTrain, targetTest, floss, verbose, ... -) { - args <- list(...) - task <- checkTask(args$task, targetTrain) - modPar <- checkModPar(args$gmodel, args$params) - loss <- checkLoss(args$loss, task) - CV <- checkCV(args$CV) - s <- CVvoting_core( - dataTrain, targetTrain, task, modPar$gmodel, modPar$params, loss, CV) - if (verbose) - print(paste( "Parameter:", s$param )) - p <- s$model(dataTest) - err <- floss(p, targetTest) - if (verbose) - print(paste("error CV:", err)) - invisible(err) -} - -#' agghoo_run -#' -#' Run and eval the agghoo procedure. -#' Parameters are rather explicit except "floss", which corresponds to the -#' "final" loss function, applied to compute the error on testing dataset. -agghoo_run <- function( - dataTrain, dataTest, targetTrain, targetTest, floss, verbose, ... -) { - args <- list(...) - CV <- checkCV(args$CV) - # Must remove CV arg, or agghoo will complain "error: unused arg" - args$CV <- NULL - a <- do.call(agghoo, c(list(data=dataTrain, target=targetTrain), args)) - a$fit(CV) - if (verbose) { - print("Parameters:") - print(unlist(a$getParams())) - } - pa <- a$predict(dataTest) - err <- floss(pa, targetTest) - if (verbose) - print(paste("error agghoo:", err)) - invisible(err) -} - -#' compareTo -#' -#' Compare a list of learning methods (or run only one), on data/target. -#' -#' @param data Data matrix or data.frame -#' @param target Target vector (generally) -#' @param method_s Either a single function, or a list -#' (examples: agghoo_run, standardCV_run) -#' @param rseed Seed of the random generator (-1 means "random seed") -#' @param floss Loss function to compute the error on testing dataset. -#' @param verbose TRUE to request methods to be verbose. -#' @param ... arguments passed to method_s function(s) -#' -#' @export -compareTo <- function( - data, target, method_s, rseed=-1, floss=NULL, verbose=TRUE, ... -) { - if (rseed >= 0) - set.seed(rseed) - n <- nrow(data) - test_indices <- sample( n, round(n / ifelse(n >= 500, 10, 5)) ) - d <- splitTrainTest(data, target, test_indices) - - # Set error function to be used on model outputs (not in core method) - task <- checkTask(list(...)$task, target) - if (is.null(floss)) { - floss <- function(y1, y2) { - ifelse(task == "classification", mean(y1 != y2), mean(abs(y1 - y2))) - } - } - - # Run (and compare) all methods: - runOne <- function(o) { - o(d$dataTrain, d$dataTest, d$targetTrain, d$targetTest, floss, verbose, ...) - } - errors <- c() - if (is.list(method_s)) - errors <- sapply(method_s, runOne) - else if (is.function(method_s)) - errors <- runOne(method_s) - invisible(errors) -} - -#' compareMulti -#' -#' Run compareTo N times in parallel. -#' -#' @inheritParams compareTo -#' @param N Number of calls to method(s) -#' @param nc Number of cores. Set to parallel::detectCores() if undefined. -#' Set it to any value <=1 to say "no parallelism". -#' @param verbose TRUE to print task numbers and "Errors:" in the end. -#' -#' @export -compareMulti <- function( - data, target, method_s, N=100, nc=NA, floss=NULL, verbose=TRUE, ... -) { - base::require(parallel) - if (is.na(nc)) - nc <- parallel::detectCores() - - # "One" comparison for each method in method_s (list) - compareOne <- function(n) { - if (verbose) - print(n) - compareTo(data, target, method_s, n, floss, verbose=FALSE, ...) - } - - errors <- if (nc >= 2) { - parallel::mclapply(1:N, compareOne, mc.cores = nc) - } else { - lapply(1:N, compareOne) - } - if (verbose) - print("Errors:") - Reduce('+', errors) / N -} - -#' compareRange -#' -#' Run compareMulti on several values of the parameter V. -#' -#' @inheritParams compareMulti -#' @param V_range Values of V to be tested. -#' -#' @export -compareRange <- function( - data, target, method_s, N=100, nc=NA, floss=NULL, V_range=c(10,15,20), ... -) { - args <- list(...) - # Avoid warnings if V is left unspecified: - CV <- suppressWarnings( checkCV(args$CV) ) - errors <- lapply(V_range, function(V) { - args$CV$V <- V - do.call(compareMulti, c(list(data=data, target=target, method_s=method_s, - N=N, nc=nc, floss=floss, verbose=F), args)) - }) - print(paste(V_range, errors)) -} diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/R/utils.R b/agghoo.Rcheck/00_pkg_src/agghoo/R/utils.R deleted file mode 100644 index 823b123..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/R/utils.R +++ /dev/null @@ -1,30 +0,0 @@ -# Helper for cross-validation: return the next test indices. -get_testIndices <- function(n, CV, v, shuffle_inds) { - if (CV$type == "vfold") { - # Slice indices (optionnally shuffled) - first_index = round((v-1) * n / CV$V) + 1 - last_index = round(v * n / CV$V) - test_indices = first_index:last_index - if (!is.null(shuffle_inds)) - test_indices <- shuffle_inds[test_indices] - } - else - # Monte-Carlo cross-validation - test_indices = sample(n, round(n * CV$test_size)) - test_indices -} - -# Helper which split data into training and testing parts. -splitTrainTest <- function(data, target, testIdx) { - dataTrain <- data[-testIdx,] - targetTrain <- target[-testIdx] - dataTest <- data[testIdx,] - targetTest <- target[testIdx] - # [HACK] R will cast 1-dim matrices into vectors: - if (!is.matrix(dataTrain) && !is.data.frame(dataTrain)) - dataTrain <- as.matrix(dataTrain) - if (!is.matrix(dataTest) && !is.data.frame(dataTest)) - dataTest <- as.matrix(dataTest) - list(dataTrain=dataTrain, targetTrain=targetTrain, - dataTest=dataTest, targetTest=targetTest) -} diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/README.md b/agghoo.Rcheck/00_pkg_src/agghoo/README.md deleted file mode 100644 index 337abcb..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/README.md +++ /dev/null @@ -1,15 +0,0 @@ -# agghoo - -R package for model selection based on aggregation. -Alternative to standard cross-validation. - -## Install the package - -From GitHub: `devtools::install_github("yagu0/agghoo")` - -Locally, in a terminal: `R CMD INSTALL .` - -## Use the package - - library(agghoo) - ?agghoo diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/TODO b/agghoo.Rcheck/00_pkg_src/agghoo/TODO deleted file mode 100644 index f197d8a..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/TODO +++ /dev/null @@ -1,2 +0,0 @@ -Support des valeurs manquantes (cf. mlbench::Ozone dataset) -Méthode pour données mixtes ? (que tree actuellement) diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/example/example.R b/agghoo.Rcheck/00_pkg_src/agghoo/example/example.R deleted file mode 100644 index 7fae2ce..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/example/example.R +++ /dev/null @@ -1,43 +0,0 @@ -library(agghoo) - -data(iris) #already there -library(mlbench) -data(PimaIndiansDiabetes) - -# Run only agghoo on iris dataset (split into train/test, etc). -# Default parameters: see ?agghoo and ?AgghooCV -compareTo(iris[,-5], iris[,5], agghoo_run) - -# Run both agghoo and standard CV, specifiying some parameters. -compareTo(iris[,-5], iris[,5], list(agghoo_run, standardCV_run), gmodel="tree") -compareTo(iris[,-5], iris[,5], list(agghoo_run, standardCV_run), - gmodel="knn", params=c(3, 7, 13, 17, 23, 31), - CV = list(type="vfold", V=5, shuffle=T)) - -# Run both agghoo and standard CV, averaging errors over N=10 runs -# (possible for a single method but wouldn't make much sense...). -compareMulti(PimaIndiansDiabetes[,-9], PimaIndiansDiabetes[,9], - list(agghoo_run, standardCV_run), N=10, gmodel="rf") - -# Compare several values of V -compareRange(PimaIndiansDiabetes[,-9], PimaIndiansDiabetes[,9], - list(agghoo_run, standardCV_run), N=10, V_range=c(10, 20, 30)) - -# For example to use average of squared differences. -# Default is "mean(abs(y1 - y2))". -loss2 <- function(y1, y2) mean((y1 - y2)^2) - -# In regression on artificial datasets (TODO: real data?) -data <- mlbench.twonorm(300, 3)$x -target <- rowSums(data) -compareMulti(data, target, list(agghoo_run, standardCV_run), - N=10, gmodel="tree", params=c(1, 3, 5, 7, 9), loss=loss2, - CV = list(type="MC", V=12, test_size=0.3)) - -compareMulti(data, target, list(agghoo_run, standardCV_run), - N=10, floss=loss2, CV = list(type="vfold", V=10, shuffle=F)) - -# Random tests to check that method doesn't fail in 1D case -M <- matrix(rnorm(200), ncol=2) -compareTo(as.matrix(M[,-2]), M[,2], list(agghoo_run, standardCV_run), gmodel="knn") -compareTo(as.matrix(M[,-2]), M[,2], list(agghoo_run, standardCV_run), gmodel="tree") diff --git a/agghoo.Rcheck/00_pkg_src/agghoo/test/TODO b/agghoo.Rcheck/00_pkg_src/agghoo/test/TODO deleted file mode 100644 index 50acca1..0000000 --- a/agghoo.Rcheck/00_pkg_src/agghoo/test/TODO +++ /dev/null @@ -1 +0,0 @@ -Some unit tests? diff --git a/agghoo.Rcheck/00check.log b/agghoo.Rcheck/00check.log deleted file mode 100644 index 684daae..0000000 --- a/agghoo.Rcheck/00check.log +++ /dev/null @@ -1,52 +0,0 @@ -* using log directory ‘/home/auder/repos/agghoo/agghoo.Rcheck’ -* using R version 4.2.1 (2022-06-23) -* using platform: x86_64-pc-linux-gnu (64-bit) -* using session charset: UTF-8 -* checking for file ‘agghoo/DESCRIPTION’ ... OK -* this is package ‘agghoo’ version ‘0.1-0’ -* checking package namespace information ... OK -* checking package dependencies ... OK -* checking if this is a source package ... OK -* checking if there is a namespace ... OK -* checking for executable files ... OK -* checking for hidden files and directories ... OK -* checking for portable file names ... OK -* checking for sufficient/correct file permissions ... OK -* checking whether package ‘agghoo’ can be installed ... OK -* checking installed package size ... OK -* checking package directory ... OK -* checking DESCRIPTION meta-information ... OK -* checking top-level files ... OK -* checking for left-over files ... OK -* checking index information ... OK -* checking package subdirectories ... OK -* checking R files for non-ASCII characters ... OK -* checking R files for syntax errors ... OK -* checking whether the package can be loaded ... OK -* checking whether the package can be loaded with stated dependencies ... OK -* checking whether the package can be unloaded cleanly ... OK -* checking whether the namespace can be loaded with stated dependencies ... OK -* checking whether the namespace can be unloaded cleanly ... OK -* checking loading without being on the library search path ... OK -* checking dependencies in R code ... OK -* checking S3 generic/method consistency ... OK -* checking replacement functions ... OK -* checking foreign function calls ... OK -* checking R code for possible problems ... NOTE -compareMulti: no visible binding for global variable ‘parallel’ -Undefined global functions or variables: - parallel -* checking for missing documentation entries ... WARNING -Undocumented code objects: - ‘AgghooCV’ ‘Model’ ‘agghoo’ ‘compareMulti’ ‘compareRange’ ‘compareTo’ -All user-level objects in a package should have documentation entries. -See chapter ‘Writing R documentation files’ in the ‘Writing R -Extensions’ manual. -* checking examples ... NONE -* checking PDF version of manual ... WARNING -LaTeX errors when creating PDF version. -This typically indicates Rd problems. -* checking PDF version of manual without index ... ERROR -Re-running with no redirection of stdout/stderr. -* DONE -Status: 1 ERROR, 2 WARNINGs, 1 NOTE diff --git a/agghoo.Rcheck/00install.out b/agghoo.Rcheck/00install.out deleted file mode 100644 index 4ec7d20..0000000 --- a/agghoo.Rcheck/00install.out +++ /dev/null @@ -1,12 +0,0 @@ -* installing *source* package ‘agghoo’ ... -** using staged installation -** R -** byte-compile and prepare package for lazy loading -** help -No man pages found in package ‘agghoo’ -*** installing help indices -** building package indices -** testing if installed package can be loaded from temporary location -** testing if installed package can be loaded from final location -** testing if installed package keeps a record of temporary installation path -* DONE (agghoo) diff --git a/agghoo.Rcheck/Rdlatex.log b/agghoo.Rcheck/Rdlatex.log deleted file mode 100644 index ed3d8b1..0000000 --- a/agghoo.Rcheck/Rdlatex.log +++ /dev/null @@ -1,22 +0,0 @@ -Hmm ... looks like a package -Converting parsed Rd's to LaTeX Creating pdf output from LaTeX ... -warning: kpathsea: configuration file texmf.cnf not found in these directories: /usr/bin:/usr/bin/share/texmf-local/web2c:/usr/bin/share/texmf-dist/web2c:/usr/bin/share/texmf/web2c:/usr/bin/texmf-local/web2c:/usr/bin/texmf-dist/web2c:/usr/bin/texmf/web2c:/usr:/usr/share/texmf-local/web2c:/usr/share/texmf-dist/web2c:/usr/share/texmf/web2c:/usr/texmf-local/web2c:/usr/texmf-dist/web2c:/usr/texmf/web2c://texmf-local/web2c:/://share/texmf-local/web2c://share/texmf-dist/web2c://share/texmf/web2c://texmf-local/web2c://texmf-dist/web2c://texmf/web2c. -This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/Arch Linux) (preloaded format=pdflatex) - -kpathsea: Running mktexfmt pdflatex.fmt -mktexfmt: No such file or directory -I can't find the format file `pdflatex.fmt'! -Warning in file(con, "r") : - cannot open file 'Rd2.log': No such file or directory -Error in file(con, "r") : cannot open the connection -warning: kpathsea: configuration file texmf.cnf not found in these directories: /usr/bin:/usr/bin/share/texmf-local/web2c:/usr/bin/share/texmf-dist/web2c:/usr/bin/share/texmf/web2c:/usr/bin/texmf-local/web2c:/usr/bin/texmf-dist/web2c:/usr/bin/texmf/web2c:/usr:/usr/share/texmf-local/web2c:/usr/share/texmf-dist/web2c:/usr/share/texmf/web2c:/usr/texmf-local/web2c:/usr/texmf-dist/web2c:/usr/texmf/web2c://texmf-local/web2c:/://share/texmf-local/web2c://share/texmf-dist/web2c://share/texmf/web2c://texmf-local/web2c://texmf-dist/web2c://texmf/web2c. -This is pdfTeX, Version 3.141592653-2.6-1.40.24 (TeX Live 2022/Arch Linux) (preloaded format=pdflatex) - -kpathsea: Running mktexfmt pdflatex.fmt -mktexfmt: No such file or directory -I can't find the format file `pdflatex.fmt'! -Warning in file(con, "r") : - cannot open file 'Rd2.log': No such file or directory -Error in file(con, "r") : cannot open the connection -Error in running tools::texi2pdf() -You may want to clean up by 'rm -Rf /tmp/RtmpIZpCnq/Rd2pdf1084ce20004' diff --git a/agghoo.Rcheck/agghoo-manual.tex b/agghoo.Rcheck/agghoo-manual.tex deleted file mode 100644 index 8a561f0..0000000 --- a/agghoo.Rcheck/agghoo-manual.tex +++ /dev/null @@ -1,44 +0,0 @@ -\nonstopmode{} -\documentclass[letterpaper]{book} -\usepackage[times,hyper]{Rd} -\usepackage{makeidx} -\usepackage[utf8]{inputenc} % @SET ENCODING@ -% \usepackage{graphicx} % @USE GRAPHICX@ -\makeindex{} -\begin{document} -\chapter*{} -\begin{center} -{\textbf{\huge Package `agghoo'}} -\par\bigskip{\large \today} -\end{center} -\ifthenelse{\boolean{Rd@use@hyper}}{\hypersetup{pdftitle = {agghoo: Aggregated Hold-Out Cross Validation}}}{} -\begin{description} -\raggedright{} -\item[Title]\AsIs{Aggregated Hold-Out Cross Validation} -\item[Date]\AsIs{2022-08-30} -\item[Version]\AsIs{0.1-0} -\item[Description]\AsIs{The 'agghoo' procedure is an alternative to usual cross-validation. -Instead of choosing the best model trained on V subsamples, it determines -a winner model for each subsample, and then aggregate the V outputs. -For the details, see ``Aggregated hold-out'' by Guillaume Maillard, -Sylvain Arlot, Matthieu Lerasle (2021) <}\Rhref{https://arxiv.org/abs/1909.04890}{arXiv:1909.04890}\AsIs{> -published in Journal of Machine Learning Research 22(20):1--55.} -\item[Author]\AsIs{Sylvain Arlot }\email{sylvain.arlot@universite-paris-saclay.fr}\AsIs{ [cph,ctb], -Benjamin Auder }\email{benjamin.auder@universite-paris-saclay.fr}\AsIs{ [aut,cre,cph], -Melina Gallopin }\email{melina.gallopin@universite-paris-saclay.fr}\AsIs{ [cph,ctb], -Matthieu Lerasle }\email{matthieu.lerasle@universite-paris-saclay.fr}\AsIs{ [cph,ctb], -Guillaume Maillard }\email{guillaume.maillard@uni.lu}\AsIs{ [cph,ctb]} -\item[Maintainer]\AsIs{Benjamin Auder }\email{benjamin.auder@universite-paris-saclay.fr}\AsIs{} -\item[Depends]\AsIs{R (>= 3.5.0)} -\item[Imports]\AsIs{class, parallel, R6, rpart, FNN} -\item[Suggests]\AsIs{roxygen2} -\item[URL]\AsIs{}\url{https://git.auder.net/?p=agghoo.git}\AsIs{} -\item[License]\AsIs{MIT + file LICENSE} -\item[RoxygenNote]\AsIs{7.2.1} -\item[Collate]\AsIs{'compareTo.R' 'agghoo.R' 'R6_AgghooCV.R' 'R6_Model.R' -'checks.R' 'utils.R' 'A_NAMESPACE.R'} -\item[NeedsCompilation]\AsIs{no} -\end{description} -\Rdcontents{\R{} topics documented:} -\printindex{} -\end{document} diff --git a/agghoo.Rcheck/agghoo/DESCRIPTION b/agghoo.Rcheck/agghoo/DESCRIPTION deleted file mode 100644 index cb86199..0000000 --- a/agghoo.Rcheck/agghoo/DESCRIPTION +++ /dev/null @@ -1,27 +0,0 @@ -Package: agghoo -Title: Aggregated Hold-Out Cross Validation -Date: 2022-08-30 -Version: 0.1-0 -Description: The 'agghoo' procedure is an alternative to usual cross-validation. - Instead of choosing the best model trained on V subsamples, it determines - a winner model for each subsample, and then aggregate the V outputs. - For the details, see "Aggregated hold-out" by Guillaume Maillard, - Sylvain Arlot, Matthieu Lerasle (2021) - published in Journal of Machine Learning Research 22(20):1--55. -Author: Sylvain Arlot [cph,ctb], - Benjamin Auder [aut,cre,cph], - Melina Gallopin [cph,ctb], - Matthieu Lerasle [cph,ctb], - Guillaume Maillard [cph,ctb] -Maintainer: Benjamin Auder -Depends: R (>= 3.5.0) -Imports: class, parallel, R6, rpart, FNN -Suggests: roxygen2 -URL: https://git.auder.net/?p=agghoo.git -License: MIT + file LICENSE -RoxygenNote: 7.2.1 -Collate: 'compareTo.R' 'agghoo.R' 'R6_AgghooCV.R' 'R6_Model.R' - 'checks.R' 'utils.R' 'A_NAMESPACE.R' -NeedsCompilation: no -Packaged: 2022-09-09 15:45:56 UTC; auder -Built: R 4.2.1; ; 2022-09-09 15:46:05 UTC; unix diff --git a/agghoo.Rcheck/agghoo/LICENSE b/agghoo.Rcheck/agghoo/LICENSE deleted file mode 100644 index 094ff81..0000000 --- a/agghoo.Rcheck/agghoo/LICENSE +++ /dev/null @@ -1,2 +0,0 @@ -YEAR: 2021-2022 -COPYRIGHT HOLDER: Sylvain Arlot, Benjamin Auder, Melina Gallopin, Matthieu Lerasle, Guillaume Maillard diff --git a/agghoo.Rcheck/agghoo/Meta/Rd.rds b/agghoo.Rcheck/agghoo/Meta/Rd.rds deleted file mode 100644 index f7bb5f4990633a93a5f17075e24bfb1a000bd418..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 172 zcmb2|=3oE==I#ec2?+^l35iK532CfGk`d0%cS>{{k`6iWu?uh;I4~$iNm!pf#G)c0 z86jce*!EoY*)lO_(?SQ<$U8>GL5Vr`3z#IVmuzAD4%%99Ma+B6e7YS@?;Ur;g_pZ*3+^=1|M@ Zz`C7sXa4R9@c+lmU|MgY=fKFo0042oL3RKD diff --git a/agghoo.Rcheck/agghoo/Meta/features.rds b/agghoo.Rcheck/agghoo/Meta/features.rds deleted file mode 100644 index 3dc8fb5868dfec4ce1938b295aab023f5412ad53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 122 zcmb2|=3oE==I#ec2?+^l35iK532CfGk`d0%cS>|6BxbZU%D5?rF{{coG%T5)%@H5*V1p)D#YKh&*J; z^f-BjHE55+8J3A@3GTs%7(*sapD{a%$COLuJAVi3fh@(W8_YtJHw#}5PK=p(hO6Z{^gdKV3CVwjZ~&*SFldfMvZcgIwSNQ$8jJ1^_HU BPWAu* diff --git a/agghoo.Rcheck/agghoo/Meta/links.rds b/agghoo.Rcheck/agghoo/Meta/links.rds deleted file mode 100644 index ba5b13a936f0b276058438dfb3576bf247a49edd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46 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 diff --git a/agghoo.Rcheck/agghoo/R/agghoo.rdx b/agghoo.Rcheck/agghoo/R/agghoo.rdx deleted file mode 100644 index 2ce7cb7bc036aa897360ddc2b81b777b706544be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 584 zcmb2|=3oE==G@8WvxOZ+j^9_yoV@1mLYI#b^)fC?Hkxgn_UNF%>JDGdG+wzWsdwh) zTwAg`v21cTyK8`pqfS#t`yy@LSX$r=|xw!+u!#qy!r6#^WXQ*?WxUw z*2cw9sqsYQg#QB(wRPFkpM^6NO}!v^^RUIT!Y3bUo60&Z>J#~YXJj8aUw``FTGob3 zdLLhFIXuigb?T0{X57r*JG@BhK_EUd!0=9TiNz(<$uFX#y9PrLAcO2tps zhEH=Vj=KF9`}i~dgnH-e^rU{F8n3Rd8LnVxFDb=k^_61+q&f@Axacpr-xD zwa}RNvV3cJH3AxnE{L?}7V)e9KAh(AC@1u~`Kz;A%U0iuxcoIsN8V*;YJ${KdT*WbXrG}f|q>#&|KNZ?M z#nuT;mI_qck@026MSpY6_KJy_K0?=G&v&=hE^LV2GGjuL$+NGM*YK1VpJ2)FW81ga zefKe$?&b1sv!*=>H>{lg(EVWDF2jU*>E-{Q3*8a2@y)#UXy3cy^ZOso*mh93@|ZMV zPQ37$GLsUugY(YIOy=Bt@uXOhnlk%U#v8rwBPPCUDPm!t+xen$!o!4pb9YXjpYnfU zWy9`x+GHJ4Z2BVOf>a(`_djNd51Bp3SQr=pGIb|? diff --git a/agghoo.Rcheck/agghoo/help/AnIndex b/agghoo.Rcheck/agghoo/help/AnIndex deleted file mode 100644 index e69de29..0000000 diff --git a/agghoo.Rcheck/agghoo/help/agghoo.rdb b/agghoo.Rcheck/agghoo/help/agghoo.rdb deleted file mode 100644 index e69de29..0000000 diff --git a/agghoo.Rcheck/agghoo/help/agghoo.rdx b/agghoo.Rcheck/agghoo/help/agghoo.rdx deleted file mode 100644 index c28f3f9dbb3f1f2ce024b914f82eddfa9c83ac95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 125 zcmb2|=3oE==I#ec2?+^l35iK532CfGk`d0%cS>|6BxbZ66cUi)h?vp9qRh4e8Sk7_lb_T&M6|6BxbNk9B63e^e`~mU{KJc@>!@j WxVw>Oh00-jhSvYPuRAa>FaQ9)@fKPD diff --git a/agghoo.Rcheck/agghoo/help/paths.rds b/agghoo.Rcheck/agghoo/help/paths.rds deleted file mode 100644 index 3d2b25ed84024ab015134d527d6c70aa1378febd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74 zcmb2|=3oE==I#ec2?+^l35iK532CfGk`d0%cS>|6BxbNk9B63e^e`~mU{KJca@nZ6 a%e#RmZi51Iv#h{>W(MAADo - -R: Aggregated Hold-Out Cross Validation - - - - diff --git a/agghoo.Rcheck/agghoo/html/R.css b/agghoo.Rcheck/agghoo/html/R.css deleted file mode 100644 index 2ef6cd6..0000000 --- a/agghoo.Rcheck/agghoo/html/R.css +++ /dev/null @@ -1,120 +0,0 @@ -@media screen { - .container { - padding-right: 10px; - padding-left: 10px; - margin-right: auto; - margin-left: auto; - max-width: 900px; - } -} - -.rimage img { /* from knitr - for examples and demos */ - width: 96%; - margin-left: 2%; -} - -.katex { font-size: 1.1em; } - -code { - color: inherit; - background: inherit; -} - -body { - line-height: 1.4; - background: white; - color: black; -} - -a:link { - background: white; - color: blue; -} - -a:visited { - background: white; - color: rgb(50%, 0%, 50%); -} - -h1 { - background: white; - color: rgb(55%, 55%, 55%); - font-family: monospace; - font-size: 1.4em; /* x-large; */ - text-align: center; -} - -h2 { - background: white; - color: rgb(40%, 40%, 40%); - font-family: monospace; - font-size: 1.2em; /* large; */ - text-align: center; -} - -h3 { - background: white; - color: rgb(40%, 40%, 40%); - font-family: monospace; - font-size: 1.2em; /* large; */ -} - -h4 { - background: white; - color: rgb(40%, 40%, 40%); - font-family: monospace; - font-style: italic; - font-size: 1.2em; /* large; */ -} - -h5 { - background: white; - color: rgb(40%, 40%, 40%); - font-family: monospace; -} - -h6 { - background: white; - color: rgb(40%, 40%, 40%); - font-family: monospace; - font-style: italic; -} - -img.toplogo { - width: 4em; - vertical-align: middle; -} - -img.arrow { - width: 30px; - height: 30px; - border: 0; -} - -span.acronym { - font-size: small; -} - -span.env { - font-family: monospace; -} - -span.file { - font-family: monospace; -} - -span.option{ - font-family: monospace; -} - -span.pkg { - font-weight: bold; -} - -span.samp{ - font-family: monospace; -} - -div.vignettes a:hover { - background: rgb(85%, 85%, 85%); -} diff --git a/agghoo_0.1-0.tar.gz b/agghoo_0.1-0.tar.gz deleted file mode 100644 index 719e7e903a3d6762991e700e8737c798eaa4be7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9062 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 t<-Yv?z48BovgoB73*L&|x06Vhv*VxNe*W
-

Aggregated Hold-Out Cross Validation - -

-
-
-[Up] -[Top] -

Documentation for package ‘agghoo’ version 0.1-0

- - - -

Help Pages

- - -There are no help pages in this package -