スパース推定
統計数理研究所 公開講座 参加報告
内山 雄司 (@y__uti)
2017-07-19 社内勉強会
自己紹介
内山 雄司 (@y__uti)
◦ http://y-uti.hatenablog.jp/ (phpusers-ja)
仕事
◦ 受託開発の会社 (株式会社ピコラボ) でプログラマをしています
興味
◦ プログラミング言語処理系
◦ 機械学習
2017-07-19 社内勉強会 2
公開講座の情報
講座名 スパース推定
日時 2017 年 7 月 4 日 (火) 10:00 ~ 16:00
講師 川野秀一先生 (電気通信大学)
受講料 5,000 円 (税込)
URL http://www.ism.ac.jp/lectures/kouza.html
ちなみに
◦ 定員 100 名のところ 170 名くらいの応募があり抽選
◦ 昨年も抽選で人気講座とのこと
2017-07-19 社内勉強会 3
公開講座の内容
スパース推定法の説明
◦ Lasso の説明
◦ さまざまなスパース推定法 (Lasso の拡張)
多変量解析への応用
スパース推定アルゴリズム
正則化パラメータの選択方法
詳細はレジュメで
◦ 内山の机上に置いてあります
2017-07-19 社内勉強会 4
スパース推定とは
線形回帰などの問題におけるパラメータ推定法の一つ
推定されるパラメータベクトルが 疎 = スパース になる
スパース推定は 特徴選択 を同時に実行していると解釈できる
高次元小標本データ に適した手法
2017-07-19 社内勉強会 5
低次元なデータでの例
◦ 平面上に 100 個のサンプルデータを生成
2017-07-19 社内勉強会 6
X = np.random.uniform(-10, 10, (100, 2))
◦ 重みベクトルを [2, -1] としてノイズを加えて目的変数を生成
w = np.array([2, -1]).reshape(-1, 1)
y = X.dot(w) + np.random.normal(0, 1, (100, 1))
このデータを線形回帰で予測する
Ridge 回帰 (スパースではない手法)
sklearn.linear_model.Ridge を利用してパラメータ推定
2017-07-19 社内勉強会 7
ridge = Ridge(fit_intercept=False)
ridge.fit(X, y)
Lasso (スパース推定手法)
sklearn.linear_model.Lasso を利用してパラメータ推定
2017-07-19 社内勉強会 8
lasso = Lasso(fit_intercept=False)
lasso.fit(X, y)
10 次元の場合
◦ 10 次元の空間上に 100 個のサンプルデータを生成
2017-07-19 社内勉強会 9
X = np.random.uniform(-10, 10, (100, 10))
◦ 適当な重みベクトルを定めてノイズを加えて目的変数を生成
w = np.array(np.exp(-np.arange(0, 10) * 2)).reshape(-1, 1)
y = X.dot(w) + np.random.normal(0, 1, (100, 1))
重みベクトルの次元ごとの値
パラメータ推定結果
Ridge 回帰と Lasso でパラメータ推定を行う
2017-07-19 社内勉強会 10
◦ Ridge 回帰では各次元に小さな値が残る
◦ Lasso では小さな値は 0 に落ちる ⇒ 特徴選択
50 次元
2017-07-19 社内勉強会 11
100 次元
2017-07-19 社内勉強会 12
200 次元
2017-07-19 社内勉強会 13
◦ 縦軸のスケールが異なっていることに注意
500 次元
2017-07-19 社内勉強会 14
◦ 縦軸のスケールが異なっていることに注意
1,000 次元
2017-07-19 社内勉強会 15
◦ 縦軸のスケールが異なっていることに注意
正則化項の効果 (Ridge)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 16
正則化項の効果 (Ridge)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 17
正則化項の効果 (Ridge)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 18
正則化項の効果 (Ridge)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 19
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 20
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 21
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 22
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 23
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 24
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 25
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 26
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 27
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 28
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 29
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 30
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 31
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 32
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 33
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 34
正則化項の効果 (Lasso)
1,000 次元での例
◦ 正則化項が大きい 原点に近付く
◦ 正則化項が小さい 最小二乗解に近付く
2017-07-19 社内勉強会 35
正則化項による解の変化
最初に作った二次元での例
◦ 正則化項なしの場合は (2.0, -1.0) あたりが解になる
2017-07-19 社内勉強会 36
Ridge 回帰
正則化の強さによって解が変わる
2017-07-19 社内勉強会 37
Ridge 回帰
原点を中心とする円と接する箇所が解になる
2017-07-19 社内勉強会 38
Ridge 回帰
原点を中心とする円と接する箇所が解になる
2017-07-19 社内勉強会 39
Ridge 回帰
原点を中心とする円と接する箇所が解になる
2017-07-19 社内勉強会 40
Ridge 回帰
原点を中心とする円と接する箇所が解になる
2017-07-19 社内勉強会 41
Ridge 回帰
原点を中心とする円と接する箇所が解になる
2017-07-19 社内勉強会 42
Lasso
正則化の強さで解が変わるのは同じだが軌跡が異なる
2017-07-19 社内勉強会 43
Lasso
原点を中心とする四角と接する箇所が解になる
2017-07-19 社内勉強会 44
Lasso
原点を中心とする四角と接する箇所が解になる
2017-07-19 社内勉強会 45
Lasso
原点を中心とする四角と接する箇所が解になる
2017-07-19 社内勉強会 46
Lasso
原点を中心とする四角と接する箇所が解になる
2017-07-19 社内勉強会 47
Lasso
原点を中心とする四角と接する箇所が解になる
2017-07-19 社内勉強会 48
様々なスパース推定法
欲しい性質に合わせた図形を設計して使えるのでは?
◦ Elastic Net
◦ Fused Lasso
◦ などなど (公開講座のレジュメで様々な方法が紹介されています)
高速な求解アルゴリズムの構築が現実的には重要
2017-07-19 社内勉強会 49

スパース推定