ホーム›Part 2 機械学習の基礎›2.2

Part 2 · 機械学習の基礎

2.2 線形回帰と損失関数

予測の「ずれ」を測る

読了目安 10分前提:2.1 機械学習とは、1.4 期待値と分散▶ 動画(約5分)

この回で分かること

  • 線形回帰(直線で予測するしくみ)と、傾き・切片の意味を説明できる
  • 予測のずれ(残差)を1つの数にまとめる 損失関数(平均二乗誤差など)を計算できる
  • 2乗誤差と絶対誤差の違いと、外れ値や範囲外の予測(外挿)の危うさを説明できる

直感で理解する

危険に気づいてからブレーキを踏み始めるまでに車が進む距離を、空走距離 といいます。8人のドライバーに、それぞれ違う速度で測ってもらった結果が、下の図の点です。速度が上がるほど、空走距離も長くなっています。

この関係を1本の直線で表せれば、測っていない速度でも空走距離を予測できます。これが 線形回帰 です。問題は「どの直線がいちばん良いか」。点は直線の上にぴったりとは乗らず、上下にずれます。このずれ(残差)が全体として最も小さくなる直線を選びます。

空走距離(m) 0 5 10 15 20 30 40 50 60 速度(km/h) ずれ(残差) 予測の直線 ŷ = 0.20x + 0.47
8人のドライバーの空走距離(点)と、ずれが最も小さくなるように引いた直線。各点から直線までの点線が、予測のずれ(残差)。数値は説明用の例。

いちばん良い直線は、\(\hat{y} \approx 0.20x + 0.47\) でした(x は時速 km/h、\(\hat{y}\) は予測した空走距離 m)。傾き 0.20 は「時速が 1 km 上がるごとに、空走距離が約 0.2 m 伸びる」という意味で、反応時間に直すと約0.72秒にあたります(0.20 × 3.6)。このように線形回帰は、学んだ結果の意味を人が読み取りやすい のが強みです。

数式で確かめる

① 線形回帰のモデル

$$\hat{y} = a x + b$$

a が傾き、b が切片で、2.1 でいうパラメータ θ にあたります。入力が複数あるとき(速度・路面の状態・ドライバーの年齢など)は、それぞれに重み w を掛けて足します。これは 0.2 の内積を使って \(\mathbf{w} \cdot \mathbf{x} + b\) とも書けます。

$$\hat{y} = w_1 x_1 + w_2 x_2 + \dots + w_d x_d + b$$

② 損失関数:ずれを1つの数にまとめる

データ i の残差を \(e_i = y_i - \hat{y}_i\)(正解 − 予測)とします。残差をそのまま足すと、プラスとマイナスが打ち消し合ってしまいます。そこで2乗してから平均したものを、平均二乗誤差(MSE)と呼びます。

$$\mathrm{MSE} = \frac{1}{n}\sum_{i=1}^{n}(y_i - \hat{y}_i)^2$$

図の直線では MSE ≈ 0.81 m² です。単位が m² ではわかりにくいので、平方根をとった RMSE ≈ 0.90 m を「平均的な予測のずれ」としてよく使います。ほかの直線を試すと、\(\hat{y} = 0.25x\) では MSE ≈ 3.3、\(\hat{y} = 0.20x + 1.0\) では MSE ≈ 1.1 と、どちらも大きくなります。このように、予測の悪さを1つの数で表したものが 損失関数 です。平均からのずれを2乗して平均する 1.4 の分散と、同じ形をしています。

③ 最小二乗法:いちばん良い直線は式で求まる

MSE が最も小さくなる a と b は、次の式で直接計算できます(最小二乗法)。

$$a = \frac{\sum_{i}(x_i - \bar{x})(y_i - \bar{y})}{\sum_{i}(x_i - \bar{x})^2}, \qquad b = \bar{y} - a\bar{x}$$

今回のデータでは \(\bar{x} = 38.1\)、\(\bar{y} = 8.08\) で、a = 248.6 ÷ 1246.9 ≈ 0.199、b = 8.08 − 0.199 × 38.1 ≈ 0.47 です。ただし、このように式で一度に求まるのは、線形回帰のような簡単なモデルだけです。ニューラルネットワークのような複雑なモデルでは、2.3 勾配降下法で少しずつ探します。

