ロジスティックモデルのRMSE(二乗平均平方根誤差)


10

RMSE(二乗平均平方根誤差)を使用してさまざまなロジスティックモデルを比較することの妥当性について質問があります。応答のいずれかである01との予測が間確率でありますか0- 1

以下に適用される方法は、バイナリ応答でも有効ですか?

# Using glmnet
require(glmnet)
load(url("https://github.com/cran/glmnet/raw/master    /data/BinomialExample.RData"))
cvfit = cv.glmnet(x, y, family = "binomial", type.measure = "mse")
A <- predict(cvfit, newx = x, s = "lambda.min", type = "response")
RMSE1 <- mean((y - A)^2)
# 0.05816881

# glm
mydata <- read.csv("https://stats.idre.ucla.edu/stat/data/binary.csv")
mydata$rank <- factor(mydata$rank)
mylogit <- glm(admit ~ gre + gpa + rank, data = mydata, family = "binomial")
AAA <- predict(mylogit, newdata = mydata, type = "response")
RMSE2 <- mean((mydata$admit - AAA)^2)
# 0.194714

1
この場合には、ブライヤーのスコアを参照してくださいと呼ばれるactuaries.org/ASTIN/Colloquia/Hague/Papers/Lo.pdf

回答:


13

「彼は応答のいずれかである[t]は理由を理解するために0、または1[しかし]予測が間確率で0- 1」、あなたが作業しているモデルのタイプを理解する必要があります。ペナルティメソッドと相互検証を取り除き、基本的なロジスティック回帰を実行します。パラメータは、対数オッズ/ロジスティックスケールに適合します。これは「線形予測子」と呼ばれます。(これについて詳しくは、ここで私の答えを読むのに役立つかもしれません:ロジットモデルとプロビットモデルの違い)x値をプラグインして簡略化した場合、値は、「成功」のオッズのモデルの予測自然対数になります1)。その値を累乗すると、モデルの予測オッズが得られます「成功」の。予測確率を取得するには、オッズを(odds /(1 + odds)を介して確率に変換する必要があります。(これの詳細については、ここで私の答えを読むのに役立つかもしれません:ロジスティック回帰のオッズ比に対する単純な予測の解釈。)これでも、予測されたクラスに到達できません。これを取得するには、予測確率をしきい値と比較する必要があります。しきい値よりも低い場合は、「失敗」(0)を予測し、それ以外の場合は「成功」(1)を予測します。最も一般的なデフォルトのしきい値は.5ですが、これは多くの場合最適ではありません。Rのpredict.glm()関数を使用すると、type="link"、線形予測子のスケールで予測を出力します(つまり、上記のすべての変換の前に)が、このコンテキストでは役立ちません。を使用type="response"すると、予測確率が得られます。


バイナリ(たとえば、ロジスティック)回帰モデルが応答をどの程度予測できるかを評価する場合、いくつかのオプションがあります。

  1. 最初の最も直感的な方法は、予測されたクラスと観測されたクラスを比較して、正しいパーセントを計算することです。直感的ですが問題があります。モデルの他の側面が適切に適合していることに加えて、しきい値が最適であることが条件です。また、大量の情報(つまり、予測された確率がしきい値からどれだけ離れているか)が捨てられます。これは良いことではありません。
  2. 次のオプションは、受信者動作特性(ROC)曲線の下の領域を使用することです。ほとんどの人はこのオプションを使用します。正しいパーセントを使用するよりもはるかに優れています。しかし、ほとんどの人が気づいていないAUCの問題は、実際の正確さではなく、予測の適切な順序を実際に測定していることです。つまり、の4つの観測値の予測確率があり.2, .4, .6, .8、それらすべてに.01を追加した場合(.21, .41, .61, .81)、両方の予測確率セットの精度が等しくなくても、AUCは同じになります。
  3. モデルを評価する3番目の方法は、適切なスコア関数を使用することです。おそらく、あなたのコンテキストで最も人気のあるスコア関数は、ブライアースコアです。@fcoppensが注記しているように、コード内のメソッドはブライアスコアです。ある観測が別の観測よりも「成功」である可能性が高いとモデルが適切に予測するかどうかだけでなく、モデルの予測確率が実際に正しいかどうかを評価します。

ブライアースコアがあまり知られていないことと使用されていることは残念です。これらの方法の相対的な直感性は、正しいパーセント> AUC>ブライアスコアですが、真の情報提供はその逆です。つまり、ブライアスコア> AUC>正しいパーセントです。モデルのパフォーマンスの単純な測定のみが必要な場合、これらの方法の違いはそれほど重要ではありませんが、これらの方法を使用してモデルを最適化したりモデルを選択したりする場合は、劣った方法を使用するとパフォーマンスが低下します。 。


1

エラー項が平均ゼロで正規分布している場合はRMSEを使用する方がはるかに理にかなっていますが、バイナリの結果ではそうではありません。したがって、可能性の違いを比較するなど、バイナリの結果に役立つさまざまなアプローチを使用する必要があると思います。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.