Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Introduction of "the alternate features search" using R

2,215 views

Published on

Introduction of the alternate features search using R, proposed in the paper. S. Hara, T. Maehara, Finding Alternate Features in Lasso, 1611.05940, 2016.

Published in: Data & Analytics
  • Hello! High Quality And Affordable Essays For You. Starting at $4.99 per page - Check our website! https://vk.cc/82gJD2
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Introduction of "the alternate features search" using R

  1. 1. 見落とされた変数に 救いの手を “FindingAlternate Features in Lassos” 1.“Finding Alternate Features in Lassos”の一部をRでトレースします (Satoshi Hara and Takanori Maehara (2016): "Finding Alternate Features in Lasso", in NIPS 2016 workshop on Interpretable Machine Learning for Complex Systems, December 10th, 2016.) 2.{glmnet} で実装して使ってみます Lassoにおける変数選択と代替候補となる変数の可視化 第58回R勉強会@東京(#TokyoR)
  2. 2. 変数選択(モデル選択) どうしてますか? オペレーションズ・リサーチ2013 年 5 月号,261-266 LASSO
  3. 3. Lasso の変数選択の問題点#2 #1 • 「変数の数>>サンプルサイズ」 なデータの扱い • http://www.slideshare.net/kato_kohaku/oracle-property-andhdmpkgrigorouslasso #2 • “Finding Alternate Features in Lassos”の論文紹介 • Rで線形回帰だけ実装したので{glmnet}の Lassoにおける変数選択と 代替候補となる変数を可視化 • 重回帰分析の前処理をとしての多重共線性のチェックを、二次工程に 回せるのでは? • 二値分類とかは本家のPythonで。
  4. 4. Lasso • 回帰モデルの係数 (β)の絶対値を大きくしたくない → 損失関数に罰則項を加えた目的関数L(β)とする 𝐿 𝛽 = 𝑓 𝑋𝛽, 𝑦 + 𝑃(𝛽) = 𝑓 𝑋𝛽, 𝑦 + 𝜆 𝛽 1 The Lasso optimal solution • この目的関数を最小化するような推定量(β*)を求める 𝛽∗ = argmin 𝛽 𝑓 𝑋𝛽, 𝑦 + 𝜆 𝛽 1
  5. 5. Lasso • 線形重回帰モデルで、最小二乗法で係数を推定をする場合: |β|の大きさに対する罰則項最小二乗法 λは罰則の大きさを 調整するパラメータ βの絶対値を大きさを 定数 t 以下に抑えたい 最小二乗法
  6. 6. Lassoの縮小推定(shrinkage) Hao Helen Zhang, Fall 2015 Lecture 12: Variable Selection - Lasso 推定された βj が0なら 変数 xj は 予測に貢献しない
  7. 7. Lassoの罰則項 soft-thresholding operator Hao Helen Zhang, Fall 2015 Lecture 12: Variable Selection - Lasso Lassoの推定量( )と、 最小二乗推定量( )には、 以下の関係がなりたつ λ
  8. 8. Lassoの罰則の強さと推定量と変数選択 λ log(λ) λが大きいほどLassoので0と推定される変数が増える
  9. 9. Lassoと変数選択 Lassoによって「よいモデル」を推定したい =最適な罰則の強さ(λ)の下で選ばれる 変数とその推定量を決めたい • λ → 0 (no penalty) では、罰則のない重回帰 • λ → ∞ では、定数項だけのモデル ※ 典型的にはcross-validation errorを眺めながら決める > plot(cv.glmnet(X, y)) > plot(glmnet(X, y) , xvar = "lambda") λ log(λ)
  10. 10. Lassoと変数選択: 見落としの問題 • 変数の数p がサンプルサイズnよりも多い場合(p>n)、 選択される説明変数はサンプルサイズを超えない → 幾つかの改良法が提案されている • http://www.slideshare.net/kato_kohaku/oracle-property-andhdmpkgrigorouslasso • 重要な変数のあいだに高い相関 がある場合、 それらの変数のうちの1つだけを選びたがる
  11. 11. https://arxiv.org/abs/1611.05940 変数間に高い相関がある場合の見落としに着目
  12. 12. 余談ですが..
  13. 13. https://arxiv.org/abs/1606.09066 https://github.com/sato9hara/defragTrees defragTrees の作者
  14. 14. この論文の提案: Alternate Lasso 選択された変数が使われなかった としたら 代わりにどの変数が選択されるか を出力 ↓ 複数の解候補を提示することで利用者に納得感を与える 特徴量たちの関係理解・結果の解釈性が高まると期待 著者らによる研究の説明から改変 http://www.prefield.com/commentary.html
  15. 15. Lassoを解きなおす: Alternate Lasso The Lasso optimal solution • この目的関数を最小化するような推定量(β*)を求める 𝛽∗ = argmin 𝛽 𝑓 𝑋𝛽, 𝑦 + 𝜆 𝛽 1 Alternate Lasso • Lasso推定量(β*)のうち β*i≠0, β*j=0 となる i,j の組について β*i=0, βj≠ 0 とおいて、β*jの推定量を求める 𝛽𝑗∗ = argmin 𝛽 𝑗 𝑓 𝑋𝛽∗ − 𝑋𝑖 𝛽𝑖∗ + 𝑋𝑗 𝛽𝑗+ , 𝑦 + 𝜆 𝛽 1 非ゼロ項について足し上げ β*i=0 βj≠ 0
  16. 16. 再推定 β*i=0, βj≠ 0 とおいて、β*jの推定量を求める 再推定された βj が0なら 変数 xj は xi を代替しない
  17. 17. Alternate Lassoの変数スコア • 「差し替えた後の目的関数値がほとんど変わらない」変数は、 オリジナルに近いと考える。つまり、 score(xi → xj ) が小さいほどオリジナルに近い ここで、 score 𝑥𝑖 → 𝑥𝑗 = 𝐿 𝛽 𝑖→𝑗 − 𝐿 𝛽∗ 𝐿 𝛽 は目的関数: 𝐿 𝛽 = 𝑓 𝑋𝛽, 𝑦 + 𝑃(𝛽) 𝛽∗はLassoが選んだ推定値 どれくらい代わりになるか?という指標(相対値)
  18. 18. 作った: Rでminimal • 線形回帰モデル • 最小二乗法 • soft-thresholding operator https://github.com/katokohaku/AlternateLassoR 著者のgithubのPython実装をみながら Rで実装
  19. 19. 動作確認: シンプルな人工データ • 重要な変数=X1, X2 • X1と相関: X3, X4 • X2と相関: X5 • 無関係な変数: X6
  20. 20. 作った: re-fit 作った: print() & summary() glmnetのLassoで 推定したβを解きなおす
  21. 21. 作った: plot()
  22. 22. 使ってみた: Boston Housing Data Set https://archive.ics.uci.edu/ml/datasets/Housing http://pythondatascience.plavox.info/scikit-learn/scikit-learn に付属しているデータセット/ 米国ボストン市郊外における 地域別の住宅価格のデータセット
  23. 23. 使ってみた: Boston Housing Data Set あとで再利用するので あらかじめデータを正規化 CVでλを見つつ 今回はλ.1SEを採用
  24. 24. 使ってみた: Boston Housing Data Set • Scoreの順と相関の大きさの順は概ね一致 • しないことも結構あるっぽい • 解釈はできるような、できないような.. 町毎の児童と教師の比率(ptratio) alt score cor 1 $10,000 ドルあたりの不動産税率の総計 tax 0.01382 0.460853 2 町毎の児童と教師の比率(ptratio) zn 0.015046 -0.39168 3 小売業以外の商業が占める面積の割合 indus 0.015151 0.383248 4 環状高速道路へのアクセスしやすさ rad 0.016183 0.464741 5 1940 年より前に建てられた物件の割合 age 0.016962 0.261515
  25. 25. まとめ やらなかったこと • Python版にあるpredict()とevaluate()の実装 • 予測はオリジナルのモデルでやればよいのでは。 • 線形回帰以外のモデル 所感など • 適用対象が広い • 適当な損失関数+罰則項の再最適化なので、適用対象がフレキシブル • 元論文(Python版)には、ロジスティックロス関数で2値分類する実装も有り • Scoreの順が変数間の相関と必ずしも一致しないので、Lassoの枠組みの中では、単純 に多重共線性を見るよりは良い? • 重回帰分析の前処理をとしての多重共線性のチェックを、二次工程に回せるのでは? 発展版の続報が出てた • Satoshi Hara and Takanori Maehara (2017): "Enumerate Lasso Solutions for Feature Selection", in Proceedings of the 31st AAAI Conference on Artificial Intelligence (AAAI'17), San Francisco. California, United States, February 4th--9th, 2017 • Python実装がすでに著者のGithubで公開中
  26. 26. 参考文献 • 紹介した論文 • Satoshi Hara and Takanori Maehara (2016): "Finding Alternate Features in Lasso", in NIPS 2016 workshop on Interpretable Machine Learning for Complex Systems, December 10th, 2016. • https://arxiv.org/abs/1611.05940 • 著者によるPython実装@Github: • Binary classificationあり、predict()あり。 • https://github.com/sato9hara/LassoVariants/tree/master/AlternateLasso • 著者らによる研究紹介 • http://www.prefield.com/commentary.html • 実装時の参考 • Lassoの理論と実装 -スパースな解の推定アルゴリズム- • http://qiita.com/hogefugabar/items/71916560f7efc6eededf

×