回帰分析とは?線形回帰・ロジスティック回帰・最小二乗法を基礎から理解しよう
はじめに
例えば、勉強時間とテストの点数について、
勉強時間が長い
↓
テストの点数も高くなる
という傾向があったとします。
ここから、
5時間勉強したら、テストで何点くらい取れそう?
と予測したくなったらどうでしょうか。
このように、
あるデータを使って、別のデータとの関係を数式で表したり、値を予測したりする
ために使われる代表的な統計手法が**回帰分析(Regression Analysis)**です。
また、
このメールが迷惑メールである確率は?
のように、最終的に「YES / NO」のような分類をしたい場合には、ロジスティック回帰分析という方法も使われます。
この記事では、
- 回帰分析
- 説明変数・目的変数
- 単回帰分析
- 回帰直線
- 回帰係数・切片
- 最小二乗法
- 残差
- 決定係数
- 重回帰分析
- ロジスティック回帰分析
- シグモイド関数
- 相関分析との違い
- 回帰と分類
について学んでいきます。
1. 回帰分析とは
**回帰分析(Regression Analysis)**とは、
ある変数と別の変数の関係を数式で表し、値の説明や予測を行う統計的な分析方法
です。
例えば、
勉強時間
↓
テストの点数
という関係を調べるとします。
| 勉強時間 | テスト点数 |
|---|---|
| 1時間 | 50点 |
| 2時間 | 55点 |
| 3時間 | 65点 |
| 4時間 | 70点 |
| 5時間 | 80点 |
このデータから、
勉強時間が増えると、テストの点数がどのように変化する傾向があるか
を数式で表すのが回帰分析です。
🍯 はちみつメモ
回帰分析 = データ同士の関係を数式で表して、説明や予測に使う方法
2. 説明変数と目的変数
回帰分析では、変数を大きく、
- 説明変数
- 目的変数
に分けます。
例えば、
勉強時間
↓
テスト点数
なら、
説明変数 = 勉強時間
目的変数 = テスト点数
です。
説明変数は、目的変数を説明・予測するために使う変数です。
一般的には、
x
で表します。
目的変数は、説明・予測したい変数で、
y
と表すことが多いです。
3. 散布図
回帰分析を考えるときに役立つのが**散布図(Scatter Plot)**です。
例えば、
テスト点数
↑
│ ●
│ ●
│ ●
│ ●
│ ●
└────────────→
勉強時間
のようにデータを点として配置します。
この散布図を見ると、
勉強時間が増えるにつれて、テスト点数も高くなっている
という傾向が見えてきます。
この点の集まりに対して、データの傾向をうまく表す線を考えるのが回帰分析の基本です。
4. 単回帰分析
説明変数が1つだけの回帰分析を**単回帰分析(Simple Regression Analysis)**と呼びます。
例えば、
勉強時間
↓
テスト点数
なら、説明変数は勉強時間の1つだけです。
単回帰分析では、データの関係を、
y = ax + b
という直線で表すことがあります。
この直線を回帰直線と呼びます。
5. 回帰直線
**回帰直線(Regression Line)**とは、
データの傾向を表すために引かれる直線
です。
y = ax + b
では、
x = 説明変数
y = 目的変数
a = 回帰係数
b = 切片
です。
例えば、
y = 6x + 44
なら、
勉強時間が1時間増える
↓
予測されるテスト点数が約6点高くなる
という関係を表します。
6. 回帰係数
回帰直線、
y = ax + b
のaを回帰係数と呼びます。
直線でいう傾きです。
a > 0
↓
xが増えるとyも増える傾向
a < 0
↓
xが増えるとyは減る傾向
となります。
7. 切片
回帰直線、
y = ax + b
のbを**切片(Intercept)**と呼びます。
切片は、
x = 0
のときに回帰式が予測するyの値です。
例えば、
y = 6x + 44
なら、
切片 = 44
です。
ただし、実際の分析ではx=0が現実的な意味を持たない場合もあります。
8. 残差
実際に観測された値と、回帰式による予測値との差を**残差(Residual)**と呼びます。
残差
=
実測値 - 予測値
です。
例えば、
実測値 = 65
予測値 = 62
なら、
残差
=
65 - 62
=
3
です。
つまり残差は、
回帰モデルの予測と実際のデータがどのくらいズレているか
を表しています。
9. 最小二乗法
**最小二乗法(Least Squares Method)**とは、
残差の2乗の合計が最も小さくなるように回帰直線を決める方法
です。
残差をそのまま足すと、
+5 + (-5)
= 0
のように、プラスとマイナスが打ち消し合ってしまいます。
そこで、
5² = 25
(-5)² = 25
と2乗します。
そして、
残差²の合計
が最小になるように回帰直線を決めます。
🍯 はちみつメモ
最小二乗法 = 予測と実測のズレを2乗して、その合計を最小にする
10. 回帰直線で予測する
例えば、
y = 6x + 44
という回帰式が求められたとします。
5時間勉強した場合なら、
x = 5
を代入して、
y
=
6 × 5 + 44
=
74
となります。
したがって、
予測値 = 74点
です。
11. 決定係数
回帰モデルがデータをどの程度説明できているかを見る代表的な指標が決定係数です。
一般的に、
R²
と表します。
切片を含む通常の最小二乗回帰では、
0 ≦ R² ≦ 1
として考えます。
例えば、
R² = 0.9
なら、
目的変数のばらつきの約90%を回帰モデルで説明できている
と解釈できます。
大まかには、
R² → 1
↓
当てはまりがよい
R² → 0
↓
当てはまりが弱い
と考えます。
ただし、R²が高ければ必ず優れたモデルというわけではありません。
12. 相関分析との違い
相関分析と回帰分析は似ていますが、目的が違います。
相関分析
2つの変数にどのくらい線形な関係があるか
を調べます。
回帰分析
変数同士の関係をモデル化し、説明や予測に利用する
方法です。
| 分析 | 主な目的 |
|---|---|
| 相関分析 | 関係の向き・強さを見る |
| 回帰分析 | 関係をモデル化して説明・予測する |
🍯 はちみつメモ
相関 = どのくらい一緒に動く?
回帰 = xからyをどう説明・予測する?
13. 相関・回帰と因果関係
回帰分析によって変数同士に関係が見つかっても、それだけで因果関係が証明されるわけではありません。
例えば、
気温 ↑
├→ アイスの売上 ↑
└→ 海水浴客 ↑
という関係があったとします。
アイスの売上と海水浴客には関係が見えるかもしれませんが、
アイスを買った
↓
海水浴に行った
とは限りません。
別の要因である「気温」が両方に影響している可能性があります。
したがって、
相関・回帰関係
≠
因果関係
と考える必要があります。
14. 重回帰分析
説明変数が複数ある回帰分析を**重回帰分析(Multiple Regression Analysis)**と呼びます。
例えば、
勉強時間 ─┐
睡眠時間 ─┼→ テスト点数
出席率 ─┘
という関係です。
重回帰式は例えば、
y
=
a₁x₁ + a₂x₂ + a₃x₃ + b
のように表します。
整理すると、
単回帰分析
=
説明変数1つ
重回帰分析
=
説明変数が複数
です。
15. 線形回帰とは
ここまで説明してきた、
y = ax + b
のように、説明変数と目的変数の関係を線形な式で表す方法を**線形回帰(Linear Regression)**と呼びます。
複数の説明変数を使う場合でも、
y
=
a₁x₁ + a₂x₂ + ... + b
のように表せます。
線形回帰は基本的に、
連続した数値を予測する
ときに利用できます。
例えば、
住宅情報
↓
3,500万円
勉強時間
↓
74点
といった予測です。
16. 数値ではなく「YES / NO」を予測したい
では、次のような問題はどうでしょうか。
メール
↓
迷惑メール?
正常メール?
あるいは、
顧客情報
↓
商品を購入する?
購入しない?
この場合、予測したいものは、
74点
3,500万円
のような連続した数値ではありません。
YES / NO
1 / 0
のような2つのカテゴリです。
こうした問題で使われる代表的な方法がロジスティック回帰分析です。
17. ロジスティック回帰分析とは
**ロジスティック回帰分析(Logistic Regression Analysis)**とは、
ある事象が起こる確率を求め、主に2値分類を行うために使われる手法
です。
例えば、
メール
↓
迷惑メールである確率
↓
80%
のように確率を求めます。
そして、例えば50%を基準にするなら、
80%
↓
50%以上
↓
迷惑メール
と分類できます。
つまり、
入力データ
↓
確率を求める
↓
しきい値と比較
↓
カテゴリを決める
という流れです。
🍯 はちみつメモ
ロジスティック回帰 = 「YESになる確率」を求めて分類する
18. 名前は「回帰」なのに分類?
ここは非常に混乱しやすいポイントです。
名前には、
ロジスティック「回帰」
と入っています。
しかし、機械学習では主に分類問題に利用されます。
例えば、
迷惑メール / 正常メール
購入する / 購入しない
故障する / 故障しない
といった2値分類です。
そのため、
線形回帰
↓
主に数値を予測
ロジスティック回帰
↓
主にカテゴリを分類
と覚えておくと分かりやすいでしょう。
19. なぜ普通の線形回帰ではダメなの?
例えば、購入するかどうかを、
購入する = 1
購入しない = 0
として線形回帰で予測したとします。
すると計算上、
-0.3
1.4
のような値が出る可能性があります。
しかし確率は、
0 ≦ 確率 ≦ 1
でなければなりません。
そこで、
どんな入力でも出力を0から1の間に収める
仕組みを使います。
その代表的なものがシグモイド関数です。
20. シグモイド関数
ロジスティック回帰では、説明変数から計算した値を**シグモイド関数(Sigmoid Function)**に通します。
シグモイド関数は、
1
────────────
1 + e^(-z)
という形で表されます。
重要なのは式そのものより、
どんな値を入力しても、出力が0から1の間になる
という特徴です。
イメージすると、
1 ───────────────
/
/
0.5 ─────●
/
/
0 ─────────────────
というS字型の曲線になります。
21. シグモイド関数と確率
例えば、計算結果をシグモイド関数に通して、
0.82
になったとします。
これは、
目的の事象が起こる確率
≈
82%
のように解釈できます。
つまり、
説明変数
↓
計算
↓
シグモイド関数
↓
0~1
↓
確率
という流れです。
22. しきい値で分類する
ロジスティック回帰によって確率が求められたら、**しきい値(Threshold)**を使って分類できます。
例えば、しきい値を、
0.5
とした場合、
予測確率 ≧ 0.5
↓
1
予測確率 < 0.5
↓
0
のように分類できます。
例えば、
迷惑メール確率 = 0.82
↓
迷惑メール
迷惑メール確率 = 0.15
↓
正常メール
といった形です。
ただし、しきい値は必ず0.5と決まっているわけではなく、目的に応じて変更することがあります。
23. 線形回帰とロジスティック回帰
違いを整理しましょう。
| 項目 | 線形回帰 | ロジスティック回帰 |
|---|---|---|
| 主な目的 | 数値の予測 | 分類 |
| 出力 | 連続した数値 | 0〜1の確率 |
| 例 | 売上・価格・点数 | YES/NO・正常/異常 |
| 基本的な形 | 直線 | S字型 |
| 代表的な関数 | 線形式 | シグモイド関数 |
例えば、
住宅情報
↓
価格を予測
↓
線形回帰
です。
一方、
メール情報
↓
迷惑メールである確率
↓
ロジスティック回帰
となります。
24. ロジスティック回帰の具体例
例えばECサイトで、
このユーザーは商品を購入するか
を予測するとします。
説明変数として、
サイト滞在時間
閲覧ページ数
過去の購入回数
などを使います。
そしてロジスティック回帰によって、
購入確率
=
0.73
と予測されたとします。
しきい値を0.5とすれば、
0.73 ≧ 0.5
↓
購入する
と分類できます。
25. ロジスティック回帰の利用例
ロジスティック回帰はさまざまな場面で利用できます。
迷惑メール判定
メールの特徴
↓
迷惑メール確率
↓
迷惑 / 正常
故障予測
機器の状態
↓
故障する確率
↓
故障 / 正常
購入予測
顧客情報
↓
購入確率
↓
購入 / 非購入
などです。
26. 回帰と分類
機械学習では、回帰と分類という問題があります。
回帰
連続した数値を予測します。
家の情報
↓
3,500万円
分類
カテゴリを予測します。
メール
↓
迷惑メール / 正常メール
代表例として、
線形回帰
↓
回帰問題
ロジスティック回帰
↓
分類問題
があります。
名前だけで判断しないように注意しましょう。
27. 回帰分析の全体像
ここまでを整理すると、
回帰分析
│
├─ 線形回帰
│ │
│ ├─ 単回帰
│ │ └─ 説明変数1つ
│ │
│ └─ 重回帰
│ └─ 説明変数複数
│
└─ ロジスティック回帰
│
├─ 確率を求める
└─ 主に分類に利用
という形で考えると分かりやすいでしょう。
ただし、単回帰・重回帰という区分は「説明変数の数」、線形回帰・ロジスティック回帰という区分は「モデルの種類」に関する区分なので、厳密には別の観点からの分類です。
28. 試験で押さえたいポイント
回帰分析
説明変数
↓
目的変数
関係をモデル化
↓
説明・予測
単回帰分析
説明変数 = 1つ
重回帰分析
説明変数 = 複数
最小二乗法
残差
↓
2乗
↓
合計
↓
最小にする
決定係数
R²
で表し、回帰モデルの当てはまりを見る代表的な指標です。
ロジスティック回帰
入力
↓
確率
↓
しきい値
↓
分類
という流れを押さえましょう。
シグモイド関数
入力
↓
0~1の値
へ変換します。
そのため、確率として扱いやすくなります。
線形回帰とロジスティック回帰
線形回帰
↓
主に数値を予測
ロジスティック回帰
↓
主に分類
という違いが重要です。
まとめ
今回は回帰分析について学びました。
この記事で覚えること
- 回帰分析は変数同士の関係をモデル化して説明・予測に利用する
- 説明する側を説明変数という
- 説明・予測したい側を目的変数という
- 説明変数が1つなら単回帰分析
- 複数なら重回帰分析
- 線形回帰では直線などの線形式で関係を表す
- 回帰係数は説明変数の変化に対する目的変数の変化を表す
- 実測値と予測値の差を残差という
- 最小二乗法では残差の2乗和を最小にする
- 決定係数R²はモデルの当てはまりを見る代表的な指標
- ロジスティック回帰はある事象が起こる確率をモデル化する
- ロジスティック回帰は主に2値分類に利用される
- シグモイド関数は値を0〜1の範囲に変換する
- 確率をしきい値と比較してカテゴリを決められる
- 線形回帰は主に数値予測、ロジスティック回帰は主に分類に使われる
- 相関や回帰関係があっても、それだけで因果関係が証明されるわけではない
🍯 はちみつメモ
線形回帰 = 「いくつになる?」を予測
ロジスティック回帰 = 「どっちになる?」を確率から分類
ロジスティック回帰は名前に「回帰」とありますが、機械学習では主に分類に使われることを覚えておきましょう。