red, la combinación lineal de pesos y las características de la muestra,
Observa que, de forma similar a la convención que utilizamos en el Capítulo 2, Entrenar algoritmos simples de aprendizaje automático para clasificación, |
Ahora vamos a mostrar gráficamente la función sigmoide para diferentes valores del rango de -7 a 7 para ver qué aspecto tiene:
>>> import matplotlib.pyplot as plt
>>> import numpy as np
>>> def sigmoid(z):
... return 1.0 / (1.0 + np.exp(-z))
>>> z = np.arange(-7, 7, 0.1)
>>> phi_z = sigmoid(z)
>>> plt.plot(z, phi_z)
>>> plt.axvline(0.0, color='k')
>>> plt.ylim(-0.1, 1.1)
>>> plt.xlabel('z')
>>> plt.ylabel('$\phi (z)$')
>>> # y axis ticks and gridline
>>> plt.yticks([0.0, 0.5, 1.0])
>>> ax = plt.gca()
>>> ax.yaxis.grid(True)
>>> plt.show()
Como resultado de la ejecución del código del ejemplo anterior, deberíamos ver la curva en forma de S (sigmoide):
Podemos ver que
Para crear una intuición para el modelo de regresión lógica, podemos relacionarlo con el Capítulo 2, Entrenar algoritmos simples de aprendizaje automático para clasificación. En Adaline, utilizamos la función de identidad
La salida de la función sigmoide se interpreta como la probabilidad de que una muestra concreta pertenezca a la clase 1,
Si miramos el gráfico anterior de la función sigmoide, este equivale a lo siguiente:
De hecho, existen muchas aplicaciones en las cuales no solo nos interesan las etiquetas de clase predichas, sino que también la estimación de la probabilidad de la pertenencia a una clase resulta particularmente útil (la salida de la función sigmoide antes de aplicar la función umbral). La regresión logística se utiliza en la previsión meteorológica, por ejemplo, no solo para predecir si lloverá un día en concreto sino también para informar de la posibilidad de lluvia. De forma parecida, la regresión logística se puede utilizar para predecir la posibilidad de que un paciente tenga una enfermedad concreta dados determinados síntomas, razón por la cual goza de una gran popularidad en el campo de la medicina.
Aprender los pesos de la función de coste logística
Ahora que ya has aprendido cómo podemos utilizar el modelo de regresión logística para predecir probabilidades y etiquetas de clase, vamos a hablar brevemente acerca de cómo debemos ajustar los parámetros del modelo, por ejemplo, los pesos w. En el capítulo anterior, definimos la suma de errores cuadráticos de la función de coste de la siguiente manera:
Minimizamos esta función para aprender los pesos w para nuestro modelo de clasificación Adaline. Para explicar cómo podemos derivar la función de coste para la regresión logística, en primer lugar debemos definir la probabilidad L que queremos maximizar al crear un modelo de regresión logística, asumiendo que las muestras individuales de nuestro conjunto de datos son independientes unas de otras. La fórmula es como esta:
A la práctica, es más fácil maximizar el logaritmo (natural) de esta ecuación, denominada función de probabilidad logarítmica:
En primer lugar, la aplicación de la función log reduce el potencial para el desbordamiento numérico, que puede ocurrir si las probabilidades son muy pequeñas. En segundo lugar, podemos convertir el producto de factores en una suma de factores, que hace más fácil obtener la derivada de esta función mediante el truco de la suma, como recordarás del cálculo.
Ahora, podríamos utilizar un algoritmo de optimización como el ascenso del gradiente para maximizar esta función de probabilidad logarítmica. De forma alternativa, vamos a volver a escribir la probabilidad logarítmica como una función de coste J que puede ser minimizada mediante el descenso del gradiente, como en el Capítulo 2, Entrenar algoritmos simples de aprendizaje automático para clasificación:
Para entender mejor esta función de coste, echemos un vistazo al coste que calculamos para una instancia de entrenamiento de muestra única:
Si miramos la ecuación, podemos ver que el primer término es cero si