Aprender los conceptos clave

1

Todo lo que aprenderás sobre MA con Scikit-Learn

2

¿Cómo aprenden las máquinas?

3

Problemas que podemos resolver con Scikit-learn

4

Las matemáticas que vamos a necesitar

Iniciar un proyecto con sklearn

5

Configuración de nuestro entorno Python

6

Instalación de librerías en Python

7

Datasets que usaremos en el curso

Optimización de features

8

¿Cómo afectan nuestros features a los modelos de Machine Learning?

9

Introducción al PCA

10

Preparación de datos para PCA e IPCA

11

Implementación del algoritmo PCA e IPCA

12

Kernels y KPCA

13

¿Qué es la regularización y cómo aplicarla?

14

Implementación de Lasso y Ridge

15

Explicación resultado de la implementación

16

ElasticNet: Una técnica intermedia

Regresiones robustas

17

El problema de los valores atípicos

18

Regresiones Robustas en Scikit-learn

19

Preparación de datos para la regresión robusta

20

Implementación regresión robusta

Métodos de ensamble aplicados a clasificación

21

¿Qué son los métodos de ensamble?

22

Preparación de datos para implementar métodos de ensamble

23

Implementación de Bagging

24

Implementación de Boosting

Clustering

25

Estrategias de Clustering

26

Implementación de Batch K-Means

27

Implementación de Mean-Shift

Optimización paramétrica

28

Validación de nuestro modelo usando Cross Validation

29

Implementación de K-Folds Cross Validation

30

Optimización paramétrica

31

Implementación de Randomized

32

Bonus: Auto Machine Learning

Salida a producción

33

Revisión de nuestra arquitectura de código

34

Importar y exportar modelos con Sklearn

35

Creación de una API con Flask para el modelo

36

Cierre del curso

37

Material adicional para consultar

No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

No se trata de lo que quieres comprar, sino de quién quieres ser. Invierte en tu educación con el precio especial

Antes: $249

Currency
$209

Paga en 4 cuotas sin intereses

Paga en 4 cuotas sin intereses
Suscríbete

Termina en:

11 Días
3 Hrs
15 Min
24 Seg

Kernels y KPCA

12/37
Recursos

Aportes 32

Preguntas 9

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Ahora que ya sabemos para el algoritmo de PCA, ¿que otras alternativas tenemos?


Bueno, una alternativa son los Kernels. Un Kernel es una función matemática que toma mediciones que se comportan de manera no lineal y las proyecta en un espacio dimensional más grande en donde sen linealmente separables.

Y, ¿esto para que puede servir?

Sirve para casos en donde no son linealmente separables. El la primera imagen no es posible separarlos con una linea y en la imagen 2 si lo podemos hacer mediante Kernels. Lo que hace la función de Kernels es proyectar los puntos en otra dimensión y así volver los datos linealmente separables.

¿Que tipo de funciones para Kernels nos podemos encontrar?

Ejemplos de funciones de Kernels en datasets aplicados a un clasificador:

Rendimiento de cada una de las técnicas a partir de la cantidad de componentes con las que fueron entrenados vs el accuracy del modelo de regresión logística

Les dejo el código comentado por si no les corre:

# Importamos las bibliotecas generales
import pandas as pd
import sklearn
import matplotlib.pyplot as plt
# Importamos los módulos específicos
from sklearn.decomposition import KernelPCA
 
 
from sklearn.linear_model import LogisticRegression
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
if __name__ == "__main__":
 # Cargamos los datos del dataframe de pandas
 dt_heart = pd.read_csv('data/heart.csv')
 # Imprimimos un encabezado con los primeros 5 registros
 print(dt_heart.head(5))
 # Guardamos nuestro dataset sin la columna de target
 dt_features = dt_heart.drop(['target'], axis=1)
 # Este será nuestro dataset, pero sin la columna
 dt_target = dt_heart['target']
 # Normalizamos los datos
 dt_features = StandardScaler().fit_transform(dt_features)
  # Partimos el conjunto de entrenamiento y para añadir replicabilidad usamos el random state
 X_train, X_test, y_train, y_test = train_test_split(dt_features, dt_target, test_size=0.3, random_state=42)
 
 #Aplicamos la función de kernel de tipo polinomial
 kpca = KernelPCA(n_components=4, kernel='poly' )
 #Vamos a ajustar los datos
 kpca.fit(X_train)
 
 #Aplicamos el algoritmo a nuestros datos de prueba y de entrenamiento
 dt_train = kpca.transform(X_train)
 dt_test = kpca.transform(X_test)
 
 #Aplicamos la regresión logística un vez que reducimos su dimensionalidad
 logistic = LogisticRegression(solver='lbfgs')
 
 #Entrenamos los datos
 logistic.fit(dt_train, y_train)
 
 #Imprimimos los resultados
 print("SCORE KPCA: ", logistic.score(dt_test, y_test))
 

