From 794fed59b720a4d326234cb1a1e1922e23fae7e2 Mon Sep 17 00:00:00 2001 From: Krystian Igras Date: Thu, 5 Sep 2019 01:16:33 +0200 Subject: [PATCH] Cran release fixes. --- DESCRIPTION | 4 +- NEWS.md | 8 + R/methods-xspliner.R | 54 +-- R/utils-formula-build.R | 2 +- cran-comments.md | 51 +-- docs/articles/automation.html | 358 +++++++++--------- docs/articles/cases.html | 58 +-- docs/articles/discrete.html | 56 +-- .../figure-html/unnamed-chunk-5-1.png | Bin 89413 -> 93825 bytes .../figure-html/unnamed-chunk-9-1.png | Bin 44062 -> 43505 bytes docs/articles/extras.html | 156 ++++---- docs/articles/graphics.html | 134 +++---- docs/articles/methods.html | 186 +++++---- .../figure-html/unnamed-chunk-7-1.png | Bin 21587 -> 21606 bytes docs/articles/xspliner.html | 132 +++---- docs/index.html | 4 +- docs/news/index.html | 20 +- docs/pkgdown.yml | 2 +- docs/reference/build_xspliner.html | 6 +- docs/reference/index.html | 2 +- docs/reference/summary.xspliner.html | 72 +--- docs/reference/xspline-1.png | Bin 51926 -> 52208 bytes docs/reference/xspline-2.png | Bin 51926 -> 52208 bytes docs/reference/xspline-3.png | Bin 51926 -> 52208 bytes docs/reference/xspline.html | 56 +-- man/summary.xspliner.Rd | 21 - vignettes/automation.Rmd | 2 +- 27 files changed, 658 insertions(+), 726 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index 712a72f..2c6bb2f 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: xspliner Title: Assisted Model Building, using Surrogate Black-Box Models to Train Interpretable Spline Based Additive Models -Version: 0.0.2.9005 +Version: 0.0.3 Authors@R: c( person("Krystian", "Igras", email = "krystian8207@gmail.com", role = c("aut", "cre")), person("Przemyslaw", "Biecek", role = c("aut", "ths"))) @@ -20,7 +20,7 @@ Imports: stats, magrittr, purrr, tidyr, - pROC + pROC (>= 1.15.3) Suggests: ALEPlot, factorMerger, diff --git a/NEWS.md b/NEWS.md index 353fcae..e56a594 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,3 +1,11 @@ +# xspliner 0.0.3 +* Summary method extended with comparison statistics +* Extended methods for auto-extracting model metadata (lhs, response) +* Added comparison plot for factor responses +* Documentation extended with new examples +* Ability to specify glm options +* Added more informative progress messages + # xspliner 0.0.2 * Specify parameters hierarchy * Use of S3 diff --git a/R/methods-xspliner.R b/R/methods-xspliner.R index 013ffd2..9feb481 100644 --- a/R/methods-xspliner.R +++ b/R/methods-xspliner.R @@ -66,14 +66,18 @@ measure_diff_roc <- function(a, b, measure = max) { } fit_roc_diff <- function(surrogate_scores, original_scores, original_labels) { - is_score_surrogate <- all(surrogate_scores <= 1 && surrogate_scores >=0) - is_score_original <- all(original_scores <= 1 && original_scores >=0) + is_score_surrogate <- all(surrogate_scores <= 1) && all(surrogate_scores >=0) + is_score_original <- all(original_scores <= 1) && all(original_scores >=0) if (is_score_original && is_score_surrogate) { roc_surrogate <- pROC::roc(original_labels, surrogate_scores, direction="<") roc_original <- pROC::roc(original_labels, original_scores, direction="<") thresholds <- union(roc_surrogate$thresholds, roc_original$thresholds) - roc_surrogate_on_thresholds <- pROC::coords(roc_surrogate, x = thresholds, input = "threshold", ret = c("se", "1-sp")) - roc_original_on_thresholds <- pROC::coords(roc_original, x = thresholds, input = "threshold", ret = c("se", "1-sp")) + roc_surrogate_on_thresholds <- pROC::coords( + roc_surrogate, x = thresholds, input = "threshold", ret = c("se", "1-sp"), transpose = TRUE + ) + roc_original_on_thresholds <- pROC::coords( + roc_original, x = thresholds, input = "threshold", ret = c("se", "1-sp"), transpose = TRUE + ) list( max = measure_diff_roc(roc_surrogate_on_thresholds, roc_original_on_thresholds), mean = measure_diff_roc(roc_surrogate_on_thresholds, roc_original_on_thresholds, measure = mean) @@ -183,27 +187,27 @@ compare_summary <- function(surrogate, original, surrogate_pred_fun, original_pr #' summary(iris.xs, model = iris.rf, newdata = data) #' #' # Classification model -#' data <- droplevels(iris[51:150, ]) # selecting only two species data -#' iris.rf <- randomForest(Species ~ ., data = data) -#' iris.xs <- xspline(iris.rf) -#' -#' # Comparing summaries requires providing prediction function -#' # Prediction as probability for success -#' prob_rf <- function(object, newdata) predict(object, newdata = newdata, type = "prob")[, 2] -#' prob_xs <- function(object, newdata) predict(object, newdata = newdata, type = "response") -#' summary(iris.xs, model = iris.rf, newdata = data, prediction_funs = list(prob_xs, prob_rf)) -#' # Prediction as final category -#' response_rf <- function(object, newdata) predict(object, newdata = newdata) -#' response_xs <- function(object, newdata) { -#' y_levels <- levels(newdata[[environment(object)$response]]) -#' factor( -#' y_levels[(predict.glm(object, newdata = newdata, type = "link") > 0) + 1], -#' levels = y_levels -#' ) -#' } -#' response_rf(iris.rf, newdata = data) -#' response_xs(iris.xs, newdata = data) -#' summary(iris.xs, model = iris.rf, newdata = data, prediction_funs = list(response_xs, response_rf)) +# data <- droplevels(iris[51:150, ]) # selecting only two species data +# iris.rf <- randomForest(Species ~ ., data = data) +# iris.xs <- xspline(iris.rf) +# +# # Comparing summaries requires providing prediction function +# # Prediction as probability for success +# prob_rf <- function(object, newdata) predict(object, newdata = newdata, type = "prob")[, 2] +# prob_xs <- function(object, newdata) predict(object, newdata = newdata, type = "response") +# summary(iris.xs, model = iris.rf, newdata = data, prediction_funs = list(prob_xs, prob_rf)) +# # Prediction as final category +# response_rf <- function(object, newdata) predict(object, newdata = newdata) +# response_xs <- function(object, newdata) { +# y_levels <- levels(newdata[[environment(object)$response]]) +# factor( +# y_levels[(predict.glm(object, newdata = newdata, type = "link") > 0) + 1], +# levels = y_levels +# ) +# } +# response_rf(iris.rf, newdata = data) +# response_xs(iris.xs, newdata = data) +# summary(iris.xs, model = iris.rf, newdata = data, prediction_funs = list(response_xs, response_rf)) #' #' @export summary.xspliner <- function(object, predictor, ..., model = NULL, newdata = NULL, diff --git a/R/utils-formula-build.R b/R/utils-formula-build.R index 1b14c52..f900a0e 100644 --- a/R/utils-formula-build.R +++ b/R/utils-formula-build.R @@ -204,7 +204,7 @@ get_predictors_classes <- function(data) { try_get <- function(possible) { possible_response <- try(possible, silent = TRUE) if (!("try-error" %in% class(possible_response))) { - if (length(possible_response) == 0 || possible_response == "NULL") { + if (length(possible_response) == 0 || identical(possible_response, "NULL")) { NULL } else { possible_response diff --git a/cran-comments.md b/cran-comments.md index b4b4639..feff630 100644 --- a/cran-comments.md +++ b/cran-comments.md @@ -1,39 +1,42 @@ ## Test environments -* local Ubuntu 18.10, R 3.5.1 -* Rhub Ubuntu Linux 16.04 LTS, R-release, GCC +* local check + Ubuntu 18.10, R 3.6.1 * win-builder + R version 3.5.3 (2019-03-11) + R Under development (unstable) (2019-09-02 r77130) + R version 3.6.1 (2019-07-05) -## R CMD check results +## `R CMD check xspliner_0.0.3.tar.gz --as-cran` results ``` Status: OK ``` -## check_rhub() result +## win-builder result ``` -* checking CRAN incoming feasibility ... NOTE -Maintainer: ‘Krystian Igras ’ - -New submission - -Possibly mis-spelled words in DESCRIPTION: - interpretable (9:41) - Interpretable (3:15) - -* checking examples ... NOTE -Examples with CPU or elapsed time > 5s -user system elapsed -xspline 5.92 0.164 6.217 - -0 errors | 0 warnings | 2 notes +* using log directory 'd:/RCompile/CRANguest/R-oldrelease/xspliner.Rcheck' +* using R version 3.5.3 (2019-03-11) +* using platform: x86_64-w64-mingw32 (64-bit) +... +* DONE +Status: OK ``` -# win-builder result - ``` -* checking CRAN incoming feasibility ... NOTE -Maintainer: 'Krystian Igras ' +* using log directory 'd:/RCompile/CRANguest/R-devel/xspliner.Rcheck' +* using R Under development (unstable) (2019-09-02 r77130) +* using platform: x86_64-w64-mingw32 (64-bit) +... +* DONE +Status: OK +``` -Status: 1 NOTE +``` +* using log directory 'd:/RCompile/CRANguest/R-release/xspliner.Rcheck' +* using R version 3.6.1 (2019-07-05) +* using platform: x86_64-w64-mingw32 (64-bit) +... +* DONE +Status: OK ``` diff --git a/docs/articles/automation.html b/docs/articles/automation.html index dac9949..0afd4d3 100644 --- a/docs/articles/automation.html +++ b/docs/articles/automation.html @@ -88,7 +88,7 @@

Automate your work

Krystian Igras

-

2019-08-31

+

2019-09-05

@@ -106,16 +106,16 @@

Local transition and effect

In previous sections we learned how to specify parameters for the effect and transition of single variable. Let’s name them local parameters.

A quick example you can see below:

-
library(xspliner)
-library(randomForest)
-
-rf_iris <- randomForest(Petal.Width ~  Sepal.Length + Petal.Length + Species, data = iris)
-model_xs <- xspline(Petal.Width ~ 
-  Sepal.Length + 
-  xs(Petal.Length, effect = list(grid.resolution = 100), transition = list(bs = "cr")) + 
-  xf(Species, transition = list(stat = "loglikelihood", value = 4)),
-  model = rf_iris)
-summary(model_xs)
+
library(xspliner)
+library(randomForest)
+
+rf_iris <- randomForest(Petal.Width ~  Sepal.Length + Petal.Length + Species, data = iris)
+model_xs <- xspline(Petal.Width ~ 
+  Sepal.Length + 
+  xs(Petal.Length, effect = list(grid.resolution = 100), transition = list(bs = "cr")) + 
+  xf(Species, transition = list(stat = "loglikelihood", value = 4)),
+  model = rf_iris)
+summary(model_xs)
## 
 ## Call:
 ## stats::glm(formula = Petal.Width ~ Sepal.Length + xs(Petal.Length) + 
@@ -123,23 +123,23 @@ 

## ## Deviance Residuals: ## Min 1Q Median 3Q Max -## -0.66812 -0.07307 -0.02386 0.10341 0.45717 +## -0.67011 -0.06856 -0.02511 0.09891 0.45816 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) -## (Intercept) -1.32737 0.21623 -6.139 7.56e-09 *** -## Sepal.Length 0.03222 0.03547 0.908 0.365 -## xs(Petal.Length) 1.85685 0.35456 5.237 5.63e-07 *** -## xf(Species)versicolor 0.08438 0.17014 0.496 0.621 -## xf(Species)virginica 0.39232 0.22838 1.718 0.088 . +## (Intercept) -1.24091 0.20204 -6.142 7.44e-09 *** +## Sepal.Length 0.02889 0.03555 0.813 0.418 +## xs(Petal.Length) 1.84981 0.34695 5.332 3.65e-07 *** +## xf(Species)versicolor -0.01324 0.18502 -0.072 0.943 +## xf(Species)virginica 0.30189 0.24099 1.253 0.212 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## -## (Dispersion parameter for gaussian family taken to be 0.03096157) +## (Dispersion parameter for gaussian family taken to be 0.03078324) ## ## Null deviance: 86.5699 on 149 degrees of freedom -## Residual deviance: 4.4894 on 145 degrees of freedom -## AIC: -88.655 +## Residual deviance: 4.4636 on 145 degrees of freedom +## AIC: -89.521 ## ## Number of Fisher Scoring iterations: 2

When the black box model is based on higher amount of variables it can be problematic to specify local parameters for each predictor. Also formula becomes large and hard to read.

@@ -149,15 +149,15 @@

Global transition and effect

Its more common that we use similar configuration for each variable, as it’s simple and allows us to build and experiment faster. To do this you can specify xs_opts and xf_opts of xspline function. Let’s name them global parameters.

Each of global parameters can specify effect and transition, that should be used for xs and xf transformations respectively. Then you just need to use base xs and xf symbols without parameters:

