Saltar a contenido

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

Última actualización: August 15, 2021