Me ha sorprendido el curso, de los mejores de ML de Platzi. Qué gusto!

Excelente! todos los conceptos y hasta el código muy ordenado.

Comparación entre los tres tipos de kernel con este ejercicio en particular

Comparando los kernels

import pandas as pd
import sklearn
import matplotlib.pyplot as plt

from sklearn.decomposition import KernelPCA

from sklearn.linear_model import LogisticRegression

from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split


if __name__ == "__main__":

    dt_heart = pd.read_csv('./data/heart.csv')
    #print(dt_heart.head(5))

    dt_features = dt_heart.drop(['target'],axis=1) # separamos los target del dataframe features
    dt_target = dt_heart['target'] # creamos otra dataframe unicamente con los target


    dt_features = StandardScaler().fit_transform(dt_features) # estandarizamos los datos
    X_train, X_test, y_train, y_test = train_test_split(dt_features, dt_target, test_size=0.3, random_state=42) # obtenemos datos de entrenamiento y datos de prueba

    logistic = LogisticRegression(solver='lbfgs')

    kernel = ['linear','poly','rbf']
    for k in kernel:
        kpca = KernelPCA(n_components=4, kernel = k) # kernel = linear / poly / rbf
        kpca.fit(X_train)

        dt_train = kpca.transform(X_train)
        dt_test = kpca.transform(X_test)

        logistic.fit(dt_train, y_train)
        print("SCORE KPCA " + k + " : ", logistic.score(dt_test, y_test))

$py kpca .py
SCORE KPCA linear : 0.8214285714285714
SCORE KPCA poly : 0.7987012987012987
SCORE KPCA rbf : 0.8181818181818182

Hasta el momento ha sido el mejor curso de Machine Learning que hay en la ruta, todo muy bien explicado y con aplicabilidad en código

Para los curiosos, en ésta página hay información sobre la Función de Base Radial (RBF) pero aplicada como una red nuronal.

Increíble forma de enseñar!

Kernel PCA (KPCA):

Kernel PCA es una extensión del algoritmo de Análisis de Componentes Principales (PCA) que utiliza kernels para realizar una transformación no lineal de los datos. A diferencia del estándar PCA, que busca las direcciones de máxima variación en el espacio original, KPCA busca las direcciones de máxima variación en un espacio de mayor dimensionalidad después de la aplicación de un kernel.

import pandas as pd
from sklearn.decomposition import KernelPCA
from sklearn.preprocessing import StandardScaler
import matplotlib.pyplot as plt

# Carga del conjunto de datos
data = pd.read_csv('heart.csv')

# Separación de características y etiquetas
X = data.drop(columns=['target'])
y = data['target']

# Estandarización de características
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# Aplicación de Kernel PCA
kpca = KernelPCA(n_components=2, kernel='rbf')  # Elegimos 2 componentes principales y kernel radial (RBF)
X_kpca = kpca.fit_transform(X_scaled)

# Gráfica de resultados
plt.scatter(X_kpca[:, 0], X_kpca[:, 1], c=y, cmap='viridis')
plt.title('Kernel PCA')
plt.xlabel('Componente Principal 1')
plt.ylabel('Componente Principal 2')
plt.show()

Esta interesante hasta ahora el curso. Espero que al final del curso se llegue a una conclusión de las predicciones, cosas que le faltan a otros cursos de ML de Platzi.

Así se vel a RBF (Función de Base Radial en Geogebra)

NoteBook de la clase git hub

Excelente explicación para entender el concepto de kernels y como el aumento de dimensiones puede ayudar a resolver problemas de clasificación.