④ 2乗誤差と絶対誤差:外れ値への強さ

残差の絶対値を平均したものを MAE(平均絶対誤差)と呼びます。

$$\mathrm{MAE} = \frac{1}{n}\sum_{i=1}^{n}\lvert y_i - \hat{y}_i \rvert$$

2乗誤差は、ずれが2倍になると罰が4倍になり、大きなずれを重く見ます。ふだんはそれが長所ですが、センサの誤作動のような 外れ値 があると、直線がそちらに大きく引っ張られます。

空走距離(m) 0 5 10 15 20 20 30 40 50 60 速度(km/h) センサの誤作動(外れ値) 2乗誤差で当てはめた直線 絶対誤差で当てはめた直線
時速55kmで20mという誤ったデータ(外れ値)が1つ混ざったとき。2乗誤差で当てはめた直線(赤)は外れ値に大きく引っ張られるが、絶対誤差で当てはめた直線はあまり動かない。
当てはめ方時速50kmの予測(外れ値なし)時速50kmの予測(外れ値あり)
2乗誤差(MSE)を最小に10.4 m12.3 m(1.8 m 増)
絶対誤差(MAE)を最小に10.3 m11.0 m(0.6 m 増)

どちらが正しいというより、何を重く見るかの選択 です。また、外れ値がセンサの誤作動ではなく本当に起きた危険な出来事なら、捨ててはいけません(1.9)。まずデータを見て、外れ値の原因を確かめることが先です。

自動運転との接点

  • 予測や補正の基本形:周りの車の少し先の位置の予測や、センサの測定値の補正(キャリブレーション)などで、線形回帰は今も広く使われます。係数の意味を人が確かめられるので、安全の説明がしやすいのも利点です。
  • 損失関数は「何を重く見るか」の設計:2乗誤差は、上ぶれと下ぶれを同じ重さで扱います。しかし安全上は、停止距離を 短く 見積もるほうが、長く見積もるより危険です。危険側のずれに大きな罰を与える損失を使うこともあります。
  • 範囲の外では当てにならない(外挿):時速20〜60kmの停止距離(空走距離+制動距離)に直線を当てはめて時速100kmを予測すると、約57m。実際は約76m(反応0.75秒・減速度 7 m/s² の場合)で、約19mも短く、危険側に外れます。制動距離は速度の2乗に比例するので、直線では表せないからです。→ 2.8 データの分け方と分布シフト
  • 平均のずれだけで判断しない:RMSE が小さくても、ときどき大きく外れるなら危険です。平均だけでなく、最大のずれや高い分位点も確かめます(1.9)。

まとめ

  • 線形回帰は、入力と出力の関係を直線(入力が複数なら重み付きの和)で表して予測する。傾きや重みの意味を人が読み取れる
  • 損失関数は予測のずれを1つの数にしたもの。平均二乗誤差(MSE)が代表で、平方根の RMSE は元の単位での平均的なずれ。線形回帰では MSE 最小の直線が式で求まる(最小二乗法)
  • 2乗誤差は外れ値に引っ張られやすい。損失の選び方は「何を重く見るか」の設計。データの範囲の外(外挿)では予測を信じない

確認クイズ

Q1. 予測が 12 m、正解が 10 m のとき、2乗誤差と絶対誤差はそれぞれいくつ?

残差は 10 − 12 = −2 m なので、2乗誤差は 4 m²、絶対誤差は 2 m です。

Q2. 3つのデータの残差が +1 m、−1 m、+2 m でした。MSE と RMSE は?

MSE = (1 + 1 + 4) ÷ 3 = 2 m²、RMSE = √2 ≈ 1.4 m です。

Q3. 残差をそのまま足して平均しないのはなぜ?

プラスとマイナスが打ち消し合うからです。たとえば残差が +5 m と −5 m なら平均は0になりますが、予測はどちらも大きく外れています。2乗や絶対値にすると、ずれの向きに関係なく大きさを数えられます。

Q4. 時速20〜60kmのデータから作った停止距離の直線で、時速100kmの停止距離を予測してよい?

よくありません。データの範囲の外への予測(外挿)で、しかも停止距離は速度の2乗に比例する部分(制動距離)を含むため、直線では約19mも短く見積もってしまいます。安全上、危険側の外れ方です。

もっと知りたい人へ