-
model_xs <- xspline(Petal.Width ~ 
-  Sepal.Length + 
-  xs(Petal.Length) + 
-  xf(Species),
-  model = rf_iris, 
-  xs_opts = list(effect = list(grid.resolution = 100), transition = list(bs = "cr")),
-  xf_opts = list(transition = list(stat = "loglikelihood", value = 4))
-)
-summary(model_xs)
+
model_xs <- xspline(Petal.Width ~ 
+  Sepal.Length + 
+  xs(Petal.Length) + 
+  xf(Species),
+  model = rf_iris, 
+  xs_opts = list(effect = list(grid.resolution = 100), transition = list(bs = "cr")),
+  xf_opts = list(transition = list(stat = "loglikelihood", value = 4))
+)
+summary(model_xs)
## 
 ## Call:
 ## stats::glm(formula = Petal.Width ~ Sepal.Length + xs(Petal.Length) + 
@@ -165,35 +165,35 @@ 

## ## Deviance Residuals: ## Min 1Q Median 3Q Max -## -0.66812 -0.07307 -0.02386 0.10341 0.45717 +## -0.67011 -0.06856 -0.02511 0.09891 0.45816 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) -## (Intercept) -1.32737 0.21623 -6.139 7.56e-09 *** -## Sepal.Length 0.03222 0.03547 0.908 0.365 -## xs(Petal.Length) 1.85685 0.35456 5.237 5.63e-07 *** -## xf(Species)versicolor 0.08438 0.17014 0.496 0.621 -## xf(Species)virginica 0.39232 0.22838 1.718 0.088 . +## (Intercept) -1.24091 0.20204 -6.142 7.44e-09 *** +## Sepal.Length 0.02889 0.03555 0.813 0.418 +## xs(Petal.Length) 1.84981 0.34695 5.332 3.65e-07 *** +## xf(Species)versicolor -0.01324 0.18502 -0.072 0.943 +## xf(Species)virginica 0.30189 0.24099 1.253 0.212 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## -## (Dispersion parameter for gaussian family taken to be 0.03096157) +## (Dispersion parameter for gaussian family taken to be 0.03078324) ## ## Null deviance: 86.5699 on 149 degrees of freedom -## Residual deviance: 4.4894 on 145 degrees of freedom -## AIC: -88.655 +## Residual deviance: 4.4636 on 145 degrees of freedom +## AIC: -89.521 ## ## Number of Fisher Scoring iterations: 2

But still you can specify local parameters that override the global ones.

-
model_xs <- xspline(Petal.Width ~ 
-  xs(Sepal.Length, transition = list(k = 10)) + 
-  xs(Petal.Length) + 
-  xf(Species),
-  model = rf_iris, 
-  xs_opts = list(effect = list(grid.resolution = 100), transition = list(bs = "cr")),
-  xf_opts = list(transition = list(stat = "loglikelihood", value = 4))
-)
-summary(model_xs)
+
model_xs <- xspline(Petal.Width ~ 
+  xs(Sepal.Length, transition = list(k = 10)) + 
+  xs(Petal.Length) + 
+  xf(Species),
+  model = rf_iris, 
+  xs_opts = list(effect = list(grid.resolution = 100), transition = list(bs = "cr")),
+  xf_opts = list(transition = list(stat = "loglikelihood", value = 4))
+)
+summary(model_xs)
## 
 ## Call:
 ## stats::glm(formula = Petal.Width ~ xs(Sepal.Length) + xs(Petal.Length) + 
@@ -201,23 +201,23 @@ 

## ## Deviance Residuals: ## Min 1Q Median 3Q Max -## -0.67121 -0.07495 -0.03046 0.09856 0.45944 +## -0.67309 -0.07436 -0.03025 0.09788 0.45994 ## ## Coefficients: -## Estimate Std. Error t value Pr(>|t|) -## (Intercept) -1.46014 0.26089 -5.597 1.06e-07 *** -## xs(Sepal.Length) 0.31132 0.31424 0.991 0.3235 -## xs(Petal.Length) 1.80229 0.37818 4.766 4.53e-06 *** -## xf(Species)versicolor 0.09996 0.17451 0.573 0.5677 -## xf(Species)virginica 0.41648 0.23573 1.767 0.0794 . +## Estimate Std. Error t value Pr(>|t|) +## (Intercept) -1.368640 0.266276 -5.140 8.74e-07 *** +## xs(Sepal.Length) 0.278368 0.331361 0.840 0.402 +## xs(Petal.Length) 1.808687 0.374137 4.834 3.37e-06 *** +## xf(Species)versicolor 0.001331 0.192390 0.007 0.994 +## xf(Species)virginica 0.323242 0.251553 1.285 0.201 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## -## (Dispersion parameter for gaussian family taken to be 0.03092842) +## (Dispersion parameter for gaussian family taken to be 0.03077369) ## ## Null deviance: 86.5699 on 149 degrees of freedom -## Residual deviance: 4.4846 on 145 degrees of freedom -## AIC: -88.816 +## Residual deviance: 4.4622 on 145 degrees of freedom +## AIC: -89.568 ## ## Number of Fisher Scoring iterations: 2

In this case last_evaluation variable will be transformed with thin plate regression spline (bs = "tp" is default for mgcv::s) with basis dimension equal to 10. At the same time average_monthly_hours will be transformed with cubic splines.

@@ -227,7 +227,7 @@

Default transition and effect

As you can see in project objects reference, you may find there xs_opts_edfault and xf_opts_default objects. These objects specify default parameters for xs and xf transformations.

- +
xs_opts_default
## $effect
 ## $effect$type
 ## [1] "pdp"
@@ -239,7 +239,7 @@ 

## ## $transition$monotonic ## [1] "not"

- +
xf_opts_default
## $effect
 ## $effect$type
 ## [1] "ice"
@@ -267,11 +267,11 @@ 

Transform each formula predictor

If you want to transform each predictor of specified formula and not using xs and xf variables you can omit it using consider parameter for xspline function.

Possible values are "specials" the default one and "all". For automatic transformation of each variable without specifying xs and xf symbols just set consider = "all" and pass standard formula into xspline function:

-
model_xs <- xspline(Petal.Width ~ Sepal.Length  + Petal.Length + Species,
-  model = rf_iris,
-  consider = "all"
-)
-summary(model_xs)
+
model_xs <- xspline(Petal.Width ~ Sepal.Length  + Petal.Length + Species,
+  model = rf_iris,
+  consider = "all"
+)
+summary(model_xs)
## 
 ## Call:
 ## stats::glm(formula = Petal.Width ~ xs(Sepal.Length) + xs(Petal.Length) + 
@@ -279,34 +279,34 @@ 

## ## Deviance Residuals: ## Min 1Q Median 3Q Max -## -0.67513 -0.07534 -0.03094 0.09496 0.46835 +## -0.67517 -0.07722 -0.03076 0.09586 0.46877 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) -## (Intercept) -1.4577 0.2641 -5.520 1.52e-07 *** -## xs(Sepal.Length) 0.3332 0.3179 1.048 0.2963 -## xs(Petal.Length) 1.7661 0.3734 4.730 5.27e-06 *** -## xf(Species)versicolor 0.1181 0.1716 0.688 0.4926 -## xf(Species)virginica 0.4411 0.2321 1.901 0.0593 . +## (Intercept) -1.36474 0.27156 -5.026 1.46e-06 *** +## xs(Sepal.Length) 0.31522 0.33594 0.938 0.350 +## xs(Petal.Length) 1.74404 0.36633 4.761 4.62e-06 *** +## xf(Species)versicolor 0.03733 0.18736 0.199 0.842 +## xf(Species)virginica 0.36985 0.24541 1.507 0.134 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## -## (Dispersion parameter for gaussian family taken to be 0.03099558) +## (Dispersion parameter for gaussian family taken to be 0.03090884) ## ## Null deviance: 86.5699 on 149 degrees of freedom -## Residual deviance: 4.4944 on 145 degrees of freedom -## AIC: -88.49 +## Residual deviance: 4.4818 on 145 degrees of freedom +## AIC: -88.911 ## ## Number of Fisher Scoring iterations: 2

Then each predictor is transformed with xs and xf symbols and use of default parameters or global ones when specified.

xs is used for integer and numeric variables - xf for factors.

By default xspline function tries to extract the data from model (rf_model) call and xspline’s parent.frame() environment then uses it to determine predictor types. So to be sure that variable types are sourced correctly a good practice here is to add data parameter, storing black box’s training data.

-
model_xs <- xspline(Petal.Width ~ Sepal.Length  + Petal.Length + Species,
-  model = rf_iris,
-  data = iris,
-  consider = "all"
-)
-summary(model_xs)
+
model_xs <- xspline(Petal.Width ~ Sepal.Length  + Petal.Length + Species,
+  model = rf_iris,
+  data = iris,
+  consider = "all"
+)
+summary(model_xs)
## 
 ## Call:
 ## stats::glm(formula = Petal.Width ~ xs(Sepal.Length) + xs(Petal.Length) + 
@@ -314,23 +314,23 @@ 

## ## Deviance Residuals: ## Min 1Q Median 3Q Max -## -0.67513 -0.07534 -0.03094 0.09496 0.46835 +## -0.67517 -0.07722 -0.03076 0.09586 0.46877 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) -## (Intercept) -1.4577 0.2641 -5.520 1.52e-07 *** -## xs(Sepal.Length) 0.3332 0.3179 1.048 0.2963 -## xs(Petal.Length) 1.7661 0.3734 4.730 5.27e-06 *** -## xf(Species)versicolor 0.1181 0.1716 0.688 0.4926 -## xf(Species)virginica 0.4411 0.2321 1.901 0.0593 . +## (Intercept) -1.36474 0.27156 -5.026 1.46e-06 *** +## xs(Sepal.Length) 0.31522 0.33594 0.938 0.350 +## xs(Petal.Length) 1.74404 0.36633 4.761 4.62e-06 *** +## xf(Species)versicolor 0.03733 0.18736 0.199 0.842 +## xf(Species)virginica 0.36985 0.24541 1.507 0.134 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## -## (Dispersion parameter for gaussian family taken to be 0.03099558) +## (Dispersion parameter for gaussian family taken to be 0.03090884) ## ## Null deviance: 86.5699 on 149 degrees of freedom -## Residual deviance: 4.4944 on 145 degrees of freedom -## AIC: -88.49 +## Residual deviance: 4.4818 on 145 degrees of freedom +## AIC: -88.911 ## ## Number of Fisher Scoring iterations: 2

@@ -340,13 +340,13 @@

In some cases you may want to transform only quantitative or qualitative predictors. Looking into default parameters xs_opts_default and xf_opts_default we may find alter parameter for transition.

The parameter is used to specify if predictor for which xs or xf was specified needs to be transformed or used as a bare variable in formula. You can specify it in the local or global transition parameter. In this case using the global one is more reasonable.

So, in order to transform only continuous variables just set alter = "always" (what is default) for xs_opts and alter = "never" for xf_opts:

-
model_xs <- xspline(Petal.Width ~ Sepal.Length + Petal.Length + Species,
-  model = rf_iris,
-  data = iris,
-  consider = "all",
-  xf_opts = list(transition = list(alter = "never"))
-)
-summary(model_xs)
+
model_xs <- xspline(Petal.Width ~ Sepal.Length + Petal.Length + Species,
+  model = rf_iris,
+  data = iris,
+  consider = "all",
+  xf_opts = list(transition = list(alter = "never"))
+)
+summary(model_xs)
## 
 ## Call:
 ## stats::glm(formula = Petal.Width ~ xs(Sepal.Length) + xs(Petal.Length) + 
@@ -354,33 +354,33 @@ 

## ## Deviance Residuals: ## Min 1Q Median 3Q Max -## -0.67513 -0.07534 -0.03094 0.09496 0.46835 +## -0.67517 -0.07722 -0.03076 0.09586 0.46877 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) -## (Intercept) -1.4577 0.2641 -5.520 1.52e-07 *** -## xs(Sepal.Length) 0.3332 0.3179 1.048 0.2963 -## xs(Petal.Length) 1.7661 0.3734 4.730 5.27e-06 *** -## Speciesversicolor 0.1181 0.1716 0.688 0.4926 -## Speciesvirginica 0.4411 0.2321 1.901 0.0593 . +## (Intercept) -1.36474 0.27156 -5.026 1.46e-06 *** +## xs(Sepal.Length) 0.31522 0.33594 0.938 0.350 +## xs(Petal.Length) 1.74404 0.36633 4.761 4.62e-06 *** +## Speciesversicolor 0.03733 0.18736 0.199 0.842 +## Speciesvirginica 0.36985 0.24541 1.507 0.134 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## -## (Dispersion parameter for gaussian family taken to be 0.03099558) +## (Dispersion parameter for gaussian family taken to be 0.03090884) ## ## Null deviance: 86.5699 on 149 degrees of freedom -## Residual deviance: 4.4944 on 145 degrees of freedom -## AIC: -88.49 +## Residual deviance: 4.4818 on 145 degrees of freedom +## AIC: -88.911 ## ## Number of Fisher Scoring iterations: 2

For transformation of factors only:

-
model_xs <- xspline(Petal.Width ~ Sepal.Length + Petal.Length + Species,
-  model = rf_iris,
-  data = iris,
-  consider = "all",
-  xs_opts = list(transition = list(alter = "never"))
-)
-summary(model_xs)
+
model_xs <- xspline(Petal.Width ~ Sepal.Length + Petal.Length + Species,
+  model = rf_iris,
+  data = iris,
+  consider = "all",
+  xs_opts = list(transition = list(alter = "never"))
+)
+summary(model_xs)
## 
 ## Call:
 ## stats::glm(formula = Petal.Width ~ Sepal.Length + Petal.Length + 
@@ -413,8 +413,8 @@ 

