AI

決定係数とは?R2の意味・計算式と回帰モデルの当てはまりの読み方を実装目線で解説

決定係数(R2)は、回帰モデルが目的変数のばらつきをどれだけ説明できているかを、0から1までの数値で表す評価指標です。1に近いほど予測が実測に寄り添い、0に近いほど平均値を答えるのと大差ない、という当てはまりの良さの物差しになります。回帰分析の結果を見て「このモデルは使えるのか」を最初に確かめる数値がこの決定係数です。本記事では、決定係数が示す「説明できたばらつきの割合」という意味、全平方和と残差平方和から値を求める計算式、単回帰では相関係数の2乗に一致する関係、説明変数を増やすほど上がってしまう欠点と自由度調整済み決定係数、そして数値が高くても信用できない場面とscikit-learnでの実装までを、モデルを組む側の目線で整理します。

目次

まとめ:決定係数の意味と回帰モデル評価で押さえる読み方の結論

決定係数の核心は、目的変数の全体のばらつき(全平方和)のうち、回帰モデルが説明できた割合を示す点にあります。式にすると R2 = 1 − 残差平方和 ÷ 全平方和 で、残差、つまり実測値と予測値のずれが小さいほど1に近づきます。値が0.7なら、目的変数の変動の7割をモデルが説明できたという読み方です。単回帰の場合は、この決定係数が2変数の相関係数を2乗した値にちょうど一致します。寄与率と呼ばれることもあり、指しているものは同じです。

実装する側の結論を先に述べます。決定係数は当てはまりを一目で測れる便利な指標ですが、この数値だけで回帰モデルの良し悪しを決めてはいけません。理由は二つあります。一つは、説明変数を増やすほど決定係数が機械的に上がるという性質です。変数を盛った過学習気味のモデルほど見かけの数値が高く出るため、変数の数を考慮した自由度調整済み決定係数を併せて見なければなりません。もう一つは、決定係数が誤差の大きさそのものを表さない点です。予測を実務で使うなら、実測単位で誤差を測るRMSEやMAEと必ず併用してください。scikit-learnではr2_scoreや回帰器のscore()で決定係数が得られますが、テストデータでは値が負になることもあり、それは平均値を答えるより予測が劣る危険信号です。決定係数は「まず見る一枚目」であって、判断を委ねきる指標ではないと捉えてください。

決定係数とは何か、R2が回帰モデルの当てはまりを測る指標である理由

決定係数を正しく使うには、まずこの数値が何を測っているのかを押さえる必要があります。単なる相関の強さではなく、モデルが説明できたばらつきの割合という点が要です。

0〜1の値が示す「説明できたばらつきの割合」という決定係数の定義

決定係数は、目的変数が持つばらつき全体のうち、回帰モデルによって説明がついた部分の割合を表す指標です。記号はR2(アールにじょう、R-squared)で、日本語では寄与率とも呼ばれます。値はふつう0から1の範囲におさまり、1は予測が全データ点を寸分違わず言い当てた状態、0は説明変数が目的変数の変動を何も説明できず、常に平均値を答えるのと同じ精度でしかない状態を意味します。たとえば住宅価格を広さから予測するモデルで決定係数が0.65なら、価格のばらつきの65%を広さという変数で説明できたという読み方です。残りの35%は広さ以外の要因や偶然のずれによるものと解釈します。ここで大切なのは、決定係数が「誤差が何円か」という絶対量ではなく、「ばらつきの何割を説明できたか」という相対的な割合を示す点にあります。同じデータに対する複数モデルの当てはまりを、単位に左右されず比べられるのがこの指標の持ち味です。回帰分析そのものの種類や回帰式の立て方から確認したい場合は、回帰分析の種類と実務での進め方を解説した記事を先に押さえると、決定係数がどの段階で登場する数値なのかが見通せます。

全平方和・回帰平方和・残差平方和の関係から決定係数を導く考え方

決定係数の意味は、ばらつきを三つの平方和に分けて考えると腑に落ちます。まず、各データの目的変数が全体の平均からどれだけ離れているかを二乗して合計したものが全平方和(SS_tot)で、これがデータ全体のばらつきの総量です。次に、モデルの予測値が平均からどれだけ離れているかを二乗して合計した回帰平方和(SS_reg)が、モデルが説明できたばらつきにあたります。最後に、実測値と予測値のずれである残差を二乗して合計した残差平方和(SS_res)が、モデルで説明しきれなかったばらつきです。切片を含む最小二乗法では、この三つに全平方和イコール回帰平方和プラス残差平方和という分解が成り立ちます。決定係数は、この全体のばらつきのうちモデルが説明できた割合、すなわち回帰平方和を全平方和で割った値として定義され、同じことを残差の側から見れば、説明できなかった割合を1から引いた形になります。ばらつきを「説明できた分」と「できなかった分」に切り分ける発想が、決定係数の土台です。

決定係数の計算方法と、単回帰で一致する相関係数・残差平方和との関係

定義が分かれば、実際の求め方は単純な引き算に落ちます。ここでは計算式と、単回帰でしばしば混同される相関係数との関係を整理します。

