From 82c99346032111c3efaf071f32ac36ff9ea8519a Mon Sep 17 00:00:00 2001 From: agostinognasso Date: Fri, 20 Jun 2025 14:52:25 +0200 Subject: [PATCH 1/3] minor fix --- README.md | 72 +++++++++++++++++++++++++------------------------------ 1 file changed, 32 insertions(+), 40 deletions(-) diff --git a/README.md b/README.md index e444297..b36bac9 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ status](https://www.r-pkg.org/badges/version/e2tree)](https://CRAN.R-project.org

- +

The Explainable Ensemble Trees (e2tree) key idea consists of the @@ -46,12 +46,13 @@ You can install the released version of e2tree from [CRAN](https://CRAN.R-project.org) with: ``` r -install.packages("e2tree") +if (!require("e2tree", quietly=TRUE)) install.packages("e2tree") ``` ``` r require(e2tree) require(randomForest) +require(ranger) require(dplyr) require(ggplot2) if (!(require(rsample, quietly=TRUE))){install.packages("rsample"); require(rsample, quietly=TRUE)} @@ -108,8 +109,12 @@ response_validation <- validation[,5] Train an Random Forest model with 1000 weak learners ``` r -# Perform training: -ensemble = randomForest(Species ~ ., data = training, importance = TRUE, proximity = TRUE) +# Perform training with "ranger" or "randomForest" package: +## RF with "ranger" package +ensemble <- ranger(Species ~ ., data = training, num.trees = 1000, importance = 'impurity') + +## RF with "randomForest" package +#ensemble = randomForest(Species ~ ., data = training, importance = TRUE, proximity = TRUE) ``` Here, we create the dissimilarity matrix between observations through @@ -165,23 +170,31 @@ pred <- ePredTree(tree, training[,-5], target="virginica") Comparison of predictions (training sample) of RF and e2tree ``` r -table(pred$fit, ensemble$predicted) +# "ranger" package +table(pred$fit, ensemble$predictions) #> #> setosa versicolor virginica #> setosa 33 0 0 -#> versicolor 0 24 2 +#> versicolor 0 23 3 #> virginica 0 1 30 + +# "randomForest" package +#table(pred$fit, ensemble$predicted) ``` Comparison of predictions (training sample) of RF and correct response ``` r -table(ensemble$predicted, response_training) +# "ranger" package +table(ensemble$predictions, response_training) #> response_training #> setosa versicolor virginica #> setosa 33 0 0 -#> versicolor 0 23 2 -#> virginica 0 2 30 +#> versicolor 0 22 2 +#> virginica 0 3 30 + +## "randomForest" package +#table(ensemble$predicted, response_training) ``` Comparison of predictions (training sample) of e2tree and correct @@ -199,18 +212,13 @@ table(pred$fit,response_training) Variable Importance ``` r -ensemble_imp <- ensemble$importance %>% as.data.frame %>% - mutate(Variable = rownames(ensemble$importance), - RF_Var_Imp = round(MeanDecreaseAccuracy,2)) %>% - select(Variable, RF_Var_Imp) - V <- vimp(tree, training) V #> $vimp #> # A tibble: 2 × 9 #> Variable MeanImpurityDecrease MeanAccuracyDecrease `ImpDec_ setosa` #> -#> 1 Petal.Length 0.366 2.22e- 2 0.315 +#> 1 Petal.Length 0.365 2.22e- 2 0.317 #> 2 Petal.Width 0.214 1.41e-16 NA #> # ℹ 5 more variables: `ImpDec_ versicolor` , `ImpDec_ virginica` , #> # `AccDec_ setosa` , `AccDec_ versicolor` , @@ -229,7 +237,7 @@ V Comparison with the validation sample ``` r -ensemble.pred <- predict(ensemble, validation[,-5], proximity = TRUE) +ensemble.pred <- predict(ensemble, validation[,-5]) pred_val<- ePredTree(tree, validation[,-5], target="virginica") ``` @@ -237,32 +245,16 @@ pred_val<- ePredTree(tree, validation[,-5], target="virginica") Comparison of predictions (sample validation) of RF and e2tree ``` r -table(pred_val$fit, ensemble.pred$predicted) +## "ranger" package +table(pred_val$fit, ensemble.pred$predictions) #> #> setosa versicolor virginica #> setosa 17 0 0 #> versicolor 0 26 0 #> virginica 0 0 17 -``` - -Comparison of predictions (validation sample) of RF and correct response -``` r -table(ensemble.pred$predicted, response_validation) -#> response_validation -#> setosa versicolor virginica -#> setosa 17 0 0 -#> versicolor 0 24 2 -#> virginica 0 1 16 -ensemble.prob <- predict(ensemble, validation[,-5], proximity = TRUE, type="prob") -roc_ensemble<- roc(response_validation, ensemble.prob$predicted[,"virginica"], target="virginica") -``` - - - -``` r -roc_ensemble$auc -#> [1] 0.9874563 +## "randomForest" package +#table(pred_val$fit, ensemble.pred$predicted) ``` Comparison of predictions (validation sample) of e2tree and correct @@ -278,11 +270,11 @@ table(pred_val$fit, response_validation) roc_res <- roc(response_validation, pred_val$score, target="virginica") ``` - + ``` r roc_res$auc -#> [1] 0.9325268 +#> [1] 0.9324973 ``` To evaluate how well our tree captures the structure of the RF and @@ -309,10 +301,10 @@ obtained under random reordering. eComparison(training, tree, D, graph = TRUE) ``` - + #> $z.stat - #> [1] 1043.696 + #> [1] 1046.257 #> #> $p #> [1] 0.001 From 08bebcbe8e37052140cdefb084c5d9e830de5458 Mon Sep 17 00:00:00 2001 From: agostinognasso Date: Fri, 20 Jun 2025 14:55:45 +0200 Subject: [PATCH 2/3] minor fix --- README.Rmd | 2 +- README.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.Rmd b/README.Rmd index ddf7e80..f828a66 100644 --- a/README.Rmd +++ b/README.Rmd @@ -13,7 +13,7 @@ output: github_document

- +

diff --git a/README.md b/README.md index b36bac9..5829627 100644 --- a/README.md +++ b/README.md @@ -14,7 +14,7 @@ status](https://www.r-pkg.org/badges/version/e2tree)](https://CRAN.R-project.org

- +

The Explainable Ensemble Trees (e2tree) key idea consists of the From abddfaaab20de0410405a4eb2f6f9faf35385420 Mon Sep 17 00:00:00 2001 From: agostinognasso Date: Wed, 16 Jul 2025 11:47:26 +0200 Subject: [PATCH 3/3] - Added support for 'ranger' models - Several improvements in e2tree plots --- NEWS.md | 1 + R/e2tree.R | 3 ++- R/rpart2Tree.R | 52 +++++++++++++++++++------------------- README.Rmd | 14 +++++----- README.md | 25 +++++++++--------- src/CoOccurrences.o | Bin 664736 -> 664776 bytes src/RcppExports.o | Bin 585760 -> 585800 bytes src/e2tree.so | Bin 143272 -> 143336 bytes tests/testthat/Rplots.pdf | Bin 5896 -> 5896 bytes 9 files changed, 49 insertions(+), 46 deletions(-) diff --git a/NEWS.md b/NEWS.md index e6a0557..93f5d36 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,6 +1,7 @@ # e2tree 0.1.3 - Added support for 'ranger' models +- Several improvements in e2tree plots # e2tree 0.1.2 diff --git a/R/e2tree.R b/R/e2tree.R index 0dabf81..448d08a 100644 --- a/R/e2tree.R +++ b/R/e2tree.R @@ -336,7 +336,8 @@ e2tree <- function(formula, data, D, ensemble, setting=list(impTotal=0.1, maxDec attr(yval2,"dimnames")[[2]] <- paste("V",seq(ncol(yval2)),sep="") info$yval2 <- cbind(yval2, nodeprob) } - ylevels <- as.character(unique(response)) + #ylevels <- as.character(unique(response)) + ylevels <- levels(mf[[1]]) #### I need this to preserve the orginal attributes row.names(info) <- info$node info <- info[as.character(N),] diff --git a/R/rpart2Tree.R b/R/rpart2Tree.R index 3a0c884..8840a78 100644 --- a/R/rpart2Tree.R +++ b/R/rpart2Tree.R @@ -90,7 +90,7 @@ utils::globalVariables(c("n","prob", "terminal")) rpart2Tree <- function(fit, ensemble){ - + # === Input Validation === # Validate 'fit' (must be an 'e2tree' object) @@ -119,9 +119,9 @@ rpart2Tree <- function(fit, ensemble){ if (!is.data.frame(fit$tree)) { stop("Error: 'fit$tree' must be a data frame.") } - + # === Proceed with the function === - + # create type object if (inherits(ensemble, "randomForest")) { type <- ensemble$type # "classification" or "regression" @@ -130,9 +130,9 @@ rpart2Tree <- function(fit, ensemble){ # Convert "Classification" or "Regression" in lower case type <- tolower(ensemble$treetype) } - + frame <- fit$tree - + switch(type, classification={ frame <- frame %>% @@ -146,20 +146,20 @@ rpart2Tree <- function(fit, ensemble){ rename("var"="variable", "yval"="pred") }) - - frame <- frame %>% + + frame <- frame %>% mutate(wt=n, ncompete=0, nsurrogate=0, complexity=1-as.numeric(prob), dev=prob) %>% as.data.frame() - + rownames(frame) <- frame$node frame$var[is.na(frame$var)] <- "" frame$complexity[is.na(frame$complexity)] <- 0.01 - - + + switch(type, classification={ frame <- frame %>% @@ -169,28 +169,28 @@ rpart2Tree <- function(fit, ensemble){ frame <- frame %>% select("var","n","wt","dev","yval","complexity","ncompete","nsurrogate") }) - + obs <- fit$tree %>% dplyr::filter(terminal) %>% select("node","n","obs") where <- rep(obs$node,obs$n) names(where) <- do.call(c,obs$obs) where <- where[order(as.numeric(names(where)))] - + variable.importance <- fit$varimp$vimp[[2]] names(variable.importance) <- fit$varimp$vimp[[1]] - + switch (type, - classification = { - obj <- list(frame=frame, where=where, call=fit$call, terms=fit$terms, method="class", control=fit$control, functions=rpartfunctions(), - splits=fit$splits, csplit=fit$csplit, variable.importance=variable.importance) - }, - regression = { - obj <- list(frame=frame, where=where, call=fit$call, terms=fit$terms, method="anova", control=fit$control, functions=rpartfunctions(), - splits=fit$splits, csplit=fit$csplit, variable.importance=variable.importance) - } + classification = { + obj <- list(frame=frame, where=where, call=fit$call, terms=fit$terms, method="class", control=fit$control, functions=rpartfunctions(), + splits=fit$splits, csplit=fit$csplit, variable.importance=variable.importance) + }, + regression = { + obj <- list(frame=frame, where=where, call=fit$call, terms=fit$terms, method="anova", control=fit$control, functions=rpartfunctions(), + splits=fit$splits, csplit=fit$csplit, variable.importance=variable.importance) + } ) - + attr(obj, "xlevels") <- attr(fit, "xlevels") attr(obj, "ylevels") <- attr(fit, "ylevels") #obj$frame <- obj$frame[as.character(fit$N),] @@ -223,7 +223,7 @@ rpartfunctions <- function(){ formatg(nodeprob, digits), "\n", " class counts: ", temp1, "\n", " probabilities: ", temp2) } - + print <- function (yval, ylevel, digits, nsmall) { temp <- if (is.null(ylevel)) @@ -257,7 +257,7 @@ rpartfunctions <- function(){ paste0(format(group, justify = "left"), "\n", temp1) else format(group, justify = "left") } - + functions <- list(summary=summary, print=print, text=text) return(functions) } @@ -266,7 +266,7 @@ formatg <- function(x, digits = getOption("digits"), format = paste0("%.", digits, "g")) { if (!is.numeric(x)) stop("'x' must be a numeric vector") - + temp <- sprintf(format, x) if (is.matrix(x)) matrix(temp, nrow = nrow(x)) else temp -} +} \ No newline at end of file diff --git a/README.Rmd b/README.Rmd index f828a66..15dea16 100644 --- a/README.Rmd +++ b/README.Rmd @@ -17,7 +17,7 @@ output: github_document

-The Explainable Ensemble Trees (e2tree) key idea consists of the definition of an algorithm to represent every ensemble approach based on decision trees model using a single tree-like structure. The goal is to explain the results from the esemble algorithm while preserving its level of accuracy, which always outperforms those provided by a decision tree. The proposed method is based on identifying the relationship tree-like structure explaining the classification or regression paths summarizing the whole ensemble process. There are two main advantages of e2tree: +The **Explainable Ensemble Trees** (**e2tree**) key idea consists of the definition of an algorithm to represent every ensemble approach based on decision trees model using a single tree-like structure. The goal is to explain the results from the esemble algorithm while preserving its level of accuracy, which always outperforms those provided by a decision tree. The proposed method is based on identifying the relationship tree-like structure explaining the classification or regression paths summarizing the whole ensemble process. There are two main advantages of e2tree: - building an explainable tree that ensures the predictive performance of an RF model - allowing the decision-maker to manage with an intuitive structure (such as a tree-like structure). In this example, we focus on Random Forest but, again, the algorithm can be generalized to every ensemble approach based on decision trees. @@ -35,14 +35,14 @@ knitr::opts_chunk$set( ## Setup -You can install the developer version of e2tree from [GitHub](https://github.com) with: +You can install the **developer version** of e2tree from [GitHub](https://github.com) with: ```{r eval=FALSE} install.packages("remotes") remotes::install_github("massimoaria/e2tree") ``` -You can install the released version of e2tree from [CRAN](https://CRAN.R-project.org) with: +You can install the **released version** of e2tree from [CRAN](https://CRAN.R-project.org) with: ```{r eval=FALSE} if (!require("e2tree", quietly=TRUE)) install.packages("e2tree") @@ -69,13 +69,13 @@ theme_set( knitr::opts_chunk$set(dev.args = list(bg = "transparent")) ``` -## Warnings +## Warning -The package is still under development and therefore, for the time being, there are the following limitations: +This package is still under development and, for the time being, the following limitations apply: -- Only ensembles trained with the randomForest package are supported. Additional packages and approaches will be supported in the future; +- Only ensembles trained with the **randomForest** and **ranger** packages are currently supported. Support for additional packages and approaches will be added in the future. -- Currently e2tree works only in the case of classification and regression problems. It will gradually be extended to other problems related to the nature of the response variable: counting, multivariate response, etc. +- Currently **e2tree** works only for classification and regression problems. It will gradually be extended to handle other types of response variables, such as count data, multivariate responses, and more. ## Example 1: IRIS dataset diff --git a/README.md b/README.md index 5829627..600ebc2 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ status](https://www.r-pkg.org/badges/version/e2tree)](https://CRAN.R-project.org

-The Explainable Ensemble Trees (e2tree) key idea consists of the +The **Explainable Ensemble Trees** (**e2tree**) key idea consists of the definition of an algorithm to represent every ensemble approach based on decision trees model using a single tree-like structure. The goal is to explain the results from the esemble algorithm while preserving its @@ -34,7 +34,7 @@ be generalized to every ensemble approach based on decision trees. ## Setup -You can install the developer version of e2tree from +You can install the **developer version** of e2tree from [GitHub](https://github.com) with: ``` r @@ -42,7 +42,7 @@ install.packages("remotes") remotes::install_github("massimoaria/e2tree") ``` -You can install the released version of e2tree from +You can install the **released version** of e2tree from [CRAN](https://CRAN.R-project.org) with: ``` r @@ -59,18 +59,19 @@ if (!(require(rsample, quietly=TRUE))){install.packages("rsample"); require(rsam options(dplyr.summarise.inform = FALSE) ``` -## Warnings +## Warning -The package is still under development and therefore, for the time -being, there are the following limitations: +This package is still under development and, for the time being, the +following limitations apply: -- Only ensembles trained with the randomForest package are supported. - Additional packages and approaches will be supported in the future; +- Only ensembles trained with the **randomForest** and **ranger** + packages are currently supported. Support for additional packages and + approaches will be added in the future. -- Currently e2tree works only in the case of classification and - regression problems. It will gradually be extended to other problems - related to the nature of the response variable: counting, multivariate - response, etc. +- Currently **e2tree** works only for classification and regression + problems. It will gradually be extended to handle other types of + response variables, such as count data, multivariate responses, and + more. ## Example 1: IRIS dataset diff --git a/src/CoOccurrences.o b/src/CoOccurrences.o index 19a5736cf382f1b9ddbe9a70bb7b2af1f1006f14..a875d742f00a2104291b6db1c97910f2cfdc98cf 100644 GIT binary patch delta 24944 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 E0ENPM5dZ)H delta 24907 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 delta 22649 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