SlideShare a Scribd company logo
線形?非線形?
2016-11-09
サイボウズラボ 西尾泰和
ver. 2 2016-12-05 末尾に加筆
このスライドの目的
機械学習に関して「線形な学習機より非線形な学
習機の方がよい」という誤解が根強い。
モデルの表現力は確かに非線形版の方が高い。
が、トレードオフとして必要なデータ量も多い。
実際に少ないデータ量で非線形版を使うと何が起
こるのか回帰を題材に実験して確認する。
2
参考
データが10万件なければ線形版、あってもまずは線形版を
試してうまく行かない場合だけ非線形版、という提案
3
http://peekaboo-vision.blogspot.jp/2013/01/machine-learning-cheat-sheet-for-scikit.html
学習モデル
SGD Regressor: 与えられた損失関数を確率的勾
配降下法(SGD)で最小化する。デフォルトの二乗
誤差の最小化を使った。線形モデル。以下SGD
SVR: Support Vector Regression。性能を出すた
めにカーネル選択やパラメータの調整が必要 * だ
が今回はデフォルト値で使った。非線形。
GPR: Gaussian Process Regression。デフォルト
ではノイズにover fitして比較対象にすらならな
いのでnugget=0.001した。非線形。
4
* http://www.slideshare.net/sleepy_yoshi/svm-13435949
実験の概要
学習データを生成し、SGD、SVR、GPRの3つを
学習。別途生成した1000件のデータで性能を測
り、10回繰り返して平均と2SDを表示する。
5
ソースはこちら: https://github.com/nishio/linear/blob/master/t.py
実験結果はこちら: https://github.com/nishio/linear/blob/master/result3.txt
性能の測り方
性能は回帰の評価によく使われる R2
決定係数で
測った。完全に正解した時は 1.0、常にYの平均
値を返した時に 0.0 になる大きい方が良い値。
負の値になるのは「平均を返す方がマシ」という
酷い状態で、以下では赤字で表示する。
6
データ分布の概要
入力XはD次元の標準正規分布に従う。サンプル
数はN件。
予測すべき真の値は sum(X) で、
これに正規分布に従うノイズが乗ったものを
観測された正解データYとする。
ノイズの標準偏差はS。
7
結果考察1
入力が3次元の時、データ数30~1000のいずれで
もSGDが一番性能が良い。
SVRはデータが増えるにしたがって徐々に良くな
るが、N=300の時の性能がSGDのN=100の時の性
能と同程度。
8
N=30 D=3 S=1.0
SGD 0.80(+-0.01), SVR 0.74(+-0.04), GPR -1.96(+-0.64)
N=100 D=3 S=1.0
SGD 0.91(+-0.01), SVR 0.76(+-0.02), GPR -0.35(+-0.35)
N=300 D=3 S=1.0
SGD 1.00(+-0.00), SVR 0.91(+-0.02), GPR 0.85(+-0.08)
N=1000 D=3 S=1.0
SGD 1.00(+-0.00), SVR 0.96(+-0.01), GPR 0.94(+-0.02)
結果考察2
入力が10次元でも、SVRがSGDと同程度の性能に
なるには3倍程度のデータ量が必要という傾向は
同じ。
N=30の際にGPRがSGDに勝っている。興味深い。
9
N=30 D=10 S=1.0
SGD 0.66(+-0.01), SVR 0.20(+-0.04), GPR 0.75(+-0.02)
N=100 D=10 S=1.0
SGD 0.86(+-0.00), SVR 0.65(+-0.01), GPR 0.77(+-0.01)
N=300 D=10 S=1.0
SGD 0.99(+-0.00), SVR 0.83(+-0.02), GPR 0.83(+-0.02)
N=1000 D=10 S=1.0
SGD 1.00(+-0.00), SVR 0.90(+-0.01), GPR 0.76(+-0.04)
結果考察3
入力が30次元になると、N=30ではSVRやGPRだ
とスコアがほとんど0、つまり「回帰しないで平
均値を返すのと大差ない」という状態。
SVRはSGDの10倍程度のデータが必要。
10
N=30 D=30 S=1.0
SGD 0.54(+-0.02), SVR 0.06(+-0.01), GPR 0.02(+-0.01)
N=100 D=30 S=1.0
SGD 0.81(+-0.01), SVR 0.20(+-0.01), GPR 0.10(+-0.01)
N=300 D=30 S=1.0
SGD 0.99(+-0.00), SVR 0.57(+-0.02), GPR 0.29(+-0.02)
N=1000 D=30 S=1.0
SGD 1.00(+-0.00), SVR 0.89(+-0.01), GPR 0.59(+-0.02)
結果考察4
入力が100次元だとSVRはN=300でもSGDのN=30
に勝てない。GPRはN=1000まで全滅。
11
N=30 D=100 S=1.0
SGD 0.24(+-0.03), SVR -0.01(+-0.02), GPR -0.05(+-0.03)
N=100 D=100 S=1.0
SGD 0.69(+-0.02), SVR 0.02(+-0.01), GPR -0.01(+-0.01)
N=300 D=100 S=1.0
SGD 0.96(+-0.01), SVR 0.12(+-0.01), GPR -0.01(+-0.01)
N=1000 D=100 S=1.0
SGD 1.00(+-0.00), SVR 0.38(+-0.01), GPR -0.00(+-0.00)
ここまでのまとめ
全般的にSGDがよい(1件GPRが勝ったのは謎)
SVRはSGDと同程度の性能を出すのに3~10倍の
データ量が必要。
GPRは高次元になった時の性能劣化が激しい。
なお、ノイズが強い(S=3.0)時も傾向は同じなの
で説明を割愛する。
12
結果考察5
ノイズが小さい(S=0.1)時、
入力次元が小さいなら、GPRが少ないデータ量で
もよい性能を出しチャンピオンになる。
13
N=30 D=3 S=0.1
SGD 0.65(+-0.01), SVR 0.73(+-0.05), GPR 0.97(+-0.01)
N=100 D=3 S=0.1
SGD 0.93(+-0.01), SVR 0.90(+-0.02), GPR 0.99(+-0.01)
N=300 D=3 S=0.1
SGD 1.00(+-0.00), SVR 0.95(+-0.02), GPR 1.00(+-0.00)
N=1000 D=3 S=0.1
SGD 1.00(+-0.00), SVR 0.99(+-0.01), GPR 1.00(+-0.00)
結果考察6
ただし、GPRはDが増えるとSGDに負ける。
14
N=30 D=10 S=0.1
SGD 0.62(+-0.02), SVR 0.29(+-0.02), GPR 0.68(+-0.03)
N=100 D=10 S=0.1
SGD 0.91(+-0.00), SVR 0.76(+-0.02), GPR 0.83(+-0.02)
N=300 D=10 S=0.1
SGD 1.00(+-0.00), SVR 0.87(+-0.02), GPR 0.94(+-0.01)
N=1000 D=10 S=0.1
SGD 1.00(+-0.00), SVR 0.94(+-0.02), GPR 0.98(+-0.01)
N=30 D=30 S=0.1
SGD 0.44(+-0.03), SVR -0.06(+-0.05), GPR -0.15(+-0.06)
N=100 D=30 S=0.1
SGD 0.93(+-0.01), SVR 0.26(+-0.01), GPR 0.15(+-0.01)
N=300 D=30 S=0.1
SGD 0.99(+-0.00), SVR 0.61(+-0.02), GPR 0.32(+-0.02)
N=1000 D=30 S=0.1
SGD 1.00(+-0.00), SVR 0.91(+-0.01), GPR 0.58(+-0.02)
ここまでのまとめ
ノイズが少なくて入力の次元が小さいときには
GPRがSGDを上回る性能を出す。D=10でN=30の
時にGPRが勝つのはS=1.0の時にも観測された結
果ので、これくらいの規模の問題はGPRが有利な
のかも。ただ、スムージングパラメータ
nugget=0.001が適当かどうか本当はパラメータ
を変えて繰り返し実験すべき。
次元が大きくなるとSGDが安定して強い。
15
まとめ
同じデータ量ならSGDが強い。GPRが意外と有効
なケースもある。SVRはデータが3~10倍くらい
あればSGDに並ぶ。
データ量が少なくて「非線形な関係もあるかも」
という状況ならまずは線形でやってみるのがよさ
そう。
16
以下付録
17
真の関数
今回の実験では、回帰したい真の関数が
sumという線形な関数なのでSGDに有利。
「X1とX2がともに大きいときだけYが大きくな
る」のような非線形な項がたくさんあるとSGDが
不利になってくるだろう。
そういう場合は「X1とX2がともに大きい」を入
力に追加すればいい。線形学習機は学習後に係数
を観察することでどの特徴量がどれくらいの重み
で効いているのか観察できるのが長所。
18
線形学習機の力
線形学習機は複雑な課題に使えないという誤解が
あるかもしれないが、単語の分かち書きみたいな
複雑そうな課題でも十分な性能を出している * 。
新しい手法に比べて歴史が長いので、各種ライブ
ラリの高速化が進んでいるのも長所の一つ。
19
* http://www.phontron.com/kytea/index-ja.html
publication bias
コンペや機械学習の手法に関する論文で使われる
既存データセットは、そもそも線形学習機で解き
にくいことを確認済みのものが用いられているの
で「線形で十分」と目にすることが少ない。
機械学習を新規データセットに使った応用系の論
文は、手段ではなく結果の有用性の方にフォーカ
スされがち。
枯れた手法より目新しい手法の方が話題になって
SNSでシェアされやすい。などなど枯れた手法に
不利なバイアスが強いのではないだろうか……。
20
テストデータ
今回の実験では、テストで1000件を10回、
つまり10000件のデータをテストに使っている。
実問題では貴重な学習データの一部をテストに回
すことになる。データが乏しいと今回の実験より
も結果の分散が大きくなって「改善したのかどう
かよくわからない」「どちらの手法が良いのかよ
くわからない」という事態が多くなる。その意味
でも「データが少ないならまずは線形」がよいと
思う。
21
加筆(2016-12-05)
「線形/非線形」について
非線形な問題について
Feature Engineereingについて
SGDがGPRに負ける謎の解明
22
線形/非線形について
Q: そもそも「モデルが線形かどうか」を
意識していない人が多いのでは
A: 確かに。線形かどうかより下記が重要:
• モデルがシンプルで振る舞いを理解できる
• 少ないデータ量でまともな学習をする
• 学習結果を人間が観察できる
線形回帰はこの条件を満たしているので
データが少ない状況で試行錯誤する際に
適している。
23
タイトルの選択はミスったかも
非線形な問題について
Q: この実験は真の関数が線形で、線形モデルが
良い性能を出す、という結果だった。真の関数が
非線形の場合は非線形が勝つのでは。
A: もちろんその可能性はある。例えば手書き文
字認識を各ピクセルを入力として線形識別しても
良い成果が出ないはず。 *
「線形モデルでどの程度表現できるか」は問題依
存なので、読者のみなさんが自分のデータで試し
てみると良いと思う。まずは線形を試して、それ
から非線形で精度が向上するのかどうかを実験す
るイメージ。
24
* これもどれくらいのデータでどの程度の精度になるのか実験すると面白そう
Feature Engineeringについて
もし「X1とX2がともに大きいときだけYが大きく
なる」という非線形な関係があるかもと思うので
あれば「X1とX2がともに大きい」という特徴量
を入力に追加すれば、線形モデルでもその関係を
扱えるようになる。
この「特徴量の工夫」は「feature engineering」
と呼ばれていて、機械学習のコンペではこれが時
間の大半を占める、という意見がある。優勝者イ
ンタビュー:
>I spent 50% on feature engineering, 40% on
feature selection plus model ensembling, and less
than 10% on model selection and tuning.
25
http://blog.kaggle.com/2015/12/21/rossmann-store-sales-winners-interview-1st-place-gert/
SGDがGPRに負ける謎
まずお詫びと訂正
この図のここの分岐を「データが100Kなければ
線形な方法で」と紹介したけど、これは誤読で、
「データが100K超えてたら、SGDぐらいしか現
実的な速度で動かないよ」
という趣旨でした。
26
SGD Regressor
SGD Regressorと普通の線形回帰*の違い:
普通の線形回帰はデータ全部を使って最適化問題
を解くが、SGD Regressorは「データが多すぎて
全部一度には無理」という状況を想定して、ラン
ダムにデータを選んで逐次的に最適化する。
これは選ばれた順による影響がある。最後のデー
タにより強く影響される。
27
* sklearn.linear_model.LinearRegression
仮説
データが少ないときにSGD RegressorがGPRに負
けたのは、データが少ないことによってSGDの
「データ順の影響」のデメリットが強く出てし
まったからではないか?
検証実験:
データ全体を使う線形回帰(以下LIN)を追加
28
コードと結果はこちら:
https://github.com/nishio/linear/commit/64dff8f715a585fcaff856488351ce8c2cad5e34
Linear Regressorの頭文字を取るとLRだけど、
これはLogistic Regressionを指すことが多いから避けた
結果1
前回GPRが強かったノイズ少なめの問題設定で
普通の線形回帰(LIN)はN=30でもスコア1.00。
(余談: 線形SVR*も同様の結果)
データ量の少ないときにSGDの性能が悪いだけ。
29
N=30 D=3 S=0.1
LIN 1.00(+-0.00), SGD 0.62(+-0.01), SVR 0.74(+-0.02), LSVR 1.00(+-0.00) GPR 0.95(+-0.01)
N=100 D=3 S=0.1
LIN 1.00(+-0.00), SGD 0.95(+-0.00), SVR 0.90(+-0.02), LSVR 1.00(+-0.00) GPR 1.00(+-0.00)
N=300 D=3 S=0.1
LIN 1.00(+-0.00), SGD 1.00(+-0.00), SVR 0.96(+-0.02), LSVR 1.00(+-0.00) GPR 1.00(+-0.00)
N=1000 D=3 S=0.1
LIN 1.00(+-0.00), SGD 1.00(+-0.00), SVR 0.98(+-0.01), LSVR 1.00(+-0.00) GPR 1.00(+-0.00)
* sklearn.svm.LinearSVR
結果2
普通の線形回帰はだいたいどのシチュエーション
でも一番性能が良い。(例外は次ページ)
今回の問題設定ではN=30の時の普通の線形回帰
の性能にSVRやGPRはN=1000でも追いつけない。
30
N=30 D=10 S=1.0
LIN 0.92(+-0.01), SGD 0.60(+-0.02), SVR 0.30(+-0.02), LSVR 0.87(+-0.02) GPR 0.72(+-0.03)
N=100 D=10 S=1.0
LIN 0.99(+-0.00), SGD 0.95(+-0.00), SVR 0.71(+-0.02), LSVR 0.99(+-0.00) GPR 0.77(+-0.03)
N=300 D=10 S=1.0
LIN 1.00(+-0.00), SGD 0.99(+-0.00), SVR 0.82(+-0.01), LSVR 0.99(+-0.00) GPR 0.82(+-0.01)
N=1000 D=10 S=1.0
LIN 1.00(+-0.00), SGD 1.00(+-0.00), SVR 0.90(+-0.02), LSVR 1.00(+-0.00) GPR 0.77(+-0.03)
結果3
普通の線形回帰の性能が悪いのは D ≧ N の時。
D次元の係数を決定するのにデータが足りない。
一方、そういうシチュエーションでも線形SVRは
悪くない性能を出している。
31
N=30 D=30 S=1.0
LIN 0.02(+-0.13), SGD 0.67(+-0.02), SVR 0.09(+-0.00), LSVR 0.79(+-0.03) GPR 0.04(+-0.01)
N=30 D=100 S=1.0
LIN 0.15(+-0.04), SGD 0.22(+-0.04), SVR -0.18(+-0.03), LSVR 0.23(+-0.04) GPR -0.08(+-0.02
N=100 D=100 S=1.0
LIN -19.66(+-2.39), SGD 0.71(+-0.02), SVR 0.03(+-0.02), LSVR 0.87(+-0.01) GPR -0.01(+-0.0
まとめ
今回の問題設定に関しては全データを使った線形
回帰が圧倒的に強い。
ただしD ≧ N の状況では使えない。線形SVRはこ
の状況でも悪くない性能を出した。
非線形なGPRがSGDに勝つことがあるが、これは
SGDがデータの少ない状況に弱いだけだった。今
回の問題設定ではGPRやSVRに良いところはない
緩募:よさげな非線形データセット
32

More Related Content

PDF
PCAの最終形態GPLVMの解説
PDF
Stochastic Variational Inference
PDF
強化学習その1
PDF
PyMCがあれば,ベイズ推定でもう泣いたりなんかしない
PDF
協調フィルタリング入門
PPTX
ベイズファクターとモデル選択
PDF
はじパタ8章 svm
PDF
特徴選択のためのLasso解列挙
PCAの最終形態GPLVMの解説
Stochastic Variational Inference
強化学習その1
PyMCがあれば,ベイズ推定でもう泣いたりなんかしない
協調フィルタリング入門
ベイズファクターとモデル選択
はじパタ8章 svm
特徴選択のためのLasso解列挙

What's hot (20)

PDF
GAN(と強化学習との関係)
PDF
時系列問題に対するCNNの有用性検証
PPTX
[DL輪読会]World Models
PDF
「統計的学習理論」第1章
PDF
相関と因果について考える:統計的因果推論、その(不)可能性の中心
PDF
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
PDF
Active Learning 入門
PDF
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
PDF
LDA入門
PDF
深層生成モデルと世界モデル, 深層生成モデルライブラリPixyzについて
PPTX
How to use in R model-agnostic data explanation with DALEX & iml
PPTX
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
PDF
協調フィルタリングを利用した推薦システム構築
PDF
統計的学習の基礎 5章前半(~5.6)
PDF
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
PDF
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
PDF
Statistical Semantic入門 ~分布仮説からword2vecまで~
PPTX
15分でわかる(範囲の)ベイズ統計学
PDF
機械学習による統計的実験計画(ベイズ最適化を中心に)
PPTX
ベイズ統計学の概論的紹介
GAN(と強化学習との関係)
時系列問題に対するCNNの有用性検証
[DL輪読会]World Models
「統計的学習理論」第1章
相関と因果について考える:統計的因果推論、その(不)可能性の中心
文法圧縮入門:超高速テキスト処理のためのデータ圧縮(NLP2014チュートリアル)
Active Learning 入門
Optunaを使ったHuman-in-the-loop最適化の紹介 - 2023/04/27 W&B 東京ミートアップ #3
LDA入門
深層生成モデルと世界モデル, 深層生成モデルライブラリPixyzについて
How to use in R model-agnostic data explanation with DALEX & iml
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
協調フィルタリングを利用した推薦システム構築
統計的学習の基礎 5章前半(~5.6)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
「NVIDIA プロファイラを用いたPyTorch学習最適化手法のご紹介(修正版)」
Statistical Semantic入門 ~分布仮説からword2vecまで~
15分でわかる(範囲の)ベイズ統計学
機械学習による統計的実験計画(ベイズ最適化を中心に)
ベイズ統計学の概論的紹介
Ad

Viewers also liked (7)

PDF
いまさら聞けない機械学習のキホン
PDF
PRMLの線形回帰モデル(線形基底関数モデル)
PDF
SGD+α: 確率的勾配降下法の現在と未来
PPTX
勾配降下法の 最適化アルゴリズム
PDF
機械学習プロフェッショナルシリーズ 深層学習 chapter3 確率的勾配降下法
PDF
機械学習のためのベイズ最適化入門
PDF
機械学習によるデータ分析まわりのお話
いまさら聞けない機械学習のキホン
PRMLの線形回帰モデル(線形基底関数モデル)
SGD+α: 確率的勾配降下法の現在と未来
勾配降下法の 最適化アルゴリズム
機械学習プロフェッショナルシリーズ 深層学習 chapter3 確率的勾配降下法
機械学習のためのベイズ最適化入門
機械学習によるデータ分析まわりのお話
Ad

More from nishio (20)

PDF
量子アニーリングマシンのプログラミング
PDF
夏プロ報告
PDF
ITと経営
PDF
部分観測モンテカルロ計画法を用いたガイスターAI
PDF
交渉力について
PDF
If文から機械学習への道
PDF
組織横断型研究室構想
PDF
2017首都大学東京情報通信特別講義
PDF
強化学習その5
PDF
良いアイデアを出すための方法
PDF
強化学習その4
PDF
強化学習その3
PDF
強化学習その2
PDF
機械学習キャンバス0.1
PDF
首都大学東京「情報通信特別講義」2016年西尾担当分
PDF
Wifiで位置推定
PDF
ESP8266EXで位置推定
PDF
Raspberry Piで Wifiルータを作る
PDF
Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)
PDF
「ネットワークを作る」 ってどういうこと?
量子アニーリングマシンのプログラミング
夏プロ報告
ITと経営
部分観測モンテカルロ計画法を用いたガイスターAI
交渉力について
If文から機械学習への道
組織横断型研究室構想
2017首都大学東京情報通信特別講義
強化学習その5
良いアイデアを出すための方法
強化学習その4
強化学習その3
強化学習その2
機械学習キャンバス0.1
首都大学東京「情報通信特別講義」2016年西尾担当分
Wifiで位置推定
ESP8266EXで位置推定
Raspberry Piで Wifiルータを作る
Wifiにつながるデバイス(ESP8266EX, ESP-WROOM-02, ESPr Developerなど)
「ネットワークを作る」 ってどういうこと?

線形?非線形?