Шарнирная потеря — способ измерения точности классифицирующей модели. Она штрафует модель, если предсказанные значения неверны или находятся слишком близко к границе решения.
Многие алгоритмы машинного обучения, особенно те, которые работают с задачами классификации, используют функции потерь для оценки того, насколько хорошо модель справляется с поставленной задачей. Одной из таких функций потерь является Hinge Loss, которая широко применяется в задачах обучения с опорными векторами (Support Vector Machines - SVM).
Hinge Loss измеряет, насколько точно модель классификации различает разные классы. В частности, она штрафует модель, если предсказанные значения неверны или находятся слишком близко к границе решения. Для задач бинарной классификации Hinge Loss может быть определена следующим образом:
\[ L(y) = \max(0, 1 - y \cdot f(x)) \]
где:
- \( L(y) \) - значение функции потерь,
- \( y \) - истинный метки класса (\( y = \pm 1 \)),
- \( f(x) \) - оценка модели для входных данных \( x \).
Эта функция потерь равна нулю, если модель правильно классифицировала пример, и увеличивается по мере того, как оценка модели становится менее уверенной или неверной.
Давайте рассмотрим пример использования Hinge Loss в библиотеке Scikit-Learn на примере SVM. Допустим, у нас есть данные и мы хотим обучить модель для бинарной классификации:
from sklearn import datasets
from sklearn.model_selection import train_test_split
from sklearn.svm import SVC
from sklearn.metrics import hinge_loss
# Загрузка данных
iris = datasets.load_iris()
X = iris.data
y = (iris.target == 0).astype(int) # Делаем задачу бинарной классификации
# Разделение данных на обучающий и тестовый наборы
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Создание и обучение модели SVM с использованием Hinge Loss
model = SVC(kernel='linear', C=1)
model.fit(X_train, y_train)
# Предсказание на тестовых данных
y_pred = model.predict(X_test)
# Вычисление Hinge Loss
loss = hinge_loss(y_test, model.decision_function(X_test))
print(f'Hinge Loss: {loss}')
В этом случае потери равны 0.
В этом примере мы используем SVM с линейным ядром и C=1. Функция `decision_function` возвращает оценки для тестовых данных, а `hinge_loss` вычисляет Hinge Loss между истинными метками и оценками модели.
Использование Hinge Loss в машинном обучении может помочь улучшить производительность моделей, особенно в задачах классификации, где важна точность предсказаний.
Ноутбук, не требующий дополнительной настройки на момент написания статьи, можно скачать здесь: https://colab.research.google.com/drive/17EanFtXm-x98ngxQahjJHzMJHIReul1A?usp=sharing
© Лена Капаца. Все права защищены.