\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{Bosques Aleatorios}
%\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} {Bosques Aleatorios (Random Forest)}

%es una combinación de árboles de clasificación (regresión) que se obtienen mezclando el bagging y la selección al azar de las variables predictoras.en los que las variables predictoras y las muestras de validación y entrenamiento se eligen al azar.

Es un conjunto de árboles de clasificación (regresión) que se obtienen combinando la elección aleatoria de datos y la selección al azar de las variables predictoras.
\begin{itemize}
 \item Generar muchos modelos diferentes usando conjuntos de entrenamiento diferentes.
 \item Elegir al azar y en cada nodo, un número pequeño de variables independientes.
\end{itemize} 

Los bosques aleatorios sólo tienen interés si los árboles que se obtienen son muy diferentes entre sí. 
% The vital element is the instability of the prediction method. If perturbing the learning set can cause significant changes in the predictor constructed, then bagging can improve accuracy.

\end{frame}

%   \begin{frame} {Bootstrap aggregating (Bagging)}
% 
% Bootstrap aggregating, bagging, es un tipo de procedimientos diseñados para mejorar la precisión y estabilidad de los algorítmos de aprendizaje automático en problemas de regresión y clasificación. \\
% 
% La idea básica es la siguiente: Dado un conjunto de N individuos en los que se miden p variables independientes se realiza un muestreo aleatorio con reemplazamiento (bootstrap) que pasa a ser 
% considerado el nuevo conjunto de entrenamiento en el que se aplica un modelo para predecir el comportamiento de la variable objetivo.\\
% 
% 
% Este proceso se repite muhas veces y el resultado es la combinación o el promedio de todos los resultados obtenidos.
% 
% \end{frame}


\begin{frame} {Bosques Aleatorios}

% El objetivo del análisis es predecir el comportaiento de una varible depdendiente 'y'
Dada una muestra de $N$ individuos con $p$ variables independientes se construyen árboles de clasificación (regresión) de la siguiente forma:
\begin{enumerate}
 \item Se elige al azar y con reemplazamiento una muestra de tamaño $N$ (bootstrap). Al resto de individuos se les denomina OOB (Out Of Bag)
 \item Se forma un árbol de clasificación con los siguientes criterios:
    \begin{enumerate}
     \item Para dividir cada nodo se elige al azar un número pequeño de variables independientes (en general $\sqrt{p}$) 
     \item Se hace una división binaria del conjunto de entrenamiento con la variable que mejor predice a la variable dependiente 'y' 
      \item Cada árbol se desarrolle tanto como sea posible sin realizar ninguna poda
     \item Los nodos finales deben contener muy pocos individuos
    \end{enumerate}%
 %\item Los individuos no incluidos en la muestra se denominan OOB (Out of Bag) y se usan para la validación.
\end{enumerate}
\end{frame}


% 
% \begin{frame} {Bosques Aleatorios}
%    En cada nodo hijo se replican los pasos anteriores para conseguir que:
%  \begin{itemize}
%     \item Cada árbol se desarrolle tanto como sea posible sin realizar ninguna poda
%     \item Los nodos finales deben contener muy pocos individuos
%  \end{itemize}
%  
% Construir muchos árboles siguiendo los criterios anteriores\\
% % \textcolor{red} {Se recomienda alrededor de 500 aunque para muestras grandes puede reducirse}
% \end{frame}


\begin{frame} {Bosques Aleatorios. Predicción}
 Una vez construidos los árboles de regresión se realiza la predicción combinando los árboles obtenidos de acuerdo a la naturaleza de la variable dependiente:
 
 \begin{enumerate}
    \item Problemas de clasificación
   \begin{itemize}
      \item Calcular la proporción de veces que un individuo del grupo OOB es asignado a cada clase. 
      \item La clase predicha es la que tiene una proporción mayor. 
   \end{itemize}
    \item Problemas de regresión \\
           Promediando en cada individuo de OOB los valores obtenidos en los diferentes árboles.
\end{enumerate}
\end{frame}



% 
% \begin{frame} {Bosques Aleatorios. Importancia de las variables}
% 
% La calidad de la predicción para un individuo se mide como 
% Margin(individuo) = P(Clase real) - Max(P(Otras clases))
% 
% La importancia de la variable $x_m$ se calcula según los siguientes pasos
% \begin{enumerate}
%     \item Usar la muestra OOB para el árbol k
%     \item Calcular la proporción de aciertos,$P_0$, para la muestra OOB
%   %  \item Calcular los valores de Margin, M0, para es muestra OOB
%     \item Permutar los valores de la muestra para $x_m$
%     \item Aplicar el árbol k a OOB con los valores permutados
%     \item Calcular la nueva proporción de aciertos, $P$, con $x_m$ permutada
%     \item Calcular la diferencia $P_0- P$
% \end{enumerate}
% 
% La importancia de la variable $x_m$ se define como el promedio de $P_0 -P$ para todos los árboles
% \end{frame}

\begin{frame} {Bosques Aleatorios. Importancia de las variables}

La calidad de la predicción para un individuo $i$ se mide como 
$$Margin(i) = \hat{P}(i \in Clase\, real) - Max(\hat{P}(i \in Otras\, clases))$$

