ロジスティック回帰モデルの強化


11

Adaboostは、多くの弱い学習者を組み合わせて強い学習者を形成する集団法です。私が読んだアダブーストのすべての例は、意思決定の切り株/木を弱学習者として使用しています。アダブーストで別の弱学習器を使用できますか?たとえば、ロジスティック回帰モデルを後押しするためにadaboost(通常は後押し)を実装する方法は?

分類ツリーとロジスティック回帰の主な違いの1つは、前者がクラス(-1,1)を出力するのに対し、ロジスティック回帰は確率を出力することです。1つのアイデアは、一連の機能から最適な機能Xを選択し、しきい値(0.5?)を取得して確率をクラスに変換し、次に重み付きロジスティック回帰を使用して次の機能などを見つけることです。

しかし、確率を出力する決定の切り株とは異なるさまざまな弱学習器を後押しする一般的なアルゴリズムが存在すると想像します。Logitboostが私の質問への答えだと信じていましたが、「Additive Logistic Regression」の論文を読もうとすると、途中で行き詰まりました。

回答:


7

予測子の処理(切り株などの基本学習器による)とブースティングにおける損失関数の処理を混同しないでください。AdaBoostは、誤学習エラーを最小限に抑えるための基本学習者の組み合わせを見つけることと考えることができますが、引用した「加法ロジスティック回帰」論文は、指数損失関数を最小限に抑えるように定式化できることも示しています。この洞察は、勾配ブースティングによって、微分可能な損失関数を最小限に抑える幅広いクラスの機械学習問題へのブースティングアプローチを切り開きました。各ステップで適合する残差は、損失関数の勾配から計算された疑似残差です。予測子がバイナリスタンプとしてモデル化されている場合でも、モデルの出力はバイナリ選択である必要はありません。

別の答えが述べるように、線形ベース学習器はブースティングには機能しない可能性がありますが、線形ベース学習器は標準またはロジスティックのいずれかの意味での「ブースト回帰」には必要ありません。明らかに非線形の切り株は、適切な損失関数を最小限に抑えるために、低速の基本学習器として組み合わせることができます。予測子の係数で線形の標準的な回帰モデルとはかけ離れていますが、それでも「ブースト回帰」と呼ばれています。損失関数は、線形モデルと、予測子として切り株またはツリーを使用する「ブースト回帰」モデルの機能は同じです。ISLRの第8章はこれをかなり明確にします。

したがって、ブースト回帰と同等のロジスティック回帰が必要な場合は、基本学習者ではなく損失関数に焦点を当てます。それは、あなたが引用した論文のLogitBoostアプローチが行うことです:adaboostに内在する指数損失ではなく、ログ損失を最小化します。ウィキペディアのAdaBoostページでは、この違いについて説明しています。

このサイトの多くの参加者は、厳密なイエス/ノー分類予測よりもログオッド/確率ベースの予測の方が非常に好ましいと主張しています。 。関連する質問へ回答が示すように、AdaBoostから導出された強力な分類子から推定確率を取得することは可能ですが、LogitBoostはより優れたパフォーマンスを提供する可能性があります。

分類のための勾配ブースティングの実装は、基礎となる確率に関する情報を提供できます。たとえば、勾配ブースティングに関するこのページではsklearn、ロジスティック回帰の逸脱損失とAdaBoostの指数損失の間でコードがどのように選択できるかを示し、勾配ブーストモデルから確率を予測する関数を説明します。


ご回答どうもありがとうございました。ブースティングのコンテキストでロジスティック回帰の機能を実現するためにそれを正しく理解している場合、ロジスティック損失関数と弱学習器分類ツリーで勾配ブースティングアルゴリズムを使用するだけです。しかし、分類木は{-1,1}を出力し、確率を出力するロジスティック回帰は出力します。さらに、分類ツリーはロジスティック損失の代わりにジニインデックスを最小化しようとします。ここで基本的なことを逃しています。ロジスティック損失をどこに置くか?モデルから確率を出力する方法は?
gnikol

回帰木が線形回帰と同じ損失関数であるmseを最小化するため、yが連続であるという概念を理解しています。したがって、回帰木を繰り返し残差に当てはめます。しかし、分類のコンテキストでは、分類ツリーはジニインデックスまたは類似のものを最小化します。これは、ロジスティック回帰またはロジスティック回帰の損失関数とどのように関連していますか?
gnikol

@gnikol私はあなたと他の読者の両方にこれがより明確になるように私の答えを修正しました。勾配ブースティングに適合する残差は、損失関数の勾配から計算された疑似残差です。損失関数の選択は、AdaBoostとLogitBoostを区別するものです。確率はどんな場合でも強い学習者から得ることができます。最後の段落で実装の1つの例へのリンクを提供しました。
EdM

5

実際、ここでは回帰のケースに関して非常によく似た質問があります。@Matthew Druryから非常に良い答えが得られました

線形回帰の勾配ブースティング-なぜ機能しないのですか?

線形モデル(ロジスティック回帰など)は、ブースティングには適していません。その理由は、2つの線形モデルを一緒に追加すると、結果は別の線形モデルになります。一方、2つの決定の切り株またはツリーを追加すると、より複雑で興味深いモデルになります(ツリーではなくなります)。

詳細はこの投稿にあります。このリンクで、2つの線形モデルを追加することが面白くない理由を導き出しました。そして、私は反復ごとに決定株の反復に対するブースティングの効果を示しています。

線形基本学習器はブースティングでどのように機能しますか?そして、それはxgboostライブラリでどのように機能しますか?

意思決定ツリー/切り株は、ロジスティック回帰に似た「線形モデル」ではないことに注意してください。

詳細については、この投稿を参照してください

決定は線形モデルですか?

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