ロジスティック回帰の正則化方法


42

Ridge、Lasso、ElasticNetなどの方法を使用した正則化は、線形回帰では非常に一般的です。私は次のことを知りたかったです:これらの方法はロジスティック回帰に適用できますか?その場合、ロジスティック回帰に使用する方法に違いはありますか?これらの方法が適用できない場合、ロジスティック回帰はどのように正規化されますか?


特定のデータセットを見ているので、データを計算に適したものにすることを検討する必要があります。たとえば、最初の計算が成功するようにデータを選択、スケーリング、オフセットします。または、これは方法と理由のより一般的な見方ですか(0に対して計算する特定のデータセットなし?
フィリップオークリー

1
これは、正則化の方法と理由のより一般的な見方です。私が出会った正則化方法(リッジ、なげなわ、Elasticnetなど)の入門テキストは、線形回帰の例を特に言及しました。ロジスティックに具体的に言及しているのは1つだけではないため、質問です。
TAK

1
ロジスティック回帰は、非アイデンティティリンク機能を使用したGLMの形式であり、ほとんどすべてが適用されます。
Firebug

1
このトピックに関するAndrew Ngのビデオを見つけましたか?
アントニ・パレラダ

リッジ、投げ縄、エラスティックネット回帰は一般的なオプションですが、正規化オプションはこれらだけではありません。たとえば、平滑化行列は大きな二次導関数を持つ関数にペナルティを課します。そのため、正則化パラメーターを使用すると、データの過剰適合と過小適合の間の良い妥協である回帰を「ダイヤルイン」できます。ridge / lasso / elastic net回帰と同様に、これらはロジスティック回帰でも使用できます。
モニカを

回答:


49

はい、回帰と分類の両方を含むすべての線形法で正則化を使用できます。回帰と分類の間にあまり違いはないことを示したいと思います。唯一の違いは損失関数です。

具体的には、線形法には、損失関数、正則化、アルゴリズムの 3つの主要なコンポーネントがあります。損失関数と正則化が最適化形式の問題の目的関数であり、アルゴリズムがそれを解決する方法です(目的関数は凸であるため、この投稿では説明しません)。

損失関数の設定では、回帰ケースと分類ケースの両方で異なる損失を設定できます。たとえば、最小二乗および最小絶対偏差損失を回帰に使用できます。そして、それらの数学表現はおよび。(関数は2つのスカラーで定義され、はグラウンドトゥルース値、は予測値です。) L YY = | Y YL(y^,y)=(y^y)2L(y^,y)=|y^y|L()yy^

一方、ロジスティック損失とヒンジ損失は分類に使用できます。それらの数学表現はおよびです。(ここで、はのグラウンドトゥルースラベルで、は「スコア」と予測されます。の定義は少し変わっています。コメントセクションを参照してください。)L YY = 1 - Y Y + Y { - 1 1 } Y YL(y^,y)=log(1+exp(y^y))L(y^,y)=(1y^y)+y{1,1}y^y^

正則化の設定では、L1およびL2の正則化について言及しましたが、他の形式もありますが、この記事では説明しません。

したがって、高レベルでは、線形法は

minimizew   x,yL(wx,y)+λh(w)

損失関数を回帰設定からロジスティック損失に置き換えると、正則化でロジスティック回帰が得られます。

たとえば、リッジ回帰では、最適化の問題は

minimizew   x,y(wxy)2+λww

損失関数をロジスティック損失に置き換えると、問題は次のようになります

minimizew   x,ylog(1+exp(wxy))+λww

ここに、L2正則化によるロジスティック回帰があります。


これは、玩具で合成されたバイナリデータセットでどのように見えるかです。左の図は、線形モデル(決定境界)を使用したデータです。右図は目的関数の輪郭です(x軸とy軸は2つのパラメーターの値を表します)。データセットは2つのガウスから生成され、インターセプトなしでロジスティック回帰モデルに適合しているため、右側のサブ図で視覚化できるパラメーターは2つだけです。

青い線は正則化なしのロジスティック回帰であり、黒い線はL2正則化ありのロジスティック回帰です。右図の青と黒の点は、目的関数の最適なパラメーターです。

この実験では、大きなを設定しているため、2つの係数が近いことがわかります。さらに、輪郭から、正則化項が支配的であり、関数全体が2次ボウルのようになっていることがわかります。0λ0

ここに画像の説明を入力してください

L1正則化の別の例を次に示します。

ここに画像の説明を入力してください

この実験の目的は、正規化がロジスティック回帰でどのように機能するかを示すことですが、正規化されたモデルの方が良いと主張するのではないことに注意してください。


L1とL2の正則化と、それがロジスティック損失目標にどのように影響するかについてのアニメーションを次に示します。各フレームで、タイトルは正則化タイプとを示し、プロットは目的関数(ロジスティック損失+正則化)コンターです。各フレームで正則化パラメーターを増やします。最適なソリューションはフレームごとに縮小し。λλ0

ここに画像の説明を入力してください ここに画像の説明を入力してください


いくつかの表記コメント。とは列ベクトル、はスカラーです。したがって、線形モデル。切片項を含める場合は、データに列としてを追加できます。wxyy^=f(x)=wx1

回帰設定では、は実数であり、分類設定ではです。yy{1,1}

分類設定でのの定義は少し奇妙です。ほとんどの人は予測値を表すためにを使用するため。この場合、は実数ですが、はありません。ロジスティック損失とヒンジ損失の表記を簡略化できるため、この定義を使用します。y^=wxy^yy^=wx{1,1}y^

また、他の表記システムでは、ロジスティック損失関数の形式が異なることに注意してください。y{0,1}

このコードは、他の回答のこちらにあります。

完全な分離の場合にロジスティック回帰が機能しない理由について直感的な説明はありますか?そして、なぜ正規化を追加すると修正されるのでしょうか?


4
いい答えですが、説明に直線法に限定する必要があることを示唆するものはありません(表記法を除く)。同じ答えがありますが、wはfに、は置き換えられますか?確かに、人々はニューラルネットワークなどの非線形手法に正則化を使用しています。wTxf(x)
DavidR

@ hxd1011の回答に感謝します。黒の実線が等高線グラフで何を表しているのか説明してください。より正確に言うと、(説明したように)x軸とy軸が使用する2つのパラメーターを示していることがわかります。しかし、実線、8000、10000、12000などの数字はどうですか。ありがとう!
ジェスパー


12

高次漸近の考慮に基づいてロジスティック回帰に対して最初に提案された収縮/正則化方法は、ファースロジスティック回帰でした... 1970年代。ペナルティ項を尤度に追加すると、 ここで、iβ=1

l(β)=l(β)+12ln|i(β)|
i(β)=1nipi(1pi)xixi観測ごとに正規化された情報行列です。Firthは、この補正が、ゼロに向かって縮小する前のジェフリーズに対応するという点で、ベイジアン解釈を持っていることを実証しました。それが生成した興奮は、完全な分離の問題の修正を助けたことによるものでした。たとえば、データセットは名目上無限のML推定値を生成しますが、in は依然として問題の影響を受けやすいと思います。{(yi,xi)={(1,1),(0,0)}glmR

1
はい、これにはRパッケージlogistfまたはbrglmを使用できます!たぶん言及する価値...
トムWenseleers

非常にエレガントですが、最適化にはかなり時間がかかりませんか?勾配では、すべての反復で再計算する必要があるの逆数を取得します...i(β)
appletree

実際、@ appletree
StasK

(+1)Firthの修正について聞いたことがありませんでした。引用された論文の暗黙的なアプローチがGLMソリューションに多くの時間を追加するとは思わないでしょうか?(あなただけの計算レバレッジ、行列を反転する必要はありません。繰り返しは、最小二乗法を再重み付けを通じてGLMを解決した場合、これらは単にあるQファクタの行ノルム。レバレッジはその後、ちょうど使用して、データと暴露に追加するの代わりにでジェフリーズの調整)。1 / 2h/21/2
GeoMatt22

6

はい、ロジスティック回帰に適用できます。Rでは、glmnetを使用して、ロジスティック回帰の「二項」である適切なファミリを指定するだけです。データと対処する問題に応じて指定できる他の2つ(毒、多項など)があります。


このためにglmnetを使用するだけの欠点は、そのアプローチでは重要なレベルが得られないことです。あなたがそれらに興味があるならば、... Rパッケージはlogistfまたはbrglmに行くには良い方法だろう
トムWenseleers

@TomWenseleersには、glmnetをブートストラップしてp値を取得する方法もあります。ただし、「通常の」ブートストラップが投げ縄係数に対して機能しないため、少し複雑です
-godspeed

:私はそのことについて知らせるためのおかげで、私は例えば、ここで、他の人があまりにもこれに言及見てきたstats.stackexchange.com/questions/34859/...を、いくつかのRパッケージに実装何の標準を見つけるように見えることはできません。何かポインターがありますか?またはこれに関する優れた一次文献?ブートストラップの欠点は、通常、大規模なデータセットのために非常に遅くなることもある...
トムWenseleers

Rパッケージhdi、cran.r-project.org / web / packages / hdi / index.htmlで実装されているようなメソッドを参照していますか?
トムウェンセリアーズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.