残差平方和と全平方和から R2=1−SS_res/SS_tot を求める手順

決定係数を手で求める手順は、次の流れになります。

  1. 目的変数の平均を計算する。
  2. 各データについて、実測値から平均を引いた差を二乗し、すべて合計して全平方和(SS_tot)を得る。
  3. 回帰モデルで各データの予測値を求め、実測値から予測値を引いた残差を二乗し、すべて合計して残差平方和(SS_res)を得る。
  4. 1から SS_res を SS_tot で割った値を引く。これが決定係数になる。

式で書けば R2 = 1 − SS_res ÷ SS_tot です。残差平方和がゼロ、つまり予測が全点を完全に当てれば決定係数は1になり、残差平方和が全平方和と同じ大きさ、つまりモデルが平均値を答えるのと変わらなければ0になります。分子の残差平方和はモデルの外し具合、分母の全平方和はデータ本来のばらつきなので、この比は「本来のばらつきに対してどれだけ外したか」を表し、それを1から引くことで「どれだけ当てられたか」に読み替えているわけです。実務で手計算する場面はまれで、後述するライブラリが同じ計算を担いますが、分子と分母が何を指すかを理解しておくと、値が不自然なときに原因を切り分けられます。

単回帰では相関係数の2乗に一致する決定係数と、多重回帰での違い

説明変数が一つの単回帰では、決定係数は2変数のピアソン相関係数を二乗した値にちょうど一致します。相関係数がプラスマイナス0.8なら、決定係数は0.64です。この関係から、決定係数の記号がR2と書かれる理由も見えてきます。ただし、この一致が成り立つのは説明変数が一つの単回帰に限られる点に注意してください。説明変数が複数ある重回帰では、決定係数は個々の相関係数の単純な二乗和にはならず、あくまで前節の平方和の比として定義されます。相関係数は2変数間の直線的な関係の強さと向きを示す指標であるのに対し、決定係数はモデル全体の当てはまりを示す指標です。単回帰では両者が数値として重なるだけで、意味の出発点は別だと押さえておくと、重回帰に進んだときに混乱しません。決定係数はプラスマイナスの向きを持たず、当てはまりの良さという一方向の尺度である点も、相関係数との違いです。

決定係数を鵜呑みにしない読み方と、自由度調整済み決定係数による補正

決定係数は便利な半面、値が高いことをそのままモデルの優秀さと受け取ると足をすくわれます。数値が持つ二つの落とし穴と、その補正を見ていきます。

説明変数を増やすほど上がる決定係数の欠点と、自由度調整済みR2

決定係数には、説明変数を追加すると値が下がらず、むしろ上がりやすいという性質があります。目的変数と無関係な変数であっても、モデルに加えれば偶然のぶんだけ残差平方和がわずかに減り、決定係数が上向くためです。この性質のせいで、変数を闇雲に盛ったモデルほど見かけの決定係数が高く出て、過学習を当てはまりの良さと取り違える危険が生じます。この欠点を補うのが自由度調整済み決定係数(調整済みR2、Adjusted R-squared)です。計算式は Adjusted R2 = 1 − (1 − R2)(n − 1) ÷ (n − p − 1) で、nはデータ数、pは説明変数の数を表します。説明変数pが増えると分母の(n − p − 1)が小さくなり、その変数が説明力に見合う貢献をしなければ調整済みの値はむしろ下がる仕組みです。変数を一つ足したとき、通常の決定係数が上がっても調整済み決定係数が下がるなら、その変数はモデルに寄与していないと判断できます。重回帰でモデルの複雑さを比べるときは、通常の決定係数ではなくこの調整済み決定係数を見るのが基本です。

決定係数が高くても信頼できない場面(外れ値・非線形・過学習)

決定係数が高いことは、必ずしも良いモデルを意味しません。値が高くても信用を保留すべき場面が、少なくとも三つあります。第一に、外れ値の影響です。決定係数は残差を二乗して積み上げるため、極端に離れた一点が全平方和と残差平方和の両方を大きく動かし、値を実態以上に高くも低くも見せます。第二に、非線形な関係を直線モデルに当てはめた場合です。データが曲線的な関係を持つのに直線で近似すると、決定係数がそこそこ高く出ても、残差に系統的な偏り(パターン)が残ります。数値だけでなく残差プロットを目で確認し、ずれが無秩序に散らばっているかを見る必要があります。第三に、訓練データでの過学習です。前節のとおり変数を増やせば訓練データの決定係数はいくらでも上げられますが、それが未知のデータへの予測力を保証するわけではありません。訓練データで0.95でも、テストデータで0.4まで落ちるなら、そのモデルはデータの偶然を覚え込んだだけです。決定係数は、訓練とテストの両方で測り、値の乖離まで含めて読むべき指標だと考えてください。

実務で決定係数をどう扱うか、評価指標の使い分けとscikit-learn実装

ここからは技術解説から一歩進め、実装者が決定係数とどう向き合うべきかを示します。要点は、決定係数だけに頼らない評価設計と、ライブラリでの正しい求め方の二つです。

