Adiciona o exemplo se ensemble para classificação.

parent e8e4ba7b
...@@ -4,6 +4,8 @@ ...@@ -4,6 +4,8 @@
#----------------------------------------------------------------------- #-----------------------------------------------------------------------
# Cria a função com lista de todos os argumentos e use mapply(). # Cria a função com lista de todos os argumentos e use mapply().
library(microbenchmark)
# Curva de poder. # Curva de poder.
power_k_groups <- function(k = 3, power_k_groups <- function(k = 3,
r = 4, r = 4,
...@@ -91,3 +93,66 @@ microbenchmark( ...@@ -91,3 +93,66 @@ microbenchmark(
replications = 20) replications = 20)
#----------------------------------------------------------------------- #-----------------------------------------------------------------------
# Mais um exemplo.
library(latticeExtra)
# Situação: Para fazer um classificador por ensemble são usados
# `n_class` classificadores independentes (base/weak/lazy learners) que
# tem taxa de acerto individual de `tx_acer`. Qual é a taxa de acerto do
# ensemble de classificadores considerando como decisão a classe
# prevista por maioria simples? Fazer a curva de taxa de acerto do
# ensemble em função da taxa de acerto individual e do número de
# classificadores base do ensamble, ou seja, determinar
# `acc(n_class, tx_acer)`.
simul <- function(n_class = 3, tx_acer = 0.55, N = 1000) {
#' @param n_class (integer[1] > 3) é o número de classificadores do
#' ensemble.
#' @param tx_acer (0 < double[1] < 1) é a taxa de acerto individual
#' de cada classificador independente do ensamble.
#' @param N (integer[1] > 1) é o número de simulações Monte Carlo.
#' @return (double[1]) a taxa de acerto do classificador ensemble.
u <- replicate(N, {
# Classe correta.
y <- rbinom(n = 1, size = 1, prob = 0.5)
# Classe predita por cada classificador.
x <- rbinom(n = n_class,
size = 1,
prob = 1 - abs(y - tx_acer))
# Classe predita pela coleção usando maioria simples.
z <- as.integer(mean(x) > 0.5)
# Verifica se houve acerto.
z == y
})
mean(u)
}
# Grid de valores nos parâmetros da simulação.
grid <- expand.grid(n_class = c(3, 5, 9, 13, 19, 25),
tx_acer = seq(0.35, 0.95, by = 0.025))
nrow(grid)
# Obtenção da acurácia do ensemble em cada ponto de suporte.
grid$acc <- with(grid,
mapply(FUN = simul,
n_class,
tx_acer,
MoreArgs = list(N = 2000)))
# Visualização das curvas.
xyplot(acc ~ tx_acer,
groups = n_class,
data = grid,
xlab = "Taxa de acerto do base learner",
ylab = "Taxa de acerto do ensemble",
auto.key = list(corner = c(0.95, 0.05),
title = "#Classif.",
cex.title = 1),
grid = TRUE,
type = "o") +
layer({
panel.abline(v = 0.5, h = 0.5, lty = 2)
})
#-----------------------------------------------------------------------
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