概要
今回の記事では、機械学習の特定の手法を解説するのではなく、**「どんな問題の時に(いつ)、どの機械学習の手法(どれ)を使えばよいのか」という点、つまり機械学習の「いつどれパターン」**を整理していきます。
理由は、インターネット上では様々な手法に関する詳細な情報を(時にはコード付きで)集められる一方で、「結局どれを使えばいいのさ!」という疑問が僕個人、払拭できていないからです。
そんな駆け出しデータサイエンティストが少しでも成長できるように、勉強したことを随時書き留めていきます!
使用する文献
Trevor Hastie, Robert Tibshirani, Jerome Friedman 著
『統計的学習の基礎 データマイニング・推論・予測』
上記の文献をベースにまとめていきます! (学生には少々高価な買い物でした…笑)
ちなみにこの本、ちゃんと読むと2~3年かかるそうですが、今回の目標としては1ヶ月で大まかな内容だけを理解し、**「いつどれパターン」**を習得していきます!
(大体800ページあるので、30ページ/日のペースでしょうか…笑)
全体の構成
まずは目次をざっと確認してみます。
第1章 序章
第2章 教師あり学習の概要
第3章 回帰のための線形手法
第4章 分類のための線形手法
第5章 基底展開と正則化
第6章 カーネル平滑化法
第7章 モデルの評価と選択
第8章 モデル推論と平均化
第9章 加法的モデル, 木, および関連手法
第10章 ブースティングと加法的木
第11章 ニューラルネットワーク
第12章 サポートベクトルマシンと適応型判別
第13章 プロトタイプ法と最近傍探索
第14章 教師なし学習
第15章 ランダムフォレスト
第16章 アンサンブル学習
第17章 無向グラフィカルモデル
第18章 高次元の問題:p>>N
章の構成をざっくり整理すると、まず3~8章で線形回帰を用いた基本的な機械学習のアプローチを抑えていそうですね。
そこから木, ニューラルネットワーク, サポートベクトルマシンと複雑な手法へと発展しています。
次の最近傍探索はモデルのベースライン(プロトタイプ法)として使われるようですね。
教師なし学習は14章だけなので、やっぱり用途が限られているのですかね?
ランダムフォレストやアンサンブル学習は有名ですが、なぜ最後の方に持ってきたのか…
あと17, 18章の内容は聞いたこともありません。笑
ということで、目次は以下のように整理できます。
第1章 序章 -導入-
第2章 教師あり学習の概要
第3章 回帰のための線形手法 -線形手法を用いた基本の流れ-
第4章 分類のための線形手法
第5章 基底展開と正則化
第6章 カーネル平滑化法
第7章 モデルの評価と選択
第8章 モデル推論と平均化
第9章 加法的モデル, 木, および関連手法 -より複雑な手法に発展-
第10章 ブースティングと加法的木
第11章 ニューラルネットワーク
第12章 サポートベクトルマシンと適応型判別
第13章 プロトタイプ法と最近傍探索 -ベースラインモデルの作り方-
第14章 教師なし学習 -教師なし学習まとめ-
第15章 ランダムフォレスト -複数の木を用いた手法-
第16章 アンサンブル学習
第17章 無向グラフィカルモデル -未知の領域(笑)-
第18章 高次元の問題:p>>N
教師あり学習の概要
予測のためのベースアプローチ
教師あり学習で回帰あるいは分類の予測を行う場合、以下の2つのアプローチが全ての手法のベースとなります。
最小二乗法 : 線形モデルによって直線的に予測値あるいは決定境界を近似
最近傍法 : 入力空間内で入力値 $x$ に近いk個の訓練データ $x_i$ の出力平均より予測
ここで抑えておくべきことは以下の特徴です。
最小二乗法
→ 予測の際に線形という過程に過度に依存。
→ 予測の分散が小さく、*バイアスが大きい。
最近傍法
→ データの生成過程に厳密な仮定を設けていない。
→ 予測の分散が大きく、*バイアスが小さい。
※ バイアス : 母集団から抽出した標本の分布が、どれくらい母集団の分布から乖離しているかを表す。
つまり、極端に制約が強い手法が最小二乗法、極端に柔軟性の高い手法が最近傍法ということになります。
最小二乗法と最近傍法の問題点
よって、もし1分で機械学習のモデルを作れと言われたら、最小二乗法と最近傍法の二択で考えればOKです。笑
しかしこれらのアプローチは。良くも悪くも極端な手法と言えます。
ゆえに以下のような問題が生じてしまいます。
最小二乗法
→ 線形近似という制約が強く、仮定が正しくなければ精度は悪化。
→ 特に入力次元数が増加すれば、全ての特徴が線形という仮定に縛られる。
最近傍法
→ 入力次元数が増加すると、最近傍点が目標点から乖離し誤差が大きくなる可能性が高い。
→ 制約条件がほとんどないため、データの生成過程を再現しにくい。
したがって、実際に機械学習のモデルを作る場合には、
1. 最小二乗法の制約を緩める。
2. 最近傍法に制約を追加する。
といういずれかのアプローチをとります。
つまり、世の中に存在する機械学習の様々な手法は全て、最小二乗法と最近傍法の中間的な位置にあります。
制限付き推定法
最小二乗法または最近傍法に制限(仮定)を設ける方法としては、次の3つがあります。
1. 罰則関数・正則化
→ 「最小二乗法の制約を緩める」タイプの制限を設ける。
→ 推定対象の関数に滑らかさを持たせ、過学習を防ぐ。
2. カーネル法と局所関数
→ 「最近傍法に制約を追加する」タイプの制限を設ける。
→ 局所的な近傍の決め方、どのような関数を局所的に当てはめるかをカーネル関数によって指定する。
3. 基底関数と辞書による方法
→ 「最近傍法に制約を追加する」タイプの制限を設ける。
→ 特定の基底関数の組み合わせ(線形展開)によって推定を行う。
回帰のための線形手法
線形モデルでは説明変数 $X_i$ の係数 $β_i$ に関して線形であることを仮定しており、主に最小二乗法によって求められる。
また説明変数 $X_i$ は単なる量的入力だけでなく、logや√に変換されたり、基底展開による多項式、カテゴリ変数のダミー変数化など様々な値をとる。
また変数間のスケールの違いによる影響をなくすために、しばしば標準化を行う。
そしてこの線形モデルは、訓練データ数の少ない場合や、信号対雑音比が低い、もしくは疎なデータが与えられた時に効果を発揮する。
変数選択
しかし、以下の理由で線形モデルは満足のいくモデルとは言い難い。
1. 予測精度 : バイアスが小さい反面、予測値の分散が大きい。(最小二乗法)
2. 解釈性 : 予測変数の数が多いと、より影響の大きい変数の部分集合を集めたくなる。
よってここでは、線形モデルの係数を縮小したり、いくつかの係数をゼロにすることで、これらの問題点を解消していく。
言い換えると、「最小二乗法の制約を緩める」タイプの制限を設け、罰則関数・正則化を取り入れていく。
最良部分集合選択による回帰
この方法では最も小さい残差二乗和が得られる大きさkの変数部分集合を求める。
そのため、指定したk個の説明変数だけで最良なモデルを構築することができる。
しかしこのkの個数は、効率的な跳躍限定法でもせいぜい30~40程度しか扱えず、また残差二乗和は部分集合の大きさkの値が大きくなるほど小さくなっていくため、kの最適値を求めるのは難しい。
リッジ回帰
リッジ回帰では、回帰係数の大きさに罰則を課すことによって、係数の値を縮小させる。
このリッジ回帰係数は、罰則付き残差二乗和を最小化することで求める。
β^{ridge} = argmin_b{\sum_{i=1}^{N}}(y_i - β_0 - {\sum_{j=1}^{p}}{x_{ij}β_{j}})^2 + λ{\sum_{j=1}^{p}}{β_{j}^2}
ここでリッジ回帰の解は入力変数の大きさに対して不変ではないため、入力変数は標準化しておく必要がある。
またリッジ回帰は入力変数 $X$ の主成分とも関連を持ち、小さい主成分、つまり $X$ の列空間において小さい分散を持つ方向の成分(回帰係数)を最も縮小させる。
lasso
lassoはリッジ回帰と同様、罰則付き残差二乗和を最小化することで求めるが、最小化式は以下のように定義される。
β^{ridge} = argmin_b{\sum_{i=1}^{N}}(y_i - β_0 - {\sum_{j=1}^{p}}{x_{ij}β_{j}})^2 + λ{\sum_{j=1}^{p}}{|β_{j}|}
つまり、後半の罰則項が二乗ではなく絶対値に置き換わる。
そして、この制約の性質上、回帰係数のいくつかはゼロになる。
ゆえにlassoはある種の連続的な変数選択を行うことができる。
最小角回帰
この手法は前向き漸次的回帰に分類され、切片の値から開始して順次モデルに最善な説明変数を加えていくアプローチをとる。
(ちなみに、リッジ回帰やlassoは後向き漸次的回帰と呼ばれ、全ての説明変数のうち影響の小さい変数を順次除外していく。)
また最小角回帰はlassoとの深い関連性を持ち、lassoの完全な解経路を計算することができる。
さらに予測変数の数がp個の時、lassoは完全な最小二乗推定を得るためにp回以上の操作を要することもあるが、最小角回帰は常にp回の操作で推定可能という効率性も有している。
グループlasso
最後にグループlassoでは、p個の変数がL個のグループに分割されると仮定した上で推定を行う。
これは同じ対象の数値群やカテゴリ変数から求めたダミー変数群をひとまとまりのグループとして扱い、同じグループの変数を同時に縮小・選択することができる。
つまりこの手法では、グループと個々の変数両方をゼロにするような最適化がなされるため、λの値によっては全ての変数グループがモデルから除外される。
分類のための線形手法
線形手法では、線形な決定境界によって入力空間をラベルの付いた複数の領域に分割する。
また線形な決定境界でも、入力変数をn次多項式に拡張することで、決定境界はn次関数で表される。
そして一般的に、クラス数Kが3以上の問題を解くためには、(K-1)次の多項式が必要となる。
線形判別分析
この手法は、各クラスが共通の共分散行列を持つと仮定した分類手法であり、それぞれのクラス密度が多変量ガウス分布に従う必要がある。
そして線形判別分析にはデータを意味のある低次元に投影して見ることができるという利点がある。
そのためp次元入力空間においてK個のクラスに分類する場合、線形判別分析では(K-1)次元の部分空間でデータを扱うことが可能となり、次元削減の役割を果たす。
よって、pがKよりも非常に大きい場合、線形判別分析でかなりの次元を削減できる。
しかしながらこの手法は、外れ値の影響を受けやすいというデメリットを持つ。
2次判別分析
線形判別分析では各クラスが共通の共分散行列を持つと仮定したが、この共通の共分散行列という仮定を無くしたガウス分類器が2次判別分析である。
そのためこの手法では2次の決定境界による柔軟な分類を行える一方で、各クラスの共分散行列を推定しなくてはならない。
よって、入力空間の次元数pが大きくなるほど、パラメータの数が劇的に増加する。
しかし2次判別分析や線形判別分析は、単にデータが2次もしくは線形のような単純な決定境界を支持しているケースが多いことや、ガウスモデルを用いた推定値が安定していることから、多様な分類タスクでうまく動作する。
ロジスティック回帰
この手法は、値域が[0,1]で総和が1になるような線形関数を用いてK個のクラス事後確率をモデルにする。
そのため線形判別分析などよりも少ない仮定しか用いないことから、汎用的で外れ値にも強い方法と言える。
またロジスティック回帰は結果の解釈性が高く、入力変数の役割や重要度を理解しやすい。
具体的には、モデルの各係数に対するZスコア(各係数を入力変数ごとの標準誤差で割った値)の有意性によって、不必要な係数を除去することができる。
※ Zスコアの絶対値が2よりも大きいならば、5%水準で有意と言える。
基底展開と正則化
ここからは入力 $X$ を $X$ の変換により得られる新たな入力変数で補ったり、置き換えたりすることで得られる新しい特徴空間において線形モデルを用いていく。
特にここでは、基底関数 $h_m$ を用いて以下のように $X$ の線形基底展開を行い、新たな変数 $f(X)$ を生成する。
f(X) = {\sum_{m=1}^{M}}{β_m}{h_m}(X)
スプラインとは
スプラインとは、点の集合である元の入力データを、連続的な入力変数に変換する方法である。
具体的には、入力 $X$ の領域を隣接した区間へと分割し、区間を跨ぐ節点において連続になるような制約を課した区分的多項式と言える。
特に節点をK個持つ次数Mのスプラインは次数Mの区分的多項式であり、主によく使われる3次スプラインはM=4, 1次スプライン(区分的定数関数)はM=1, 2次スプライン(連続区分的線形関数)はM=2である。
その中でも回帰スプラインは節点が固定されたスプラインであり、スプラインの次数に加えて節点数とその配置がパラメータとなる。
平滑化スプライン
回帰スプラインでは節点選択に関して問題が生じうるが、全ての入力データ点を節点とし、それらを正則化によって制御することで問題を回避したスプラインを平滑化スプラインという。
この平滑化スプラインはパラメータとして、正則化の強さを表す罰則パラメータ $λ$ のみを持ち、リッジ回帰と同様に2次の罰則項によって正則化を行う。
これにより時系列の入力データ点などの分布傾向を表す、連続性を持った滑らかな曲線を得ることができる。
また事前に選ばれた $λ$ を用いた平滑化スプラインを線形平滑化とも言い、この $λ$ の値はいくつかの候補値の中から Cross Validation などによって求める方法が一般的である。
ウェーブレット変換
ウェーブレットは離散信号や画像、時系列のようにデータが均一格子上で観測されている場合に有用な方法である。
具体的には、N個の均一に配置された観測データにおけるN×Nの正規直交ウェーブレット基底行列 $W$ (元の信号を形成する任意の数の起源波の組み合わせ)を用いて、応答ベクトル $y$ を以下のように変換する。
y^* = W^Ty
このような変換方法をウェーブレット変換と言い、平滑化スプラインが滑らかさを課すことで元の信号(データ)を圧縮するのに対し、ウェーブレットは任意の数の起源波(マザーウェーブレット)の組み合わせによる疎性(スパースさ)を要求することで圧縮を行う。
カーネル平滑化法
ここでは局所的限定と呼ばれる、観測点 $x_i$ に対象点 $x_0$ からの距離に基づく重みを付与することで柔軟な推定を行う。
1次元カーネル平滑化法
k最近傍では対象点 $x_0$ を平均値を用いて推定するため離散的な変化をする不連続な値になるのに対し、1次元カーネル平滑化法ではカーネルと呼ばれる関数によって着目点からの距離に応じて滑らかに減少する重みを与え、連続的な値を算出する。
ここでカーネルは近傍の幅を決めるパラメータλによって特徴付けられる。
またカーネルに用いる関数にはその用途や前提とする仮定に基づき、イパネクニコフ関数やガウス関数などを用いる。
(関数の種類によって近傍の幅を決めるパラメータλの意味合いも変化する。)
局所線形回帰
重み付きカーネルと最小二乗法を組み合わせることで、等価カーネルと呼ばれる局所的な回帰を連続したカーネル平滑化法が実現できる。
特に局所線形回帰の利点としては、データの境界領域や等間隔でない内部領域におけるバイアスを除去することができる。
また局所線形回帰は多項式に拡張することもでき、特に局所2次当てはめでは領域内部の関数の湾曲に起因するバイアスを除去できる。
(しかしながら局所2次当てはめでは境界領域におけるバイアスを除去しにくくなってしまうため用途に応じた使い分けが必要になる。)
加えて、入力次元(特徴量)が2,3次元よりもはるかに高次元の場合、局所回帰は有用ではなくなってしまう。
カーネル密度推定
カーネル密度推定は教師なし学習の手法の1つであり、対象点 $x_0$ からの距離に応じて減少する重みを割り引くことで、以下のように確率密度 $fx$ を推定する。
fx(x_0) = \frac{1}{Nλ}{\sum_{i=1}^{N}}K_λ(x_0, x_i)
また、Jクラスの分類問題に対し、それぞれのクラスで別々に密度推定値 $f'_j(X)$ と事前確率 $π'_j$ (通常は標本比)が与えられている場合、以下のようにカーネル密度分類器を実装することができる。
Pr(G = j | X = x_0) = \frac{π'_j f'_j(x_0)}{{\sum_{k=1}^{J}}π'_k f'_k(x_0)}
加えて、入力次元(特徴量)pが高次元で正確な密度推定が困難な場合、与えられたクラス $G = j$ において特徴 $X_k$ が独立であると以下のように仮定することにより、単純ベイズ分類器を実装することができる。
f_j(X) = {\prod_{k=1}^{p}}f_{jk}(X_k)
この場合、個々のクラス条件付き周辺密度 $f_{jk}$ は個別に1次元カーネル密度推定を用いることで推定が可能となる。
モデルの評価と選択
モデルを生成する際には、訓練データに対する過学習を防ぎ、汎化性能を高めることが必要である。
そのために基本的にはまず、データを訓練集合、確認集合、テスト集合の3種類にランダム分割する。
(おおよその目安は、50%, 25%, 25% ぐらい)
そして訓練集合をモデルの当てはめに、確認集合をモデル選択のために、最後にテスト集合は
モデルの汎化誤差の評価に用いる。
しかしデータ量が不十分で3種類の集合の要素数を十分に確保できない場合が多く、その際には以下のようなアプローチをとる。
交差確認(Cross Validation)
K分割交差確認
データをほほ等しいサイズでK個に分割した後、 $k$ 番目の部分を評価用に確保しておき、他の $K-1$ ブロックのデータをモデル当てはめに使用する。
※ Kの値としては、5や10が選ばれることが多い。
評価用のk番目の集合はfor文などで順に交換していくことで、より汎用的なモデルを選択できる。
1つ抜き交差確認(Leave one out)
$K=N$ の場合、データのうち $i$ 番目の観測値に対して、 $i$ 番目以外の全てのデータを用いてモデル当てはめを行う。
交差確認の正しい方法と間違った方法
交差確認の際には、あらゆる選択や当てはめなどの操作が**実行される「前」**に、評価用の標本は抜き出されていなければならない。
基本的に学習時のデータと評価用のデータは独立でなければならないため、特徴量選択のためのデータ参照などでも学習時のデータと評価用のデータを混在してはならない。
(ただし、クラスラベルなどを含まない教師なし学習は、例外的に標本が抜き取られる前に行うことも可能。)
ブートストラップ法
高次元の分類問題において交差確認を行う場合などに、特徴量に対してデータが不足してしまうケースは生じやすい。
その際には、データから**重複を許してランダムサンプリング(復元抽出)**することで標本集合を増加させ、データ量を補う。
ただしこの場合、 $i$ 番目の観測値に対して、その観測値を含まないブートストラップ標本のみを用いて予測を行う1つ抜きブートストラップ推定法を使用する。
(考え方としては、leave one outの拡張版とも言える。)
モデル推論と平均化
ブートストラップと最尤推定法
ブートストラップ法は訓練データから標本抽出することで不確実性を直接的に見積もる方法であり、主に2つの方法が存在する。
-
ノンパラメトリックブートストラップ
→ 新たなデータ集合を生成するのに生のデータを用い、何か特別なパラメトリックモデルを用いていない手法。 -
パラメトリックブートストラップ
→ ブートストラップ標本から推定する予測値に適切なノイズ成分を加えるなど、事前情報を含めた手法。
そして、ブートストラップ法は本質的には最尤法を計算機で実現したものであり、標準誤差やその他の量の最尤推定量を尤度が明示的に求められなくても計算できる利点がある。
EMアルゴリズム
EMアルゴリズムは難しい最尤推定の問題を解くためによく使われる方法であり、2つのステップから構成されている。
-
期待値ステップ
→ パラメータに現状の推定値を用いて、観測点での各モデルの負担率(隠れ変数の期待値)を計算する。 -
最大化ステップ
→ 負担率を用いて重み付き最尤推定を行い、パラメータの推定量を更新する。
※ 上記のステップを繰り返すことで、推定量を収束させる。
ギブスサンプリング
ギブスサンプリングは逐次的に条件付き分布から標本抽出を行い、標本系列を安定化させる。
具体的には以下のような手順で行う。
-
推定するパラメータ群の中から1つだけに注目し、その他のパラメータを現状の推定値で固定したままサンプリングを行う。
-
サンプリング結果から注目したパラメータの推定値を更新する。
-
注目するパラメータを変更し、上記と同様に推定量を更新していく。
また、ギブスサンプリングとEMアルゴリズムはパラメータの推定方法が異なるだけで本質的には同じことを行なっている。
バギング
バギングは予測値をブートストラップ標本上で平均化し、バイアスを保ったまま分散を減少させる方法である。
またバギング推定量は近似的なベイズ事後平均となっている。
ここでモデルのバギングは強力な反面、モデルのいかなる構造も失われてしまうためモデルの解釈性に難点がある。
バンピング
バンピングではバギングと同様にブートストラップ標本を生成して各標本にモデルを当てはめるが、予測値を平均化するのではなく、元の訓練データに最もよく当てはまるモデルを選択する。
よってモデル間の比較可能性を担保するために、それぞれのモデルが同じような複雑さを持っておく必要がある。
また、この方法は当てはめ規準を最適化することが難しい問題でも有用であり、良くない局所解から抜け出すのにも役立つ。
加法的モデル、木、および関連手法
一般化加法的モデル
一般化加法的モデル(GAM)は線形モデルの拡張として、解釈性を保持したまま非線形を含むより柔軟なフィッティングができる方法である。
具体的には、反復的なアルゴリズム(後退当てはめ法など)によって各特徴にフィットする3次スプライン関数の推定を同時に行う。
また、本来であれば人力で設定する必要のあった特徴量エンジニアリングをアルゴリズムによって自動化できる点が非常に有用と言える。
しかしながら、加法的モデルは特徴の選択は人力で行う必要があるため、大規模なデータマイニングへの適用では限界がある。
※ そのため最近の研究ではlasso型の罰則により疎な加法的モデル(COSSO法, SpAMなど)が提案され始めている。