決定係数だけで評価すべきでない場面と、RMSE・MAEを併用する判断

回帰モデルの精度を測るとき、決定係数を最初の一枚目として見るのは妥当な判断です。単位に依存せず、当てはまりの良さを直感的な0から1のスケールで示せるため、モデル間の比較や関係者への説明に向いています。一方で、決定係数だけでモデルの採否を決めるのは避けるべきです。決定係数は割合であり、予測が実際に何単位ずれているかという誤差の大きさを直接は示さないためです。売上を予測するモデルで決定係数が0.8あっても、平均して何十万円ずれるのかは、この数値からは分かりません。予測値を業務の意思決定に使うなら、実測と同じ単位で誤差を表すRMSE(二乗平均平方根誤差)やMAE(平均絶対誤差)を必ず併用します。RMSEは大きな外れを強く罰する指標、MAEは外れ値の影響を受けにくい平均的なずれの指標で、両者を決定係数と並べて見ることで、「当てはまりの割合」と「実害としての誤差量」の両面からモデルを評価できます。分類問題では決定係数ではなく取りこぼしと誤検知を見る必要があり、その評価軸は回帰とは別物です。分類モデルを扱う際の指標については、混同行列で適合率・再現率を確認する視点が参考になります。

scikit-learnのr2_scoreで決定係数を求める実装と負値の意味

Pythonでの実装では、scikit-learnのメトリクスを使うのが標準的です。予測値と実測値がそろっていれば、r2_score(y_true, y_pred)で決定係数が一行で得られます。LinearRegressionなどの回帰器が持つscore(X, y)メソッドは、内部でこのr2_scoreを呼んでおり、返ってくる値は正解率ではなく決定係数である点に注意が必要です。分類器のscore()が正解率を返すのと混同しやすいので気をつけてください。実装で戸惑いやすいのが、決定係数が負の値になる現象です。定義上、決定係数は最大が1ですが下限は0ではなく、モデルの予測が目的変数の平均値を答えるより悪いとき、残差平方和が全平方和を上回って値がマイナスに振れます。とくにテストデータでr2_scoreを計算したときの負値は、モデルが未知データに対して平均以下の予測しかできていないという明確な危険信号です。この場合は、特徴量の見直しやモデルの選び直しに立ち返る必要があります。決定係数を含む評価設計から、過学習の抑制、業務データに合わせたモデルの選定・運用までを外部に任せたい場合は、機械学習・ディープラーニングの受託開発を手がける一創の機械学習モデル開発にご相談ください。指標の読み方の設計とモデル改善の両面から、業務で使える予測モデルづくりを支援します。

決定係数の意味・計算と回帰モデル評価に関してよくある質問と回答

決定係数でよく検索される疑問に、実装目線で簡潔に答えます。

決定係数はどのくらいの値が良い目安ですか?

一律の合格ラインはなく、分野によって基準が大きく異なります。物理現象のように誤差の小さいデータでは0.9以上が求められる一方、人の行動を扱う社会科学やマーケティングのデータでは0.3〜0.5でも意味のあるモデルとされることがあります。目安の数字を絶対視せず、同じ課題の他モデルとの比較や、RMSEなど誤差量の指標と併せて判断してください。

決定係数と相関係数はどう違いますか?

相関係数は2変数間の直線的な関係の強さと向き(プラスマイナス)を示す指標で、決定係数は回帰モデルが目的変数のばらつきをどれだけ説明できたかを示す指標です。説明変数が一つの単回帰では、決定係数は相関係数を二乗した値に一致します。ただし決定係数は向きを持たず、説明変数が複数ある重回帰では単純な二乗の関係は成り立ちません。

自由度調整済み決定係数はいつ使いますか?

説明変数が複数ある重回帰で、変数の数が異なるモデルを比べる場面で使う指標です。通常の決定係数は変数を増やすほど上がってしまうため、変数の数を考慮して補正した自由度調整済み決定係数で比べると、無駄な変数を加えたモデルを見抜けます。変数を足して通常の決定係数が上がっても調整済みの値が下がるなら、その変数は貢献していないと判断できます。

決定係数が負になるのはなぜですか?

モデルの予測が、目的変数の平均値を答えるよりも精度が悪いときに負になります。決定係数の上限は1ですが下限は0ではなく、残差平方和が全平方和を上回るとマイナスに振れます。とくにテストデータでの評価で負値が出た場合は、モデルが未知データにまったく適合できていない状態です。特徴量やモデルの選び直しが必要になります。

決定係数が高ければ良いモデルと言えますか?

必ずしもそうとは限りません。説明変数を増やせば決定係数は機械的に上がり、過学習したモデルほど訓練データでの値が高く出ます。外れ値や非線形な関係も、数値を実態からずらす要因です。訓練とテストの両方で測り、値の乖離や残差の偏り、RMSEなどの誤差量まで含めて総合的に判断する必要があります。

関連記事

資料請求

RELATED POSTS 関連記事