決定係数(R2乗値)とは何なのか?Pythonではどのように実装すれば良いのかを解説

スポンサーリンク

今回は、Pythonで決定係数に注目します。

スポンサーリンク

決定係数(R2乗値)は何ですか?

決定係数(Coefficient of Determination)の概念を深く理解する前に、まずエラーメトリクスによる機械学習モデルの評価の必要性について理解しましょう。

データサイエンスの領域では、あらゆるモデルを解決するために、エンジニアや開発者は、データセットに適用する前にモデルの効率を評価することが非常に必要です。

モデルの評価は、特定のエラーメトリクスに基づいて行われます。

決定係数もそのような誤差指標の1つです。

決定係数とは、一般的にR二乗値とも呼ばれ、適用するデータ値に対するモデルの精度と効率を評価するための「回帰誤差測定法」です。

R二乗値は、モデルのパフォーマンスを表します。

これは、データ・モデルの独立変数によって予測される応答またはターゲット変数の変動を記述します。

したがって、簡単に言うと、R二乗の値は、モデルがどれだけうまくブレンドされているか、出力値がどれだけデータセットの決定(独立)変数によって説明されているかを決定するのに役立つと言えるでしょう。

R二乗の値は、[0,1]の間にあります。

以下の式を見てください。

R2= 1- SSres / SStot

ここで

  • SSres は、データモデルの残差の二乗和を表す。
  • SStot は誤差の総和を表します。

R2 の値が高いほど、良いモデルであり、良い結果であると言えます。

NumPy ライブラリを用いた R スクエア

Python の NumPy ライブラリを用いて R 乗を実装してみましょう。

以下の手順で、Numpyモジュールを使ってR squareの値を取得します。

    1. numpy.corrcoef() 関数を用いて相関行列を計算します。
    1. 行列をインデックス [0,1] でスライスして、R の値、つまり「相関係数」を取得します。
    1. R の値を二乗して、R の二乗の値を得る。

例えば、以下の様になります。

import numpy
actual = [1,2,3,4,5]
predict = [1,2.5,3,4.9,4.9]
 
corr_matrix = numpy.corrcoef(actual, predict)
corr = corr_matrix[0,1]
R_sq = corr**2
 
print(R_sq)

出力。

0.934602946460654

R square と Python の sklearn ライブラリ

では、sklearnライブラリを使ってR二乗の値を計算してみましょう。

Pythonのsklearnライブラリには、決定係数の値を求めるr2 jp_score()という関数が用意されています。

例えば、以下の様になります。

from sklearn.metrics import r2_score
a =[1, 2, 3, 4, 5]
b =[1, 2.5, 3, 4.9, 5.1]
R_square = r2_score(a, b)
print('Coefficient of Determination', R_square)

結果は以下の通りです。

Coefficient of Determination 0.8929999999999999

まとめ

ここまでで、このトピックは終了です。

もし何か疑問があれば、お気軽にコメントください。

Pythonに関連したこのような記事をもっと見るには、それまでは、お楽しみに。

タイトルとURLをコピーしました