Model based dot formula

For many existing models in R we usually can specify “dot formulas”, when used predictors are sourced from provided data. xspliner can also handle the form. Let’s return here for iris random forest model.

-
model_xs <- xspline(Petal.Width ~ ., model = rf_iris)
-summary(model_xs)
+
model_xs <- xspline(Petal.Width ~ ., model = rf_iris)
+summary(model_xs)
## 
 ## Call:
 ## stats::glm(formula = Petal.Width ~ xs(Sepal.Length) + xs(Petal.Length) + 
@@ -422,23 +422,23 @@ 

## ## Deviance Residuals: ## Min 1Q Median 3Q Max -## -0.67513 -0.07534 -0.03094 0.09496 0.46835 +## -0.67517 -0.07722 -0.03076 0.09586 0.46877 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) -## (Intercept) -1.4577 0.2641 -5.520 1.52e-07 *** -## xs(Sepal.Length) 0.3332 0.3179 1.048 0.2963 -## xs(Petal.Length) 1.7661 0.3734 4.730 5.27e-06 *** -## xf(Species)versicolor 0.1181 0.1716 0.688 0.4926 -## xf(Species)virginica 0.4411 0.2321 1.901 0.0593 . +## (Intercept) -1.36474 0.27156 -5.026 1.46e-06 *** +## xs(Sepal.Length) 0.31522 0.33594 0.938 0.350 +## xs(Petal.Length) 1.74404 0.36633 4.761 4.62e-06 *** +## xf(Species)versicolor 0.03733 0.18736 0.199 0.842 +## xf(Species)virginica 0.36985 0.24541 1.507 0.134 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## -## (Dispersion parameter for gaussian family taken to be 0.03099558) +## (Dispersion parameter for gaussian family taken to be 0.03090884) ## ## Null deviance: 86.5699 on 149 degrees of freedom -## Residual deviance: 4.4944 on 145 degrees of freedom -## AIC: -88.49 +## Residual deviance: 4.4818 on 145 degrees of freedom +## AIC: -88.911 ## ## Number of Fisher Scoring iterations: 2

Good practice here is to provide data parameter as well to detect predictors classes, and model type (classification or regression).

