Adiciona exemplo de regressão com ensembles.

parent e824a687
......@@ -156,3 +156,66 @@ xyplot(acc ~ tx_acer,
})
#-----------------------------------------------------------------------
# Situação: Para fazer um regressor por ensemble são usados `n_regr`
# regressores independentes (base/weak/lazy learners) que tem
# desvio-padrão do erro individual de predição `pr_err`. Qual é o erro
# quadrático médio de predição do ensemble de regressores considerando
# como valor predito a média aritmética das previsões dos regressores?
# Fazer a curva de erro quadrático médio do ensemble em função do erro
# de predição individual e do número de regressores base do ensamble, ou
# seja, determinar `err(n_regr, pr_err)`.
simul <- function(n_regr = 3, pr_err = 1, N = 1000) {
#' @param n_regr (integer[1] > 3) é o número de regressores do
#' ensemble.
#' @param pr_err (0 < double[1]) é o desvio-padrão do erro de
#' predição individual de cada regressor independente do
#' ensamble.
#' @param N (integer[1] > 1) é o número de simulações Monte Carlo.
#' @return (double[1]) o erro quadrático médio de predição do
#' regressor ensemble.
u <- replicate(N, {
# Valor correto.
y <- runif(n = 1, min = -5, max = 5)
# Valor predito por cada regressor.
x <- rnorm(n = n_regr,
mean = y,
sd = pr_err)
# Valor predito pela coleção de regressores.
z <- mean(x)
(z - y)^2
})
# Determina o erro quadrático médio.
mean(u)
}
# Grid de valores nos parâmetros da simulação.
grid <- expand.grid(n_regr = c(3, 5, 9, 13, 19, 25),
pr_err = seq(0.1, 10, by = 0.2))
nrow(grid)
# Obtenção da acurácia do ensemble em cada ponto de suporte.
grid$err <- with(grid,
mapply(FUN = simul,
n_regr,
pr_err,
MoreArgs = list(N = 2000)))
# Visualização das curvas.
xyplot(err ~ pr_err,
groups = n_regr,
data = grid,
xlab = "Desvio-padrão do erro de predição do base learner",
ylab = "Erro quadrático médio de predição do ensemble",
auto.key = list(corner = c(0.05, 0.95),
title = "#Regress.",
cex.title = 1),
grid = TRUE,
type = "p") +
glayer({
panel.curve(x^2/group.value, from = 0,
lty = 2, col = col.line)
})
#-----------------------------------------------------------------------
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment