Introdução
Em aprendizagem de máquina, as funções de perda são usadas para medir a diferença entre a saída prevista e a saída real. A biblioteca scikit-learn fornece várias funções de perda convexa para problemas de classificação. Neste laboratório, visualizaremos e compararemos algumas dessas funções de perda.
Dicas da Máquina Virtual
Após o arranque da máquina virtual, clique no canto superior esquerdo para mudar para a aba Notebook para aceder ao Jupyter Notebook para praticar.
Por vezes, pode ser necessário esperar alguns segundos para o Jupyter Notebook terminar de carregar. A validação das operações não pode ser automatizada devido a limitações no Jupyter Notebook.
Se tiver problemas durante a aprendizagem, não hesite em contactar o Labby. Forneça feedback após a sessão e resolveremos o problema rapidamente para si.
Importar Bibliotecas e Definir Funções
Começamos importando as bibliotecas necessárias e definindo a função de perda Huber modificada.
import numpy as np
import matplotlib.pyplot as plt
def modified_huber_loss(y_true, y_pred):
z = y_pred * y_true
loss = -4 * z
loss[z >= -1] = (1 - z[z >= -1]) ** 2
loss[z >= 1.0] = 0
return loss
Definir o Intervalo para a Função de Decisão
Definimos o intervalo de valores para a função de decisão f(x).
xmin, xmax = -4, 4
xx = np.linspace(xmin, xmax, 100)
Plotar as Funções de Perda
Plotamos as várias funções de perda convexas suportadas por scikit-learn usando a biblioteca matplotlib.
lw = 2
plt.plot([xmin, 0, 0, xmax], [1, 1, 0, 0], color="gold", lw=lw, label="Perda zero-um")
plt.plot(xx, np.where(xx < 1, 1 - xx, 0), color="teal", lw=lw, label="Perda Hinge")
plt.plot(xx, -np.minimum(xx, 0), color="yellowgreen", lw=lw, label="Perda Perceptron")
plt.plot(xx, np.log2(1 + np.exp(-xx)), color="cornflowerblue", lw=lw, label="Perda Log")
plt.plot(xx, np.where(xx < 1, 1 - xx, 0) ** 2, color="orange", lw=lw, label="Perda Hinge quadrada")
plt.plot(xx, modified_huber_loss(xx, 1), color="darkorchid", lw=lw, linestyle="--", label="Perda Huber modificada")
plt.ylim((0, 8))
plt.legend(loc="upper right")
plt.xlabel(r"Função de decisão $f(x)$")
plt.ylabel("$L(y=1, f(x))$")
plt.show()
Interpretar o Gráfico
Interpretamos o gráfico e analisamos o comportamento de cada função de perda.
Resumo
Neste laboratório, visualizamos e comparamos algumas das funções de perda convexas suportadas por scikit-learn. Compreender as funções de perda é crucial em aprendizado de máquina, pois são usadas para otimizar os parâmetros do modelo durante o treinamento.