質問
Gradient Boostingを使用してバイナリ分類を行うときに、予測が間隔内にどのように保持されるかを理解するのに苦労しています。
バイナリ分類問題に取り組んでおり、目的関数は対数損失であり、はターゲット変数、は現在のモデルです。
新しいモデルがになるように次の弱学習トレーニングする場合、を維持するはずのメカニズムは何ですか?または、より関連性の高い質問かもしれませんが、そのようなメカニズムはありますか?
私がやっていることの詳細
回帰ツリーを使用して、勾配ブースティングを実装しようとしています。それを避けるために、H + c _ {\ text {max}} hがゼロ以下にならないように、に係数c \ in [0、c _ {\ text {max}}]を掛けます 1つ、および損失関数を最小化するこの範囲でcを選択します。
これは次の問題をもたらします:いくつかのラウンドの後、私は完全に分類された1つのポイントを持ち、勾配の方向に分類子をプッシュするために利用できる最良の分割はこのポイントを1つ上にプッシュしたいので、c = 0を設定します。したがって、次のすべての反復では、同じ分割と同じc = 0が選択されます。
一般的な正則化プラクティスを試しました
- に\ mu = 0.01を掛けて学習率を減らします。これは問題を遅らせるだけです。
- 特徴空間をサブサンプリングしますが、いくつかのポイントは非常に簡単に分類でき、「これはポジティブですか?」のほぼすべてのボックスにチェックを付けます。フォーム、およびほぼすべての「適切な分割」がこの動作を示しています。
これはパラメーターの問題ではないと思うので、これを修正するためのより適切な方法があるはずです。私は実装が壊れている可能性を捨てていませんが、この問題を解決するものは何も見つかりませんでした。
ロジスティック損失のコンテキストで操作しているのは確率でなければなりません。それをどのように回避するのでしょうか?
私の直感は、構築中のモデルをバインドされるようにシグモイド関数に入れて、それでうまくいくと思いますが、他の解決策があるかどうか知りたいです。勾配ブースティングは分類タスクでうまく使用されているように見えるため、「正しい」(つまり正当化を伴う)ソリューションが存在するはずです。[ 0 、1 ]