Fundamentos de clasificación: softmax y k vecinos más cercanos en Python
Clasificar significa elegir una etiqueta, como gato o perro. Un modelo puede dar una puntuación por clase y dejar que softmax las convierta en probabilidades, o un método sencillo como k vecinos más cercanos puede hacer votar a los ejemplos conocidos más próximos.
El concepto en palabras sencillas
Clasificar significa elegir una etiqueta, como gato o perro. Un modelo puede dar una puntuación por clase y dejar que softmax las convierta en probabilidades, o un método sencillo como k vecinos más cercanos puede hacer votar a los ejemplos conocidos más próximos.
Convierte puntuaciones en probabilidades de clase con softmax, evalúalas con entropía cruzada y clasifica puntos con k vecinos más cercanos.
Ideas clave
- Softmax mantiene el orden de las puntuaciones y hace que sumen 1.
- La entropía cruzada categórica castiga sobre todo las respuestas equivocadas dadas con seguridad.
- k-NN no tiene fase de entrenamiento: compara un punto nuevo con los ejemplos guardados.
- Naive Bayes y los árboles de decisión (impureza de Gini, ganancia de información) son otros clasificadores clásicos.
¿Cuándo se utiliza?
- Entender qué pasa dentro de las redes neuronales y las bibliotecas de IA.
- Aprender la idea antes de implementarla en los retos correspondientes.
- Prepararte para cursos de aprendizaje automático, entrevistas y proyectos.
Pruébalo en acción
Haz clic en cualquier parte del gráfico de la izquierda para clasificar un punto nuevo por el voto de sus k vecinos más cercanos. Cambia las puntuaciones de la derecha para ver reaccionar a softmax.
Código de ejemplo
import math
from collections import Counter
# Softmax turns raw scores into probabilities that add up to 1.
def softmax(scores):
exps = [math.exp(s - max(scores)) for s in scores]
total = sum(exps)
return [e / total for e in exps]
probs = softmax([2.0, 1.0, 0.1])
print("softmax:", [round(p, 3) for p in probs])
# Cross-entropy is small when the true class gets a high probability.
print("cross-entropy if class 0 is right:", round(-math.log(probs[0]), 3))
# k-nearest neighbours: label a point by a vote of the closest examples.
examples = [((1, 1), "cat"), ((1, 2), "cat"), ((5, 5), "dog"), ((6, 5), "dog"), ((5, 6), "dog")]
def knn(point, k=3):
nearest = sorted(examples, key=lambda e: math.dist(point, e[0]))[:k]
return Counter(label for _, label in nearest).most_common(1)[0][0]
print("(2, 1) ->", knn((2, 1)))
print("(5, 4) ->", knn((5, 4)))
Resultado esperado
softmax: [0.659, 0.242, 0.099]
cross-entropy if class 0 is right: 0.417
(2, 1) -> cat
(5, 4) -> dog
Cómo funciona
softmax() aplica la exponencial a las puntuaciones y divide entre su suma, así que las tres probabilidades suman 1; restar antes el máximo evita desbordamientos. La entropía cruzada es −log de la probabilidad de la clase correcta. knn() ordena los ejemplos por distancia y hace votar a los 3 más cercanos.
Cambia los valores y ejecuta el programa en el compilador Python online de CodeUtility sin instalar Python.
Ejercicios prácticos
Modifica las entradas y prueba casos límite antes de usar conjuntos de datos mayores.
- Cambia las entradas o los pesos y predice la salida antes de ejecutar.
- Imprime los valores intermedios para seguir cada paso del cálculo.
- Resuelve los retos enlazados abajo para implementar la idea por tu cuenta.
Practica con un reto
Usa lo que cubre esta lección para resolver un problema real. Cada reto se ejecuta en el navegador, con pruebas al instante y una revisión de IA.
- Función softmax Convierte puntuaciones en bruto en probabilidades que suman 1, sin desbordamiento con valores grandes. Fácil
- Entropía cruzada categórica Mide la pérdida de un clasificador multiclase a partir de sus probabilidades predichas y las clases reales. Fácil
- Clasificador de k vecinos más cercanos Predice una etiqueta por mayoría de votos entre los k puntos de entrenamiento más cercanos. Intermedio
- Clasificador Naive Bayes Predice una clase a partir de variables categóricas con el teorema de Bayes y el suavizado de Laplace. Intermedio
- Impureza de Gini Mide cuán mezcladas están las etiquetas de un grupo, la puntuación que usan los árboles de decisión para elegir divisiones. Fácil
- Ganancia de información Calcula cuánto reduce la entropía dividir por una variable, el criterio de los árboles de decisión ID3. Intermedio