このページは Cloud Translation API によって翻訳されました。
Switch to English

tf.keras.metrics.AUC

TensorFlow 1つのバージョン GitHubの上のソースを表示

リーマン和を経由しておおよそのAUC(曲線下面積)を計算します。

:から継承Metric

ノートPCで使用されます

チュートリアルで使用されます

このメトリックは、4つのローカル変数を作成しtrue_positivestrue_negativesfalse_positivesfalse_negatives AUCを計算するために使用されています。 AUC曲線を離散化するために、しきい値の直線離間セットがリコールと精度値の計算対に使用されます。 PR-曲線下面積は、リコールによって精度値の高さを使用して計算されながら、ROC曲線下面積は、したがって、偽陽性率によってリコール値の高さを用いて計算されます。

この値は、最終的として返されるauc 、リコール値(前述の変数を用いて計算)に対する精度の離散化曲線下面積を計算冪等操作。 num_thresholds変数を制御し、より密接に真のAUCを近似しきい値の大きな番号の離散化の度合い。近似の品質が劇的に応じて異なる場合がありnum_thresholdsthresholdsパラメータは、手動でより均等に予測を分割しきい値を指定するために使用することができます。

最良の結果を得るために、 predictions [1,0]の範囲内に略均一に分布されるべきであり、そうでない場合AUC近似の品質が低下することが0または1の周囲にピークに達していません。設定summation_method AUCの低下や上限推定値を提供することで、近似における誤差を定量化することができます「専攻」「minoring」またはに。

場合sample_weightありませんNone 、重みは1使用をデフォルトとsample_weight値をマスクする0の。

num_thresholds 200に(オプション)デフォルトのROC曲線を離散化するときに使用するしきい値の数。値は> 1でなければなりません。
curve (オプション)精密リコール曲線のための「ROC」[デフォルト]か「PR」、計算されるカーブの名前を指定します。
summation_method (オプション)を指定リーマン加算法を使用します。 「補間」(デフォルト)のための中間点の加算方式が適用されROC 。 PR-AUC、補間(真/偽の)陽性ではなく、高精度である割合(詳細については、デイビス&Goadrich 2006を参照)。 「minoringは」間隔との間隔を減少させるための右の和を増大させるための左の和を適用します。 「専攻」の反対を行います。
name メトリックインスタンスの(オプション)文字列名。
dtype メトリック結果の(任意)データ型。
thresholds 浮動小数点値の(任意)Aリストは、曲線を離散化するための閾値として使用します。セットした場合、 num_thresholdsパラメータは無視されます。値は[0、1]であるべきです。エンドポイントしきい値は正確に0又は1に等しい自動的に正確な予測を処理するために、これらに付属する小さな正のイプシロン値の{-epsilon、1つの+イプシロン}に等しいです。
multi_label AUCは、各ラベルについて別々に計算され、データは、AUCの計算の前に単一のラベルに平坦化されるべきであるならば、標識、または(場合はFalse)にわたって平均されるマルチラベルデータは、そのように扱われるべきかどうかを示すブール値。マルチラベルデータがAUCに渡されたとき、後者の場合には、各ラベル予測ペアは、個々のデータ点として扱われます。マルチクラスのデータのためにFalseに設定する必要があります。
label_weights マルチラベルデータのための計算のAUCに使用される非負の重みの(オプション)のリスト、アレイ、又はテンソル。ときmulti_label Trueで、重みはそれらがマルチラベルAUCを生成するために平均化され、個々のラベルのAUCに適用されます。それは偽だとき、彼らはデータを平坦化に混同行列を計算する際に、個々のラベル予測を重み付けするために使用されています。 label_weightsを平坦化する前にのみ、そのラベルの指数に依存するのに対して、これは、そのラベルの値に応じて、例えばそのclass_weights重みとは異なりclass_weightsであることに留意されたいです。したがって、 label_weightsマルチクラスのデータのために使用すべきではありません。

スタンドアロンの使用:

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
m.result().numpy()
0.75
m.reset_states()
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:

 model.compile(optimizer='sgd', loss='mse', metrics=[tf.keras.metrics.AUC()])
 

thresholds AUCを評価するために使用されるしきい値。

メソッド

interpolate_pr_auc

ソースを表示

補間式は、デイビス&Goadrich 2006のセクション4に触発さ。

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

私たちが導き出す&次のように紙に存在しない、閉じた式を使用し、ここで注意してください:

精度= TP /(TP + FP)= TP / P

TP(真陽性)、FP(偽陽性)と、連続する閾値との間の各区間[A、B]内で直線的に変化としてその和P = TP + FP(予測正)のすべてのモデリング、我々が取得します

精度傾き= DTP / DP =(TP_B - TP_A)/(P_B - P_A)=(TP - TP_A)/(P - P_A)精度=(TP_A +スロープ*(P - P_A))/ P

間隔内の領域は、(傾き/ total_pos_weight)倍

int_A ^ B {Precision.dP} = int_A ^ B {(TP_A +スロープ*(P - P_A))* DP / P} int_A ^ B {Precision.dP} = int_A ^ B {スロープ*のdP +インターセプト* DP / P}

ここで、切片= TP_A - スロープ* P_A = TP_B - 傾き* P_B、その結果

int_A ^ B {Precision.dP} = TP_B - TP_A +インターセプト*ログ(P_B / P_A)

要因を戻す(スロープ/ total_pos_weight)私たちは脇に置くだろう、我々が得ます

スロープ* [DTP +インターセプト*ログ(P_B / P_A)] / total_pos_weight

どこDTP == TP_B - TP_A。

なおときP_A == 0上記の計算を簡素化へ

int_A ^ B {Precision.dTP} = int_A ^ B {スロープ* DTP} =勾配*(TP_B - TP_A)

これは> 0真陽性を持つ最初のバケットを通じて一定の精度を帰本当に等価です。

戻り値
pr_auc PR曲線下面積の近似値。

reset_states

ソースを表示

メトリックの状態変数のすべてをリセットします。

メトリックは、トレーニング中に評価されている場合、この関数は、エポック/ステップの間と呼ばれます。

result

ソースを表示

計算して返しメトリック値テンソル。

結果の計算は単純に状態変数を使用してメトリック値を算出する冪等操作です。

update_state

ソースを表示

混同行列の統計情報を蓄積します。

引数
y_true 地上真理値。
y_pred 予測値。
sample_weight 各例の任意の重み。 1.デフォルトは指定できTensorそのランク0であるか、同じランクy_true 、とにbroadcastableでなければならないy_true

戻り値
更新オペアンプ。