Para que quede más claro el tema de los Kernels dejo estas metáforas con Caperucita roja.: * **Kernel Lineal**: Caperucita clasifica los animales del bosque solo observando una característica simple, como su tamaño, y puede separarlos fácilmente con una línea imaginaria. * **Kernel Polinomial**: Si Caperucita necesita más información, como el tamaño y la forma de las orejas, utiliza este Kernel, que le permite distinguir entre animales con más complejidad al observar más de una característica combinada. * **Kernel RBF**: Si el bosque es realmente complejo y Caperucita necesita considerar múltiples factores (como sonido, tamaño, movimiento) para identificar al lobo, el Kernel RBF le permite transformar todos esos factores en algo mucho más claro y separable, facilitando su tarea.
**<u>Que son los Kernels?</u>** En el contexto del aprendizaje automático y especialmente en técnicas como el Análisis de Componentes Principales Kernelizado (Kernel PCA) y las Máquinas de Vectores de Soporte (SVM), un kernel es una función matemática que calcula la similitud entre pares de puntos de datos en un espacio dimensional superior o en un espacio de características ampliado. Los kernels son fundamentales en el aprendizaje automático porque permiten realizar operaciones en un espacio de características de mayor dimensionalidad sin la necesidad de calcular explícitamente las coordenadas de esos puntos en el espacio de características de alta dimensión. En su lugar, los kernels calculan el producto interno entre los vectores de características en el espacio de características de alta dimensión sin la necesidad de representar explícitamente estos vectores. Los kernels son especialmente útiles cuando los datos no son linealmente separables en el espacio de características original, ya que pueden transformar los datos en un espacio de características de mayor dimensión donde la separación lineal es posible. Algunos ejemplos comunes de kernels incluyen: 1. Kernel lineal: Se utiliza para realizar operaciones lineales en el espacio de características original. 2. Kernel polinomial: Transforma los datos en un espacio de características de mayor dimensión mediante una función polinomial. 3. Kernel radial (RBF): Utiliza una función de base radial para mapear los datos en un espacio de características de mayor dimensión. En resumen, los kernels son funciones que permiten calcular la similitud entre pares de puntos de datos en un espacio dimensional superior, lo que es fundamental para muchas técnicas de aprendizaje automático.
**¿Cuáles son algunos criterios que podríamos considerar al seleccionar el mejor tipo de kernel en Kernel Principal Component Analysis (KPCA)?** Seleccionar el mejor tipo de kernel en Kernel Principal Component Analysis (KPCA) puede depender de varios factores, como la naturaleza de los datos y el objetivo del análisis. Aquí hay algunos criterios que puedes considerar al elegir el tipo de kernel en KPCA: 1. **Naturaleza de los datos**: * Si crees que tus datos tienen una estructura no lineal intrínseca, es posible que desees probar con un kernel no lineal, como el kernel Gaussiano (RBF) o el kernel polinomial. * Si tus datos son linealmente separables o tienen una estructura lineal clara, un kernel lineal puede ser suficiente. 2. **Experimentación y validación cruzada**: * Realizar experimentos con diferentes tipos de kernels y comparar los resultados puede ser una forma efectiva de determinar cuál funciona mejor para tus datos y tu tarea específica. * Utilizar técnicas de validación cruzada, como la validación cruzada k-fold, puede ayudar a evaluar el rendimiento de diferentes tipos de kernels en conjuntos de datos de manera más robusta. 3. **Interpretabilidad**: * Algunos tipos de kernels, como el kernel lineal, pueden proporcionar modelos más interpretables, ya que la transformación de los datos es lineal y los componentes principales resultantes pueden ser más fácilmente interpretados en términos de las características originales. * Sin embargo, los kernels no lineales pueden capturar relaciones más complejas en los datos, lo que puede resultar en un mejor rendimiento predictivo, aunque los componentes principales pueden ser más difíciles de interpretar. 4. **Rendimiento predictivo**: * Finalmente, elige el tipo de kernel que maximice el rendimiento predictivo de tu modelo. Puedes evaluar el rendimiento utilizando métricas como la precisión, el área bajo la curva ROC (AUC), o cualquier otra métrica relevante para tu tarea de clasificación o regresión. En resumen, la selección del tipo de kernel en KPCA depende de factores como la naturaleza de los datos, la interpretabilidad del modelo, el rendimiento predictivo y la experimentación con diferentes opciones, respaldada por técnicas de validación cruzada, puede ayudarte a tomar la mejor decisión.

Este curso va cada vez mejor 🚀🔥💚📝

Con la gráfica se hace mas entendible la explicación de kernels

Deberían citar a los autores de las imágenes que toman de otras fuentes.

De momento no existe ninguna alternativa Incremental para KernelPCA, así que queda descartada para trabajar con datasets grandes
https://github.com/scikit-learn/scikit-learn/issues/19479

El numero de componentes del PCA es opcional

Este curso va muy bien

Muy bien explicado!!

Muuuuy muy interesante! creo q esto podria resolver mi pregunta al principio del curso.

Como nota en las funciones de Scikit-Learn que aplican transformaciones en los datos tiene un metodo llamafo fit_transform que hace lo mismo que primero usar el metodo fit y luego transform

El kernel en si tiene varias definiciones si hablamos por ejemplo de PCA, de Feed Forward Networks o de Convolutional Neural Networks.En FFN, el kernel no es nada mas que los pesos de nuestros inputs, sin embargo en CNN el kernel es una matriz que multiplica a cada slice o “submatriz” de nuestro input.

LBFGS es un algoritmo de optimizacion que hasta Andrew Ng dijo que a veces le costaba entender, asi que si a un experto de ML le costo, imaginense lo complicado que debe ser xd.