Comparación de funciones de impureza

Si quisiéramos comparar los resultados devueltos por las tres funciones para un escenario de clasificación binaria, podríamos hacerlo de la siguiente forma:

x = np.linspace(0.001, 0.999, 1000)
gini = 1 - x ** 2 - (1 - x) ** 2
entropy = - x * np.log2(x) - (1 - x) * np.log2(1 - x)
error = 1 - np.maximum(x, 1- x)
fig, ax = plt.subplots()
ax.plot(x, gini, label = "Índice Gini")
ax.plot(x, entropy, label = "Entropía")
ax.plot(x, error, label = "Índice de error")
ax.grid(color = "#EEEEEE", zorder = 0)
ax.set_xlabel("p")
ax.set_ylabel("Impureza")
ax.legend()
plt.show()
Comparación de funciones de impureza

Vemos que, aparte de la diferencia de escala, la naturaleza de las tres funciones es semejante, devolviendo un valor máximo cuando ambas clases están igualmente representadas, y un valor mínimo cuando la proporción de una de las clases es 0 o 1.

En la práctica, el índice Gini y la entropía devuelven resultados muy similares.