Re:ゼロから始めるML生活

どちらかといえばエミリア派です

Rではじめる機械学習 第2章 回帰分析で目的変数の値や発生確率を予測

前回に引き続き、本日は2章をまとめます。

tsunotsuno.hatenablog.com

機会学習には大きく分けて教師あり学習/教師なし学習がありますが、 回帰分析は教師あり学習に該当します。

下図は最近の各日付の日経平均株価終値を示しています。

f:id:nogawanogawa:20171103090435p:plain

データはこちらから拝借しました。

日経平均株価 日足 時系列データ CSVダウンロード

図のように目的変数(縦軸)と説明変数(横軸)の分布が与えられた際に、 新しく与えられた説明変数に対応する目的変数を予想したいとします。

回帰分析では、目的変数と説明変数の関係を表現する関数(回帰曲線)を求めることで予測する手法です。 日系平均株価の終値が知りたいとした際に、回帰曲線を求め、説明変数を代入することで算出していきます。

単回帰分析

回帰分析では変数に関数に名前がついています。

  • 知りたい変数 :目的変数(y)
  • 与えられる変数:説明変数(x)

単回帰分析では、説明変数と目的関数が下の式に従うと仮定されています。

{ \displaystyle
y=ax+b
}

上のような近似直線を見つけ、xに値を代入することでyを予想します。

説明変数の候補がたくさんある場合にはどれを説明変数とするかを考えたりするみたいですが、今回はめんどくさいので省略。

今回はなんとなく始値終値相関係数を取ってみて、

cor = 0.9913799

だったので、かなり相関があると見えます。そのため、今回はその日の始値から終値を予想してみます。 (※始値から終値で大幅に変動するって、それこそリーマンショックとかで大暴落でもしない限りありえないですね。)

f:id:nogawanogawa:20171126201206p:plain

予測値と実測値の乖離(直線場に乗っているほど正確)を見てみてもなんとなく直線上に乗っているように見えます。

重回帰分析

単回帰分分析では説明変数は一つだけでした。 一方、説明変数を複数考慮したものを重回帰分析と呼ぶそうです。

説明変数が1つだったのが複数に増えただけなので、考え方は単回帰分析と変わりません。

ロジスティック回帰分析

単回帰分析や重回帰分析では、目的変数を推定していました。 ロジスティック回帰分析では、説明変数を代入したの特定の目的変数を発生する確率を求めます。

用途としては、yes/noなどの二値が目的変数の場合にその発生を予測する場合などがあります。

図で説明した方がわかりやすいと思いますので、やってみました。

f:id:nogawanogawa:20171126190023p:plain

上の関数はシグモイド関数と呼ばれており、式で表すとこんな感じになります。

{ \displaystyle
y=\frac{1}{1+e^{-x}}
}

シグモイド関数は、説明変数xを与えたときyは必ず0<y<1の範囲でとり、これが目的変数の発生確率を表しています。 シグモイド関数のxは別の関数で置き換えることで形状を変形させ、学習データに合うように変形させることがロジスティック回帰分析でやっている事になります。

ポアソン回帰分析

ポアソン回帰分析では、ある事象がx回発生する確率を求めます 式で表すとこんな感じです。

{ \displaystyle
P(x)=\frac{\lambda^{k}e^{-k}}{k!}
}

上式にkを代入すると確率Pが求まります。上のラムダを求めることがポアソン回帰のやっていることになります。