@@ -450,11 +450,11 @@

  • xspline provided data parameter, excluding formula response
  • To assure correct predictors usage, you may also specify predictor names vector in predictors parameter, and data (optional) to assure source of variable classes:

    - +
    model_xs <- xspline(Petal.Width ~ ., 
    +                    model = rf_iris,
    +                    predictors = colnames(iris)[-c(2, 4)],
    +                    data = iris)
    +summary(model_xs)
    ## 
     ## Call:
     ## stats::glm(formula = Petal.Width ~ xs(Sepal.Length) + xs(Petal.Length) + 
    @@ -462,23 +462,23 @@ 

    ## ## Deviance Residuals: ## Min 1Q Median 3Q Max -## -0.67513 -0.07534 -0.03094 0.09496 0.46835 +## -0.67517 -0.07722 -0.03076 0.09586 0.46877 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) -## (Intercept) -1.4577 0.2641 -5.520 1.52e-07 *** -## xs(Sepal.Length) 0.3332 0.3179 1.048 0.2963 -## xs(Petal.Length) 1.7661 0.3734 4.730 5.27e-06 *** -## xf(Species)versicolor 0.1181 0.1716 0.688 0.4926 -## xf(Species)virginica 0.4411 0.2321 1.901 0.0593 . +## (Intercept) -1.36474 0.27156 -5.026 1.46e-06 *** +## xs(Sepal.Length) 0.31522 0.33594 0.938 0.350 +## xs(Petal.Length) 1.74404 0.36633 4.761 4.62e-06 *** +## xf(Species)versicolor 0.03733 0.18736 0.199 0.842 +## xf(Species)virginica 0.36985 0.24541 1.507 0.134 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## -## (Dispersion parameter for gaussian family taken to be 0.03099558) +## (Dispersion parameter for gaussian family taken to be 0.03090884) ## ## Null deviance: 86.5699 on 149 degrees of freedom -## Residual deviance: 4.4944 on 145 degrees of freedom -## AIC: -88.49 +## Residual deviance: 4.4818 on 145 degrees of freedom +## AIC: -88.911 ## ## Number of Fisher Scoring iterations: 2

    In above examples each predictor is transformed by default. You can exclude needed, by specifying global alter = "never" parameters, or bare.

    @@ -490,8 +490,8 @@

    Omit formula

    As we could see in previous section, using dot formula the predictors are sourced from provided black box. Why cannot we fully extract formula from black box? We can.

    Let’s use previously built rf_iris model:

    -
    model_xs <- xspline(rf_iris)
    -summary(model_xs)
    +
    model_xs <- xspline(rf_iris)
    +summary(model_xs)
    ## 
     ## Call:
     ## stats::glm(formula = Petal.Width ~ xs(Sepal.Length) + xs(Petal.Length) + 
    @@ -499,23 +499,23 @@ 

    ## ## Deviance Residuals: ## Min 1Q Median 3Q Max -## -0.67513 -0.07534 -0.03094 0.09496 0.46835 +## -0.67517 -0.07722 -0.03076 0.09586 0.46877 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) -## (Intercept) -1.4577 0.2641 -5.520 1.52e-07 *** -## xs(Sepal.Length) 0.3332 0.3179 1.048 0.2963 -## xs(Petal.Length) 1.7661 0.3734 4.730 5.27e-06 *** -## xf(Species)versicolor 0.1181 0.1716 0.688 0.4926 -## xf(Species)virginica 0.4411 0.2321 1.901 0.0593 . +## (Intercept) -1.36474 0.27156 -5.026 1.46e-06 *** +## xs(Sepal.Length) 0.31522 0.33594 0.938 0.350 +## xs(Petal.Length) 1.74404 0.36633 4.761 4.62e-06 *** +## xf(Species)versicolor 0.03733 0.18736 0.199 0.842 +## xf(Species)virginica 0.36985 0.24541 1.507 0.134 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## -## (Dispersion parameter for gaussian family taken to be 0.03099558) +## (Dispersion parameter for gaussian family taken to be 0.03090884) ## ## Null deviance: 86.5699 on 149 degrees of freedom -## Residual deviance: 4.4944 on 145 degrees of freedom -## AIC: -88.49 +## Residual deviance: 4.4818 on 145 degrees of freedom +## AIC: -88.911 ## ## Number of Fisher Scoring iterations: 2

    Works! Can it be simpler? Actually not because of black box based transformation and theory, but we can provide some model based parameters upfront using DALEX’s explainer object (see next section).

    @@ -525,29 +525,29 @@

  • Building the black box with formula
  • Black box training data stores factors in long form (the factor is one column, not spread into binary wide form)
  • -

    Most of R based ML models satisfy the above condition. One of exceptions is XGBoost which in actual xspliner version needs to be handled in the more complex xspline call. You can see it in use cases

    +

    Most of R based ML models satisfy the above condition. One of exceptions is XGBoost which in actual xspliner version needs to be handled in the more complex xspline call. You can see it in use cases

    Excluding predictors from transformation

    For this example consider again Boston Housing Data from pdp package, and build simple svm model for predicting chas variable:

    -
    library(pdp)
    -library(e1071)
    -data(boston)
    -svm_boston <- svm(chas ~ cmedv + rad + lstat, data = boston, probability = TRUE)
    -str(boston[, "rad"])
    +
    library(pdp)
    +library(e1071)
    +data(boston)
    +svm_boston <- svm(chas ~ cmedv + rad + lstat, data = boston, probability = TRUE)
    +str(boston[, "rad"])
    ##  int [1:506] 1 2 2 3 3 3 5 5 5 5 ...
    -
    unique(boston$rad)
    +
    unique(boston$rad)
    ## [1]  1  2  3  5  4  8  6  7 24

    As we can see rad variable is integer and has only 9 unique values. As a result spline approximation may be misleading, and not possible to perform. We decide here to omit rad variable when performing transformation, nevertheless remaining predictors should be transformed.

    At first setup model based transformation:

    - +
    xs_model <- xspline(svm_boston)
    ## Error in smooth.construct.tp.smooth.spec(object, dk$data, dk$knots): A term has fewer unique covariate combinations than specified maximum degrees of freedom

    As we can see, the error was returned due to the form of rad variable.

    How to exclude rad from transformation? We can use xspline’s bare parameter, responsible for specifying predictor which shouldn’t be transformed.

    - +
    xs_model <- xspline(
    +  svm_boston,
    +  bare = "rad")
    +summary(xs_model)
    ## 
     ## Call:
     ## stats::glm(formula = chas ~ xs(cmedv) + rad + xs(lstat), family = family, 
    @@ -559,10 +559,10 @@ 

    ## ## Coefficients: ## Estimate Std. Error z value Pr(>|z|) -## (Intercept) 1.027e+02 1.203e+02 0.853 0.39357 -## xs(cmedv) 9.507e+01 3.677e+01 2.585 0.00972 ** -## rad -8.456e-04 2.149e-02 -0.039 0.96861 -## xs(lstat) -1.402e+01 1.149e+02 -0.122 0.90292 +## (Intercept) 50.9339706 61.1731524 0.833 0.40506 +## xs(cmedv) 48.2617778 18.6661709 2.586 0.00972 ** +## rad -0.0008446 0.0214853 -0.039 0.96864 +## xs(lstat) -7.1136654 58.3310899 -0.122 0.90294 ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## @@ -583,21 +583,21 @@

    Integration with DALEX

    As mentioned in the previous section, xspliner is integrated with DALEX package. The main function from the package explain returns useful black box data (such as bare black model or training data) that can be used by xspline function.

    Just check below example

    -
    library(DALEX)
    -rf_boston <- randomForest(lstat ~ cmedv + crim + chas, data = boston)
    -explainer <- explain(rf_boston, label = "boston")
    +
    library(DALEX)
    +rf_boston <- randomForest(lstat ~ cmedv + crim + chas, data = boston)
    +explainer <- explain(rf_boston, label = "boston")
    ## Preparation of a new explainer is initiated
     ##   -> model label       :  boston 
     ##   -> data              :  506  rows  4  cols ([33mextracted from the model[39m)
     ##   -> target variable   :  not specified! ([31mWARNING[39m)
     ##   -> predict function  :  yhat.randomForest  will be used ([33mdefault[39m)
    -##   -> predicted values  :  numerical, min =  5.975977 , mean =  12.65206 , max =  24.93637  
    +##   -> predicted values  :  numerical, min =  6.213462 , mean =  12.6528 , max =  24.49117  
     ##   -> residual function :  difference between y and yhat ([33mdefault[39m)
     ## [32mA new explainer has been created![39m
    - +
    model <- xspline(
    +  explainer
    +)
    +summary(model)
    ## 
     ## Call:
     ## stats::glm(formula = lstat ~ xs(cmedv) + xs(crim) + xf(chas), 
    @@ -605,22 +605,22 @@ 

    ## ## Deviance Residuals: ## Min 1Q Median 3Q Max -## -11.2276 -2.3748 -0.6923 1.6867 21.1417 +## -11.3904 -2.3979 -0.6708 1.7025 21.1816 ## ## Coefficients: ## Estimate Std. Error t value Pr(>|t|) -## (Intercept) -15.95068 1.44893 -11.009 < 2e-16 *** -## xs(cmedv) 1.70141 0.07246 23.480 < 2e-16 *** -## xs(crim) 0.54515 0.14498 3.760 0.00019 *** -## xf(chas)1 1.42731 0.69468 2.055 0.04043 * +## (Intercept) -16.91139 1.61080 -10.499 < 2e-16 *** +## xs(cmedv) 1.72018 0.07356 23.386 < 2e-16 *** +## xs(crim) 0.60945 0.15948 3.821 0.000149 *** +## xf(chas)1 1.41359 0.69607 2.031 0.042802 * ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## -## (Dispersion parameter for gaussian family taken to be 15.41681) +## (Dispersion parameter for gaussian family taken to be 15.48482) ## ## Null deviance: 25752.4 on 505 degrees of freedom -## Residual deviance: 7739.2 on 502 degrees of freedom -## AIC: 2826.1 +## Residual deviance: 7773.4 on 502 degrees of freedom +## AIC: 2828.3 ## ## Number of Fisher Scoring iterations: 2

    You can provide your own xspline’s parameters that overwrite that sourced from explainer.

    diff --git a/docs/articles/cases.html b/docs/articles/cases.html index 28f7361..624af1f 100644 --- a/docs/articles/cases.html +++ b/docs/articles/cases.html @@ -88,7 +88,7 @@

    Use cases

    Krystian Igras

    -

    2019-08-31

    +

    2019-09-05

    @@ -100,12 +100,12 @@

    2019-08-31

    XGBoost case

    -
    library(xgboost)
    -library(xspliner)
    -library(breakDown)
    -HR <- HR_data
    -
    -str(HR_data)
    +
    library(xgboost)
    +library(xspliner)
    +library(breakDown)
    +HR <- HR_data
    +
    +str(HR_data)
    ## 'data.frame':    14999 obs. of  10 variables:
     ##  $ satisfaction_level   : num  0.38 0.8 0.11 0.72 0.37 0.41 0.1 0.92 0.89 0.42 ...
     ##  $ last_evaluation      : num  0.53 0.86 0.88 0.87 0.52 0.5 0.77 0.85 1 0.53 ...
    @@ -117,17 +117,17 @@ 

    ## $ promotion_last_5years: int 0 0 0 0 0 0 0 0 0 0 ... ## $ sales : Factor w/ 10 levels "accounting","hr",..: 8 8 8 8 8 8 8 8 8 8 ... ## $ salary : Factor w/ 3 levels "high","low","medium": 2 3 3 2 2 2 2 2 2 2 ...

    -
    model_matrix_train <- model.matrix(left ~ . -1, HR)
    -data_train <- xgb.DMatrix(model_matrix_train, label = HR$left)
    -param <- list(max_depth = 2, objective = "binary:logistic")
    -
    -HR_xgb_model <- xgb.train(param, data_train, nrounds = 50)
    -model_xs <- xspline(HR_xgb_model, lhs = "left", response = "left", predictors = colnames(HR)[-7],
    -                 data = HR, form = "additive", family = "binomial", link = "logit",
    -                 bare = c("number_project", "time_spend_company", "Work_accident", "promotion_last_5years"),
    -                 xs_opts = list(effect = list(train = model_matrix_train)),
    -                 xf_opts = list(transition = list(alter = "never"))) 
    -summary(model_xs)
    +
    model_matrix_train <- model.matrix(left ~ . -1, HR)
    +data_train <- xgb.DMatrix(model_matrix_train, label = HR$left)
    +param <- list(max_depth = 2, objective = "binary:logistic")
    +
    +HR_xgb_model <- xgb.train(param, data_train, nrounds = 50)
    +model_xs <- xspline(HR_xgb_model, lhs = "left", response = "left", predictors = colnames(HR)[-7],
    +                 data = HR, form = "additive", family = "binomial", link = "logit",
    +                 bare = c("number_project", "time_spend_company", "Work_accident", "promotion_last_5years"),
    +                 xs_opts = list(effect = list(train = model_matrix_train)),
    +                 xf_opts = list(transition = list(alter = "never"))) 
    +summary(model_xs)
    ## 
     ## Call:
     ## stats::glm(formula = left ~ xs(satisfaction_level) + xs(last_evaluation) + 
    @@ -174,19 +174,19 @@ 

    Partially constant approximation

    -
    library(DALEX)
    -library(caret)
    -library(xspliner)
    -data(apartments)
    -
    -set.seed(123)
    -variable <- "construction.year"
    -regr_rf <- train(m2.price ~ ., data = apartments, method = "rf", ntree = 100)
    -model_xs <- xspline(regr_rf, data = apartments, bare = c("floor", "no.rooms"),
    -                    xs_opts = list(transition = list(bs = "ps", fx = FALSE, k = 20, m = -1)))
    +
    library(DALEX)
    +library(caret)
    +library(xspliner)
    +data(apartments)
    +
    +set.seed(123)
    +variable <- "construction.year"
    +regr_rf <- train(m2.price ~ ., data = apartments, method = "rf", ntree = 100)
    +model_xs <- xspline(regr_rf, data = apartments, bare = c("floor", "no.rooms"),
    +                    xs_opts = list(transition = list(bs = "ps", fx = FALSE, k = 20, m = -1)))
    ## Warning: Column `orig` joining factors with different levels, coercing to
     ## character vector
    -
    plot(model_xs, "surface")
    +
    plot(model_xs, "surface")

    diff --git a/docs/articles/discrete.html b/docs/articles/discrete.html index 5891449..0e11903 100644 --- a/docs/articles/discrete.html +++ b/docs/articles/discrete.html @@ -88,7 +88,7 @@

    Classification and discrete predictors

    Krystian Igras

    -

    2019-08-31

    +

    2019-09-05

    @@ -103,8 +103,8 @@

    Qualitative predictors

    As before let’s explain the approach basing on a random forest model. For this case we use HR_data from breakDown package.

    Let’s load the data

    - +
    HR_data <- breakDown::HR_data
    +str(HR_data)
    ## 'data.frame':    14999 obs. of  10 variables:
     ##  $ satisfaction_level   : num  0.38 0.8 0.11 0.72 0.37 0.41 0.1 0.92 0.89 0.42 ...
     ##  $ last_evaluation      : num  0.53 0.86 0.88 0.87 0.52 0.5 0.77 0.85 1 0.53 ...
    @@ -117,8 +117,8 @@ 

    ## $ sales : Factor w/ 10 levels "accounting","hr",..: 8 8 8 8 8 8 8 8 8 8 ... ## $ salary : Factor w/ 3 levels "high","low","medium": 2 3 3 2 2 2 2 2 2 2 ...

    and build random forest in which we predict average_montly_hours based on last_evaluation, salary and satisfaction_level predictors.

    -
    library(randomForest)
    -model_rf <- randomForest(average_montly_hours ~ last_evaluation + salary + satisfaction_level, data = HR_data)
    +
    library(randomForest)
    +model_rf <- randomForest(average_montly_hours ~ last_evaluation + salary + satisfaction_level, data = HR_data)

    We’re going to make some transformation/simplification on salary variable. To do so, we need to transform formula passed into xspline function.

    Similarly to continuous variable it is enough to use xf symbol on salary variable, i.e. use formula:

    average_monthly_hours ~ last_evaluation + xf(salary) + satisfaction_level
    @@ -149,13 +149,13 @@

    In order to customize variable transition, just specified (inherited from above functions) parameters inside transition parameter of xf formula symbol. For example to use “fast-adaptive” method for groups merging with optimal partition at GIC statistics value of 4, we set:

    xf(salary, transition = list(method = "fast-adaptive", value = 4))

    In below example, we will transform salary predictor with cutting of GIC statistics at value = 2. As in continuous case we need to use the formula within xspline function:

    - +
    library(xspliner)
    +model_xs <- xspline(
    +  average_montly_hours ~ last_evaluation + xf(salary, transition = list(value = 2)) + satisfaction_level,
    +  model = model_rf
    +)
    +
    +summary(model_xs)
    ## 
     ## Call:
     ## stats::glm(formula = average_montly_hours ~ last_evaluation + 
    @@ -183,13 +183,13 @@ 

    ## Number of Fisher Scoring iterations: 2

    Checking out the model summary, we can realize that “low” and “medium” values were merged into single level (generating “lowmedium” level).

    It can be also found by:

    -
    summary(model_xs, "salary")
    +
    summary(model_xs, "salary")
    ##     orig      pred
     ## 1   high      high
     ## 2    low lowmedium
     ## 3 medium lowmedium

    The graphical result if fully sourced from factorMerger. It is enough to run:

    -
    plot(model_xs, "salary")
    +
    plot(model_xs, "salary")

    @@ -199,17 +199,17 @@

    xspliner can work with classification problems as well. As the final GLM model can work only with binary classification, the only limit here is the number of levels for predicted value (equals to 2).

    Let’s check below example based on SVM algorithm (e1071::svm), and modified iris data.

    Preparing data (we drop “setosa” level on Species value):

    -
    iris_data <- droplevels(iris[iris$Species != "setosa", ])
    +
    iris_data <- droplevels(iris[iris$Species != "setosa", ])

    Building SVM:

    -
    library(e1071) 
    -library(xspliner)
    -model_svm <- svm(Species ~  Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, 
    -                 data = iris_data, probability = TRUE)
    +
    library(e1071) 
    +library(xspliner)
    +model_svm <- svm(Species ~  Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, 
    +                 data = iris_data, probability = TRUE)

    When the base model response variable is of class factor (or integer with two unique values) then xspliner automatically detects classification problem. To force specific model response distribution you can set family and link parameters. In this case we can use xspliner in standard way.

    As each predictor is continuous variable, let’s transform it with xs usage on standard parameters, and build the model:

    -
    model_xs <- xspline(Species ~  xs(Sepal.Length) + xs(Sepal.Width) + xs(Petal.Length) + xs(Petal.Width),
    -                    model = model_svm)
    -summary(model_xs)
    +
    model_xs <- xspline(Species ~  xs(Sepal.Length) + xs(Sepal.Width) + xs(Petal.Length) + xs(Petal.Width),
    +                    model = model_svm)
    +summary(model_xs)
    ## 
     ## Call:
     ## stats::glm(formula = Species ~ xs(Sepal.Length) + xs(Sepal.Width) + 
    @@ -221,11 +221,11 @@ 

    ## ## Coefficients: ## Estimate Std. Error z value Pr(>|z|) -## (Intercept) 0.7125 1.3240 0.538 0.59049 -## xs(Sepal.Length) 11.3979 16.4565 0.693 0.48856 -## xs(Sepal.Width) 7.6981 4.7353 1.626 0.10402 -## xs(Petal.Length) 2.9544 1.2031 2.456 0.01406 * -## xs(Petal.Width) 3.3565 1.2797 2.623 0.00872 ** +## (Intercept) 1.369 1.742 0.786 0.43189 +## xs(Sepal.Length) 11.796 17.032 0.693 0.48856 +## xs(Sepal.Width) 7.967 4.901 1.626 0.10402 +## xs(Petal.Length) 3.058 1.245 2.456 0.01406 * +## xs(Petal.Width) 3.474 1.324 2.623 0.00872 ** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## @@ -237,7 +237,7 @@

    ## ## Number of Fisher Scoring iterations: 8

    Simple plot for Petal.Width shows that approximation almost fully covers the PDP.

    -
    plot(model_xs, "Petal.Width")
    +
    plot(model_xs, "Petal.Width")

    diff --git a/docs/articles/discrete_files/figure-html/unnamed-chunk-5-1.png b/docs/articles/discrete_files/figure-html/unnamed-chunk-5-1.png index bf49c8caab256250f265529a2b7a0c15954b0b09..dca4c32e0811d53ce5f763ba8f44dfadb5113daf 100644 GIT binary patch literal 93825 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 literal 89413 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 z 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 diff --git a/docs/articles/discrete_files/figure-html/unnamed-chunk-9-1.png b/docs/articles/discrete_files/figure-html/unnamed-chunk-9-1.png index 4aa6d9b526975992fc135ee310356e25445bc13a..51a799de825468de3d4cd766c3d03a2a70492dcc 100644 GIT binary patch literal 43505 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 J%Pl-&{s)h1dnW(@ diff --git a/docs/articles/extras.html b/docs/articles/extras.html index 5bcb8f6..b18e4bf 100644 --- a/docs/articles/extras.html +++ b/docs/articles/extras.html @@ -88,7 +88,7 @@

    Extra information about the package

    Krystian Igras

    -

    2019-08-31

    +

    2019-09-05

    @@ -110,24 +110,24 @@

  • “auto” compare increasing and decreasing approximation and chooses better one (basing on \(R^2\) statistic)
  • Let’s see below example:

    -
    library(randomForest)
    -library(pdp)
    -library(xspliner)
    -data(boston)
    -set.seed(123)
    -boston_rf <- randomForest(cmedv ~ lstat + ptratio + age, data = boston)
    -model_xs <- xspline(
    -  cmedv ~
    -    xs(lstat, transition = list(k = 6), effect = list(type = "pdp", grid.resolution = 100)) +
    -    xs(ptratio, transition = list(k = 5), effect = list(type = "pdp", grid.resolution = 100)) +
    -    age,
    -  model = boston_rf,
    -  xs_opts = list(transition = list(monotonic = "auto"))
    -)
    -
    -plot(model_xs, "ptratio", plot_deriv = TRUE)
    +
    library(randomForest)
    +library(pdp)
    +library(xspliner)
    +data(boston)
    +set.seed(123)
    +boston_rf <- randomForest(cmedv ~ lstat + ptratio + age, data = boston)
    +model_xs <- xspline(
    +  cmedv ~
    +    xs(lstat, transition = list(k = 6), effect = list(type = "pdp", grid.resolution = 100)) +
    +    xs(ptratio, transition = list(k = 5), effect = list(type = "pdp", grid.resolution = 100)) +
    +    age,
    +  model = boston_rf,
    +  xs_opts = list(transition = list(monotonic = "auto"))
    +)
    +
    +plot(model_xs, "ptratio", plot_deriv = TRUE)

    -
    plot(model_xs, "lstat", plot_deriv = TRUE)
    +
    plot(model_xs, "lstat", plot_deriv = TRUE)

    @@ -143,20 +143,20 @@

    compare_stat - function of lm class object. It defines statistic that should be used in decision between spline model and linear one. The function should have the attribute higher. When the attribute has "better" value then the model with higher statistic value is chosen.

    You can see the feature in above example:

    -
    set.seed(123)
    -boston_rf <- randomForest(cmedv ~ lstat + ptratio + age, data = boston)
    -model_pdp_auto <- xspline(
    -  cmedv ~
    -    xs(lstat, transition = list(k = 6), effect = list(type = "pdp", grid.resolution = 60)) +
    -    xs(ptratio, transition = list(k = 4), effect = list(type = "pdp", grid.resolution = 40)) +
    -    age,
    -  model = boston_rf,
    -  xs_opts = list(transition = list(alter = "auto"))
    -)
    -
    -# aic statistic is used by default
    -
    -summary(model_pdp_auto)
    +
    set.seed(123)
    +boston_rf <- randomForest(cmedv ~ lstat + ptratio + age, data = boston)
    +model_pdp_auto <- xspline(
    +  cmedv ~
    +    xs(lstat, transition = list(k = 6), effect = list(type = "pdp", grid.resolution = 60)) +
    +    xs(ptratio, transition = list(k = 4), effect = list(type = "pdp", grid.resolution = 40)) +
    +    age,
    +  model = boston_rf,
    +  xs_opts = list(transition = list(alter = "auto"))
    +)
    +
    +# aic statistic is used by default
    +
    +summary(model_pdp_auto)
    ## 
     ## Call:
     ## stats::glm(formula = cmedv ~ xs(lstat) + ptratio + age, family = family, 
    @@ -191,19 +191,19 @@ 

    Link parameters stores info about what function should be used to transform the response. The transformation is used in the final model fitting. The standard link is the identity (for gaussian distribution) - for binomial distribution logit is used.

    See more at ??stats::family.glm.

    xspline function allows you to decide which response should be used in the final model. Let’s check the example below in which poisson distribution with log link is used.

    -
    library(xspliner)
    -library(randomForest)
    -x <- rnorm(100)
    -z <- rnorm(100)
    -y <- rpois(100, exp(1 + x + z))
    -data <- data.frame(x, y, z)
    -model_rf <- randomForest(y ~ x + z, data = data)
    -model_xs_1 <- xspline(model_rf)
    -model_xs_2 <- xspline(model_rf, family = poisson(), link = "log")
    +
    library(xspliner)
    +library(randomForest)
    +x <- rnorm(100)
    +z <- rnorm(100)
    +y <- rpois(100, exp(1 + x + z))
    +data <- data.frame(x, y, z)
    +model_rf <- randomForest(y ~ x + z, data = data)
    +model_xs_1 <- xspline(model_rf)
    +model_xs_2 <- xspline(model_rf, family = poisson(), link = "log")

    Let’s compare two models by checking its AIC statistics:

    - +
    model_xs_1$aic
    ## [1] 672.5753
    - +
    model_xs_2$aic
    ## [1] 580.0274

    As we can see the second model is better.

    @@ -211,15 +211,15 @@

    Transformed response

    In some cases you may want to transform model response with you own function. Let’s check the example below with random forest model:

    -
    set.seed(123)
    -x <- rnorm(100, 10)
    -z <- rnorm(100, 10)
    -y <- x * z * rnorm(100, 1, 0.1)
    -data <- data.frame(x, z, y)
    -model_rf <- randomForest(log(y) ~ x + z, data = data)
    +
    set.seed(123)
    +x <- rnorm(100, 10)
    +z <- rnorm(100, 10)
    +y <- x * z * rnorm(100, 1, 0.1)
    +data <- data.frame(x, z, y)
    +model_rf <- randomForest(log(y) ~ x + z, data = data)

    In this case log transformation for y, removes interaction of x and z. In xspliner same transformation is used by default:

    -
    model_xs <- xspline(model_rf)
    -summary(model_xs)
    +
    model_xs <- xspline(model_rf)
    +summary(model_xs)
    ## 
     ## Call:
     ## stats::glm(formula = log(y) ~ xs(x) + xs(z), family = family, 
    @@ -244,7 +244,7 @@ 

    ## AIC: -193.88 ## ## Number of Fisher Scoring iterations: 2

    -
    plot(model_xs, model = model_rf, data = data)
    +
    plot(model_xs, model = model_rf, data = data)

    @@ -253,14 +253,14 @@

    When interactions between predictors occurs black box models in fact deal much better that linear models. xspliner offers using formulas with variables interactions.

    You can do it in two possible forms.

    Lets start with creating data and building black box:

    -
    x <- rnorm(100)
    -z <- rnorm(100)
    -y <- x + x * z + z + rnorm(100, 0, 0.1)
    -data <- data.frame(x, y, z)
    -model_rf <- randomForest(y ~ x + z, data = data)
    +
    x <- rnorm(100)
    +z <- rnorm(100)
    +y <- x + x * z + z + rnorm(100, 0, 0.1)
    +data <- data.frame(x, y, z)
    +model_rf <- randomForest(y ~ x + z, data = data)

    The first option is specifying formula with * sign, as in standard linear models.

    -
    model_xs <- xspline(y ~ x * z, model = model_rf)
    -summary(model_xs)
    +
    model_xs <- xspline(y ~ x * z, model = model_rf)
    +summary(model_xs)
    ## 
     ## Call:
     ## stats::glm(formula = y ~ x * z, family = family, data = data)
    @@ -285,11 +285,11 @@ 

    ## AIC: -153.1 ## ## Number of Fisher Scoring iterations: 2

    -
    plot(model_xs, model = model_rf, data = data)
    +
    plot(model_xs, model = model_rf, data = data)

    The second one is adding form parameter equal to “multiplicative” in case of passing just the model or dot formula.

    -
    model_xs <- xspline(model_rf, form = "multiplicative")
    -summary(model_xs)
    +
    model_xs <- xspline(model_rf, form = "multiplicative")
    +summary(model_xs)
    ## 
     ## Call:
     ## stats::glm(formula = y ~ xs(x) * xs(z), family = family, data = data)
    @@ -314,10 +314,10 @@ 

    ## AIC: 94.46 ## ## Number of Fisher Scoring iterations: 2

    -
    plot(model_xs, model = model_rf, data = data)
    +
    plot(model_xs, model = model_rf, data = data)

    -
    model_xs <- xspline(y ~ ., model = model_rf, form = "multiplicative")
    -summary(model_xs)
    +
    model_xs <- xspline(y ~ ., model = model_rf, form = "multiplicative")
    +summary(model_xs)
    ## 
     ## Call:
     ## stats::glm(formula = y ~ xs(x) * xs(z), family = family, data = data)
    @@ -342,23 +342,23 @@ 

    ## AIC: 94.46 ## ## Number of Fisher Scoring iterations: 2

    -
    plot(model_xs, model = model_rf, data = data)
    +
    plot(model_xs, model = model_rf, data = data)

    Subset formula

    Every example we saw before used to use the same variables in black box and xspliner model. In fact this is not obligatory. How can it be used? For example to build a simpler model based on truncated amount of predictors. Let’s see below example:

    -
    library(randomForest)
    -library(xspliner)
    -data(airquality)
    -air <- na.omit(airquality)
    -model_rf <- randomForest(Ozone ~ ., data = air)
    -varImpPlot(model_rf)
    +
    library(randomForest)
    +library(xspliner)
    +data(airquality)
    +air <- na.omit(airquality)
    +model_rf <- randomForest(Ozone ~ ., data = air)
    +varImpPlot(model_rf)

    As we can see Wind and Temp variables are of the highest importance. Let’s build xspliner basing on just the Two variables.

    -
    model_xs <- xspline(Ozone ~ xs(Wind) + xs(Temp), model = model_rf)
    -summary(model_xs)
    +
    model_xs <- xspline(Ozone ~ xs(Wind) + xs(Temp), model = model_rf)
    +summary(model_xs)
    ## 
     ## Call:
     ## stats::glm(formula = Ozone ~ xs(Wind) + xs(Temp), family = family, 
    @@ -383,11 +383,11 @@ 

    ## AIC: 960.62 ## ## Number of Fisher Scoring iterations: 2

    -
    plot(model_xs, model = model_rf, data = air)
    +
    plot(model_xs, model = model_rf, data = air)

    Or model including variables interaction:

    -
    model_xs <- xspline(Ozone ~ xs(Wind) * xs(Temp), model = model_rf)
    -summary(model_xs)
    +
    model_xs <- xspline(Ozone ~ xs(Wind) * xs(Temp), model = model_rf)
    +summary(model_xs)
    ## 
     ## Call:
     ## stats::glm(formula = Ozone ~ xs(Wind) * xs(Temp), family = family, 
    @@ -413,7 +413,7 @@ 

    ## AIC: 953.43 ## ## Number of Fisher Scoring iterations: 2

    -
    plot(model_xs, model = model_rf, data = air)
    +
    plot(model_xs, model = model_rf, data = air)

    diff --git a/docs/articles/graphics.html b/docs/articles/graphics.html index a666aeb..a1edcb8 100644 --- a/docs/articles/graphics.html +++ b/docs/articles/graphics.html @@ -88,7 +88,7 @@

    Graphics

    Krystian Igras

    -

    2019-08-31

    +

    2019-09-05

    @@ -104,9 +104,9 @@

    As you actually saw in the previous sections, the model transformation can be presented on simple graphics. In continuous predictor case, the transformation is plotted as estimated spline - in case of discrete predictor, factorMerger plot is used.

    For quantitative predictors some additional options are offered. Let’s check them on the below examples.

    Let’s use already known Boston Housing Data, and a random forest model.

    -
    library(pdp)
    -data(boston)
    -str(boston)
    +
    library(pdp)
    +data(boston)
    +str(boston)
    ## 'data.frame':    506 obs. of  16 variables:
     ##  $ lon    : num  -71 -71 -70.9 -70.9 -70.9 ...
     ##  $ lat    : num  42.3 42.3 42.3 42.3 42.3 ...
    @@ -124,29 +124,29 @@ 

    ## $ ptratio: num 15.3 17.8 17.8 18.7 18.7 18.7 15.2 15.2 15.2 15.2 ... ## $ b : num 397 397 393 395 397 ... ## $ lstat : num 4.98 9.14 4.03 2.94 5.33 ...

    -
    data(boston)
    -set.seed(123)
    -
    -library(randomForest)
    -boston.rf <- randomForest(cmedv ~ lstat + ptratio + age, data = boston)
    +
    data(boston)
    +set.seed(123)
    +
    +library(randomForest)
    +boston.rf <- randomForest(cmedv ~ lstat + ptratio + age, data = boston)

    Also let’s build xspliner model with lstat and ptratio transformation.

    -
    library(xspliner)
    -model_xs <- xspline(cmedv ~ xs(lstat) + xs(ptratio) + age, model = boston.rf)
    +
    library(xspliner)
    +model_xs <- xspline(cmedv ~ xs(lstat) + xs(ptratio) + age, model = boston.rf)

    In order to plot specified predictor transformation just use:

    -
    plot(model_xs, "lstat")
    +
    plot(model_xs, "lstat")

    You can also add some additional information for the plot.

    Plotting training data

    Just add two parameters: data = <training data> and flag plot_data = TRUE.

    -
    plot(model_xs, "lstat", data = boston, plot_data = TRUE)
    +
    plot(model_xs, "lstat", data = boston, plot_data = TRUE)

    Plotting approximation derivative

    The derivative is plotted on scale of the second axis. To display it just add: plot_deriv = TRUE.

    -
    plot(model_xs, "lstat", plot_deriv = TRUE)
    +
    plot(model_xs, "lstat", plot_deriv = TRUE)

    You can also specify if the model effect or transition should be displayed. Parameters responsible for that are plot_response and plot_approx respectively.

    For example below we display just the approximation and derivative for ptratio variable:

    -
    plot(model_xs, "ptratio", plot_response = FALSE, plot_deriv = TRUE)
    +
    plot(model_xs, "ptratio", plot_response = FALSE, plot_deriv = TRUE)

    @@ -154,52 +154,52 @@

    Models comparison

    As we may want to compare the final GLM model with its parent black box, xspliner provides one simple tool.

    For comparison just add model parameter for plot method, and provide data:

    -
    plot(model_xs, model = boston.rf, data = boston)
    +
    plot(model_xs, model = boston.rf, data = boston)

    The resulting graphics compares predicted values for both GLM and black box model.

    For predicting values standard predict method is used: function(object, newdata) predict(object, newdata). So for regression models the results are on the same scale.

    The notable difference occurs in the classification models. GLM models by default return “link” function values, so for classification it can be any real number. Contrary to that, randomForest function returns predicted levels.

    To avoid the problem, predictor_funs parameter was added. This is the list of prediction functions for each model (in order: black box, xspliner). Let’s see it on SVM example:

    -
    iris_data <- droplevels(iris[iris$Species != "setosa", ])
    -
    -library(e1071) 
    -library(xspliner)
    -model_svm <- svm(Species ~  Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, 
    -                 data = iris_data, probability = TRUE)
    -
    -model_xs <- xspline(Species ~  xs(Sepal.Length) + xs(Sepal.Width) + xs(Petal.Length) + xs(Petal.Width),
    -                    model = model_svm)
    +
    iris_data <- droplevels(iris[iris$Species != "setosa", ])
    +
    +library(e1071) 
    +library(xspliner)
    +model_svm <- svm(Species ~  Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, 
    +                 data = iris_data, probability = TRUE)
    +
    +model_xs <- xspline(Species ~  xs(Sepal.Length) + xs(Sepal.Width) + xs(Petal.Length) + xs(Petal.Width),
    +                    model = model_svm)

    Now we specify predict functions to return probability of virginica response.

    -
    prob_svm <- function(object, newdata) attr(predict(object, newdata = newdata, probability = TRUE), "probabilities")[, 2]
    -prob_xs <- function(object, newdata) predict(object, newdata = newdata, type = "response")
    +
    prob_svm <- function(object, newdata) attr(predict(object, newdata = newdata, probability = TRUE), "probabilities")[, 2]
    +prob_xs <- function(object, newdata) predict(object, newdata = newdata, type = "response")

    And plot the result

    -
    plot(model_xs, model = model_svm, data = iris_data,
    -     prediction_funs = list(prob_xs, prob_svm)
    -)  
    +
    plot(model_xs, model = model_svm, data = iris_data,
    +     prediction_funs = list(prob_xs, prob_svm)
    +)  

    It is also possible to sort the values of heatmap according to chosen model:

    -
    plot(model_xs, model = model_svm, data = iris_data,
    -     prediction_funs = list(prob_xs, prob_svm),
    -     sort_by = "svm"
    -)  
    +
    plot(model_xs, model = model_svm, data = iris_data,
    +     prediction_funs = list(prob_xs, prob_svm),
    +     sort_by = "svm"
    +)  

    In case of class predictions, let’s create class prediction function first:

    -
    class_svm <- function(object, newdata) predict(object, newdata = newdata)
    -response_levels <- levels(iris_data$Species)
    -class_xs <- function(object, newdata) {
    -  probs <- predict(object, newdata = newdata, type = "response")
    -  factor(ifelse(probs > 0.5, response_levels[2], response_levels[1]), levels = response_levels)
    -}
    +
    class_svm <- function(object, newdata) predict(object, newdata = newdata)
    +response_levels <- levels(iris_data$Species)
    +class_xs <- function(object, newdata) {
    +  probs <- predict(object, newdata = newdata, type = "response")
    +  factor(ifelse(probs > 0.5, response_levels[2], response_levels[1]), levels = response_levels)
    +}

    And plot the result:

    -
    plot(model_xs, model = model_svm, data = iris_data,
    -     prediction_funs = list(class_xs, class_svm)
    -)  
    +
    plot(model_xs, model = model_svm, data = iris_data,
    +     prediction_funs = list(class_xs, class_svm)
    +)  

    Sorting values according to specified model is also possible:

    -
    plot(model_xs, model = model_svm, data = iris_data,
    -     prediction_funs = list(class_xs, class_svm),
    -     sort_by = "svm"
    -)  
    +
    plot(model_xs, model = model_svm, data = iris_data,
    +     prediction_funs = list(class_xs, class_svm),
    +     sort_by = "svm"
    +)  

    @@ -207,23 +207,23 @@

    Following above approach it’s easy to generate similar graphics for higher amount of models.

    Just include additional models inside compare_with parameter (named list), and add corresponding predict functions to them to predictor_funs parameter (if omitted, the default one is used).

    See below example on airquality data

    -
    library(mgcv)
    -
    -data(airquality)
    -ozone <- subset(na.omit(airquality),
    -                select = c("Ozone", "Solar.R", "Wind", "Temp"))
    -set.seed(123)
    -
    -model_rf <- randomForest(Ozone ~ ., data = ozone)
    -model_xs <- xspline(Ozone ~ xs(Solar.R) + xs(Wind) + xs(Temp), model_rf, data = ozone)
    -model_glm <- glm(Ozone ~ ., data = ozone)
    -model_gam <- mgcv::gam(Ozone ~ s(Solar.R) + s(Wind) + s(Temp), data = ozone)
    -
    -plot(model_xs, 
    -     model = model_rf, 
    -     data = ozone, 
    -     compare_with = list(glm = model_glm, gam = model_gam),
    -     sort_by = "xspliner")
    +
    library(mgcv)
    +
    +data(airquality)
    +ozone <- subset(na.omit(airquality),
    +                select = c("Ozone", "Solar.R", "Wind", "Temp"))
    +set.seed(123)
    +
    +model_rf <- randomForest(Ozone ~ ., data = ozone)
    +model_xs <- xspline(Ozone ~ xs(Solar.R) + xs(Wind) + xs(Temp), model_rf, data = ozone)
    +model_glm <- glm(Ozone ~ ., data = ozone)
    +model_gam <- mgcv::gam(Ozone ~ s(Solar.R) + s(Wind) + s(Temp), data = ozone)
    +
    +plot(model_xs, 
    +     model = model_rf, 
    +     data = ozone, 
    +     compare_with = list(glm = model_glm, gam = model_gam),
    +     sort_by = "xspliner")

    @@ -231,13 +231,13 @@

    Plotting more transitions at once

    If you want to display many transitions on one plot just pass xspliner model to plot:

    -
    plot(model_xs)
    +
    plot(model_xs)

    For models trained on top of many predictors, there will be displayed plots for 6 first transformed variables. To change that value just set n_plots variable:

    -
    plot(model_xs, n_plots = 2)
    +
    plot(model_xs, n_plots = 2)

    You can select interesting variables to plot just passing predictor names in vector:

    -
    plot(model_xs, c("Wind", "Temp"))
    +
    plot(model_xs, c("Wind", "Temp"))

    diff --git a/docs/articles/methods.html b/docs/articles/methods.html index ab29d78..77c892d 100644 --- a/docs/articles/methods.html +++ b/docs/articles/methods.html @@ -88,7 +88,7 @@

    Methods and xspliner environment

    Krystian Igras

    -

    2019-08-31

    +

    2019-09-05

    @@ -101,42 +101,42 @@

    2019-08-31

    Predict

    As xspliner final model is GLM, predict method is just wrapper of stats::predict.glm function. Let’s see it on the below example:

    -
    library(xspliner)
    -library(randomForest)
    -library(magrittr)
    -
    -rf_iris <- randomForest(Petal.Width ~  Sepal.Length + Petal.Length + Species, data = iris)
    -model_xs <- xspline(Petal.Width ~ 
    -  Sepal.Length + 
    -  xs(Petal.Length, effect = list(grid.resolution = 100), transition = list(bs = "cr")) + 
    -  xf(Species, transition = list(stat = "loglikelihood", value = -300)),
    -  model = rf_iris)
    -newdata <- data.frame(
    -  Sepal.Length = 10, 
    -  Petal.Length = 2, 
    -  Species = factor("virginica", levels = levels(iris$Species)))
    -predict(model_xs, newdata = newdata)
    +
    library(xspliner)
    +library(randomForest)
    +library(magrittr)
    +
    +rf_iris <- randomForest(Petal.Width ~  Sepal.Length + Petal.Length + Species, data = iris)
    +model_xs <- xspline(Petal.Width ~ 
    +  Sepal.Length + 
    +  xs(Petal.Length, effect = list(grid.resolution = 100), transition = list(bs = "cr")) + 
    +  xf(Species, transition = list(stat = "loglikelihood", value = -300)),
    +  model = rf_iris)
    +newdata <- data.frame(
    +  Sepal.Length = 10, 
    +  Petal.Length = 2, 
    +  Species = factor("virginica", levels = levels(iris$Species)))
    +predict(model_xs, newdata = newdata)
    ##          1 
    -## -0.3811033
    +## -0.3923137

    Print

    Print method works similarly to the summary. In case of passing just the model, standard print.glm is used.

    -
    print(model_xs)
    +
    print(model_xs)
    ## 
     ## Call:  stats::glm(formula = Petal.Width ~ Sepal.Length + xs(Petal.Length) + 
     ##     xf(Species), family = family, data = data)
     ## 
     ## Coefficients:
     ##                    (Intercept)                    Sepal.Length  
    -##                       -1.96540                        -0.01363  
    +##                      -2.244882                       -0.009104  
     ##               xs(Petal.Length)  xf(Species)versicolorvirginica  
    -##                        3.13004                        -0.62584  
    +##                       3.340926                       -0.654606  
     ## 
     ## Degrees of Freedom: 149 Total (i.e. Null);  146 Residual
     ## Null Deviance:       86.57 
    -## Residual Deviance: 5.14  AIC: -70.36
    +## Residual Deviance: 5.172 AIC: -69.44

    Predictor based print

    @@ -144,7 +144,7 @@

    Standard usage print(xspliner_object, variable_name)

    Quantitative variable

    When predictor is the quantitative variable its transition is based on GAM model. For this case print uses standard print.gam method.

    -
    print(model_xs, "Petal.Length")
    +
    print(model_xs, "Petal.Length")
    ## 
     ## Family: gaussian 
     ## Link function: identity 
    @@ -153,21 +153,21 @@ 

    ## yhat ~ s(Petal.Length, bs = "cr") ## ## Estimated degrees of freedom: -## 8.82 total = 9.82 +## 8.83 total = 9.83 ## -## GCV score: 0.001429038

    +## GCV score: 0.001315672

    Qualitative variable

    In case of qualitative predictor, standard print.factorMerger method is used.

    -
    print(model_xs, "Species")
    +
    print(model_xs, "Species")
    ## Family: gaussian Factor Merger.
     ## 
     ## Factor levels were merged in the following order:
     ## 
     ##      groupA       groupB                     model   pvalVsFull   pvalVsPrevious
     ## ---  -----------  --------------------  ----------  -----------  ---------------
    -## 0                                        -269.6600            1                1
    -## 1    versicolor   virginica              -283.9595            0                0
    -## 2    setosa       versicolorvirginica    -354.5249            0                0
    +## 0 -257.6859 1 1 +## 1 versicolor virginica -273.8312 0 0 +## 2 setosa versicolorvirginica -352.9511 0 0

    @@ -184,31 +184,31 @@

    Extracting effect

    Each transition is built on top of the black box response data. For example the default response for quantitative variables is PDP - for qualitative ones ICE.

    In order to extract the effect use transition method with type parameter equals to data

    -
    transition(model_xs, predictor = "Petal.Length", type = "data") %>% 
    -  head
    +
    transition(model_xs, predictor = "Petal.Length", type = "data") %>% 
    +  head
    ##   Petal.Length      yhat
    -## 1     1.000000 0.7207022
    -## 2     1.059596 0.7206924
    -## 3     1.119192 0.7206924
    -## 4     1.178788 0.7230503
    -## 5     1.238384 0.7248216
    -## 6     1.297980 0.7266156
    -
    transition(model_xs, predictor = "Species", type = "data") %>% 
    -  head
    +## 1 1.000000 0.7501526 +## 2 1.059596 0.7499859 +## 3 1.119192 0.7499859 +## 4 1.178788 0.7531005 +## 5 1.238384 0.7549714 +## 6 1.297980 0.7583468 +
    transition(model_xs, predictor = "Species", type = "data") %>% 
    +  head
    ##      Species      yhat yhat.id
    -## 1     setosa 0.2440234       1
    -## 2 versicolor 0.6806043       1
    -## 3  virginica 0.8353717       1
    -## 4     setosa 0.2169328       2
    -## 5 versicolor 0.6781563       2
    -## 6  virginica 0.8346654       2
    +## 1 setosa 0.2437544 1 +## 2 versicolor 0.6966708 1 +## 3 virginica 0.8499297 1 +## 4 setosa 0.2157778 2 +## 5 versicolor 0.6923198 2 +## 6 virginica 0.8465953 2

    Extracting transition model

    After we built transition basing on continuity of variable specific model is created. In case of quantitative predictor we build GAM model in order to get spline approximation of effect. In case of qualitative predictor we build factorMerger object and get optimal factor division on that.

    To extract the model, use transition method with type = "base":

    -
    transition(model_xs, predictor = "Petal.Length", type = "base")
    +
    transition(model_xs, predictor = "Petal.Length", type = "base")
    ## 
     ## Family: gaussian 
     ## Link function: identity 
    @@ -217,31 +217,31 @@ 

    ## yhat ~ s(Petal.Length, bs = "cr") ## ## Estimated degrees of freedom: -## 8.82 total = 9.82 +## 8.83 total = 9.83 ## -## GCV score: 0.001429038

    -
    transition(model_xs, predictor = "Species", type = "base")
    +## GCV score: 0.001315672 +
    transition(model_xs, predictor = "Species", type = "base")
    ## Family: gaussian Factor Merger.
     ## 
     ## Factor levels were merged in the following order:
     ## 
     ##      groupA       groupB                     model   pvalVsFull   pvalVsPrevious
     ## ---  -----------  --------------------  ----------  -----------  ---------------
    -## 0                                        -269.6600            1                1
    -## 1    versicolor   virginica              -283.9595            0                0
    -## 2    setosa       versicolorvirginica    -354.5249            0                0
    +## 0 -257.6859 1 1 +## 1 versicolor virginica -273.8312 0 0 +## 2 setosa versicolorvirginica -352.9511 0 0

    Extracting transition function

    The final result of building transition is transformation function, that is used in the final GLM model estimation.

    To extract the function just use transition method with type = "function".

    -
    petal_length_xs <- transition(model_xs, predictor = "Petal.Length", type = "function")
    -x <- seq(1, 7, length.out = 50)
    -plot(x, petal_length_xs(x))
    +
    petal_length_xs <- transition(model_xs, predictor = "Petal.Length", type = "function")
    +x <- seq(1, 7, length.out = 50)
    +plot(x, petal_length_xs(x))

    -
    species_xf <- transition(model_xs, predictor = "Species", type = "function")
    -species_xf(c("setosa", "versicolor", "virginica"))
    +
    species_xf <- transition(model_xs, predictor = "Species", type = "function")
    +species_xf(c("setosa", "versicolor", "virginica"))
    ## [1] setosa              versicolorvirginica versicolorvirginica
     ## Levels: setosa versicolorvirginica
    @@ -254,7 +254,7 @@

    GLM summary

    Standard summary method is just wrapper for summary::glm. In order to use this just type:

    -
    summary(model_xs)
    +
    summary(model_xs)
    ## 
     ## Call:
     ## stats::glm(formula = Petal.Width ~ Sepal.Length + xs(Petal.Length) + 
    @@ -262,22 +262,22 @@ 

    ## ## Deviance Residuals: ## Min 1Q Median 3Q Max -## -0.68602 -0.08184 -0.01356 0.10264 0.50215 +## -0.68163 -0.07833 -0.02037 0.10712 0.50143 ## ## Coefficients: -## Estimate Std. Error t value Pr(>|t|) -## (Intercept) -1.96540 0.14013 -14.025 < 2e-16 *** -## Sepal.Length -0.01363 0.03631 -0.375 0.708 -## xs(Petal.Length) 3.13004 0.21589 14.498 < 2e-16 *** -## xf(Species)versicolorvirginica -0.62584 0.12133 -5.158 7.99e-07 *** +## Estimate Std. Error t value Pr(>|t|) +## (Intercept) -2.244882 0.146470 -15.327 < 2e-16 *** +## Sepal.Length -0.009104 0.036244 -0.251 0.802 +## xs(Petal.Length) 3.340926 0.231635 14.423 < 2e-16 *** +## xf(Species)versicolorvirginica -0.654606 0.123765 -5.289 4.41e-07 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## -## (Dispersion parameter for gaussian family taken to be 0.03520518) +## (Dispersion parameter for gaussian family taken to be 0.03542157) ## -## Null deviance: 86.57 on 149 degrees of freedom -## Residual deviance: 5.14 on 146 degrees of freedom -## AIC: -70.357 +## Null deviance: 86.5699 on 149 degrees of freedom +## Residual deviance: 5.1715 on 146 degrees of freedom +## AIC: -69.438 ## ## Number of Fisher Scoring iterations: 2

    @@ -288,7 +288,7 @@

    Standard usage summary(xspliner_object, variable_name)

    Quantitative variable

    When predictor is quantitative variable its transition is based on GAM model. For this case summary displays summary of that model.

    -
    summary(model_xs, "Petal.Length")
    +
    summary(model_xs, "Petal.Length")
    ## 
     ## Family: gaussian 
     ## Link function: identity 
    @@ -298,21 +298,21 @@ 

    ## ## Parametric coefficients: ## Estimate Std. Error t value Pr(>|t|) -## (Intercept) 1.20102 0.00359 334.6 <2e-16 *** +## (Intercept) 1.207191 0.003444 350.5 <2e-16 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## ## Approximate significance of smooth terms: ## edf Ref.df F p-value -## s(Petal.Length) 8.818 8.99 756.3 <2e-16 *** +## s(Petal.Length) 8.827 8.991 733.4 <2e-16 *** ## --- ## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 ## -## R-sq.(adj) = 0.986 Deviance explained = 98.7% -## GCV = 0.001429 Scale est. = 0.0012887 n = 100

    +## R-sq.(adj) = 0.985 Deviance explained = 98.7% +## GCV = 0.0013157 Scale est. = 0.0011864 n = 100

    Qualitative variable

    In case of qualitative predictor, the method displays data.frame storing information how factors were merged during the transition.

    -
    summary(model_xs, "Species")
    +
    summary(model_xs, "Species")
    ##         orig                pred
     ## 1     setosa              setosa
     ## 2 versicolor versicolorvirginica
    @@ -324,15 +324,15 @@ 

    Providing model parameter instead of predictor, the summary displays a few statistics that compares original model with surrogate one. All statistics definitions are included in summary.xspline documentation.

    Here we show one example for classification model.

    For this example we use ISLR::Default data and build svm model as black box. The model aims to predict default variable, indicating whether the customer defaulted on their debt.

    -
    library(xspliner)
    -library(e1071)
    -set.seed(1)
    -data <- ISLR::Default
    -default.svm <- svm(default ~ ., data = data, probability = TRUE)
    -default.xs <- xspline(default ~ student + xs(balance) + xs(income), model = default.svm)
    +
    library(xspliner)
    +library(e1071)
    +set.seed(1)
    +data <- ISLR::Default
    +default.svm <- svm(default ~ ., data = data, probability = TRUE)
    +default.xs <- xspline(default ~ student + xs(balance) + xs(income), model = default.svm)

    In order to check the summary, we need to specify prediction functions for each model. In this case predictions are probabilities of success:

    -
    prob_svm <- function(object, newdata) attr(predict(object, newdata = newdata, probability = TRUE), "probabilities")[, 2]
    -prob_xs <- function(object, newdata) predict(object, newdata = newdata, type = "response")
    +
    prob_svm <- function(object, newdata) attr(predict(object, newdata = newdata, probability = TRUE), "probabilities")[, 2]
    +prob_xs <- function(object, newdata) predict(object, newdata = newdata, type = "response")

    Almost each summary statistic compares models basing on some data.

    In this case we’re going to compare models on training data providing:

      @@ -343,32 +343,22 @@

    • prediction_funs as a list of prediction functions (for surrogate and original model respectively)
    -
    summary(default.xs, model = default.svm, newdata = data, prediction_funs = list(prob_xs, prob_svm))
    +
    summary(default.xs, model = default.svm, newdata = data, prediction_funs = list(prob_xs, prob_svm))
    ## Models comparison 
     ##   1 - Max prediction normed-diff:  0.5268109 
     ##   R^2:  0.9185403
    ## Setting levels: control = No, case = Yes
     ## Setting levels: control = No, case = Yes
    -
    ## Warning in coords.roc(roc_surrogate, x = thresholds, input = "threshold", :
    -## An upcoming version of pROC will set the 'transpose' argument to FALSE
    -## by default. Set transpose = TRUE explicitly to keep the current behavior,
    -## or transpose = FALSE to adopt the new one and silence this warning. Type
    -## help(coords_transpose) for additional information.
    -
    ## Warning in coords.roc(roc_original, x = thresholds, input = "threshold", :
    -## An upcoming version of pROC will set the 'transpose' argument to FALSE
    -## by default. Set transpose = TRUE explicitly to keep the current behavior,
    -## or transpose = FALSE to adopt the new one and silence this warning. Type
    -## help(coords_transpose) for additional information.
    ##   1 - Max ROC diff:  0.8712113 
     ##   1 - Mean ROC diff:  0.9506292

    Another set of statistics is generated for prediction functions that return response levels.

    -
    response_svm <- function(object, newdata) predict(object, newdata = newdata)
    -response_xs <- function(object, newdata) {
    -  y_levels <- levels(newdata[[environment(object)$response]])
    -  factor(y_levels[(predict.glm(object, newdata = newdata, type = "link") > 0) + 1], levels = y_levels)
    -}
    +
    response_svm <- function(object, newdata) predict(object, newdata = newdata)
    +response_xs <- function(object, newdata) {
    +  y_levels <- levels(newdata[[environment(object)$response]])
    +  factor(y_levels[(predict.glm(object, newdata = newdata, type = "link") > 0) + 1], levels = y_levels)
    +}

    And similarly to previous example:

    -
    summary(default.xs, model = default.svm, newdata = data, prediction_funs = list(response_xs, response_svm))
    +
    summary(default.xs, model = default.svm, newdata = data, prediction_funs = list(response_xs, response_svm))
    ## Models comparison 
     ##   Mean predictions similarity:  0.9966 
     ##   ACC Black Box:  0.9719 
    diff --git a/docs/articles/methods_files/figure-html/unnamed-chunk-7-1.png b/docs/articles/methods_files/figure-html/unnamed-chunk-7-1.png
    index 55bc1ffd2ad4620eda2dca62271364676e17ec8a..7d49c8d9e115cf5f1fd4c6e898e920b29cac928c 100644
    GIT binary patch
    literal 21606
    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
    POH^@nc0WsUx{CV~a5dCC
    
    literal 21587
    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
    Z)oQMz_*wl1sEjD!XnXO;T5G?gzX7<3XC(jt
    
    diff --git a/docs/articles/xspliner.html b/docs/articles/xspliner.html
    index af7af94..a6897eb 100644
    --- a/docs/articles/xspliner.html
    +++ b/docs/articles/xspliner.html
    @@ -88,7 +88,7 @@
           

    Basic theory and usage

    Krystian Igras

    -

    2019-08-31

    +

    2019-09-05

    @@ -150,29 +150,29 @@

    Defining formula

    This sections shows, how to build formula interpretable by xspliner package using Boston Housing Data from pdp package.

    Read the data

    - +
    data(boston)
    +str(boston)
    +#> 'data.frame':    506 obs. of  16 variables:
    +#>  $ lon    : num  -71 -71 -70.9 -70.9 -70.9 ...
    +#>  $ lat    : num  42.3 42.3 42.3 42.3 42.3 ...
    +#>  $ cmedv  : num  24 21.6 34.7 33.4 36.2 28.7 22.9 22.1 16.5 18.9 ...
    +#>  $ crim   : num  0.00632 0.02731 0.02729 0.03237 0.06905 ...
    +#>  $ zn     : num  18 0 0 0 0 0 12.5 12.5 12.5 12.5 ...
    +#>  $ indus  : num  2.31 7.07 7.07 2.18 2.18 2.18 7.87 7.87 7.87 7.87 ...
    +#>  $ chas   : Factor w/ 2 levels "0","1": 1 1 1 1 1 1 1 1 1 1 ...
    +#>  $ nox    : num  0.538 0.469 0.469 0.458 0.458 0.458 0.524 0.524 0.524 0.524 ...
    +#>  $ rm     : num  6.58 6.42 7.18 7 7.15 ...
    +#>  $ age    : num  65.2 78.9 61.1 45.8 54.2 58.7 66.6 96.1 100 85.9 ...
    +#>  $ dis    : num  4.09 4.97 4.97 6.06 6.06 ...
    +#>  $ rad    : int  1 2 2 3 3 3 5 5 5 5 ...
    +#>  $ tax    : int  296 242 242 222 222 222 311 311 311 311 ...
    +#>  $ ptratio: num  15.3 17.8 17.8 18.7 18.7 18.7 15.2 15.2 15.2 15.2 ...
    +#>  $ b      : num  397 397 393 395 397 ...
    +#>  $ lstat  : num  4.98 9.14 4.03 2.94 5.33 ...

    We’re going to build model based on formula

    cmedv ~ rm + lstat + nox

    So let’s build a random forest black box model, that we use as a base for further steps:

    - +
    boston_rf <- randomForest(cmedv ~ rm + lstat + nox, data = boston)

    Now let’s specify which variables should be transformed. In this example only nox variable will use random forest effect (PDP or ALEPlot).

    To indicate transformation use xs(nos) symbol.

    So we have:

    @@ -201,17 +201,17 @@

    Below we will use PDP random forest effect, that returns 40 response points for nox variable. By checking ?pdp::partial we can see that grid.resolution parameter specifies predictor grid.

    Now we should just specify: xs(nox, effect = list(type = "pdp", grid.resolution = 40)).

    Let’s verify correctness of this parameters with the bare usage of pdp::partial:

    - +
    rf_effect <- pdp::partial(boston_rf, "nox", grid.resolution = 40)
    +head(rf_effect)
    +#>         nox     yhat
    +#> 1 0.3850000 23.38131
    +#> 2 0.3974615 23.40352
    +#> 3 0.4099231 23.49511
    +#> 4 0.4223846 23.62153
    +#> 5 0.4348462 23.60978
    +#> 6 0.4473077 23.69874
    +nrow(rf_effect)
    +#> [1] 40

    We got data.frame with predictor and response values containing 40 rows. So parameter should correctly specify our expectations.

    Remark

    Here we can see that response function is presented as data.frame with two columns:

    @@ -253,40 +253,40 @@

    Having the formula defined, we almost have all the required data provided to build GLM. The only one left, that the approach requires is the black box model that is the basis of our resulting model.

    We will use here model_rf random forest model that was built before.

    The final step is to use xspliner::xspline to build the desired model.

    -
    xp_model <- xspline(
    -  cmedv ~ rm + lstat +
    -    xs(nox, 
    -       effect = list(type = "pdp", grid.resolution = 40), 
    -       transition = list(k = 10, bs = "cr")),
    -  model = boston_rf
    -)
    +
    xp_model <- xspline(
    +  cmedv ~ rm + lstat +
    +    xs(nox, 
    +       effect = list(type = "pdp", grid.resolution = 40), 
    +       transition = list(k = 10, bs = "cr")),
    +  model = boston_rf
    +)

    Lets check the model summary:

    - +
    summary(xp_model)
    +#> 
    +#> Call:
    +#> stats::glm(formula = cmedv ~ rm + lstat + xs(nox), family = family, 
    +#>     data = data)
    +#> 
    +#> Deviance Residuals: 
    +#>      Min        1Q    Median        3Q       Max  
    +#> -13.4873   -3.2935   -0.8747    1.9991   26.9926  
    +#> 
    +#> Coefficients:
    +#>              Estimate Std. Error t value Pr(>|t|)    
    +#> (Intercept) -34.29942    5.05680  -6.783 3.32e-11 ***
    +#> rm            5.23681    0.41600  12.589  < 2e-16 ***
    +#> lstat        -0.52504    0.04355 -12.057  < 2e-16 ***
    +#> xs(nox)       1.31670    0.16255   8.100 4.20e-15 ***
    +#> ---
    +#> Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
    +#> 
    +#> (Dispersion parameter for gaussian family taken to be 26.81888)
    +#> 
    +#>     Null deviance: 42578  on 505  degrees of freedom
    +#> Residual deviance: 13463  on 502  degrees of freedom
    +#> AIC: 3106.2
    +#> 
    +#> Number of Fisher Scoring iterations: 2

    As the final model is just the GLM, the summary is also standard. One difference that we can see here is the formula call. It has missing xs parameters, and xs is treated as standard R function (previously it was just the symbol used in formula).

    More details about can be found in following sections:

      @@ -304,7 +304,7 @@

      Use cases - see xspliner in action with examples

    Here we shortly show how the plot random forest effect and transition for nox variable:

    -
    plot(xp_model, "nox")
    +
    plot(xp_model, "nox")

    diff --git a/docs/index.html b/docs/index.html index 00ca215..3c6c9a4 100644 --- a/docs/index.html +++ b/docs/index.html @@ -87,9 +87,9 @@
    -
    +

    -xspliner’s pipeline: model %>% xspline(…) and analyze

    +xspliner’s pipeline: model %>% xspline(…) and analyze

    diff --git a/docs/news/index.html b/docs/news/index.html index 8f127c1..0f524dc 100644 --- a/docs/news/index.html +++ b/docs/news/index.html @@ -115,9 +115,22 @@

    Change log

    -
    +

    -xspliner 0.0.2 2018-12-21 +xspliner 0.0.3 Unreleased +

    +
      +
    • Summary method extended with comparison statistics
    • +
    • Extended methods for auto-extracting model metadata (lhs, response)
    • +
    • Added comparison plot for factor responses
    • +
    • Documentation extended with new examples
    • +
    • Ability to specify glm options
    • +
    • Added more informative progress messages
    • +
    +
    +
    +

    +xspliner 0.0.2 2018-12-21

    • Specify parameters hierarchy
    • @@ -138,7 +151,8 @@

      Contents

    diff --git a/docs/pkgdown.yml b/docs/pkgdown.yml index f795d0b..b2fe7fe 100644 --- a/docs/pkgdown.yml +++ b/docs/pkgdown.yml @@ -1,4 +1,4 @@ -pandoc: 2.2.1 +pandoc: 2.7.3 pkgdown: 1.3.0 pkgdown_sha: ~ articles: diff --git a/docs/reference/build_xspliner.html b/docs/reference/build_xspliner.html index bffdbbd..c0b9fe2 100644 --- a/docs/reference/build_xspliner.html +++ b/docs/reference/build_xspliner.html @@ -117,7 +117,7 @@

    Helper function for building GLM object with transformed variables.

    build_xspliner(formula, model, data, xf_opts = xf_opts_default,
       xs_opts = xs_opts_default, link = "identity", family = "gaussian",
    -  env = parent.frame(), compare_stat = aic, control)
    + env = parent.frame(), compare_stat = aic, control, ...)

    Arguments

    @@ -165,6 +165,10 @@

    Ar

    + + + +
    control

    Fitting settings. See glm.control.

    ...

    Another parameters passed from chosen method. Not used.

    diff --git a/docs/reference/index.html b/docs/reference/index.html index e39a449..7381c47 100644 --- a/docs/reference/index.html +++ b/docs/reference/index.html @@ -112,7 +112,7 @@ diff --git a/docs/reference/summary.xspliner.html b/docs/reference/summary.xspliner.html index 47b213e..39db124 100644 --- a/docs/reference/summary.xspliner.html +++ b/docs/reference/summary.xspliner.html @@ -222,78 +222,8 @@

    Examp #> R^2: 0.9960708 #> MSE Black Box: 0.02251746 #> MSE Surrogate: 0.02989727
    -# Classification model -data <- droplevels(iris[51:150, ]) # selecting only two species data -iris.rf <- randomForest(Species ~ ., data = data) -iris.xs <- xspline(iris.rf) +# Classification model -# Comparing summaries requires providing prediction function -# Prediction as probability for success -prob_rf <- function(object, newdata) predict(object, newdata = newdata, type = "prob")[, 2] -prob_xs <- function(object, newdata) predict(object, newdata = newdata, type = "response") -summary(iris.xs, model = iris.rf, newdata = data, prediction_funs = list(prob_xs, prob_rf))
    #> Models comparison -#> 1 - Max prediction normed-diff: 0.3908407 -#> R^2: 0.958412
    #> Setting levels: control = versicolor, case = virginica
    #> Setting levels: control = versicolor, case = virginica
    #> Warning: An upcoming version of pROC will set the 'transpose' argument to FALSE by default. Set transpose = TRUE explicitly to keep the current behavior, or transpose = FALSE to adopt the new one and silence this warning. Type help(coords_transpose) for additional information.
    #> Warning: An upcoming version of pROC will set the 'transpose' argument to FALSE by default. Set transpose = TRUE explicitly to keep the current behavior, or transpose = FALSE to adopt the new one and silence this warning. Type help(coords_transpose) for additional information.
    #> 1 - Max ROC diff: 0.56 -#> 1 - Mean ROC diff: 0.8443484
    # Prediction as final category -response_rf <- function(object, newdata) predict(object, newdata = newdata) -response_xs <- function(object, newdata) { - y_levels <- levels(newdata[[environment(object)$response]]) - factor( - y_levels[(predict.glm(object, newdata = newdata, type = "link") > 0) + 1], - levels = y_levels - ) -} -response_rf(iris.rf, newdata = data)
    #> 51 52 53 54 55 56 57 -#> versicolor versicolor versicolor versicolor versicolor versicolor versicolor -#> 58 59 60 61 62 63 64 -#> versicolor versicolor versicolor versicolor versicolor versicolor versicolor -#> 65 66 67 68 69 70 71 -#> versicolor versicolor versicolor versicolor versicolor versicolor versicolor -#> 72 73 74 75 76 77 78 -#> versicolor versicolor versicolor versicolor versicolor versicolor versicolor -#> 79 80 81 82 83 84 85 -#> versicolor versicolor versicolor versicolor versicolor versicolor versicolor -#> 86 87 88 89 90 91 92 -#> versicolor versicolor versicolor versicolor versicolor versicolor versicolor -#> 93 94 95 96 97 98 99 -#> versicolor versicolor versicolor versicolor versicolor versicolor versicolor -#> 100 101 102 103 104 105 106 -#> versicolor virginica virginica virginica virginica virginica virginica -#> 107 108 109 110 111 112 113 -#> virginica virginica virginica virginica virginica virginica virginica -#> 114 115 116 117 118 119 120 -#> virginica virginica virginica virginica virginica virginica virginica -#> 121 122 123 124 125 126 127 -#> virginica virginica virginica virginica virginica virginica virginica -#> 128 129 130 131 132 133 134 -#> virginica virginica virginica virginica virginica virginica virginica -#> 135 136 137 138 139 140 141 -#> virginica virginica virginica virginica virginica virginica virginica -#> 142 143 144 145 146 147 148 -#> virginica virginica virginica virginica virginica virginica virginica -#> 149 150 -#> virginica virginica -#> Levels: versicolor virginica
    response_xs(iris.xs, newdata = data)
    #> [1] versicolor versicolor versicolor versicolor versicolor versicolor -#> [7] versicolor versicolor versicolor versicolor versicolor versicolor -#> [13] versicolor versicolor versicolor versicolor versicolor versicolor -#> [19] versicolor versicolor versicolor versicolor versicolor versicolor -#> [25] versicolor versicolor versicolor virginica versicolor versicolor -#> [31] versicolor versicolor versicolor virginica versicolor versicolor -#> [37] versicolor versicolor versicolor versicolor versicolor versicolor -#> [43] versicolor versicolor versicolor versicolor versicolor versicolor -#> [49] versicolor versicolor virginica virginica virginica virginica -#> [55] virginica virginica virginica virginica virginica virginica -#> [61] virginica virginica virginica virginica virginica virginica -#> [67] virginica virginica virginica virginica virginica virginica -#> [73] virginica virginica virginica virginica virginica virginica -#> [79] virginica virginica virginica virginica virginica versicolor -#> [85] virginica virginica virginica virginica virginica virginica -#> [91] virginica virginica virginica virginica virginica virginica -#> [97] virginica virginica virginica virginica -#> Levels: versicolor virginica
    summary(iris.xs, model = iris.rf, newdata = data, prediction_funs = list(response_xs, response_rf))
    #> Models comparison -#> Mean predictions similarity: 0.97 -#> ACC Black Box: 1 -#> ACC Surrogate: 0.97

    plot(xs_iris, "Sepal.Length")
    @@ -238,23 +238,23 @@

    Examp #> #> Deviance Residuals: #> Min 1Q Median 3Q Max -#> -0.67881 -0.07692 -0.03106 0.09672 0.46649 +#> -0.67489 -0.07877 -0.03048 0.09804 0.46780 #> #> Coefficients: #> Estimate Std. Error t value Pr(>|t|) -#> (Intercept) -1.52021 0.29110 -5.222 6.02e-07 *** -#> xs(Sepal.Length) 0.33583 0.35190 0.954 0.3415 -#> xs(Petal.Length) 1.84254 0.38360 4.803 3.85e-06 *** -#> xf(Species)versicolor 0.07022 0.17859 0.393 0.6947 -#> xf(Species)virginica 0.39507 0.23856 1.656 0.0999 . +#> (Intercept) -1.40810 0.30407 -4.631 8.03e-06 *** +#> xs(Sepal.Length) 0.39342 0.36819 1.069 0.2871 +#> xs(Petal.Length) 1.67365 0.35387 4.730 5.28e-06 *** +#> xf(Species)versicolor 0.08582 0.17800 0.482 0.6304 +#> xf(Species)virginica 0.41758 0.23705 1.762 0.0802 . #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 #> -#> (Dispersion parameter for gaussian family taken to be 0.03105335) +#> (Dispersion parameter for gaussian family taken to be 0.03102474) #> #> Null deviance: 86.5699 on 149 degrees of freedom -#> Residual deviance: 4.5027 on 145 degrees of freedom -#> AIC: -88.211 +#> Residual deviance: 4.4986 on 145 degrees of freedom +#> AIC: -88.349 #> #> Number of Fisher Scoring iterations: 2 #>

    plot(xs_iris, "Sepal.Length")
    @@ -269,7 +269,7 @@

    Examp #> -> data : 150 rows 4 cols (extracted from the model) #> -> target variable : not specified! (WARNING) #> -> predict function : yhat.randomForest will be used (default) -#> -> predicted values : numerical, min = 0.1991898 , mean = 1.199876 , max = 2.134114 +#> -> predicted values : numerical, min = 0.1977761 , mean = 1.199116 , max = 2.143874 #> -> residual function : difference between y and yhat (default) #> A new explainer has been created!

    xs_iris <- xspline(rf_iris) summary(xs_iris)
    #> @@ -279,23 +279,23 @@

    Examp #> #> Deviance Residuals: #> Min 1Q Median 3Q Max -#> -0.67881 -0.07692 -0.03106 0.09672 0.46649 +#> -0.67489 -0.07877 -0.03048 0.09804 0.46780 #> #> Coefficients: #> Estimate Std. Error t value Pr(>|t|) -#> (Intercept) -1.52021 0.29110 -5.222 6.02e-07 *** -#> xs(Sepal.Length) 0.33583 0.35190 0.954 0.3415 -#> xs(Petal.Length) 1.84254 0.38360 4.803 3.85e-06 *** -#> xf(Species)versicolor 0.07022 0.17859 0.393 0.6947 -#> xf(Species)virginica 0.39507 0.23856 1.656 0.0999 . +#> (Intercept) -1.40810 0.30407 -4.631 8.03e-06 *** +#> xs(Sepal.Length) 0.39342 0.36819 1.069 0.2871 +#> xs(Petal.Length) 1.67365 0.35387 4.730 5.28e-06 *** +#> xf(Species)versicolor 0.08582 0.17800 0.482 0.6304 +#> xf(Species)virginica 0.41758 0.23705 1.762 0.0802 . #> --- #> Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 #> -#> (Dispersion parameter for gaussian family taken to be 0.03105335) +#> (Dispersion parameter for gaussian family taken to be 0.03102474) #> #> Null deviance: 86.5699 on 149 degrees of freedom -#> Residual deviance: 4.5027 on 145 degrees of freedom -#> AIC: -88.211 +#> Residual deviance: 4.4986 on 145 degrees of freedom +#> AIC: -88.349 #> #> Number of Fisher Scoring iterations: 2 #>

    plot(xs_iris, "Sepal.Length")
    diff --git a/man/summary.xspliner.Rd b/man/summary.xspliner.Rd index 5069391..e33a0a9 100644 --- a/man/summary.xspliner.Rd +++ b/man/summary.xspliner.Rd @@ -84,26 +84,5 @@ summary(iris.xs, "Species") summary(iris.xs, model = iris.rf, newdata = data) # Classification model -data <- droplevels(iris[51:150, ]) # selecting only two species data -iris.rf <- randomForest(Species ~ ., data = data) -iris.xs <- xspline(iris.rf) - -# Comparing summaries requires providing prediction function -# Prediction as probability for success -prob_rf <- function(object, newdata) predict(object, newdata = newdata, type = "prob")[, 2] -prob_xs <- function(object, newdata) predict(object, newdata = newdata, type = "response") -summary(iris.xs, model = iris.rf, newdata = data, prediction_funs = list(prob_xs, prob_rf)) -# Prediction as final category -response_rf <- function(object, newdata) predict(object, newdata = newdata) -response_xs <- function(object, newdata) { - y_levels <- levels(newdata[[environment(object)$response]]) - factor( - y_levels[(predict.glm(object, newdata = newdata, type = "link") > 0) + 1], - levels = y_levels - ) -} -response_rf(iris.rf, newdata = data) -response_xs(iris.xs, newdata = data) -summary(iris.xs, model = iris.rf, newdata = data, prediction_funs = list(response_xs, response_rf)) } diff --git a/vignettes/automation.Rmd b/vignettes/automation.Rmd index ae692c3..b4424d8 100644 --- a/vignettes/automation.Rmd +++ b/vignettes/automation.Rmd @@ -206,7 +206,7 @@ They are: - Building the black box with formula - Black box training data stores factors in long form (the factor is one column, not spread into binary wide form) -Most of R based ML models satisfy the above condition. One of exceptions is XGBoost which in actual xspliner version needs to be handled in the more complex xspline call. You can see it in [use cases](./use_cases.html) +Most of R based ML models satisfy the above condition. One of exceptions is XGBoost which in actual xspliner version needs to be handled in the more complex xspline call. You can see it in [use cases](./cases.html) ## Excluding predictors from transformation