Spec-Zone.ru › scikit-learn

roc_auc_score

sklearn.metrics.roc_auc_score(y_true, y_score, *, average='macro', sample_weight=None, max_fpr=None, multi_class='raise', labels=None)[source]

Вычисление площади под кривой ROC (AUC) из оценок предсказаний.

Примечание: эта реализация может быть использована для бинарной, многоклассовой и многометковой классификации, но некоторые ограничения применяются (см. параметры).

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

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

Истинные метки или бинарные индикаторы меток. Для бинарных и многоклассовых случаев ожидаются метки с формой (n_samples,), а для многометкового случая — бинарные индикаторы меток с формой (n_samples, n_classes).

y_scoreмассив-подобный формы (n_samples,) или (n_samples, n_classes)

Целевые оценки.

  • В бинарном случае он соответствует массиву формы (n_samples,). Могут быть предоставлены как оценки вероятностей, так и значения решений без порога. Оценки вероятности соответствуют **вероятности класса с большей меткой**, т.е. estimator.classes_[1] и, следовательно, estimator.predict_proba(X, y)[:, 1]. Значения решений соответствуют выводу estimator.decision_function(X, y). Дополнительную информацию см. в Руководстве пользователя;
  • В многоклассовом случае он соответствует массиву формы (n_samples, n_classes) оценок вероятности, предоставленных методом predict_proba. Оценки вероятности **должны** суммироваться до 1 по возможным классам. Кроме того, порядок оценок класса должен соответствовать порядку labels, если он предоставлен, или же численному или лексикографическому порядку меток в y_true. Дополнительную информацию см. в Руководстве пользователя;
  • В многометковом случае он соответствует массиву формы (n_samples, n_classes). Оценки вероятности предоставляются методом predict_proba, а значения решений без порога — методом decision_function. Оценки вероятности соответствуют **вероятности класса с большей меткой для каждого вывода** классификатора. Дополнительную информацию см. в Руководстве пользователя.
average{‘micro’, ‘macro’, ‘samples’, ‘weighted’} or None, default=’macro’

Если None, возвращаются оценки для каждого класса. В противном случае это определяет тип усреднения, выполняемого над данными. Примечание: многоклассовый AUC ROC в настоящее время обрабатывает только средние значения ‘macro’ и ‘weighted’. Для многоклассовых целей average=None реализован только для multi_class='ovr', а average='micro' реализован только для multi_class='ovr'.

'micro':

Вычисление метрик в глобальном масштабе с учетом каждого элемента матрицы индикаторов меток как метки.

'macro':

Вычисление метрик для каждой метки и нахождение их взвешенного среднего значения. Это не учитывает несбалансированность меток.

'weighted':

Вычисление метрик для каждой метки и нахождение их среднего значения, взвешенного поддержкой (количеством истинных экземпляров для каждой метки).

'samples':

Вычисление метрик для каждого экземпляра и нахождение их среднего значения.

Будет проигнорировано, когда y_true бинарный.

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

Веса выборок.

max_fprfloat > 0 и <= 1, по умолчанию=None

Если не None, возвращается стандартизованная частичная AUC [2] в диапазоне [0, max_fpr]. Для многоклассового случая, max_fpr, должно быть либо равно None, либо 1.0, так как в настоящее время вычисление частичной AUC ROC для многоклассового случая не поддерживается.

multi_class{‘raise’, ‘ovr’, ‘ovo’}, по умолчанию=’raise’

Используется только для многоклассовых целей. Определяет тип конфигурации для использования. По умолчанию генерируется ошибка, поэтому необходимо явно указать 'ovr' или 'ovo'.

'ovr':

Обозначает «Один против всех». Вычисляет AUC каждого класса по отношению к остальным [3] [4]. Это обрабатывает многоклассовый случай так же, как и многометковый. Чувствителен к несбалансированности классов, даже когда average == 'macro', так как несбалансированность классов влияет на состав каждой из групп «остальных».

'ovo':

