Sklearn を使用して python でバランスの取れた精度を計算する方法
バランスの取れた精度は、分類モデルのパフォーマンスを評価するために使用できる指標です。
次のように計算されます。
バランスの取れた精度= (感度 + 特異度) / 2
金:
- 感度: 「真陽性率」 – モデルが検出できる陽性症例の割合。
- 特異度: 「真陰性率」 – モデルが検出できる陰性ケースの割合。
このメトリクスは、2 つのクラスのバランスが崩れている場合、つまり、一方のクラスが他方のクラスよりも多く表示される場合に特に役立ちます。
たとえば、スポーツ アナリストがロジスティック回帰モデルを使用して、400 人の大学バスケットボール選手が NBA にドラフトされるかどうかを予測するとします。
次の混同行列は、モデルによって行われた予測を要約したものです。
モデルのバランスの取れた精度を計算するには、まず感度と特異度を計算します。
- 感度: 「真陽性率」 = 15 / (15 + 5) = 0.75
- 特異度: 「真陰性率」 = 375 / (375 + 5) = 0.9868
次に、バランスの取れた精度を次のように計算できます。
- バランスの取れた精度 = (感度 + 特異度) / 2
- バランスの取れた精度 = (0.75 + 9868) / 2
- バランスの取れた精度 = 0.8684
モデルの平衡精度は0.8684であることがわかります。
次の例は、Python のsklearnライブラリのBalanced_accuracy_score()関数を使用して、この特定のシナリオのバランスの取れた精度を計算する方法を示しています。
例: Python でバランスのとれた精度を計算する
次のコードは、予測クラスの配列と実際のクラスの配列を定義し、Python でモデルのバランスの取れた精度を計算する方法を示しています。
import numpy as np from sklearn. metrics import balanced_accuracy_score #define array of actual classes actual = np. repeat ([1, 0], repeats=[20, 380]) #define array of predicted classes pred = np. repeat ([1, 0, 1, 0], repeats=[15, 5, 5, 375]) #calculate balanced accuracy score balanced_accuracy_score(actual, pred) 0.868421052631579
平衡精度は0.8684です。これは、以前に手動で計算した値と一致します。
注: Balanced_accuracy_score()関数の完全なドキュメントはここで見つけることができます。