【丁寧に理解する機械学習手法一覧: 理論編】第一回 線形回帰と確率的な解釈

【丁寧に理解する機械学習手法一覧: 理論編】では、データ分析に用いられる機械学習の様々な手法のアルゴリズムについて、数式を中心に丁寧に解説していきます。このページでは、SEEDATA Technologiesの古川が、最もシンプルなアルゴリズムである線形回帰について、説明していきます。



教師あり学習の概要

機械学習の手法には大きく分けて二通り存在します。教師あり学習教師なし学習です。線形回帰は、教師あり学習の1つです。

教師あり学習の仕組みは、図で表すと次のようなデータ構造になっています。


訓練データを特定の学習アルゴリズムにより学習し、データの入力である説明変数xpredictor variablesからデータの目的変数ytarget variables)の推定値を導き出すような関数を最適化します。そして、新たなデータの入力値に対して、訓練された推定関数から、対応する目的変数の値を推定します。

推定する目的変数y が連続値である場合、「回帰」と呼ばれ、y がクラス(label)である場合には「分類」と呼ばれます。

線形回帰とは、推定関数h が直線になる形での回帰のことです。

さて、データに対する変数の命名として、今後は以下のように設定するとします。ここでは、土地面積や部屋数といった説明変数から、目的変数である住宅価格を回帰分析する例をとっています。

i番目のサンプルをxi という行ベクトルで表せば、それをn 個のサンプルに対して縦に連ねた行列X を、データ行列とすることができ、データ行列の各行は各サンプル、各列は各説明変数に対応します。



線形回帰の概要

次のようなデータを線形回帰することを考えてみましょう。次のデータは、y=6x+5 という直線​に対して、[平均0・分散1]の正規分布から生成された誤差項ε を加えたものです。

推定関数の形は、次のように表記します。

直線式の定数項に対しては、常に1となるような変数x0 を導入することで、推定関数をベクトルの内積で綺麗に表すことができます。


さて、ここから、「一番もっともらしい」直線を引くには、どうすれば良いでしょうか?

直感的な方法として、以下のようなコスト関数*1を設定し、それを最小化することを目指してみましょう。推定値と実際の値の差を二乗し、それを合計したものです。1/2 の部分が1/n に置き換わった式は、MSEMean Squared Error : 平均二乗誤差)と呼ばれ、こちらはモデルの精度を評価する際に使われます。



*1: なお、このように残差(真値 - 推定値)の二乗和を最小化するようにフィッティング関数の係数を決定する手法がお馴染みの最小二乗法です。最小二乗法はあくまでコスト関数の設定手法についた名前であり、推定関数(フィッティング関数)は直線に限らず、多項式や円など一般式でも可能です。


さて、このコスト関数を最小化するような重みθを見つけることが、線形回帰アルゴリズムの目的です。今回の線形回帰の二乗誤差の場合、これを最小化するような重みθは、解析的にθ に対して偏微分することで見つけることができます(これを正規方程式と呼びます)。

ただ、解析的に解けないような一般的な場合を想定して、「最急降下法」(Gradient Descentと呼ばれる関数の微分値を利用した再帰的な数値解法のアルゴリズムが一般には使われます(なお、線形回帰においても、データ数やデータの次元が大きい場合には、解析的に解くよりも勾配法を用いた方が計算量が少なくなることがあります)。最急降下法のアルゴリズムについては、次回以降の記事で解説します。最急降下法の中には、バッチ勾配降下法確率的勾配降下法があります。勾配法とは、関数の勾配(微分)を最適化に用いる手法の総称です。

さて、勾配法を用いて、コスト関数を最小化するような重みθを見つけ、回帰直線を引くと、次のようになります。

直線の式がグラフに表示されていますが、この直線式の2つの係数が今回推定されたθ の値です。真の回帰式であるy=6x+5 と十分に近いことが確認できます。




コスト関数の確率的な解釈

上のようなコスト関数は直感的に設定しましたが、あのような関数がどうして導かれるのかを、確率的な観点で考えてみましょう。

先ほどデータをプロットした際、全てのデータ点に対して、[平均0、分散1]という同じ分布から生成された誤差項が直線の式に加わることを仮定していました。この仮定から、データの確率密度関数は、正規分布の確率密度の定義を用いて、次のように定式化できます。

さて、データの確率密度が分かれば、「もっともらしい重み」を求めるためには、上記の確率が最大になるようなθを選べば良さそうです。つまり、上の確率密度を全てのサンプルiに対して掛け算したもの(尤度関数)を最大化することを目指します。このような推定の枠組みは、最尤推定(maximum likelihood estimation)と呼ばれています。

ただし、尤度関数に含まれる相乗Πは計算しにくいので、対数をとって総和Σの式に置き換え、これを「対数尤度」と呼びます。

すると、対数尤度を最大化するθ は次のように見つけることができます。

argmax(式) とは、式を最大化するような変数を求めるという意味です。3番目の式は、負の式を最大化する、ということなので、正の式を最小化する行為と等価になります。

4番目の式において、θに対して最小化する式が、先ほど直感的に設定したコスト関数と一致することが分かります。

【参考文献・資料】

1. Hands-on Machine Learning with Scikit-learn and TensorFlow

2. Stanford cs229 (machine learning) 授業資料

【この記事の作成者】

古川拓磨:SEEDATA Technologies