Spec-Zone.ru › scikit-learn

brier_score_loss

sklearn.metrics.brier_score_loss(y_true, y_proba, *, sample_weight=None, pos_label=None, labels=None, scale_by_half='auto')[исходный код]

Вычисляет функцию потерь Brier score.

Чем меньше функция потерь Brier score, тем лучше, отсюда и название «потери». Brier score измеряет среднюю квадратичную разность между предсказанной вероятностью и фактическим результатом. Brier score является строго правильным правилом оценки.

Подробнее см. в руководстве пользователя.

Параметры:
y_trueмассивоподобный объект формы (n_samples,)

Истинные целевые значения.

y_probaмассивоподобный объект формы (n_samples,) или (n_samples, n_classes)

Предсказанные вероятности. Если y_proba.shape = (n_samples,), предполагается, что предоставленные вероятности относятся к положительному классу. Если y_proba.shape = (n_samples, n_classes), предполагается, что столбцы в y_proba соответствуют меткам в алфавитном порядке, как это реализовано в LabelBinarizer.

sample_weightмассивоподобный объект формы (n_samples,), по умолчанию=None

Веса образцов.

pos_labelint, float, bool или str, по умолчанию=None

Метка положительного класса, если y_proba.shape = (n_samples,). Если не указана, pos_label будет определена следующим образом:

  • если y_true входит в {-1, 1} или {0, 1}, по умолчанию pos_label равен 1;
  • иначе, если y_true содержит строки, будет вызвана ошибка, и необходимо явно указать pos_label;
  • в противном случае по умолчанию pos_label равен большей метке, то есть np.unique(y_true)[-1].
labelsмассивоподобный объект формы (n_classes,), по умолчанию=None

Метки классов, если y_proba.shape = (n_samples, n_classes). Если не указаны, метки будут определены на основе y_true.

Добавлено в версии 1.7.

scale_by_halfbool или «auto», по умолчанию=«auto»

Если True, масштабировать Brier score в 1/2, чтобы он находился в диапазоне [0, 1], а не [0, 2]. Значение по умолчанию «auto» масштабирует оценку до [0, 1] только для бинарной классификации (как принято), но сохраняет исходный диапазон [0, 2] для многоклассовой классификации.

Добавлено в версии 1.7.

Возвращает:
scorefloat

Функция потерь Brier score.

Примечания

Для \(N\) наблюдений, принадлежащих одному из \(C\) возможных классов, Brier score определяется следующим образом:

\[\frac{1}{N}\sum_{i=1}^{N}\sum_{c=1}^{C}(y_{ic} - \hat{p}_{ic})^{2}\]

где \(y_{ic}\) равно 1, если наблюдение i принадлежит классу c, и 0 в противном случае, а \(\hat{p}_{ic}\) — предсказанная вероятность того, что наблюдение i принадлежит классу c. Таким образом, значения Brier score лежат в диапазоне \([0, 2]\).

В задачах бинарной классификации Brier score обычно делят на два, после чего он лежит в диапазоне \([0, 1]\). Его также можно записать в следующем виде:

\[\frac{1}{N}\sum_{i=1}^{N}(y_{i} - \hat{p}_{i})^{2}\]

где \(y_{i}\) — бинарная целевая переменная, а \(\hat{p}_{i}\) — предсказанная вероятность положительного класса.

Ссылки

[1]

Статья Википедии о Brier score.

Примеры

>>> import numpy as np
>>> from sklearn.metrics import brier_score_loss
>>> y_true = np.array([0, 1, 1, 0])
>>> y_true_categorical = np.array(["spam", "ham", "ham", "spam"])
>>> y_prob = np.array([0.1, 0.9, 0.8, 0.3])
>>> brier_score_loss(y_true, y_prob)
0.0375
>>> brier_score_loss(y_true, 1-y_prob, pos_label=0)
0.0375
>>> brier_score_loss(y_true_categorical, y_prob, pos_label="ham")
0.0375
>>> brier_score_loss(y_true, np.array(y_prob) > 0.5)
0.0
>>> brier_score_loss(y_true, y_prob, scale_by_half=False)
0.075
>>> brier_score_loss(
...    ["eggs", "ham", "spam"],
...    [[0.8, 0.1, 0.1], [0.2, 0.7, 0.1], [0.2, 0.2, 0.6]],
...    labels=["eggs", "ham", "spam"]
... )
0.146

Примеры в галерее

Калибровка вероятностей классификаторов

Калибровочные кривые вероятностей

Калибровка вероятностей для классификации на 3 класса

Примеры использования FrozenEstimator

© 2007–2026 The scikit-learn developers
Licensed under the 3-clause BSD License.
https://scikit-learn.org/1.9/modules/generated/sklearn.metrics.brier_score_loss.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API