Tema 10 - Más algoritmos de aprendizaje supervisado

Pedro Albarrán

Dpto. de Fundamentos del Análisis Económico. Universidad de Alicante

k-NN (‘k-nearest neighbors’)

k-NN

  • Métodos paramétricos = supuesto funcional para la esperanza condicional

    • variable numérica: \(E[y|\mathbf{X}=x_0]=f(x_0)=\beta_0+\beta_1 x_0\)

    • variable categórica: \(\Pr(y=j|\mathbf{X}=x_0) =f_j(x_0)=\Lambda(\beta_{0j}+\beta_{1j} x_0)\)

  • k-NN estima la esperanza condicional de forma no parámetrica

  • Idea: el valor esperado de \(y\) para una observación debe ser “similar” al de otras observaciones “cercanas” (por su valor en \(\mathbf{X}\))

    • mismo valor de \(x_0 \Rightarrow\ \) mismo valor esperado de \(y\)

    • \(f(\mathbf{X})\ \) no se supone conocida y fija

Algoritmo k-NN

  • Dada una muestra de entrenamiento y una nueva observación \(\mathbf{x^*}\)
  1. Identificar \(k>0\quad\) observaciones cercanas según una norma, ej., \(||x^*-x_i||_2\)

  2. Se asigna a \(y^*\) la media o la clase mayoritaria de las observaciones cercanas

  • El valor “óptimo” de \(k\) se elige mediante validación cruzada.

    • \(k\) bajo (= algoritmo demasiado flexible): alta varianza y sesgo bajo

    • Al aumentar \(k\) (menos flexible), menor varianza, pero mayor sesgo

Algoritmo k-NN: comentarios

  • Su utilidad depende de la geometría de los datos

    • conviene centrar y reescalar los datos
    • probar varias medidas de distancia: valor absoluto \(|x^*-x_i|\quad\) o norma
  • La distancia solo se puede calcular para variables continuas: convertir factores en dummies (una para cada categoría)

  • NO es necesario incluir transformaciones no lineales de los regresores (ej., polinomios, interacción, etc.) en la receta

  • LASSO (modelo lineal) puede no ser informativo sobre la elección de variables para este algoritmo
  • Implementación en R con bibliotecas class y kknn

‘Naive Bayes’

‘Naive Bayes’

  • En un problema de clasificacón para una variable categórica \(y\), tenemos que estimar \(\Pr(y=c|\mathbf{x})\)

    • Dada una observación nueva \(\mathbf{x^*}\), podemos calcular la probabilidad de cada clase

    • Clasificamos esta observación en la clase con mayor probabilidad

  • En regresión logística, usamos un modelo paramétrico para la probabilidad \(\Pr(y=c|\mathbf{x}) = \Lambda(\beta_0 + \beta_1 \mathbf{x})\)

  • ¿Y si usamos el Teorema de Bayes? \[ \Pr(y|\mathbf{x}) = \dfrac{\Pr(y,\mathbf{x})}{\Pr(\mathbf{x})} = \dfrac{\Pr(\mathbf{x}|y)\Pr(y)}{\Pr(\mathbf{x})} \]

Ejemplo con una sola variable explicativa

  • En lo datos de ingresos en el Censo EE.UU., ¿cuál es la probabilidad de ser de renta alta (> 50 mil dólares) si el individuo es blanco?

\[\Pr(>50K|white) = \dfrac{\Pr(white|>50K)\Pr(>50K)}{\Pr(white)}\]

  • De los datos obtenemos estas probalidades para predecir en datos nuevos

‘Naive Bayes’: caso general

  • Supuesto simplificador con varias variables explicativas: estas son condicionalmente independientes (poco realista=naive) \[ \Pr(\mathbf{x}|y)=\prod_{j=1}^p \Pr(x_j|y)\]

  • Se puede mejorar la estimación de las probabilidades condicionales \(\Pr(x_j|y)\) usando estimadores no-paramétricos de la densidad (“kernels”)

  • En tidymodels se usa el motor naivebayes de la biblioteca discrim

  • NO necesita preprocesado de los datos salvo que las variables explicativas categóricas deben incluirse como factores

  • Tenemos dos hiper-parámetros relacionados con la estimación de la densidad: smoothness (suavizado del “kernel”) y corrección de Laplace

‘Support Vector Machine’ (SVM)

SVM

  • Para un problema de clasificación, SVM encuentra el hiperplano que mejor separa los datos por su clase

  • Con dos variables explicativas, se puede visualizar en un gráfico en 2D

  • El hiperplano es una línea cuyos coeficientes debemos encontrar: \(\beta_0 + \beta_1 X_1 + \beta_2 X_2 = 0\)
  • El hiperplano óptimo tiene mayor margen = distancia a los datos más cercanos (llamados vectores de soporte)

SVM (cont.)

  • Los datos no suelen ser linealmente separables: se usa una función \(\phi(z)\), denominada kernel, para transformar los datos a un nuevo espacio de mayor dimensión
  • Para regresión SVM usa el “truco del kernel” para realizar un análisis de regresión lineal en el espacio de mayor dimensionalidad

SVM (y 3)

  • Las variables numéricas deben ser estandarizadas y centradas; las variables categóricas deben ser convertidas a variables dummies

  • En tidymodels se pueden usar

    • kernels: lineal con svm_linear(), radial con svm_rbf() y polinomial con svm_poly()

    • mediante las bibliotecas LiblineaR (solo kernel lineal) y kernlab

  • Todos tienen un hiperparámetro de coste, cost, de predecir en el lado incorrecto del margen

  • Existen hiperparámetros adicionales para kernel radial (rbf_sigma) y polinomial (degree, scale_factor)

  • En problemas de regresión existe otro hiperparámetro más, margin

Redes Neuronales. “Deep learning”

Redes Neuronales (artificiales)

  • Una red neuronal es una implementación matemática de modelos de estudio del cerebro humano: un grafo dirigido en varias fases.

  1. Un nodo para cada variable de entrada

  2. Nodos especificados como capas ocultas

  3. Cada nodo oculto se conecta a nuevas variables de salida

  • Dos nodos adicionales de control: uno conectado a los nodos ocultos y otro al de salida

Redes Neuronales: nodos-percertrones

  • En cada nodo oculto se procesa, combinan, agrega la información de los nodos precedentes mediante unos pesos

  • Esto es “similar” a una regresión logística

Redes Neuronales: procedimiento

  • El algoritmo busca iterativamente el conjunto óptimo de pesos (“coeficientes”) para cada nodo.

  • Entonces, la red neuronal puede hacer predicciones para nuevas entradas ejecutando estos valores a través de la red.

‘Deep Learning’

‘Ensembling’. ‘Boosting’

‘Ensembling’. ‘Boosting’

  • Los métodos de ensembling (“juntar”) usan varios algoritmos para obtener una mejor predicción que la de cada algoritmo por separado

    • Ya hablamos de Boostrap aggregation o bagging: es un caso particular de model averaging, a su vez un tipo de ensembling

    • Otros tipos incluyen: clasificador óptimo bayesiano, Bayesian model averaging, Bayesian model combination, bucket of models, stacking, etc.

  • Boosting es un tipo muy popular de ensembling donde cada nuevo modelo se entrena dando más peso a las observaciones que se predijeron peor en el anterior

    • Suele funcionar mejor que bagging, pero tiene una mayor tendencia al sobreajuste

    • La implementación más común es Adaboost (aunque nueva variantes parecen mejorarlo)