<aside> 📢 Buscamos, para ciertos datos de entrada, un categoría $c$ de un conjunto $C$ **de categorías posibles. Estas categorías no solo son finitas, sino que además son conocidas de antemano.
</aside>
Regresión logística
En la regresión logística lo que quiero es categorizar, clasificar. Es decir que dado una serie de puntos quiero encontrar una función (no es una recta en este caso) que separe los puntos en dos conjuntos. Y una vez que la encontré puedo determinar para cualquier valor X futuro, el conjunto al cual pertenecerá. Está asociado a problemas de probabilidad.
La función que se suele usar es una sigmoidea: $s(z) = \frac{1}{1 + e^{-z}}$ donde $z=\beta^Tx$ = $\beta_0 +\beta_1 x_1 + \beta_2 x_2 ...$
La salida de la función sigmoidea es continua entre 0 y 1, pudiéndose interpretar como probabilidad de pertenencia a la clase 1.
Necesitamos definir un umbral según el cual clasificar:
Si $s_\beta(x) < umbral$ entonces $x$ pertencerá a la clase 0 Si $s_\beta(x) >= umbral$ entonces $x$ pertencerá a la clase 1
Nuestro objetivo es determinar el vector de parámetros beta según el umbral elegido.
En el caso de utilizar Regresión Logística, y querer utilizar variables categóricas como variables predictoras, necesitamos realizar transformaciones sobre las mismas: las transformamos en tantas variables dummies (toman valores 0 o 1) como valores distintos pueda tomar.
Una persona quiere comprar una casa y
para ello necesita pedir un préstamo
hipotecario. Esta persona quiere saber si se
lo van a otorgar o no. Pero el único dato
que tiene es su puntaje crediticio,
el cual es de 720.
La única información que se tiene es una lista de puntajes crediticios de otras 1000 personas con el resultado del otorgamiento, es decir si el crédito fue otorgado: 1 o bien si no fue otorgado: 0.

Scatter plot de puntaje vs si el crédito fue o no otorgado
Usamos sigmoidea:

Acá podemos ver que la curva, para cada valor de X, asigna un valor entre 0 y 1 que indica la probabilidad de que el préstamo sea otorgado. Como la curva es creciente, la probabilidad será más alta cuanto el score esté más cerca de 850 y será más baja cuando el score esté cerca de 300. Encontrar los parámetros óptimos para esta curva consiste en construir un estimador de regresión logística.
KNN: K-nearest neighbors
<aside> 📢 Clasifica una observación fijándose de qué clase son sus $k$ vecinos más cercanos.
</aside>
Es sensible a conjuntos de datos no balanceados.
Ejemplo: tomamos $k$ = 9 → tenemos más vecinos azules que rojos por lo que la observación se clasificaría como azul. Sin embargo, gráficamente vemos que sería mas lógico que pertenezca a la clase roja.

Se clasifica a azul porque tiene mayor cantidad de observaciones.
Es sensible a outliers

La observación se terminó clasificando por la clase del conjunto atípico.
En scikit-learn, k= 5 por defecto
Ejemplo:
Dado $k$ = 9 tenemos 5 vecinos verdes y 4 vecinos amarillos:
La observación es verde.

Hiperparámetros
El valor $k$ (cantidad de vecinos a analizar)
El tipo de distancia: Euclídea, Manhattan, etc.
Peso: Los vecinos pueden estar ponderados, siendo que los más cercanos tengan más peso en la votación y los más lejanos menos.
Maximal Margin Classifier
Es un clasificador basado en un margen, respecto de un umbral. Una nueva observación se clasificará dependiendo de en qué lado del umbral caiga.
En este modelo el umbral no se define aleatoriamente sino que se ubica en el punto medio entre los límites de cada grupo:


Margen es la distancia mínima entre cualquier observación y el umbral. Como el umbral se eligió poner en el medio de los clusters, el margen es igual a ambos lados, es decir es el más grande posible.

Problema: Es sensible a outliers

El punto con flechita es un outlier y nos obliga a poner el umbral en ese lugar.

Para mejorar tenemos que permitir las clasificaciones erróneas


Soft Margin Classifier o Support Vector Classifier
Cuando permitimos la clasificación errónea, la distancia entre las observaciones y el umbral se llama: Soft margin → será calculado por el algoritmo que usemos, utilizando validación cruzada.

Las observaciones en los límites y dentro del Soft Margin, se llaman Support Vectors (o vectores soporte). Pueden manejar outliers y clasificaciones superpuestas.

Son puntos en un espacio de dimensión N, en este caso N=1 y definen el área llamada Soft Margin.

En 2D, es SVC sería una recta. En 3D un plano.

Los Maximal Margin Classifiers y los Support Vector Classifiers (clasificadores de márgenes blandos) no pueden clasificar problemas que no son linealmente separables

SVM
Viene a solucionar el problema de SVC y MMC en cuanto a distribuciones no separables linealmente. Para poder separar problemas así, debemos llevar los datos a una dimensión mayor.

Idea:
Empezar con observaciones en una dimensión relativamente baja
Llevar los datos a una dimensión mayor
Encontrar un clasificador de tipo Support Vector que separe los datos en la alta
dimensión en 2 grupos


¿Qué función de dimensión mayor utilizamos?
El algoritmo detrás usa algo llamado Funciones Kernel que sistemáticamente buscan clasificadores de tipo Support Vector Classifiers en dimensiones más altas. Las Kernel Functions, sólo calculan la relación entre pares de observaciones como si estuviesen en otra dimensión, pero no realizan una verdadera transformación del espacio → reduce la cantidad de tiempo de cómputo.
Por ejemplo, pueden ser funciones polinómicas:
O pueden ser radiales (función real cuyo valor depende sólo de la distancia a un origen): SVM Kernel Radial (Radial Basis Function Kernel)

Árboles de clasificación: Decision tree classifier/Random Forest Classifier →Árboles
Cuando creamos distintos modelos de clasificación (Regresión Logística, RandomForestClassifier, etc) nos interesa conocer si el modelo está clasificando correctamente lo que queremos.
Hay distintas métricas que miden cosas distintas que pueden ayudarnos en algunos casos pero en otros pueden confundirnos, por ende, es muy importante tener bien claro qué es lo que estamos midiendo.