Softmax
La función Softmax
La función Softmax (o función exponencial normalizada)es equivalente a la sigmoide, pero cuando el problema de clasificación en lugar de tener dos clases tiene tres o más.
La función está dada por
$$
\sigma_j(\vec{z}) = \frac{e^{z_j}}{\sum_{k=1}^K e^{z_k}}, \mbox{ para } j=1,\dots K
$$
En python la podríamos definir de la siguiente forma:
import numpy as np
# Dada una lista de números, devuelve
# una lista con los valores dados por la función softmax.
def softmax(L):
softmax = []
sumexp = sum(np.exp(L))
for i in L:
softmax.append(np.exp(i)/sumexp)
return softmax
Codificación One-hot
Cuando tenemos clasificaciones no numéricas (por ejemplo, tipos de animales) para poder trabajar con los algoritmos y funciones anteriores las tenemos que clasificar como numéricas. Para ello se utiliza la codificación One-hot, que consiste en establecer una variable distinta por cada clase y aplicar 1 o 0 según pertenezca a la variable o no.
Por ejemplo, si tenemos la clasificación de animales perro, gato y cerdo podemos clasificarlos de la siguiente forma:
Animal | Perro | Gato | Cerdo |
---|---|---|---|
Perro | 1 | 0 | 0 |
Gato | 0 | 1 | 0 |
Cerdo | 0 | 0 | 1 |