Python で auc (曲線下面積) を計算する方法
ロジスティック回帰は、応答変数がバイナリの場合に回帰モデルを近似するために使用する統計手法です。
ロジスティック回帰モデルがデータセットにどの程度適合しているかを評価するには、次の 2 つの指標を確認します。
- 感度:結果が実際に肯定的な場合に、モデルが観測値に対して肯定的な結果を予測する確率。これは「真陽性率」とも呼ばれます。
- 特異性:結果が実際には陰性である場合に、モデルが観測値に対して陰性の結果を予測する確率。これは「真のネガティブ率」とも呼ばれます。
これら 2 つの測定値を視覚化する 1 つの方法は、「受信機動作特性」曲線を表すROC 曲線を作成することです。
これは、感度を Y 軸に、(1 – 特異度) を X 軸に示したグラフです。
データの分類におけるロジスティック回帰モデルの有効性を定量化する 1 つの方法は、「曲線の下の面積」を表すAUCを計算することです。
AUC が 1 に近づくほど、モデルは優れています。
次のステップバイステップの例は、Python でロジスティック回帰モデルの AUC を計算する方法を示しています。
ステップ 1: パッケージをインポートする
まず、Python でロジスティック回帰を実行するために必要なパッケージをインポートします。
import pandas as pd import numpy as np from sklearn. model_selection import train_test_split from sklearn. linear_model import LogisticRegression from sklearn import metrics
ステップ 2: ロジスティック回帰モデルを当てはめる
次に、データセットをインポートし、それにロジスティック回帰モデルを当てはめます。
#import dataset from CSV file on Github
url = "https://raw.githubusercontent.com/Statorials/Python-Guides/main/default.csv"
data = pd. read_csv (url)
#define the predictor variables and the response variable
X = data[[' student ',' balance ',' income ']]
y = data[' default ']
#split the dataset into training (70%) and testing (30%) sets
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size= 0.3 ,random_state= 0 )
#instantiate the model
log_regression = LogisticRegression()
#fit the model using the training data
log_regression. fit (X_train,y_train)
ステップ 3: AUC を計算する
metrics.roc_auc_score()関数を使用して、モデルの AUC を計算できます。
#use model to predict probability that given y value is 1
y_pred_proba = log_regression. predict_proba (X_test)[::, 1 ]
#calculate AUC of model
auc = metrics. roc_auc_score (y_test, y_pred_proba)
#print AUC score
print (auc)
0.5602104030579559
この特定のモデルの AUC (曲線下面積) は0.5602です。
AUC スコアが0.5のモデルは、ランダムな推測を行うモデルと同等であることを思い出してください。
したがって、ほとんどの場合、AUC スコアが0.5602のモデルは、観測値を正しいクラスに分類する能力が低いと考えられます。
追加リソース
次のチュートリアルでは、ROC 曲線と AUC スコアに関する追加情報を提供します。