\documentclass{beamer}%
%\usepackage{pgf}%
\usepackage[latin1]{inputenc}%
\usepackage[spanish]{babel}%
\usepackage{graphicx}
\usepackage{beamerthemesplit}
\spanishdecimal{.}
%\usepackage{shortvrb}%
\newcommand{\fuentePie}{\fontsize{5pt}{4pt}\selectfont}%
 
\newcommand{\subtitulo}{\colorbox{white}{\parbox{60mm}{\centering \textcolor{red}{Grado en Matemáticas}}}}
 
\title{Bagging (Boostrap Aggregating}
%\subtitle{\textcolor{red}{Grado en Física y Grado en Matemáticas}}
%\subtitle[]{\colorbox{white}{\parbox{60mm}{\centering \textcolor{red}{Grado en Matemáticas}}}}
%\author{}
\pgfdeclareimage[width=1.0cm]{escudo}{/home/norberto/charlasInstitutos/escudoAC}
\titlegraphic{\pgfuseimage{escudo}}
\institute{.\\[0pt]\vspace*{-10mm}%
  \includegraphics[width=65mm]{/home/norberto/charlasInstitutos/fcPanoramica1.jpg}\\
 \parbox[b][14mm][b]{40mm}{Facultad de Ciencias\\ C/ Federico García Lorca, 18\\33007\, -\, OVIEDO \\ \textcolor{blue}{\url{http://ciencias.uniovi.es }}}\\[-3mm]}
\date{\footnotesize Junio de 2017\\[-3mm]}
%\hypersetup{
%    bookmarks=false,         % show bookmarks bar?
%    pdfauthor={Norberto Corral y Tomás Aranda}%,    % author
%}

\begin{document}


  \begin{frame} {Bagging}

Un problema muy común es intentar predecir el comportamiento de una variable dependiente $Y$ a partir de un conjunto de  $p$ variables independientes $X \in R^p$

\vspace{1cm}

A partir de una muestra de observaciones $(\vec{x}_i, y_i), \; i=1,\ldots, n$  se busca una regla de clasificación, $RC$ mediante regresión logística, árboles de clasificación, etc.

\end{frame}



\begin{frame} {Bagging}

Si se conociera la ditribución conjunta de $(\vec{X}, Y)$, es decir, 
$$P[(\vec{X}, Y) = (\vec{x},y)]$$
el procedimiento más eficiente sería utilizar como regla de predicción la probabilidad a posteriori
$$ RC(\vec{x}) = argmax_{y} P(Y=y| \vec{x})= argmax_{y} P[(\vec{X}, Y) = (\vec{x},y)] $$

El problema es que la distribución conjunta suele ser desconocida  y es necesario estimarla.
\end{frame}


\begin{frame} {Bagging. Bootstrap}
El método \textcolor{red}{Bootstrap} se basa en sustituir la Función de distribución teórica $F_{(X,Y)}$ por la función de distribución empírica $\hat{F}{(X,Y)}$ definida por 

$$\hat{F}{(X,Y)} = \left \{
  \begin{array}{ll}
    \frac{1}{n} &  si (\vec{x},y) = (\vec{x_i},y_i) \mbox{ para algún i } \\
0  & \mbox{en otro caso }
    \end{array}
                   \right.$$

(Teorma de Glivenko Catelli)

\vspace{.5cm}

Una muestra bootstrap de tamaño n $(\vec{x_i}^*,y_i^*), $ se obtiene eligiendo al azar y con reemplazamiento n observaciones de la muestra original $(\vec{x_1},y_1), \ldots, (\vec{x_n},y_n)$

\vspace{.5cm}

Así se tiene una idea más clara de lo que ocurriría si se pudiera repetir varias veces el proceso de muestreo inicial

\end{frame}


\begin{frame} {Bagging}
   A partir de una muestra $(\vec{x}_i, y_i), \; i=1,\ldots, n$ el método \textcolor{red}{bagging} utiliza el siguiente algorítmo
 \begin{itemize}
    \item Se eligen $b$ muestras bootstrap $(\vec{x_i}^{*b},y_i^{*b}, \; b=1,\ldots, B)$
    \item Se calcula una regla de clasificación  $RC^{b}$ basada en la correspondiente muestra bootstrap $b$-ésima.
    \item Se aplica la regla de clasificación para una de esas $B$ muestras, $RC^{b}(\vec{x_i}^{*b})$
\end{itemize}

\vspace{0.5cm}

     La clasificación final de cada individuo $\vec{x}$ se hace como promedio de la $B$ predicciones
    $$RC_{bag}(\vec{x}) = argmax_{k} \sum_{b=1}^{B} I(RC^{b}(\vec{x})=k)$$
    
    es decir, se asigna a la categoría más elegida.


\end{frame}


\begin{frame} {Bagging}
 
 La estimación de la probabilidad de pertenecia a un categoría de $k$, 
 se debe basar en las probabilidades de clasificación obtenida en cada una de las $B$ réplicas realizadas
 
  $$\hat{P}_{bag}(\vec{x} \in k) = \frac{1}{B} \sum_{b=1}^{B} 
  \hat{P}^b{}(\vec{x} \in k)$$ 
 
 
 Esta estimación sugiere asignar las observaciones a clases empleando el siguiente criterio:
 
  $$RC_{bag}(\vec{x}) = argmax_{k}  \{ \hat{P}_{bag}(\vec{x} \in k)  \} $$
 
 \end{frame}
 
 
 
 \begin{frame} {Bagging}
  Estimación del error Out-of-bag (OOB) error
  \begin{itemize}
   \item Usar validación cruzada para estimar el error en la predicción.
   \item En cada Bootstrap se utiliza aprsximadamente el 63\% de las muestras.
   \item Usar el 37\% restante para estimar el error. $e_i= y_i - \hat{y}_i^{oob}$
   \item Calcular el Error Cuadrático Medio de tosa las observaciones
  \end{itemize}

 \end{frame}
 
 \begin{frame} {Bagging}
  \textcolor{red}{DESVENTAJAS}
   \begin{itemize}
    \item  La tasa de error tiende a reducirse al promediar muchos criterios de clasificación.
    \item Permite estimar la importancia de las variables 
       \begin{enumerate}
       \item Se estima la reducción del Error Cuadrático Medio cada vez que interviene una variable.
      \item Se calcula el promedio de las reducciones en todas las muestra bottstrap.
       \end{enumerate}
     \end{itemize}

 \end{frame}
 
 \begin{frame} {Bagging}
 
 \textcolor{red}{DESVENTAJAS}
   \begin{itemize}
    \item No se debe emplear cuando los clasificadores individuales funcionan mal
    \item La interpretación del criterio de clasificación suele ser mucho más difícil.
    \item Requiere muchos más cálculos
   \end{itemize}
\end{frame}

\begin{frame} [fragile]  {CÓDIGO DE R}
 

 \begin{verbatim}
  
## Ejemplo

library(ipred)

library(rpart)

library(mlbench)

BC<- data(BreastCancer)

n<- length(BC[,1])

entrena <- sample(1:n,2*n/3)
 \end{verbatim}

\end{frame}


\begin{frame} [fragile]  {CÓDIGO DE R}
 

 \begin{verbatim}

BC.bagg<- bagging(Class ~.,data=BC[entrena,-1],
             nbagg=10,control=rpart.control(maxdepth=3))
             
BC.bagg.pred<- predict(BC.bagg, newdata= BC[-entrena,-1], 
               type="prob")
           
BC.bagg.pred <- predict(BC.bagg, newdata=BC[-entrena,-1], 
                type="class") ## Por defecto 

names(BC.bagg)
BC.bagg$mtrees
BC.bagg$OOB
BC.bagg$comb
BC.bagg$err
 \end{verbatim}

\end{frame}


\begin{frame} [fragile]  {CÓDIGO DE R}
 
 CÓDIGO DE R \\
 
 \begin{verbatim}
## Bagging y predict dependen de las rutinas de rpart

## En cada bootstrap rpart se controla con los
      parámetros habituales.
      
## Por defecto rpart.control tiene minsize=2 y cp=0. 
       Conviene poner xval=0
      
## Se puede utilizar la opción prune para podar 
      los árboles.               
 \end{verbatim}

\end{frame}

% 
% \begin{frame} [fragile]
%  
%  CÓDIGO DE R \\
%  Argumentos
% 
% formula: a formula, as in the lm function.
% data: a data frame in which to interpret the variables named in formula
% v: An integer, specifying the type of v-fold cross validation. Defaults to 10. If v is set as the number of observations, leave-one-out cross validation is carried out. Besides this, every value between two and the number of observations is valid and means that roughly every v-th observation is left out.
% mfinal: número de réplicas bootstrap a realizar. Por defecto mfinal = 100 
% control: opciones para controlar el algorítmo rpart.
% par: si es TRUE, el proceso de validación cruzada se hace en paralelo. La opción por defecto es FALSE 
% 
% Value: An object of class bagging.cv, which is a list with the following components:
% class: clase a la que se asigna cada individuothe class predicted by the ensemble classifier.
% confusion: Matriz de confusión con las frecuencias de aciertos y errores. 
% error: Error promedio
%  \vspace{-0.3cm}
%  
%  \begin{verbatim}
% ## Validación cruzada
% ## Los datos se dividen en vc subconjuntos disjuntos de igual tamaño. 
% ## El bagging se aplica sobre vc-1 de ellos y se usa el restante para estimar el error
% ## el proceso se repite vc veces
% 
% bagging.cv(formula, data, v = 10, mfinal = 100, 
%            control, par=FALSE)
%  
%  
%  
%             CÓDIGO DE R \\
%  Argumentos
% 
% v: Número de subconjuntos para la validación cruzada. 
%    Por defecto v=10. Si v=n, se deja un individuo fuera. 
%  \end{verbatim}
% 
% \end{frame}


\end{document}

