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

Implementactió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

Explicación resultado de la implementación

15/37
Recursos

Aportes 9

Preguntas 2

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Veo un inconveniente con la explicación del resultado. Si miramos el resultado de la perdida para el modelo lineal, aparece en pantalla algo como 9.11362706964361e-08 (el resultado que me arroja cercano al del video) que es igual a 0.00000009113… , es decir, que en realidad el modelo que genera menor perdida es el lineal. Por otro lado al comparar los coeficientes para la variable “corruption” en todos los modelos, se observa que el coeficiente para el modelo lineal es de 0.9996… , osea casi 1!!. Luego esto indicaría que la variable es estadisticamente muy significativa y por tanto el modelo lasso nos estaría llevando hacia un resultado erróneo. Me gustaría escuchar su opinión.

Cierto lo que dice joahnR, en realidad el modelo con mejor desempeño es el Lineal, ya que su valor de MSE es muy cercano a 0 (6.182e-08), es decir, la media del cuadrado de las diferencias entre los valores de y reales (y_test) y los valores predichos (y_pred) es muy pequeña, lo cual es muy bueno.

Esto lo podemos visualizar graficando los valores y_test frente a los valores y_pred de cada modelo. O, mejor aún, graficando los valores de los mínimos cuadrados:

Dejo el código:

import seaborn as sns
import matplotlib.pyplot as plt

# Calculamos los mínimos cuadrados
# es decir, el cuadrado de la diferencia entre los valoes
# predichos y los valores reales
y_test_values = y_test.values.ravel()

mins_lineal = (y_test_values - y_predict_linear)**2
mins_ridge = (y_test_values - y_predict_ridge)**2
mins_lasso = (y_test_values - y_predict_lasso)**2

# Graficamos
observaciones = range(len(y_test)) # Número de observaciones
# Plot con seaborn
sns.scatterplot(x, ms_lineal, label = 'Mod. Lineal (sin reg.)')
sns.scatterplot(x, ms_ridge, label = 'Mod. con Reg. Ridge')
sns.scatterplot(x, ms_lasso, label = 'Mod. con Reg. Ridge')
plt.xlabel('Observaciones del set de prueba')
plt.ylabel('Mínimos cuadrados (' + r'$(\hat{y} - y)^2$')
plt.show()

Como se observa en la gráfica, el modelo lineal tiene valores muy bajos, todos en cero prácticamente, lo que significa que lo predicho por el modelo (y_pred) se ajusta muy bien a los valores observados (los reales; y_test). En cambio, al regularizar con Lasso o Ridge, sí que hay diferencias entre los valores predichos y los observados. Por esto, al promediar todas estas diferencias, que es justo lo que hace el MSE (mean_square_error), el valor es más alto para estos dos modelos.

¿Alguno de ustedes obtuvo unos resusltados parecidos a estos? La verdad, me sorprende que obtengamos unos scores casi perfectos.
Si estoy haciendo algo mal escribiendo las siguientes líneas de código, por favor coméntenmelo.

X_test
print("Score Lineal")
print(modelLinear.score(X_test, Y_test))
print("Score Lasso")
print(modelLasso.score(X_test, Y_test))
print("Score Ridge")
print(modelRidge.score(X_test, Y_test))
Score Lineal
0.9999999231608282
Score Lasso
0.9658608399998099
Score Ridge
0.9964192911779547

Según puedo observar se utiliza el modelo lineal para comparar el trabajo que hacen los otros dos modelos, con el tema de “penalizar” aquellas variables que estarían aportando menos información.
El modelo lineal no penaliza nada y mantiene los valores de los coeficiente igual durante todo el proceso.
Aprovechamos el ejercicio para comparar lo que hacen Lasso y Ridge, aunque si es innegable que la perdida del modelo lineal, para este caso específico y para los features que escogimos, es la mas pequeña.

Se cometió un error gracias a la notación científica, así se observa mejor:

print( "%.10f" % float(linear_loss))
print( "%.10f" % float(lasso_loss))
print( "%.10f" % float(ridge_loss))

Aplicando un poco de lo que se conversó en las clases pasadas. Porque el modelo lineal no es el mejor. Al tener pocos datos como uds han comentado vamos a tener un modelo muy sobre ajustado, lo cual para próximas mediciones no nos da un correcto resultado. Es decir ese modelo tan sobre ajustado solo servirá para ese conjunto de datos, pero al tratar de predecir con otros datos no serviría. Por esa razón comenta el uso de regularización para evitar el sobre ajuste al tener pocos datos

ALpha = 0.0010
ta de un mejor score

Entiendo que la regresión lineal “básica” no entra en competencia con Lasso y Ridge debido a que la premisa es que este modelo “sobreajusta” por eso solo evaluamos L1 y L2.

La diferencia de y_test y los algoritmos gráficamente:

Se aprecia claramente que Lasso difiere más.