vol5‎ > ‎

【特集】スパースモデリングと多変量データ解析


スパースモデリングを体験してみる

PythonやRのコードはこちらのページにあります


スパースモデリングに関するリンク集

スパース推定についての教科書(ダウンロード可)

Statistical Learning with Sparsity: The Lasso and Generalizations

圧縮センシング(compressed sensing, 本特集では少ししか触れていないので補完です)

ポータルサイト

Emmanuel Candes

Preprints in sparse recovery / compressed sensing

圧縮センシングの数理(田中利幸) PDF

「応用数理」のスパース特集 目次(論文はダウンロード可)

新学術研究「スパースモデリングの深化と高次元データ駆動科学の創成」 ウェブサイト

天文屋のための How to スパースモデリング(植村誠)   (植村氏のウェブサイトは こちら

歴史的文献 こちらのページ


伊庭の解説

本稿を書くにあたり,色々教えて下さった二宮 嘉行さん(九大),坂田綾香さん(統数研)ほかの皆様に感謝します.

訂正(初刷)

p.7-p.8の説明では「変数の数」というより「未知パラメータの個数」(回帰分析でいえば説明変数の係数のうちデータから推定するものの個数)が問題であることをもっとはっきり書くべきでした.(p.9まで読めば説明されていますが)変数が増えても未知パラメータが増えなければ,ばらつきの増大による予測性能への悪影響はないわけです.また,逆に冒頭の問題設定ではもう少し一般的に書いたほうが良かったと思います.あわせて以下のように修正します.なお,後半の説明で「説明変数」と書いた場合は,いちいち書かなくても「係数が未知である」ということを暗黙に含意しています.

p.7 2行目 「なぜ変数の少ないモデルが欲しいのか」→「なぜ単純なモデルが欲しいのか」
p.7 10行目 「なぜ変数の少ないモデルが欲しいのか」→「なぜ単純なモデルが欲しいのか」
p.7  下から3行目 「β_1, β_2」→「未知のパラメータβ_1, β_2」
p.8  6行目 「説明変数が少ないほうがよい」→「未知のパラメータが少ないほうがよい」

その他の細かい修正


p.7 (1)式の下 「説明変数」→「変数」 ※この文脈ではx_iの2乗は別の説明変数と考えたいので,ここは単に「変数」としたい
p.11 式(4)の上 「CVは」→「CVをサンプルサイズ倍したものは」 ※Dは観測値を並べたベクトルと思ってください(対数尤度は個々の観測の和)
p.11 下から4行目「期待平均対数尤度の不偏推定値」→「期待平均対数尤度の不偏推定量」 ※データの関数と考えるときは「推定量」
p.16 コラム 「期待平均対数尤度の不偏推定値」→「期待平均対数尤度の不偏推定量」

モデル選択についての教科書

標準的なもの
情報量規準(シリーズ 予測と発見の科学)
小西貞則 北川源四郎

少し視点の異なるもの(一部の章)
Trevor Hastie , Robert Tibshirani , Jerome Friedman

草創期の情熱が感じられるもの
情報量統計学
坂元 慶行 , 石黒 真木夫 , 北川 源四郎

動画

AICについてのミニ講義の動画です(DSオリジナル,約30分)
全く知らない人向きでなく,いま勉強中の人,勉強したことのある人向きの学習のヒント的な内容です.

AICのツボ


スライド(PDF)は ここ

その他

leave-one-outのCVとAICの漸近等価については
以下の文献に証明があります.
Stone, M. (1977) "An asymptotic equivalence of choice of model by cross-validation and Akaike's criterion." Journal of the Royal Statistical Society. Series B (Methodological)  44-47.

AICとlassoについての補足解説と文献こちらのページ(暫定公開)

注で触れた,石黒(1985) は ここ(PDF) で見られます.lassoとは違う罰則項ですが,リッジ回帰と変数選択を補間するという問題意識は共通します.この事前分布でも仕組みはだいぶ違うと思いますがMAP解の係数が正確にゼロになる場合があるのも興味深いです.


日野の解説

岩波DS執筆に利用したソースコードを提供して頂きました.

著作権者(コード内に記述)の了解のもとで,現状のまま提供します(上級者向き).

install_formac.shというスクリプトで,実験時と同じ環境が構築され,その上でPythonを立ち上げてrealdata-revgraph.pyを実行すると再現出来るはずです.

ソースコードなど(zip)