Обозначает «Один против одного». Вычисляет среднее AUC всех возможных парных комбинаций классов [5]. Нечувствителен к несбалансированности классов, когда average == 'macro'.

labelsмассив-подобный формы (n_classes,), по умолчанию=None

Используется только для многоклассовых целей. Список меток, которые индексируют классы в y_score. Если None, используется числовой или лексикографический порядок меток в y_true.

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

Значение площади под кривой.

См. также

average_precision_score

Площадь под кривой точности-полноты.

roc_curve

Вычисление кривой ROC.

RocCurveDisplay.from_estimator

Построение кривой ROC на основе оценки и данных.

RocCurveDisplay.from_predictions

Построение кривой ROC на основе истинных и предсказанных значений.

Примечания

Коэффициент Джини — это обобщающая мера способности ранжирования бинарных классификаторов. Он выражается через площадь под кривой ROC следующим образом:

G = 2 * AUC - 1

Где G — коэффициент Джини, а AUC — значение ROC-AUC. Эта нормализация гарантирует, что случайная угадывание даст ожидаемое значение 0, а верхняя граница составляет 1.

Ссылки

[1]

Статья Википедии о кривой ROC

[2]

Анализ части кривой ROC. McClish, 1989

[3]

Provost, F., Domingos, P. (2000). Well-trained PETs: Improving probability estimation trees (Section 6.2), CeDER Working Paper #IS-00-04, Stern School of Business, New York University.

[4]

Fawcett, T. (2006). An introduction to ROC analysis. Pattern Recognition Letters, 27(8), 861-874.

[5]

Hand, D.J., Till, R.J. (2001). A Simple Generalisation of the Area Under the ROC Curve for Multiple Class Classification Problems. Machine Learning, 45(2), 171-186.

[6]

Статья Википедии о коэффициенте Джини

Примеры

Бинарный случай:

>>> from sklearn.datasets import load_breast_cancer
>>> from sklearn.linear_model import LogisticRegression
>>> from sklearn.metrics import roc_auc_score
>>> X, y = load_breast_cancer(return_X_y=True)
>>> clf = LogisticRegression(solver="liblinear", random_state=0).fit(X, y)
>>> roc_auc_score(y, clf.predict_proba(X)[:, 1])
np.float64(0.99...)
>>> roc_auc_score(y, clf.decision_function(X))
np.float64(0.99...)

Многоклассовый случай:

>>> from sklearn.datasets import load_iris
>>> X, y = load_iris(return_X_y=True)
>>> clf = LogisticRegression(solver="liblinear").fit(X, y)
>>> roc_auc_score(y, clf.predict_proba(X), multi_class='ovr')
np.float64(0.99...)

Многометковый случай:

>>> import numpy as np
>>> from sklearn.datasets import make_multilabel_classification
>>> from sklearn.multioutput import MultiOutputClassifier
>>> X, y = make_multilabel_classification(random_state=0)
>>> clf = MultiOutputClassifier(clf).fit(X, y)
>>> # get a list of n_output containing probability arrays of shape
>>> # (n_samples, n_classes)
>>> y_pred = clf.predict_proba(X)
>>> # extract the positive columns for each output
>>> y_pred = np.transpose([pred[:, 1] for pred in y_pred])
>>> roc_auc_score(y, y_pred, average=None)
array([0.82..., 0.86..., 0.94..., 0.85... , 0.94...])
>>> from sklearn.linear_model import RidgeClassifierCV
>>> clf = RidgeClassifierCV().fit(X, y)
>>> roc_auc_score(y, clf.decision_function(X), average=None)
array([0.81..., 0.84... , 0.93..., 0.87..., 0.94...])

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

Основные моменты выпуска scikit-learn 1.4

Основные моменты выпуска scikit-learn 0.22

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

Отбор признаков на основе модели и последовательный отбор признаков

Многоклассовая кривая ROC (Receiver Operating Characteristic)

Статистическое сравнение моделей с использованием поиска по сетке

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

Spec-Zone.ru

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