統計モデリング 第十一回...
TRANSCRIPT
2017年7月4日@統計モデリング
担当:田中冬彦
統計モデリング 第十一回 配布資料
文献: a) R. Tibshirani: Regression Shrinkage and Selection via the Lasso. J. R. Statist. Soc. B, 58 (1996), 267—288.
配布資料の一部は以下からもDLできます. 短縮URL http://tinyurl.com/lxb7kb8
b) K. Hirose and M. Yamamoto: Sparse estimation via nonconcave penalized likelihood in factor analysis model. Statistics and Computing, 25 (2015), pp. 863-875. c) 青木 繁伸: Rによる統計解析 第6章多変量解析, 2009, オーム社, 東京. d) 永田 靖・棟近 雅彦: 多変量解析法入門, 2001, サイエンス社, 東京.
2回に分けてスパースモデリングの基本についてみていく
ここからの内容
スパースモデリング
参考:
7/4 : 今回
7/11:基礎工入試で休講
7/18 : 講義最終
7/25 : 第三回 グループ発表
1. スパース推定の概略
2. スパース推定を利用する統計モデルの例(因子分析)
3. スパース推定を利用する統計モデルの例(GLM)
第11,12回でとりあげるテーマ
謝辞: 廣瀬先生(2015年下平研究室 助教 → 現在、九州大学IMI准教授)のゼミ資料をかなり参考にさせていただきました。
今後の予定
x
y
第十一回 スパースモデリング1・因子分析
第十二回 スパースモデリング2・GLM
第十三回 グループ発表3
レポート課題
第三回グループ発表(7/25 開催)
第三回の要件
・1または2について, スパース推定で分析
・実データを扱う
・ベイズ的なアプローチは不要
・正則化項や正則化パラメータはいろいろ試す (2では, 可能ならCV)
※そのほかの要件は第一回配布資料参照
今日の内容
1.スパース推定の概要 2.因子分析モデル 3.最尤推定による分散の推定 4.因子分析モデルにおけるスパース推定 5.分析例
1. スパース推定の概要
ビッグデータの時代
例: SNSゲーム「モンスターラブコレクション」の課金額の分析
i : ユーザアカウント(i=1,...,n)
iY i 番目のユーザアカウントが月に投入する課金額
1ix i 番目のユーザアカウントの年齢
2ix 〃 性別
先週のログイン回数
説明変数になるユーザのデータは大量!!
各ユーザの課金額に何が影響を与えるか知りたい!
ゲーム提供側の分析課題
カテゴリカル説明変数の扱い【第九回】
(k通りの分類なら k-1個の2値変数)
=01
102ix ニート 主婦・主夫
→ 例えばダミー変数が大量に入る
それ以外
=01
103ixそれ以外
=01
104ix 会社員
それ以外
例: i 番目のユーザの職業
説明変数の数が膨大になりやすい
統計モデルとビッグデータ
ni ,,2,1 =
),0(~ 2σε Ni
iiii xxY εββα ++++= 5000500011
統計モデルの例
i : ユーザアカウント(i=1,...,n)
iY i 番目のユーザアカウントが月に投入する課金額
ijx i 番目のユーザアカウントの情報(j=1,..., 5000)
説明変数やパラメータの数が膨大なモデルを扱う機会が増えた
従来のパラメータ推定方法
iiii xxY εββα ++++= 5000500011 線形モデル
α1β 2β 4999β
5000β
従来の推定方法だと・・・ 推定値の大小に差があるが どれも0にはならない!
500021 03.09.108.01.2 iiii xxxy +++−=
スパース推定の場合
α 1β3β
4999β5000β
中途半端に残すのではなく 0が大量に出てくる!
499931 65.38.13.2 iiii xxxy ++−=
2β
本質的な変数のみ残る
スパース推定
Sparse; 疎, まばら (←→ Dense; 密) スパース
たくさんパラメータがある場合に, その多くが 0であることをあらかじめ仮定して, 推定すること
統計モデルパラメータのスパース推定
重要な注意 組み合わせ最適化(の近似解法)になるため, 単純に推定値が小さいものを0に置きなおすわけではない!
スパース推定の原理
例:データ数2; パラメータ数3の場合
誤差なしの人工的なモデル 0≡iε
→ パラメータ a, b, c を方程式の解とみると解は一意には定まらない (ここまでは線形代数!)
cbawcbaw+−==
++==22
,33
2
1
iiii czbyaxw ++=
スパース性を仮定すると解は唯一に定まる.
スパース推定の利点
1.スパース推定
2.ベイズ推定
0の設定箇所の組み合わせがきわめて多くなる
→ 後で見るように近似的な方法(LASSO推定)を利用
iiii xxY εββα ++++= 5000500011
実際のスパース推定
パラメータ数 > データ数 の場合
単純なパラメータ推定 (最小二乗やMLE)は不可
→
100,,2,1 =i
2. 因子分析モデル
多変量データ
例
p 組のデータ (p 変量) × n 件
npn
p
xx
xx
,,
,,
1
111
5教科の点数(100点満点) × 100 人分
プロ野球のバッターの1シーズンの成績(安打数, ホームラン数, 盗塁.) × 30人分
地方自治体の基礎データ(人口、気候、犯罪件数、失業率、平均寿命) × 40件
mechanics vectors algebra analysis statistics
平均 39.0 50.6 50.6 46.7 42.3 標準偏差 17.5 13.1 10.6 14.8 17.3
例: 5教科の試験データ 5教科の点数 (88人) (R ggm パッケージ内 marks データセット)
> data(marks) > marks mechanics vectors algebra analysis statistics 1 77 82 67 67 81 2 63 78 80 70 81 3 75 73 71 66 81 .... 87 5 26 15 20 20 88 0 40 21 9 14 > pairs(marks) > round(apply(marks, 2, mean), 1) mechanics vectors algebra analysis statistics 39.0 50.6 50.6 46.7 42.3 > round(apply(marks, 2, sd), 1) mechanics vectors algebra analysis statistics 17.5 13.1 10.6 14.8 17.3
mecha
20 40 60 80 10 30 50 70
020
60
2040
6080
vectors
algebra
2040
6080
1030
5070
analys
0 20 60 20 40 60 80 10 30 50 70
1030
5070
statisti
Rの実行例
多変量解析
因果関係は不明瞭だが, 各変量の間の何らかの関係を明らかにするデータ解析
多変量解析
興味のある変数(目的変数) y とそれを説明する変数(説明変数) x という役割は固定していた
これまでのモデル
)(xfy =
多変量解析と統計モデル 多変量解析の手法
・主成分分析 ・因子分析 ・正準相関分析 ・グラフィカルモデリング ・・・・・ ・多次元尺度法
分析目的やデータの種類に応じて、様々な手法が提案
統計モデルの設定の有無 主成分分析・・・ 統計モデルは設定せず, 相関係数行列のみを利用 グラフィカルモデリング・・・ 統計モデルを設定
ここでは因子分析(統計モデルを設定)を紹介
因子分析
( )TXXX 51 ,, =例:5教科の点数=5変量のデータ
直接観測できない、少数の潜在的な能力(?)で、これらの点数を説明したい!
国語
数学
理科
社会
英語
1X 2X 3X 4X 5X
因子分析でやりたいこと
因子分析モデルの構築
観測されているもの(例: 5教科の点数)
観測変数に影響を与える「何か」 b) 潜在変数(共通因子)
国語
数学
理科
社会
英語
1X 2X 3X 4X 5X
因子1 1F
因子2 2F
2種類の変数
a) 観測変数
モデルの概念図(因子数2の場合)
線の太さ(影響の強さ)
分析後に解釈を与える
観測変数と共通因子の関係(1/3)
英語の点数を 2個の共通因子で説明
重み (負もあり)
例
EngEngEngEng FF ελλµ +++ 22,11,
英語の平均点数
英語独自のゆらぎ(独自因子)
=EngX
EngX
1F 2F
1,Engλ2,Engλ
1人の5教科点数を2つの潜在変数(共通因子)で説明するモデル
121211111 ελλµ +++= FFX
525215155 ελλµ +++= FFXiiF ε; は各人ごとにばらつく
iij µλ ; は定数
観測変数と共通因子の関係(2/3)
)(1
)(212
)(1111
)(1
jjjj FFX ελλµ +++=
)(5
)(252
)(1515
)(5
jjjj FFX ελλµ +++=
に正規分布などを仮定
N人分のデータがある場合
Nj ,,2,1 =
統計モデルの構築【後で詳しく】
5121 ,,;, εε FF
iij µλ ; はモデルの未知パラメータ (今回はベイズは考えない)
観測変数と共通因子の関係(3/3)
2.実際のデータから統計モデルのパラメータを推定
)( jkλ=Λ に興味がある
分析の流れ
1.因子数を固定, 統計モデルを設定
3.因子数を増やして1,2を繰り返し、あてはまりのよいモデルを選ぶ
従来の方法(うまくいってない例)
国語
数学
理科
社会
英語
1X 2X 3X 4X 5X
因子1 1F
因子2 2F
1211 30001.0 ε++= FFX
2212 00056.010 ε++= FFX
3213 00007.05 ε++= FFX
非零だがきわめて小さい値が全部残ると、結果の解釈がしづらい (各因子から観測変数への矢がすべてついてしまう)
スパース推定の場合
国語
数学
理科
社会
英語
1X 2X 3X 4X 5X
因子1 1F
因子2 2F
1211 30 ε++= FFX
2212 010 ε++= FFX
3213 05 ε++= FFX
スパース推定を行うと係数の一部が自動的に0になる!
結果の解釈がしやすくなる!
=Λ
10200501030
多変量解析におけるスパース推定の利点
多変量解析での目標
しばしば, 人間が解釈しやすい結果が欲しい
推定値に0 が多くなり, 解釈しやすい結果が得られる
スパース推定の利点
モデル選択などを用いても、0に近いパラメータが多数出てきて解釈しづらいことがある
次節から因子分析モデルのスパース推定の詳細をみる
従来の推定
理解度チェック:因子分析モデル
家賃やマンション価格といった1変量データを築年数や最寄駅からの距離, 広さなど, 複数因子で説明するモデルを因子分析モデルという
因子分析では,通常, 多変量データをより少ない共通因子で説明しようとする.
多変量解析でスパース推定を用いると、しばしば解釈しづらい結果をもたらすことがある。
共通因子で説明しきれない部分は独自因子とよび, 正規分布などをを仮定する
3. 最尤推定による 分散の推定
尤度関数【第五回】
パラメータ の各値に対する(相対的な)もっともらしさ(likelihood)を表現
解釈
尤度(ゆうど)関数
確率関数・確率密度関数の x 部分に実際のデータを代入し, パラメータ の関数とみなしたもの.
パラメータに関係ない項を無視することもある.
)|(~ θxpX
θ
例 612=x
)|612()( θθ pL =
θ
最尤推定【統計の復習】
最尤(さいゆう)推定(Maximum Likelihood Estimate; MLE)
尤度関数の値を最大にするパラメータを推定値とする.
・対数尤度の最大化を考えてもよい
・実際のスパース推定は尤度関数を修正した関数を最大化
・簡単なケースをのぞくと数値的に最大化する
注意
cf) 関数の微分が0になる点とは限らない(大学院入試)
最尤推定【統計の復習】
∞<<∞− θ
例 s
x
es
xp 2)( 2
21)|(
θ
πθ
−−
=),(N~ sX θ
公式 ( )s
sxxp πθθ 2log
21
2)()|(log
2
−−
−=
x = 162の時, の対数尤度関数 (s >0 はここでは固定).
( )ss
L πθθ 2log21
2)162()(log
2
−−
−=
最尤推定値 162ˆ =MLθ
θ
計算してみよう! 統計モデルの例
← 今度は, 分散 s の推定を考える! ),0(N~ sX
1. データ x として s の対数尤度関数を書きなさい.
問題
=)(log sL ( )ss
x π2log21
2
2
−−
2. s の最尤推定値を求めなさい. (データ x で書く) ヒント: 関数 f(s) は s = a (>0) で最大値. ( )s
sasf log)( −−=
=MLs 2x
挑戦してみよう! 統計モデルの例
← 今度は, n サンプルの場合に
分散 s の推定を考える! ),0(N~,,1 sXX n
1. データ としてs の対数尤度関数を書きなさい.
問題*
=)(log sL ( )snxs
n
jj π2log
221
1
2 −− ∑=
2. s の最尤推定値を求めなさい.
=MLs ∑=
n
jjx
n 1
21
i.i.d.
nxx ,,1 ヒント: 独立性から1つ1つの対数尤度関数の和になります.
*学部1年次の統計で習うが, 難しいと思う場合はできなくてもよい
多変量正規分布【統計の復習】 多変量正規分布
),(N Σµ意味:
とくに
),(N~ ΣµX
( )Tpµµµ ,,1 = 平均ベクトル
ijΣ=Σ [ ] 分散共分散行列 (正定値, 実対称)
p次元確率変数ベクトル が多変量正規分布に従うことを以下のように記載
( )TpXXX ,,1 =
( )jiij XXCov ,=Σ
=Σ)(log L
をひとつの”変数”と考えて、対数尤度関数を書くと・・・・
Σ
),0(N~,,1 ΣnXX i.i.d.
0=µ簡単のため
推定したいパラメータ
行列(の各成分)
分散共分散行列の最尤推定
Σ
分散共分散行列の最尤推定
{ })2log(detlog)(tr2
)(log 1 πpSnL +Σ+Σ−=Σ −
pnxx R,, )()1( ∈S: の標本分散共分散行列*
= ∑
=
n
j
jl
jkkl xx
nS
1
)()(1pjk ,,1, =
S=Σ
SML =Σ* としているため 0=µ
の対数尤度関数 ),0(N Σ
(数学的な証明は行列の計算がめんどうだが、 で “最大値“をとる)
4. 因子分析モデルに おけるスパース推定
例:5教科の点数の場合
( )
+
2
12,1, F
Fjj λλj 番の科目の点数 =jX jµ jε+
=X µ FΛ+ ε+ベクトル・行列でまとめて
ベクトル表記に修正
行列
因子分析の統計モデル (1/2) Hirose and Yamamoto (2015)
m
εµ +Λ+= FX
ε,F
観測変数 (p 次元ベクトル) X
)( ijλ=Λ 因子負荷行列 【興味がある】
因子数 ( < p )
µ 観測変数の平均
パラメータ (固定)
確率変数 (直接観測できない)
: 潜在変数(共通因子)
考えてみよう
p: 独自因子
観測変数 → p 次元
)( ijλ=Λ
因子数 → m ( < p )
εµ
問* それぞれの次元はいくつか? m, p で答えよ
次元ベクトル
×
次元ベクトル
次元ベクトル
行列
p
p m
mF
: 平均
因子負荷行列 *学部1年次の線形代数で習うが, 難しいと思う場合はできなくてもよい
共通因子・独立因子のモデル
mFF ~,,~1 独立な共通因子 (それぞれ正規分布)
),0(N~ mI( )TmFFF ,,1 = m 変量 標準正規分布
共通因子
独自因子
),0(N~ Ψε 0>Ψ
ε,F 独立
分散共分散行列
独立性の仮定
因子分析の統計モデル (2/2)
説明の都合で 0=µ
Ψ+ΛΛ=Σ T
),0(N~,,1 ΣnXX i.i.d.
p 次元ベクトル(×n 人分)
むむ!! この形, どこかでみたような気がするであります!
=ΨΛ ),(log L を2つの”変数”と考えて、対数尤度関数を書くと・・・・ ΨΛ,
{ })(trdetlog)2log(2
),(log 1SpnL −Σ+Σ+−=ΨΛ π
パラメータの最尤推定
対数尤度関数が最大になるのは
ST =Ψ+ΛΛ=Σ
対数尤度関数
S: 標本分散共分散行列
この式は?!
これは、非常に困る であります!!
1) 推定値が存在しないから 2) カメごときには手が負えない計算だから(カメハラ) 3) 推定値が一つに定まらないから
Q: 上のケースで、 を推定する際に困る理由はどれか? ΨΛ,
推定値を絞る方法
以下の方程式は実数解を無数にもつ
アイディアを理解するための例題
( ) 12 =++ cba
( ) 42 =+ da(a, b, d) ができるだけスパースになるような解は?
Hirose & Yamamoto (2015) 因子負荷行列 にスパース性を仮定して推定! は対角行列(非対角成分 = 0)
ΛΨ
=Ψ
pψ
ψ
0
001
0,,1 >pψψ
2,0 === dba )1( =c
{ })(trdetlog)2log(2
1Spn −Σ+Σ+−= π
スパース推定 推定したいパラメータ
)( ijλ=Λ
正則化項つき対数尤度関数を最大化
),(~log ΨΛL
0>ρ :正則化パラメータ(分析者が調整)
∑∑= =
−p
j
m
kjk
1 1|| λρ
正則化項
解釈 最大になる時, 負荷行列のパラメータの多くが0になると期待 (正則化パラメータの大きさにも依存)
=Ψ
pψ
ψ
0
001
0,,1 >pψψ
正則化項つきの最尤推定【一般】
0>ρ :正則化パラメータ
正則化項(罰則項; Penalty term)
)(~log θL )(log θL= )(θρP−
0)( ≥θP
正則化項つき対数尤度関数
正則化項(非負) として表現し、対数尤度に追加する
パラメータに関する制約条件(スパース推定以外でも使う) )(θP
0)( =θP θ が制約条件を完全に満たす
LASSO推定量【一般】
以下を最大化する推定量
∑=
−=k
jjLL
1||)(log)(~log θρθθ
ら っ そ
LASSO推定量
がスパース推定を誘導 (Tibshirani (1996)) ∑=
=k
jjP
1||)( θθ正則化項
スパース推定を誘導する正則化項には、現在、様々なバリエーション. 注意
ら っ そ
5.分析例
因子分析 with LASSO推定
Rライブラリを利用 (R fanc* パッケージ内 fanc関数を利用; rho=0.1, gamma=Inf の結果を掲載)
X <- as.matrix(marks); # 各科目の平均、標準偏差を計算 meanX <- apply(X, 2, mean); sdevX <- apply(X, 2, sd); # 各行を正規化 X <- X - rep(1, nrow(X)) %o% meanX; X <- X / (rep(1, nrow(X)) %o% sdevX); Num <- nrow(X); # サンプルサイズ NumObs <- ncol(X); # 教科数(=独自因子の数) # fit data NumFactors <- 3; # 共通因子の数 X.res <- fanc(X, NumFactors );
Rの実行例
),0(N~ ΣXε+Λ= FX因子分析モデル
i.i.d.
*fanc = factor analysis via non-convex penalty 下平研(現鈴木讓研) 廣瀬助教(2015年当時;現在, 九州大)が作成
ここでは簡単のため因子数 = 3 として, LASSO で推定
分析結果 5教科の点数は ひとつの因子のみで決まる!
53532521515 ελλλ +++= FFFX
13132121111 ελλλ +++= FFFX
Mechanics
Vectors
Algebra
Analysis
Stat
1X 2X 3X 4X 5X
....
=Λ
0060.00065.00080.00054.00047.0
0.47 0.54 0.80 0.65 0.60
確かに0が多い (スパース!)
1F 2F 3F
∞== − γρ ;10 1
正則化項を弱くした場合 正則化パラメータを十分小さく設定
Mechanics
Vectors
Algebra
Analysis
Stat
1X 2X 3X 4X 5X
0.54 0.44 0.16
-0.01
0.75
1F2F
3F
−−
−=Λ
75.015.0080.000042.001.088.0016.061.015.044.052.000015.054.0 3つの因子をすべて利用する推定結果.
スパースでなくなり, やたら小さい値が混ざってくる.
∞== − γρ ;10 7
0.88 0.80
0.52 0.61
からの矢をかきいれて上のグラフを完成させよ. 解釈はできるか?
練習問題 2F
補足:非スパースな方法
1.MLE(最尤推定量) を1組求める
TMM Λ=Λ :'
とし, が解釈しやすい形になるように調整.
1つの例
),( MM ΨΛ2.直交行列 T を選んで
※因子分析は古く(1960-1970)から心理学で使われており, 因子負荷行列を推定する方法がいろいろ提案されている. ここでは, スパースモデリングの考え方が有用な例として紹介した
M'Λ
理解度チェック:スパース推定
一般にパラメータに制約条件がある場合、適当な正則化項をつけた対数尤度関数を最大化して推定する方法がある。
統計モデルのパラメータの推定値から, しきい値を定めて, 0に近いものをすべて0に置き換えることをスパース推定という.
スパース推定の手法として, Tibshirani (1996) で提案されたNATTO推定が有名である
統計モデルによっては、(対数)尤度関数の最大化を用いても、推定値が1つに絞れない場合がある。