Elastic Net Logistic Regressionでの最適なアルファの選択


22

glmnetR のパッケージを使用して、0から1のグリッドでラムダ値を選択することにより、ヘルスケアデータセットに対してElastic-Netロジスティック回帰を実行しています。短縮コードは次のとおりです。α

alphalist <- seq(0,1,by=0.1)
elasticnet <- lapply(alphalist, function(a){
  cv.glmnet(x, y, alpha=a, family="binomial", lambda.min.ratio=.001)
})
for (i in 1:11) {print(min(elasticnet[[i]]$cvm))}

これは、からの増分でのアルファの各値の平均交差検証誤差を出力します。1.0 0.10.01.00.1

[1] 0.2080167
[1] 0.1947478
[1] 0.1949832
[1] 0.1946211
[1] 0.1947906
[1] 0.1953286
[1] 0.194827
[1] 0.1944735
[1] 0.1942612
[1] 0.1944079
[1] 0.1948874

私が文献で読んだものに基づいて、最適な選択は、cvエラーが最小化される場所です。しかし、アルファの範囲にわたってエラーには多くの変動があります。私はいくつかの局所的な最小値を見ていますが、グローバルな最小誤差はfor です。α0.1942612alpha=0.8

一緒に行くのは安全alpha=0.8ですか?又は、変形所与、Iは、再実行する必要がありcv.glmnet、よりクロスバリデーションひだ(例えば、との代わりに)、または、おそらくより多くのの間のインクリメント及びCVエラーパスの鮮明な画像を取得しますか?10 α2010αalpha=0.01.0


5
あなたは見とりたいと思うcaretアルファ&ラムダの両方のための品種とチューニングを繰り返し行うことができ、パッケージを(支持体には、処理をマルチコア!)。記憶から、glmnetドキュメントのアドバイスは、あなたがここで行っている方法でのアルファのチューニングに対するアドバイスだと思う。が提供するラムダのチューニングに加えて、ユーザーがアルファのチューニングを行っている場合は、foldidsを固定しておくことをお勧めしcv.glmnetます。

1
ああ、ここにこの記事を見つけました:stats.stackexchange.com/questions/69638/...
RobertF

2
異なるα
user4581

1
再現性のために、既知のランダムシードから作成されたものcv.glmnet()を渡さずに実行しないでfoldidsください。
SMCI

1
@amoebaは私の答えを見てください-l1とl2の間のトレードオフに関する入力は大歓迎です!
ザビエルバレシコット

回答:


7

およびElastic Netパラメーターの意味を明確にするα

異なるパッケージでは異なる用語とパラメーターが使用されますが、一般的に意味は同じです。

Rパッケージ Glmnetは、以下の定義を使用しています

β0β1N=1Nwlyβ0+βTバツ+λ[1α||β||22/2+α||β||1]

Sklearnの使用

w12N=1N||yバツw||22+α×l1比率||w||1+0.5×α×1l1比率×||w||22

あり、代替parametrizations使用し、にもは...ab

混乱を避けるため、電話をかけます

  • λペナルティ強度パラメーター
  • L1比率とペナルティの比率。0(リッジ)から1(投げ縄)の範囲L1L2

パラメーターの影響を視覚化する

がノイズの多い正弦曲線で構成され、がおよび構成される2次元の特徴であるシミュレーションデータセットを考えます。と相関により、コスト関数は狭い谷です。yバツバツ1=バツバツ2=バツ2バツ1バツ2

以下の図は、強度パラメーターの関数として、2つの異なる比率パラメーターを使用したelasticnet回帰のソリューションパスを示しています。L1λ

  • 両方のシミュレーションの場合:場合、ソリューションは右下のOLSソリューションであり、関連する谷形のコスト関数を持ちます。λ=0
  • 増加、正則化キックで、溶液をする傾向があるλ0,0
  • 2つのシミュレーションの主な違いは、比率パラメーターです。L1
  • LHS:比が小さい場合、正則化されたコスト関数は、輪郭が丸いリッジ回帰によく似ています。L1
  • RHS:比が大きい場合、コスト関数は、典型的なダイヤモンド形状の輪郭を持つLasso回帰によく似ています。L1
  • 中間の比(図示せず)の場合、コスト関数は2つの組み合わせですL1

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


パラメータの効果を理解する

ElasticNetは、次のLassoの制限のいくつかに対処するために導入されました。

  • データポイントより多くの変数がある場合、、投げ縄は最大変数を選択します。pnp>nn
  • 特に相関変数が存在する場合、なげなわはグループ化された選択を実行できません。グループから1つの変数を選択し、他の変数を無視する傾向があります。

ペナルティと2次ペナルティを組み合わせると、両方の利点が得られます。L1L2

  • L1はスパースモデルを生成します
  • L2は、選択された変数の数の制限を取り除き、グループ化を促進し、正則化パスを安定化します。L1

これは上の図で視覚的に確認できます。頂点の特異点はスパース性を促進し、厳密な凸状のエッジはグループ化を促進します

Hastie(ElasticNetの発明者)からの視覚化は次のとおりです。

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

参考文献


2

質問の時代にもかかわらず、いくつかの非常に実用的な発言を追加させてください。私はRユーザーではないので、コードに話させることはできませんが、それでも理解できるはずです。

  1. 通常、最高のCVスコアを持つハイパーパラメーター(ここでは)を選択するだけです。あるいは、最適なモデルを選択し、決定関数の算術平均によってアンサンブルすることもできます。もちろん、これによりランタイムの複雑さが増します。ヒント:時々幾何平均が良好に動作これは、決定境界がより滑らかになったためだと思います。αkf1fkfバツ=1kfバツfバツ==1kfバツk

  2. リサンプリングの利点の1つは、テストスコアのシーケンス(ここではcvのスコア)を検査できることです。常に平均だけでなく標準偏差(常に正規分布ではありませんが、あたかも振る舞う)を確認する必要があります。通常、正確さのためにこの発言を65.5%(±2.57%)と表示します。このようにして、「小さな偏差」が偶然によるものなのか、構造的なものなのかを判断できます。より良いのは、完全なシーケンスを検査することです。何らかの理由で常に1つ折りがある場合は、分割の方法を再考することをお勧めします(実験デザインの誤りを示唆しています。シャッフルしましたか?)。scikit-learnでは、GridSearchCVストアのフォールド有効期限に関する詳細を参照しますcv_results_こちらを参照)。

  3. に関しては、値が大きいほど、エラスティックネットのスパース性が高くなります。結果のモデルの重みを確認できます。が高いほど、ゼロに設定されます。重みをゼロに設定した属性をパイプラインから一緒に削除すると便利です(これにより、ランタイムのパフォーマンスが大幅に向上します)。別のトリックは、特徴選択にエラスティックネットモデルを使用し、バリアントを再トレーニングするです。通常、これにより、機能間の相互相関が除外されるため、モデルのパフォーマンスが劇的に向上します。αL1αL2

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