Dpto. de Fundamentos del Análisis Económico. Universidad de Alicante
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
Identificar \(k>0\quad\) observaciones cercanas según una norma, ej., \(||x^*-x_i||_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
Su utilidad depende de la geometría de los datos
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
class
y kknn
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})} \]
\[\Pr(>50K|white) = \dfrac{\Pr(white|>50K)\Pr(>50K)}{\Pr(white)}\]
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
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
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
Un nodo para cada variable de entrada
Nodos especificados como capas ocultas
Cada nodo oculto se conecta a nuevas variables de salida
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.
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)