볼록 손실 함수 비교

Beginner

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

소개

머신 러닝에서 손실 함수는 예측된 출력과 실제 출력 간의 차이를 측정하는 데 사용됩니다. scikit-learn 라이브러리는 분류 문제에 대한 다양한 볼록 손실 함수를 제공합니다. 이 실습에서는 이러한 손실 함수 중 일부를 시각화하고 비교해 보겠습니다.

VM 팁

VM 시작이 완료되면 왼쪽 상단 모서리를 클릭하여 Notebook 탭으로 전환하여 연습을 위한 Jupyter Notebook에 접근합니다.

때때로 Jupyter Notebook 이 완전히 로드되기까지 몇 초 정도 기다려야 할 수 있습니다. Jupyter Notebook 의 제한으로 인해 작업의 유효성 검사를 자동화할 수 없습니다.

학습 중 문제가 발생하면 Labby 에게 문의하십시오. 세션 후 피드백을 제공하면 문제를 신속하게 해결해 드리겠습니다.

라이브러리 가져오기 및 함수 정의

필요한 라이브러리를 가져오고 수정된 Huber 손실 함수를 정의합니다.

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

결정 함수의 범위 정의

결정 함수 f(x)의 값 범위를 정의합니다.

xmin, xmax = -4, 4
xx = np.linspace(xmin, xmax, 100)

손실 함수 시각화

matplotlib 라이브러리를 사용하여 scikit-learn에서 지원하는 다양한 볼록 손실 함수를 시각화합니다.

lw = 2
plt.plot([xmin, 0, 0, xmax], [1, 1, 0, 0], color="gold", lw=lw, label="Zero-one loss")
plt.plot(xx, np.where(xx < 1, 1 - xx, 0), color="teal", lw=lw, label="Hinge loss")
plt.plot(xx, -np.minimum(xx, 0), color="yellowgreen", lw=lw, label="Perceptron loss")
plt.plot(xx, np.log2(1 + np.exp(-xx)), color="cornflowerblue", lw=lw, label="Log loss")
plt.plot(xx, np.where(xx < 1, 1 - xx, 0) ** 2, color="orange", lw=lw, label="Squared hinge loss")
plt.plot(xx, modified_huber_loss(xx, 1), color="darkorchid", lw=lw, linestyle="--", label="Modified Huber loss")
plt.ylim((0, 8))
plt.legend(loc="upper right")
plt.xlabel(r"결정 함수 $f(x)$")
plt.ylabel("$L(y=1, f(x))$")
plt.show()

플롯 해석

플롯을 해석하고 각 손실 함수의 동작을 분석합니다.

요약

이 실습에서는 scikit-learn에서 지원하는 일부 볼록 손실 함수를 시각화하고 비교했습니다. 손실 함수는 머신러닝에서 모델 학습 과정 중 모델 파라미터를 최적화하는 데 사용되므로 이해하는 것이 중요합니다.