Azure AI Fundamentals(回帰)の学習で出てくる「決定係数R2」は、式にあるȳ(yバー)が突然現れるため、初見だと理解が止まりやすい指標です。この記事ではR2の式が何を表すのか、ȳがどこから来るのか、そしてアイスクリーム売上の具体例で実際に手計算できるレベルまで噛み砕いて説明します。
決定係数R2を一言でいうと
決定係数(R2)は、「回帰モデルが、実測値のばらつきをどれだけ説明できているか」を表す代表的な評価指標です。
Azure AI Fundamentals の教材などでよく見る形は次の式です。
R2 = 1 – Σ(y – ŷ)2 / Σ(y – ȳ)2
この式は見た目がややこしく感じますが、意味はシンプルで、「平均だけを出す何もしないモデル」と比べて、どれだけ誤差が減ったかを割合で表しています。
式に出てくる記号を整理する
まずは登場人物(記号)を整理すると、一気に読みやすくなります。
| 記号 | 読み方 | 意味 | 回帰の文脈での役割 |
|---|---|---|---|
| y | ワイ | 実測値(正解データ) | 「現実の売上」など、当てたい値 |
| ŷ | ワイハット | 予測値(モデルの出力) | 気温などの特徴量からモデルが計算した推定値 |
| ȳ | ワイバー | 実測値yの平均 | 「何もしないモデル」の基準となる値 |
| Σ | シグマ | 合計(足し合わせ) | 全データ分を足して誤差の総量を出す |
ȳ(yバー)は、特別な新しい値ではありません。手元にある実測値yを平均しただけです。
平均は次の式で計算します。
ȳ = (y1 + y2 + ... + yn) / n
yバーが分母に登場する理由
ここが一番つまずきやすいポイントです。結論から言うと、ȳは比較のための基準として登場します。
平均だけを出すモデルが基準になる
回帰モデルが無いとき、「とりあえず売上を予測して」と言われたら、どんな予測を返すのが一番マシでしょうか。
データを見ないで1つの定数だけを返すなら、多くの場合は平均値ȳを返すのが最も無難です。たとえば「毎日、売上は平均の20個です」とだけ答えるモデルを考えます。
R2の分母にある Σ(y – ȳ)2 は、まさに「常に平均を返すモデル」を使ったときの誤差(の二乗の合計)です。つまり分母は、ベースラインの誤差になります。
なぜ平均が一番マシなのか
「平均が基準として自然なのは分かったけど、なぜ平均なの?」という疑問が残ります。これは二乗誤差を最小にする定数が平均になるためです。
全ての日で同じ値cを予測するモデルを考え、二乗誤差の合計を最小にするcを探します。
S(c) = Σ(y - c)^2 このS(c)が最小になるのは c = ȳ(yの平均)
直感的には、平均との差がプラス側・マイナス側にバラけているとき、平均は「左右のズレのつり合いが取れる位置」に来るため、二乗誤差が最小になりやすい、とイメージすると理解しやすいです。
R2の式を分解して理解する
R2は、次の2つの「誤差の合計」を比べています。
分子はモデルの誤差
分子の Σ(y – ŷ)2 は、モデルの予測誤差(残差)を二乗して合計したものです。
- 各データで「実測値 – 予測値」を計算
- それを二乗(マイナスを消して大きいズレを強く罰する)
- 全データ分を足す
これは一般に残差平方和(SSE: Sum of Squared Errors / SSres)と呼ばれます。
分母は平均だけのモデルの誤差
分母の Σ(y – ȳ)2 は、平均との差を二乗して合計したものです。これはデータ全体のばらつきを表し、一般に全平方和(SST: Total Sum of Squares / SStot)と呼ばれます。
ここが重要で、SSTは「平均しか知らない状態での誤差」です。つまり、分母は何もしない基準モデルの誤差になります。
R2は誤差の減り具合を割合で見ている
R2は次の形に読み替えると一気に理解しやすくなります。
R2 = 1 -(モデルの誤差 / 平均モデルの誤差)
- モデルが完璧なら:分子が0 → R2 = 1
- モデルが平均と同程度なら:分子 ≒ 分母 → R2 ≒ 0
- モデルが平均より悪いなら:分子 > 分母 → R2はマイナスもあり得る
| R2の値 | 状態 | 現場での読み方の目安 |
|---|---|---|
| 1.00 | 誤差ゼロ | このデータ上では完全一致(ただし過学習の可能性も確認) |
| 0.80 | 誤差が大きく減っている | かなり説明できている(他指標も併用すると安心) |
| 0.00 | 平均を出すだけと同じ | 「回帰している意味が薄い」状態 |
| 負の値 | 平均より悪い | 特徴量や前処理、モデル選択を見直すサイン |
アイスクリーム売上例で計算してみる
ここからは、Azure AI Fundamentals の「アイスクリーム売上」例を使って、式の各要素がどう計算されているかを表で追いかけながら確認します。
元データ
例では、気温xから売上yを予測する回帰モデルを考えます。以下は、教材にある値(実測yと予測ŷ、そして各二乗項)を整理したものです。
| 気温 x | 実測売上 y | 予測売上 ŷ | 残差 y-ŷ | (y-ŷ)2 | 平均との差 y-ȳ | (y-ȳ)2 |
|---|---|---|---|---|---|---|
| 52 | 0 | 2 | -2 | 4 | -20.16 | 406.4256 |
| 67 | 14 | 17 | -3 | 9 | -6.16 | 37.9456 |
| 70 | 23 | 20 | 3 | 9 | 2.84 | 8.0656 |
| 73 | 22 | 23 | -1 | 1 | 1.84 | 3.3856 |
| 78 | 26 | 28 | -2 | 4 | 5.84 | 34.1056 |
| 83 | 36 | 33 | 3 | 9 | 15.84 | 250.9056 |
| 合計 | 121 | – | – | 36 | – | 740.8336 |
表の「平均との差(y-ȳ)」を計算するために、まずȳ(平均)を求めます。
ステップ1 ȳを求める
実測売上yの合計が121、データ数が6なので、平均は次の通りです。
ȳ = 121 / 6 = 20.1666...
教材の表では説明の都合でȳ = 20.16として計算しています(小数点以下の丸め方が違っても、R2の最終値はほぼ同じになります)。
ステップ2 分子 Σ(y-ŷ)^2 を計算する
分子はモデルの誤差(残差)です。
- 1行目: (0 – 2)2 = 4
- 2行目: (14 – 17)2 = 9
- 3行目: (23 – 20)2 = 9
- 4行目: (22 – 23)2 = 1
- 5行目: (26 – 28)2 = 4
- 6行目: (36 – 33)2 = 9
これらを合計すると、
Σ(y-ŷ)^2 = 4 + 9 + 9 + 1 + 4 + 9 = 36
ステップ3 分母 Σ(y-ȳ)^2 を計算する
分母は平均との差(二乗)の合計で、データ全体のばらつきを表します。
- 1行目: (0 – 20.16)2 = 406.4256
- 2行目: (14 – 20.16)2 = 37.9456
- 3行目: (23 – 20.16)2 = 8.0656
- 4行目: (22 – 20.16)2 = 3.3856
- 5行目: (26 – 20.16)2 = 34.1056
- 6行目: (36 – 20.16)2 = 250.9056
合計は、
Σ(y-ȳ)^2 = 740.8336
ステップ4 R2を計算する
ここまで出た分子(36)と分母(740.8336)を式に代入します。
R^2 = 1 - 36 / 740.8336
= 1 - 0.04859391...
= 0.95140609...
≒ 0.95
教材にある「R2 ≒ 0.95」は、小数第2位までの表示(四捨五入)によるものです。
R2が0.95のとき何が95パーセントなのか
R2の説明でよくある誤解が「95%当たる」だと捉えてしまうことです。R2は正答率ではありません。
今回の例でR2 = 0.951… というのは、こう読み替えると本質が見えます。
- 平均だけを返すモデル(基準)の誤差:740.8336
- 回帰モデルの誤差:36
- 減った誤差:740.8336 – 36 = 704.8336
つまり、
誤差の削減率 = 704.8336 / 740.8336 = 0.951...
「平均しか知らない状態」から比べて、二乗誤差を約95%減らせたという意味です。言い換えると、売上の変動(ばらつき)をかなり説明できている、という評価になります。
もう一段深い理解 三つの平方和で整理する
回帰の教科書や統計の解説では、次の3つの平方和で整理されることがあります。
| 名前 | 記号 | 式 | 意味 |
|---|---|---|---|
| 全平方和 | SST | Σ(y – ȳ)2 | データ全体のばらつき |
| 残差平方和 | SSE | Σ(y – ŷ)2 | モデルが説明できなかった誤差 |
| 回帰平方和 | SSR | Σ(ŷ – ȳ)2 | モデルが説明できた分のばらつき |
そして、(一般的な切片ありの最小二乗回帰では)
SST = SSR + SSE
が成り立ちます。だからこそ、R2は「説明できた割合」として解釈しやすい、という背景があります。
手計算で0.96になってしまうときのチェックポイント
教材の値と自分の計算結果が微妙にズレるときは、たいてい次のどれかです。
- ȳやŷを丸めた後で二乗している(丸めは二乗前後で影響が変わります)
- データが「訓練」と「検証」で分かれている(教材のR2が検証データの結果だと、全データで計算した値と一致しません)
- 表に載っているŷが説明用の丸め値で、内部計算ではもう少し細かい小数で評価されている
学習教材では、理解を優先して整数や少数桁を簡略化することがあります。ズレが小数第2位付近なら、まずは「丸めの影響」を疑うのが近道です。
R2だけで判断しないための実務ポイント
R2は便利ですが、使い方を誤ると「良いモデル」に見えてしまう落とし穴があります。Azureの学習でも実務でも、次の観点をセットで覚えておくと失敗しにくいです。
R2は高ければ万能ではない
- 売上がそもそも大きく上下するデータは、R2が高く出やすいことがあります(分母が大きいほど、比として見栄えが良くなる)。
- 逆に、ほとんど売上が変わらないデータは、少しの誤差でもR2が伸びにくいことがあります。
ビジネスではMAEやRMSEも見る
R2は「割合」ですが、現場で気になるのは「誤差が何個分か」です。たとえば売上予測なら、
- MAE:平均的に何個ズレるか
- RMSE:大外れを重く見たときのズレ
などと併用すると、意思決定に直結しやすくなります。
R2が負なら原因を切り分ける
R2が負になるのは「平均の方がマシ」な状態です。よくある原因は次の通りです。
- 説明変数(特徴量)が目的変数とほぼ無関係
- 外れ値が強すぎて回帰が引っ張られている
- 前処理(欠損、スケーリング、カテゴリ変数化)が不適切
- 学習データと検証データの分布が違う(季節要因など)
よくある疑問
なぜ二乗するのか
二乗には主に2つの意味があります。
- マイナスを消して、誤差の大きさだけを評価できる
- 大きな外れを強く罰するため、「ちょいズレ」より「大外れ」を減らす方向に学習が進みやすい
R2は0から1の間に必ず収まるのか
よくあるイメージは0〜1ですが、実際には負の値になることがあります。これは「平均だけのモデルより悪い」ときに起きます。
R2と相関係数の違いは何か
単回帰(説明変数が1つ)で切片ありの線形回帰では、R2が相関係数rの二乗になるケースがあります。一方、説明変数が複数ある回帰や非線形モデルでは、単純に「相関の二乗」として理解するとズレやすいので注意が必要です。
まとめ
- ȳ(yバー)は実測値yの平均で、手元のデータから計算する
- 分母 Σ(y-ȳ)2 は、平均だけを返すモデル(基準)の誤差
- 分子 Σ(y-ŷ)2 は、回帰モデルの誤差
- R2は基準からどれだけ誤差が減ったかを割合で表している
- アイスクリーム売上の例では、SSE=36、SST=740.8336よりR2≒0.95になる
R2の式は、ȳの意味さえ腑に落ちると「平均モデルとの比較」という形で一気に整理できます。手計算ができるようになると、Azure AI Fundamentals の回帰章だけでなく、実務でモデル評価レポートを見るときにも読み解きが楽になります。

コメント