Comparação de Funções de Perda Convexas

Beginner

This tutorial is from open-source community. Access the source code

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.