なぜロジスティック回帰最適化にニュートンの方法を使用するのが反復再加重最小二乗と呼ばれるのですか?
ロジスティック損失と最小二乗損失は完全に異なるため、私には明らかではないようです。
なぜロジスティック回帰最適化にニュートンの方法を使用するのが反復再加重最小二乗と呼ばれるのですか?
ロジスティック損失と最小二乗損失は完全に異なるため、私には明らかではないようです。
回答:
概要:GLMは、Dimitriy V. Masterovが指摘しているように、代わりに予想されるヘッシアンを持つニュートンラプソンであるフィッシャースコアリングによって適合します(つまり、観測情報ではなくフィッシャー情報の推定値を使用します)。正準リンク関数を使用している場合、観測されたヘッシアンが予想ヘッシアンと等しいため、NRとフィッシャーのスコアリングは同じ場合になります。いずれにせよ、フィッシャーのスコアリングは実際に重み付き最小二乗線形モデルに適合しており、これからの係数推定値はロジスティック回帰尤度の最大値に収束します*。ロジスティック回帰をすでに解決済みの問題に当てはめることを減らすことの他に、ロジスティック回帰について学習するために最終的なWLS近似で線形回帰診断を使用できるという利点もあります。
私は、これはロジスティック回帰に焦点を当て続けるつもりですが、GLMSにおける最大尤度のより一般的な視点のために私はのセクション15.3をお勧めします。この章(私はそれがジョン・フォックスのからだと思い、より一般的な設定で、これと派生のIRLSを通過応用回帰分析と一般化線形モデル)。
最後にコメントを見る
我々は、フォームの何か繰り返すことによって我々のGLMをフィッティングする ここで、は対数尤度で、は対数尤度の観測されたヘッシアンまたは予想されたヘッシアンです。ℓ J M
リンク関数は、条件付き平均を線形予測子にマッピングする関数あるため、平均のモデルはです。してみましょう平均に線形予測をマッピング逆リンク関数です。μ iが = E (Y iは| xはIを)G (μ I)= X T I β H
ロジスティック回帰の場合、独立した観測値を持つベルヌーイ尤度があるため、 デリバティブを取る、 ∂ ℓ
ここで、正規リンク関数を使用していると仮定します。次になので、これは、 したがって さらに、まだを使用して、 g − 1 c(x ):= h c(x )= 1 H ' C =H、C⋅(1-HC)∂ℓ∇ℓ(B、Y)=XT(Y - Y)。HC∂2ℓ
ましょう 次に、 あり、これにれていないことに注意してください。したがって、(これを関数として表示しているため、ランダムなものはのみです) 。したがって、ロジスティック回帰で標準リンクを使用する場合、フィッシャーのスコアリングはニュートンラプソンと同等であることを示しました。また、により、は常に負の定値になりますが、数値的にはが近すぎる場合
ここで、作業応答 を作成し、ことに注意してください
これはすべて、反復処理することで対数尤度を最適化できることを意味します。 およびはまさにの加重最小二乗回帰の上の。
これをチェックインするR
:
set.seed(123)
p <- 5
n <- 500
x <- matrix(rnorm(n * p), n, p)
betas <- runif(p, -2, 2)
hc <- function(x) 1 /(1 + exp(-x)) # inverse canonical link
p.true <- hc(x %*% betas)
y <- rbinom(n, 1, p.true)
# fitting with our procedure
my_IRLS_canonical <- function(x, y, b.init, hc, tol=1e-8) {
change <- Inf
b.old <- b.init
while(change > tol) {
eta <- x %*% b.old # linear predictor
y.hat <- hc(eta)
h.prime_eta <- y.hat * (1 - y.hat)
z <- (y - y.hat) / h.prime_eta
b.new <- b.old + lm(z ~ x - 1, weights = h.prime_eta)$coef # WLS regression
change <- sqrt(sum((b.new - b.old)^2))
b.old <- b.new
}
b.new
}
my_IRLS_canonical(x, y, rep(1,p), hc)
# x1 x2 x3 x4 x5
# -1.1149687 2.1897992 1.0271298 0.8702975 -1.2074851
glm(y ~ x - 1, family=binomial())$coef
# x1 x2 x3 x4 x5
# -1.1149687 2.1897992 1.0271298 0.8702975 -1.2074851
彼らは同意します。
今、私たちはの簡素化取得しない正規のリンク使用していない場合はにので、はるかに複雑になり、私たちはそれゆえ参照フィッシャースコアリングでを使用することによる顕著な違い。
これがどのように行われるかです:ヘッシアンが主な難題になるように、一般的なをすでに解決しました。我々は必要
期待の線形性を介して、を取得するために必要なことは、各出現をモデルでの平均に置き換えることだけです。したがって、加数の各項には、 しかし、実際に最適化を行うには、各を推定する必要があり、ステップが最良の推測です。これは、これが
さて、 正規リンクの下では、前のセクションからを減らし。これにより、書くことができます。 ただし、これは必ずしもそのものではなくであるため、Newton-Raphsonとは異なる場合があります。すべての、数値の問題は別として、は負定値になります。
我々は したがって、新しい作業応答をとし、、ます。
すべて一緒にを繰り返します これは、必ずしもニュートンラプソンである必要はないことを除いて、WLS回帰のシーケンスです。
Newton-Raphsonへの接続を強調するためにこのように書きましたが、多くの場合、人々は更新を考慮して、新しいポイントがそれぞれWLSソリューションではなくWLSソリューションになるようにします。現在の点。これを行うには、次のようにします そのため、この方法で処理すると、実際の応答が表示されます。の形式を取りますが、同じものです。
これを使用して、以前と同じシミュレートされたデータでプロビット回帰を実行することで機能することを確認しましょう(これは正準リンクではないため、このより一般的な形式のIRLSが必要です)。
my_IRLS_general <- function(x, y, b.init, h, h.prime, tol=1e-8) {
change <- Inf
b.old <- b.init
while(change > tol) {
eta <- x %*% b.old # linear predictor
y.hat <- h(eta)
h.prime_eta <- h.prime(eta)
w_star <- h.prime_eta^2 / (y.hat * (1 - y.hat))
z_star <- (y - y.hat) / h.prime_eta
b.new <- b.old + lm(z_star ~ x - 1, weights = w_star)$coef # WLS
change <- sqrt(sum((b.new - b.old)^2))
b.old <- b.new
}
b.new
}
# probit inverse link and derivative
h_probit <- function(x) pnorm(x, 0, 1)
h.prime_probit <- function(x) dnorm(x, 0, 1)
my_IRLS_general(x, y, rep(0,p), h_probit, h.prime_probit)
# x1 x2 x3 x4 x5
# -0.6456508 1.2520266 0.5820856 0.4982678 -0.6768585
glm(y~x-1, family=binomial(link="probit"))$coef
# x1 x2 x3 x4 x5
# -0.6456490 1.2520241 0.5820835 0.4982663 -0.6768581
そして再び2人は同意します。
最後に、収束に関するいくつかの簡単なコメント(これは非常に長くなり、最適化の専門家でもないので、この簡潔さを保ちます)。理論的には各は負定値ですが、悪い初期条件により、このアルゴリズムの収束が妨げられる可能性があります。上記のプロビットの例では、初期条件をこれに変更すると、これは疑わしい初期条件のようには見えません。その初期化とこれらのシミュレートされたデータを使用してIRLSプロシージャを実行すると、ループを2回目までに正確に丸められるが存在するため、重みは未定義になります。与えたアルゴリズムで正規リンクを使用している場合、で割ることはありません。b.init=rep(1,p)
未定義の重みを取得しますが、完全な分離の場合など、いくつかのがまたはに近づいている状況がある場合、勾配が何も到達せずに収束するため、収束しません。