R で混同行列を作成する方法 (ステップバイステップ)
ロジスティック回帰は、応答変数がバイナリの場合に使用できる回帰の一種です。
ロジスティック回帰モデルの品質を評価する一般的な方法は、混同行列を作成することです。これは、モデルの予測値とテスト データセットの実際の値を示す 2 × 2 の表です。
次の段階的な例は、R で混同行列を作成する方法を示しています。
ステップ 1: ロジスティック回帰モデルを当てはめる
この例では、 ISLRパッケージのデフォルトのデータセットを使用します。学生のステータス、銀行残高、年収を使用して、特定の人がローンを滞納する可能性を予測します。
次のコードは、ロジスティック回帰モデルをこのデータセットに適合させる方法を示しています。
#load necessary packages library (caret) library (InformationValue) library (ISLR) #load dataset data <-Default #split dataset into training and testing set set. seeds (1) sample <- sample(c(TRUE, FALSE), nrow(data), replace= TRUE , prob=c(0.7,0.3)) train <- data[sample, ] test <- data[!sample, ] #fit logistic regression model model <- glm(default~student+balance+income, family=" binomial ", data=train)
ステップ 2: 混同行列を作成する
次に、キャレットパッケージのconfusionMatrix()関数を使用して混同行列を作成します。
#use model to predict probability of default
predicted <- predict(model, test, type="response")
#convert defaults from "Yes" and "No" to 1's and 0's
test$default <- ifelse(test$default==" Yes ", 1, 0)
#find optimal cutoff probability to use to maximize accuracy
optimal <- optimalCutoff(test$default, predicted)[1]
#create confusion matrix
confusionMatrix(test$default, predicted)
0 1
0 2912 64
1 21 39
ステップ 3: 混同行列を評価する
混同行列を使用して次の指標を計算することもできます。
- 感度: 「真の陽性率」 – モデルがデフォルトとなると正しく予測した個人の割合。
- 特異性: 「真の陰性率」 – モデルがデフォルトにならないと正しく予測した個人の割合。
- 合計誤分類率:モデルによって行われた合計誤分類の割合。
次のコードは、これらのメトリクスを計算する方法を示しています。
#calculate sensitivity
sensitivity(test$default, predicted)
[1] 0.3786408
#calculate specificity
specificity(test$default, predicted)
[1] 0.9928401
#calculate total misclassification error rate
misClassError(test$default, predicted, threshold =optimal)
[1] 0.027
このモデルの合計分類エラー率は2.7%です。
一般に、この率が低いほど、モデルは結果をより適切に予測できます。したがって、この特定のモデルは、個人がデフォルトするかどうかを予測するのに非常に効果的であることが証明されています。