Spec-Zone.ru › TensorFlow 1.15

tf.keras.metrics.AUC

Просмотреть исходный код на GitHub

Вычисляет приблизительное значение AUC (площадь под кривой) с помощью суммирования Римана.

Наследуется от: Metric

Просмотр псевдонимов

Псевдонимы для миграции

См. Руководство по миграции для получения дополнительной информации.

tf.compat.v1.keras.metrics.AUC, `tf.compat.v2.keras.metrics.AUC`, `tf.compat.v2.metrics.AUC`

tf.keras.metrics.AUC(
    num_thresholds=200, curve='ROC', summation_method='interpolation', name=None,
    dtype=None, thresholds=None
)

Эта метрика создаёт четыре локальных переменных, true_positives, true_negatives, false_positives и false_negatives, которые используются для вычисления AUC. Для дискретизации кривой AUC используется линейно распределённый набор пороговых значений для вычисления пар значений отзыва и точности. Площадь под кривой ROC вычисляется по высоте значений отзыва относительно скорости ложноположительных результатов, а площадь под кривой PR вычисляется по высоте значений точности относительно отзыва.

Это значение в конечном итоге возвращается как auc, идемпотентная операция, которая вычисляет площадь под дискретизированной кривой точности по отношению к значениям отзыва (вычисленным с использованием упомянутых выше переменных). Переменная num_thresholds управляет степенью дискретизации, при большем количестве пороговых значений приближение к истинному значению AUC становится точнее. Качество приближения может существенно варьироваться в зависимости от num_thresholds. Параметр thresholds можно использовать для ручного задания пороговых значений, которые более равномерно распределяют предсказания.

Для достижения наилучших результатов, predictions должно быть распределено примерно равномерно в диапазоне [0, 1] и не должно иметь пиков вокруг 0 или 1. Качество приближения AUC может быть плохим, если это не так. Установка summation_method в 'minoring' или 'majoring' может помочь количественно оценить ошибку приближения, предоставив нижнюю или верхнюю оценку AUC.

Если sample_weight равно None, веса по умолчанию равны 1. Использование sample_weight со значением 0 для маскировки значений.

Использование:

m = tf.keras.metrics.AUC(num_thresholds=3)
m.update_state([0, 0, 1, 1], [0, 0.5, 0.3, 0.9])

# threshold values are [0 - 1e-7, 0.5, 1 + 1e-7]
# tp = [2, 1, 0], fp = [2, 0, 0], fn = [0, 1, 2], tn = [0, 2, 2]
# recall = [1, 0.5, 0], fp_rate = [1, 0, 0]
# auc = ((((1+0.5)/2)*(1-0))+ (((0.5+0)/2)*(0-0))) = 0.75

print('Final result: ', m.result().numpy())  # Final result: 0.75

Использование с API tf.keras:

model = tf.keras.Model(inputs, outputs)
model.compile('sgd', loss='mse', metrics=[tf.keras.metrics.AUC()])
Аргументы
num_thresholds (Необязательно) По умолчанию равно 200. Количество пороговых значений для дискретизации кривой ROC. Значения должны быть > 1.
curve (Необязательно) Указывает имя вычисляемой кривой, 'ROC' [по умолчанию] или 'PR' для кривой точности-полноты.
summation_method (Необязательно) Указывает метод суммирования Римана, используемый (https://en.wikipedia.org/wiki/Riemann_sum): 'interpolation' [по умолчанию], применяется схема суммирования по средним точкам для ROC. Для PR-AUC интерполирует (истинные/ложные) положительные значения, но не отношение, которое является точностью (см. Davis & Goadrich 2006 для получения подробностей); 'minoring', который применяет левое суммирование для возрастающих интервалов и правое суммирование для убывающих интервалов; 'majoring', который делает обратное.
name (Необязательно) Строковое имя экземпляра метрики.
dtype (Необязательно) Тип данных результата метрики.
thresholds (Необязательно) Список чисел с плавающей запятой, используемых в качестве пороговых значений для дискретизации кривой. Если задано, параметр num_thresholds игнорируется. Значения должны быть в [0, 1]. Пороговые значения конечных точек, равные {-epsilon, 1+epsilon} для небольшого положительного значения epsilon, будут автоматически включены, чтобы корректно обрабатывать предсказания, равные точно 0 или 1.

Методы

interpolate_pr_auc

Просмотреть исходный код

interpolate_pr_auc()

Формула интерполяции, вдохновлённая разделом 4 статьи Davis & Goadrich 2006.

https://www.biostat.wisc.edu/~page/rocpr.pdf

Здесь мы выводим и используем замкнутую формулу, отсутствующую в статье, следующим образом:

Точность = ИП / (ИП + ЛП) = ИП / П

Моделируя все ИП (истинные положительные), ЛП (ложные положительные) и их сумму П = ИП + ЛП (предсказанные положительные) как линейно изменяющиеся внутри каждого интервала [A, B] между последовательными пороговыми значениями, мы получаем

Наклон точности = dИП / dП = (ИП_В - ИП_А) / (П_В - П_А) = (ИП - ИП_А) / (П - П_А) Точность = (ИП_А + наклон * (П - П_А)) / П

Площадь внутри интервала равна (наклон / общий_вес_положительных) умноженному на

int_A^B{Точность.dП} = int_A^B{(ИП_А + наклон * (П - П_А)) * dП / П} int_A^B{Точность.dП} = int_A^B{наклон * dП + перехват * dП / П}

где перехват = ИП_А - наклон * П_А = ИП_В - наклон * П_В, что приводит к

int_A^B{Точность.dП} = ИП_В - ИП_А + перехват * log(П_В / П_А)

Возвращая множитель (наклон / общий_вес_положительных), который мы отложили, мы получаем

наклон * [dИП + перехват * log(П_В / П_А)] / общий_вес_положительных

где dИП == ИП_В - ИП_А.

Обратите внимание, что когда П_А == 0, вышеприведённое вычисление упрощается до

int_A^B{Точность.dИП} = int_A^B{наклон * dИП} = наклон * (ИП_В - ИП_А)

что на самом деле эквивалентно подстановке постоянной точности в течение первого интервала с >0 истинными положительными значениями.

Возвращаемое значение
pr_auc приближение площади под кривой точности-полноты.

reset_states

Просмотреть исходный код

reset_states()

Сбрасывает все переменные состояния метрики.

Эта функция вызывается между эпохами/шагами, когда метрика оценивается во время обучения.

result

Просмотреть исходный код

result()

Вычисляет и возвращает тензор значения метрики.

Вычисление результата — это идемпотентная операция, которая просто вычисляет значение метрики, используя переменные состояния.

update_state

Просмотреть исходный код

update_state(
    y_true, y_pred, sample_weight=None
)

Накапливает статистику матрицы несоответствия.

Аргументы
y_true Значения фактического результата.
y_pred Значения предсказаний.
sample_weight Необязательные веса каждого примера. По умолчанию 1. Может быть Tensor, ранг которого равен 0 или совпадает с рангом y_true, и должен быть совместим для трансляции с y_true.
Возвращаемое значение
Операция обновления.

© 2020 The TensorFlow Authors. All rights reserved.
Licensed under the Creative Commons Attribution License 3.0.
Code samples licensed under the Apache 2.0 License.
https://www.tensorflow.org/versions/r1.15/api_docs/python/tf/keras/metrics/AUC

Spec-Zone.ru

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