¿Cómo validar matemáticamente el modelo de regresión logística con código en Python?
El modelo de regresión logística es fundamental para resolver problemas de clasificación binaria en machine learning. Para validar su hipótesis, utilizamos Python y ciertas bibliotecas específicas para evaluar la función de verosimilitud y relacionarla con las etiquetas correctas del conjunto de datos. La función de verosimilitud determina las probabilidades de que los valores predichos por el modelo se acerquen a las categorías reales de los datos. ¿Listo para explorar cómo lo hacemos?
¿Qué librerías de Python usar para el modelo?
Al trabajar con regresión logística en Python, se utilizan las librerías más comunes y eficaces:
Matplotlib: Para crear visualizaciones gráficas en dos o tres dimensiones.
NumPy y Pandas: Librerías estándar para manipular y analizar datos numéricos y estructuras de datos en Python.
Scikit Learn: Ofrece algoritmos y funciones de machine learning que facilitan la implementación de modelos complejos de manera sencilla.
¿Cómo visualizar la función de verosimilitud?
Primero, definimos una función en Python considerando que la función de verosimilitud es de dos variables y graficamos sus resultados en un gráfico tridimensional.
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
deflikelyhood_function(yp, y):return yp * y +(1- yp)*(1- y)x = np.arange(0.0,1.0,0.1)y = np.arange(0.0,1.0,0.1)X, Y = np.meshgrid(x, y)Z = likelyhood_function(X, Y)fig = plt.figure()ax = fig.add_subplot(111, projection='3d')ax.plot_surface(X, Y, Z, cmap='coolwarm')plt.colorbar()plt.show()
Aquí, la función muestra los valores máximos en los puntos donde la predicción y el valor real coinciden, justificando el uso de esta función para optimizar el modelo.
¿Cómo implementar el modelo de regresión logística con Scikit Learn?
Scikit Learn simplifica la implementación de modelos. El dataset "iris" se utiliza comúnmente por su claridad y simplicidad, permitiendo evaluar rápidamente los resultados del modelo.
from sklearn.linear_model import LogisticRegression
from sklearn import datasets
iris = datasets.load_iris()X = iris.data[iris.target !=2]# Consideramos sólo dos clases para problema binarioy = iris.target[iris.target !=2]model = LogisticRegression(random_state=0, solver='liblinear')model.fit(X, y)print(model.coef_)
Los coeficientes del modelo, o los betas, definen la importancia de cada atributo en la predicción de la clase, ofreciendo un vistazo claro de qué atributos influyen más.
¿Qué es la función de costo cross entropy y su relevancia?
La función de costo cross entropy surge de la necesidad de transformar la verosimilitud en una medida de error manejable. Se utilizó el logaritmo de las probabilidades, lo cual simplificó la expresión:
Cross Entropy es crucial porque traduce el objetivo del modelo de maximizar las probabilidades en minimizar el error en las predicciones.
Finalmente, a través de este ejercicio, la regresión logística es vista no solo como un algoritmo de clasificación, sino como una herramienta de estimación con un robusto marco matemático que optimiza los parámetros de modo que las predicciones sean lo más precisas posibles.
Al aplicar las técnicas aprendidas, abre un mundo de posibilidades en tus proyectos de inteligencia artificial. ¡La práctica y la aplicación continua son tus mejores aliados en este fascinante camino del aprendizaje automático!
todos dicen que entendieron, deberian estar agradecidos con las clases de probabilidades que avanzaron en algun lado.
Me pregunto cuantos seran aquellos que "se van calladitos sin entender nada pero realmente quisieron aprender ciencia de datos".
Eso también me llamo la atención, veo que en los comentarios todos dicen que entendieron, pero yo no tengo bases universitarias de probabilidad así que los últimos módulos han sido muy difíciles para mí. Pero como veía que todo el mundo entendía no quise decir nada hasta ahora. De verdad quiero aprender Data Science, pero este curso ha sido por lejos el más difícil que he tenido que hacer hasta ahora en la escuela de DS
Voy a probar lo que dices @ObeMauricio
Teniendo en cuenta que en las ultimas actualización .gca() no lleva argumentos, la linea de código deberá quedar así:
Gracias Ever!
Gracias!
La verdad es que este es por mucho, el curso mas complejo y mas frustrante que he hecho hasta el momento... Se requieren demasiadas bases de todo para poder explotarlo de la mejor manera. De librerias, de metodos, de teoría. Esta carrera debería tener cursos previos de bases.
Es lo mismo que vengo sugiriendo desde las clases anteriores, mira que yo tengo buenas bases estadísticas, sin embargo, es necesario tener muchas más herramientas para entenderlo y sin duda ha sido el curso más difícil hasta el momento, siento que hay muchos huecos entre un curso y otro.
Sensillamente practico, sin embargo, se puede profundizar en los parametros del modelo, la tabla de confusión y demás metodos del objeto clf :thumbsup:
asi es, pero es muy bueno para entender a grandes rasgos los aspectos esenciales
Estoy viendo que el curso aumenta de un momento a otro el nivel de complejidad, creo que es importante tener material de apoyo para poder complementar lo que se ve en el curso.
siii, hiba asi como 1 + 1 es 2, entonces podemos decir que 2 - 1 es 1, por lo que 對此文所說的一無所知.
asi de facil
Si les sale un error con
ax = fig.gca(projection='3d')
pueden intentar con
ax = fig.add_subplot(projection='3d')
Gracias David!
me salió el mismo error
pues sinceramente no entendí mucho, pero ahora se que existe, ya con saber que existe puedo trabajar en comprenderlo.
creo que eso es lo mas importante
Exactamente, no es tanto aprender la regresión a profundidad en este curso ya que platzi tiene uno especialmente para eso. El punto de este curso es mostrar la aplicacion de la probabilidad en Ciencia de Datos, ya sabemos como se crearon todas las funciones en sklearn y demas librerías.
Me costó un montón entender el uso del meshgrid para este caso.
Después de buscar fue que meshgrid sirve para que dos vectores se conviertan en una cuadrícula de coordenadas.
Cuando genero mis vectores:
Tengo dos matrices de igual tamaño, pero están transformadas.
Gracias por el aporte.
La función np.meshgrid crea una estructura similar a un tensor, donde cada elemento representa una combinación de los elementos de los vectores originales.
Adempas de aprender los temas del curso, he aprendido a hacer fórmulas en colab. Genial!
es un emulador de Python... pero si es una buena herramienta
la magia de plotly!
les recomiendo aprender a graficar en plotly, practicamente te permite crear graficos interactivos lo cual ayuda mucho a la hora de ver graficos 3D.
aqui les dejo el codigo para lo que se grafico en clase para que se maravillen con lo que ofrece plotly jajaja
Para predecir tenemos al modelo de regresión, y para clasificación el modelo de regresión logística.
La regresión logística utiliza la función sigmoide como base. El modelo de regresión lineal la recta.
Estos modelos pueden ser optimizados hacia a los datos con varios algoritmos: mínimos cuadrados(para regresion lineal), estimación de máxima verosimilitud MLE, etc.
El MLE es un algoritmo, framework o herramienta para ajustar u optimizar el modelo o densidad de probabilidad (función) al conjunto de datos.
Magnifico extracto de perspectiva de las regresión lineal y logística !!!
Les comparto este articulo que complementa lo que se explica sobre regresión logistica
Hola, alguien me podria recomendar algun video para complementar los temas de este modulo? es que la verdad entendi poco o nada, siempre me han costado mucho estas cosas, me he repito varias veces las clases pero no consigo entender el MLE ni las regresiones
No entendí por qué creó un arreglo con los nombres de las variables si jamás se usó. Aún así, excelente explicación ❤️.
Hola Diego .. a partir del minuto 14:02 lo explica ... el modelo si llama a las variables que el creó a través de random_state. Creo haber entendido que te refieres al ejemplo con el dataset iris.
Tienes razón Diego, no lo usa para nada durante la clase, se podría suprimir esa parte sin problema.
sin embargo, cuando revisas el colab de la clase, se ve que lo usa solo para generar un dataFrame en pandas con esos coeficientes, pero igual no se usa para nada más.
yo en verdad es que no entendí pero quisiera que pusieran un ejemplo real, algo como para ver el uso de este tema.
y no lo pusieron!
Quiero dejar mi aporte con un ejemplo para aclarar un poco este complejo tema.
En el ejercicio de la clase tomamos las 4 variables del dataset “iris” y lo pasamos a la función LogisticRefression de sklearn. Con esto obtuvimos los parámetros que se aplican en el log-odds. Pero si se dan cuenta, al impirmir el clf.coef_ obtenemos 4 valores, nos hace falta el primer parámetro (el be sub cero, el que NO va acompañado de ninguna equis). Este parámetro lo obtenemos con clf.intercept_.
Ya teniendo los 5 parámetros, podemos pasarlos a la función sigmoide y así obtenemos la probabilidad para cada grupo de datos.
Quiero dejar esto aún más claro con un ejemplo. Si solo tomamos la fila 3 del dataset (correspondiente a petal_length) y aplicamos los mismos procedimientos vistos en clase, obtendremos 2 parámetros, que posteriormente se pasarán a una función sigmoide (dejo el código abajo).
graficando esto obtendremos de manera intuitiva lo que significa la regresión logística. donde el cero representa un tipo de flor y el uno representa otro tipo de flor. El eje x representa la longitud del pétalo de las flores.
En el ejercicio de la clase no se puede realizar una gráfica, ya que se tienen 4 parámetros, por eso este ejercicio me parece más intuitivo.
Muy bueno tu aporte, o sea que según sean los valores obtenidos de los betas la probabilidad de que una flor según los atributos dados pertenezca a un clase o otra es lo que al final buscamos. Es decir, buscamos responder si tenemos una flor y sus atributos son estos o este otro la flor es de esta clase.
Buena Clase!
Hola 👋 acá les dejo 3 videos adicionales para complementar esta clase y entender mejor la regresión logística.
.