近似 ROC 或 PR 曲線的 AUC(曲線下麵積)。
用法
tf.keras.metrics.AUC(
num_thresholds=200, curve='ROC',
summation_method='interpolation', name=None, dtype=None,
thresholds=None, multi_label=False, num_labels=None, label_weights=None,
from_logits=False
)
參數
-
num_thresholds
(可選)默認為 200。離散化 roc 曲線時使用的閾值數。值必須 > 1。 -
curve
(可選)指定要計算的曲線的名稱,'ROC' [默認] 或 'PR' 用於 Precision-Recall-curve。 -
summation_method
(可選)指定黎曼求和法用過的。 'interpolation'(默認)應用mid-point求和方案ROC
.對於PR-AUC,插入(真/假)陽性,但不插入精確率(詳見 Davis & Goadrich 2006); 'minoring' 對遞增區間應用左求和,對遞減區間應用右求和; 'majoring' 則相反。 -
name
(可選)指標實例的字符串名稱。 -
dtype
(可選)度量結果的數據類型。 -
thresholds
(可選)用作離散化曲線閾值的浮點值列表。如果設置,num_thresholds
參數將被忽略。值應在 [0, 1] 中。端點閾值等於 {-epsilon, 1+epsilon} 對於小的正 epsilon 值將自動包含在這些閾值中,以正確處理等於 0 或 1 的預測。 -
multi_label
布爾值,表示是否應該這樣對待多標簽數據,其中 AUC 是針對每個標簽單獨計算,然後在標簽之間進行平均,或者(當為 False 時)是否應該在 AUC 計算之前將數據展平為單個標簽。在後一種情況下,當多標簽數據傳遞到 AUC 時,每個 label-prediction 對都被視為一個單獨的數據點。對於multi-class 數據,應設置為 False。 -
num_labels
(可選)標簽的數量,當multi_label
為 True 時使用。如果未指定num_labels
,則在第一次調用update_state
時創建狀態變量。 -
label_weights
(可選)用於計算多標簽數據的 AUC 的非負權重列表、數組或張量。當multi_label
為 True 時,權重將應用於各個標簽 AUC,然後對它們進行平均以生成多標簽 AUC。當它為 False 時,它們用於在計算扁平數據上的混淆矩陣時對各個標簽預測進行加權。請注意,這與 class_weights 不同,因為 class_weights 根據其標簽的值對示例進行加權,而 label_weights 僅取決於展平前該標簽的索引;因此label_weights
不應用於multi-class 數據。 -
from_logits
布爾值,指示預測(update_state
中的y_pred
)是概率還是 sigmoid logits。根據經驗,當使用 keras 損失時,損失的from_logits
構造函數參數應該與 AUCfrom_logits
構造函數參數匹配。
屬性
-
thresholds
用於評估 AUC 的閾值。
ROC(接收器操作特征;默認)或 PR(精確召回)曲線的 AUC(曲線下麵積)是二元分類器的質量度量。與準確度不同,與 cross-entropy 損失一樣,ROC-AUC 和 PR-AUC 評估模型的所有操作點。
此類使用黎曼和來近似 AUC。在度量累積階段,預測在預定義的桶中按值累積。然後通過插值 per-bucket 平均值來計算 AUC。這些桶定義了評估的操作點。
該指標創建四個局部變量,true_positives
, true_negatives
, false_positives
和 false_negatives
,用於計算 AUC。為了離散化 AUC 曲線,使用一組線性間隔的閾值來計算成對的召回率和精度值。因此,ROC-curve 下的區域是通過誤報率使用召回值的高度來計算的,而 PR-curve 下的區域是使用召回率的精度值的高度來計算的。
該值最終以 auc
的形式返回,這是一種冪等運算,用於計算精度與召回值的離散曲線下的麵積(使用上述變量計算)。 num_thresholds
變量控製離散化程度,閾值越多越接近真實 AUC。根據 num_thresholds
的不同,近似的質量可能會有很大差異。 thresholds
參數可用於手動指定閾值,從而更均勻地分割預測。
為了獲得真實 AUC 的最佳近似值,predictions
應大致均勻分布在 0、1 範圍內。如果不是這種情況,AUC 近似值的質量可能會很差。將 summation_method
設置為 'minoring' 或 'majoring' 可以通過提供 AUC 的下限或上限估計值來幫助量化近似誤差。
如果 sample_weight
是 None
,則權重默認為 1。使用 0 的 sample_weight
來屏蔽值。
單機使用:
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]
# tp_rate = 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
m.result().numpy()
0.75
m.reset_state()
m.update_state([0, 0, 1, 1], [0, 0.5, 0.3, 0.9],
sample_weight=[1, 0, 0, 1])
m.result().numpy()
1.0
compile()
API 的用法:
# Reports the AUC of a model outputting a probability.
model.compile(optimizer='sgd',
loss=tf.keras.losses.BinaryCrossentropy(),
metrics=[tf.keras.metrics.AUC()])
# Reports the AUC of a model outputting a logit.
model.compile(optimizer='sgd',
loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
metrics=[tf.keras.metrics.AUC(from_logits=True)])
相關用法
- Python tf.keras.metrics.AUC.merge_state用法及代碼示例
- Python tf.keras.metrics.Accuracy用法及代碼示例
- Python tf.keras.metrics.Accuracy.merge_state用法及代碼示例
- Python tf.keras.metrics.Mean.merge_state用法及代碼示例
- Python tf.keras.metrics.Hinge用法及代碼示例
- Python tf.keras.metrics.SparseCategoricalAccuracy.merge_state用法及代碼示例
- Python tf.keras.metrics.RootMeanSquaredError用法及代碼示例
- Python tf.keras.metrics.SparseCategoricalCrossentropy.merge_state用法及代碼示例
- Python tf.keras.metrics.sparse_categorical_accuracy用法及代碼示例
- Python tf.keras.metrics.FalseNegatives用法及代碼示例
- Python tf.keras.metrics.TrueNegatives用法及代碼示例
- Python tf.keras.metrics.RecallAtPrecision.merge_state用法及代碼示例
- Python tf.keras.metrics.SpecificityAtSensitivity用法及代碼示例
- Python tf.keras.metrics.Mean用法及代碼示例
- Python tf.keras.metrics.poisson用法及代碼示例
- Python tf.keras.metrics.LogCoshError用法及代碼示例
- Python tf.keras.metrics.MeanSquaredLogarithmicError用法及代碼示例
- Python tf.keras.metrics.FalsePositives.merge_state用法及代碼示例
- Python tf.keras.metrics.OneHotMeanIoU.merge_state用法及代碼示例
- Python tf.keras.metrics.TopKCategoricalAccuracy用法及代碼示例
注:本文由純淨天空篩選整理自tensorflow.org大神的英文原創作品 tf.keras.metrics.AUC。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。