La importancia de la variable $x_m$ se calcula de la siguiente forma:
\begin{enumerate}
    \item Usar la muestra OOB para el árbol k
    \item Calcular el 'Margin',$M_0$ para la muestra OOB
  %  \item Calcular los valores de Margin, M0, para esa muestra OOB
    \item Permutar los valores de la muestra para $x_m$
    \item Aplicar el árbol k a OOB con los valores permutados
    \item Calcular la nueva 'Margin', $M$ con $x_m$ permutada
    \item Calcular la diferencia $M_0- M$
\end{enumerate}

$$I(x_m)=  \overline{M_0 -M}$$
\end{frame}

\begin{frame} {Bosques Aleatorios. Proximidad entre los individuos}
 
Los bosques aleatorios se pueden emplear para medir la 'proximidad' entre los individuos
\begin{itemize}
   \item Se aplica cada árbol a todos los individuos de la muestra y se determina en que nodo final se encuentran
   \item La proximidad entre los individuos i,j se mide como la proporción de veces que se encuentra en el mismo nodo final
\end{itemize}     

Esta medida es invariante frente a transformaciones monótonas
\end{frame}



\begin{frame} {Bosques Aleatorios. Outliers}
Un individuo se etiqueta como 'outlier' cuando está alejado de todos los que pertenecen a su mismo grupo o clase. \\

Para detectarlos se puede emplear el siguiente algorítmo

\begin{itemize}
   \item Para el caso i de la clase $C$, se calcula la suma de los cuadrados de su similitud con los sujetos su clase 
   $$ \sum_{j\in C} \; prox(i,j)^2$$
   \item Se invierte ese valor y se tipifica usando la mediana y la desviación típica
   \item En general un valor superior a 10 indica un comportamiento 'anómalo'
\end{itemize}
\end{frame}




\begin{frame} {Bosques Aleatorios. Imputación de valores perdidos}

Para imputar los valores perdidos se suelen utilizar-combinar dos procedimientos 

\begin{enumerate}
 \item Se les asigna la mediana (variables cuantitativas) o la moda (variables cualitativas)
 \item Se utiliza el siguiente algorítmo:
    \begin{itemize}
     \item Se asigna la mediana o la moda
     \item Se aplica el Random Forest para predecir esos valores
     \item Se replica el paso anterior dos o tres veces
    \end{itemize}
\end{enumerate}

\end{frame}


\begin{frame} {Bosques Aleatorios}

Parámetros del Random Forest:

\vspace{0.5cm}


 \begin{itemize}
  \item Número de predictores en cada nodo $mtry$:
     \begin{itemize}
        \item Regresión: $ mtry= \sqrt{p} $,
        \item Clasificación:  $mtry= \frac{p}{3}  $, para la 
        \item Probar con los valores recomendados por defecto, la mitad y el doble. Quedarse con el mejor. 
     \end{itemize}
  \item Número de árboles $B$ (muestras bootstrap) a construir 
  
      \begin{itemize}
        \item  Usualmente $ B \simeq 500$. 
        \item Construir árboles hasta que el error no decrezca 
      \end{itemize}        
 \end{itemize}     

\end{frame}  


\begin{frame} {Bosques Aleatorios. Ventajas}
 Las principales ventajas de los bosques aleatorios son:

\begin{itemize}
  \item Es muy sencillo de usar.
  \item El único parámetro es el número de variables que intervienen en la división de cada nodo 
  \item En general no tiene problemas de sobreajuste
  \item Suele conseguir menor tasa de error que los árboles de clasificación 
  \item Tienen poco coste computacional y se puede emplear con grandes bases de datos
\end{itemize}
\end{frame}


\begin{frame} {Bosques Aleatorios. Ventajas} 
\begin{itemize}
  \item Permite medir la importancia que tiene cada variable en la predicción
  \item  ¿Tiene un método eficaz para estimar datos perdidos y mantener la información cuando hay muchas observaciones perdidas?
  %\item  Computa los prototipos que dan información sobre la relación entre las variables y la clasificación.
  \item  Permite calcular una distancia entre las observaciones y detectar valores atípicos.
 \item   ¿Ofrece un método experimental para detectar las interacciones de las variables?
\end{itemize}
\end{frame}



\begin{frame} {Bosques Aleatorios. Inconvenientes}
Entre sus puntos débiles se pueden citar los siguientes aspectos:
\begin{itemize}
  \item A veces sobreajusta las predicciones en problemas con mucho 'ruido'.
  \item No es fácil determina cómo se realizan las predicciones (es una caja negra)
  \item Tiende a sobrevalorar la importancia de las variables categóricas con muchos niveles de respuesta.
  \item Si los datos contienen grupos de variables correlacionadas y com una importancia similar respecto a la variable objetivo,
  los grupos con frecuencias menores suelen obtener mejores resultados que los más grandes.
\end{itemize}  
\end{frame}


\begin{frame}[fragile] {Bosques Aleatorios. Código R}
https://www.statmethods.net/advstats/cart.html\\

\vspace{0.5cm} 
Ejemplo de análisis con Bosques Aleatorios\\
\vspace{-0.4cm} 
\begin{small}     
 \begin{verbatim}
 
# Random Forest prediction of Kyphosis data
   
library(randomForest)
   
fit<- randomForest(Kyphosis ~ Age+Number+Start, data=kyphosis)
   
print(fit)  ## view results
   
importance(fit)   ## importance of each predictor 
 
 \end{verbatim}
  \end{small}
  
\end{frame}  



\end{document}

