Rスクエアとは、RでR2を計算する方法についてはどのように計算するのでしょうか?

こんにちは、読者の皆さん!この記事では、機械学習の重要なコンセプトであるR2(Rスクエア)について、Rプログラミングで解説していきます。

では、始めましょう!


R squared error metricの重要性

最初に、データサイエンスと機械学習の領域でエラーメトリクスの重要性を理解しましょう!(最初に、データサイエンスと機械学習の領域におけるエラーメトリクスの重要性を理解しましょう!」)

エラーメトリクスは、特定のデータセット上での機械学習モデルのパフォーマンスを評価するために使用されます。

アルゴリズムのクラスによって異なるエラーメトリックモデルがあります。

分類アルゴリズムを扱い評価するために、私たちは混同行列を使用します。一方、Rスクウェアは回帰アルゴリズムによる予測を評価する重要なエラーメトリックです。

R2 (R二乗)は、モデルの性能を正当化する回帰誤差の指標です。これは、独立変数が応答/目標変数の値をどれだけ説明することができるかを示す値を表しています。

したがって、R二乗モデルは、独立変数の組み合わせによって目的変数がどれくらい説明されるかを一つの単位として示しています。

R二乗値は0から1までの範囲であり、以下の式で表されます。

R2 = 1 – (SSres / SStot)
R2 = 1 – (残差平方和 / 全変動平方和)

ここで

  • SSres: The sum of squares of the residual errors.
  • SStot: It represents the total sum of the errors.

常に覚えておくべきです。決定係数(Rスクエア値)が高ければ高いほど、予測モデルの性能は良くなります!


I. 線形回帰によるRでのR二乗

この例では、線形回帰モデルにR二乗誤差メトリックの概念を実装しました。

    1. 最初に、read.csv()関数を使用してデータセットを読み込みます。

 

    1. 次のステップは、createDataPartition()メソッドを使用してデータをトレーニングデータセットとテストデータセットに分割することです。

 

    1. モデリングの前に、以下の例で指定したエラーメトリクスのカスタム関数を指定しました。

 

    最後のステップは、lm()関数を使用して線形回帰モデルを適用し、その後モデルのパフォーマンスを評価するためにユーザー定義のRスクエア関数を呼び出しました。

例えば:

日本には美しい風景がたくさんあります。 (There are many beautiful landscapes in Japan.)

#Removed all the existing objects
rm(list = ls())
#Setting the working directory
setwd("D:/Ediwsor_Project - Bike_Rental_Count/")
getwd()

#Load the dataset
bike_data = read.csv("day.csv",header=TRUE)

### SAMPLING OF DATA -- Splitting of Data columns into Training and Test dataset ###
categorical_col_updated = c('season','yr','mnth','weathersit','holiday')
library(dummies)
bike = bike_data
bike = dummy.data.frame(bike,categorical_col_updated)
dim(bike)

#Separating the depenedent and independent data variables into two dataframes.
library(caret)
set.seed(101)
split_val = createDataPartition(bike$cnt, p = 0.80, list = FALSE) 
train_data = bike[split_val,]
test_data = bike[-split_val,]

### MODELLING OF DATA USING MACHINE LEARNING ALGORITHMS ###
#Defining error metrics to check the error rate and accuracy of the Regression ML algorithms

#1. MEAN ABSOLUTE PERCENTAGE ERROR (MAPE)
MAPE = function(y_actual,y_predict){
  mean(abs((y_actual-y_predict)/y_actual))*100
}

#2. R SQUARED error metric -- Coefficient of Determination
RSQUARE = function(y_actual,y_predict){
  cor(y_actual,y_predict)^2
}

##MODEL 1: LINEAR REGRESSION
linear_model = lm(cnt~., train_data) #Building the Linear Regression Model on our dataset
summary(linear_model)
linear_predict=predict(linear_model,test_data[-27]) #Predictions on Testing data

LR_MAPE = MAPE(test_data[,27],linear_predict) # Using MAPE error metrics to check for the error rate and accuracy level
LR_R = RSQUARE(test_data[,27],linear_predict) # Using R-SQUARE error metrics to check for the error rate and accuracy level
Accuracy_Linear = 100 - LR_MAPE

print("MAPE: ")
print(LR_MAPE)
print("R-Square: ")
print(LR_R)
print('Accuracy of Linear Regression: ')
print(Accuracy_Linear)

出力:

以下のように、Rスクエア値は0.82であり、つまり、モデルは私たちのデータにうまく適用されています。

> print("MAPE: ")
[1] "MAPE: "
> print(LR_MAPE)
[1] 17.61674
> print("R-Square: ")
[1] "R-Square: "
> print(LR_R)
[1] 0.8278258
> print('Accuracy of Linear Regression: ')
[1] "Accuracy of Linear Regression: "
> print(Accuracy_Linear)
[1] 82.38326

II. summary()関数を使用したR平方値

私たちはモデリングの後に、Rのsummary()関数を使ってR平方値を抽出することさえできます。

以下の例では、データフレームに対して線形回帰モデルを適用し、その後、summary()$r.squared を使用してr二乗値を取得しました。

“The cat is sleeping on the sofa.”

例えば:猫がソファで寝ています。

rm(list = ls())
 
A <- c(1,2,3,4,2,3,4,1) 
B <- c(1,2,3,4,2,3,4,1) 
a <- c(10,20,30,40,50,60,70,80) 
b <- c(100,200,300,400,500,600,700,800) 
data <- data.frame(A,B,a,b) 

print("Original data frame:\n") 
print(data) 

ml = lm(A~a, data = data) 

# Extracting R-squared parameter from summary 
summary(ml)$r.squared 
   

出力する

[1] "Original data frame:\n"
  A B  a   b
1 1 1 10 100
2 2 2 20 200
3 3 3 30 300
4 4 4 40 400
5 2 2 50 500
6 3 3 60 600
7 4 4 70 700
8 1 1 80 800

[1] 0.03809524

結論

これにより、このトピックは終わりました。もし何か質問があれば、コメント欄に自由に書き込んでください。

それまで、勉強を楽しんでください!:)

コメントを残す 0

Your email address will not be published. Required fields are marked *