๐จ๐พ๐ป ์์ ํฌ์คํ ์์ R-Squared์ ๋ํด ๋ค๋ฃฌ ์ ์ด ์์๋๋ฐ, ์ด์ ํ๊ณ๋ฅผ ๋ณด์ํ adjusted r-squared์ ๊ฐ์ด ๋น๊ตํ๋ฉด์ ์ฌ์ธต์ ์ผ๋ก ์์๋ณด๋๋ก ํ์.
All About Evaluation Metrics(1/2) → MSE, MAE, RMSE, R^2
** ML ๋ชจ๋ธ์ ์ฑ๋ฅ์ ์ต์ข ์ ์ผ๋ก ํ๊ฐํ ๋ ๋ค์ํ evaluation metrics๋ฅผ ์ฌ์ฉํ ์ ์๋ค๊ณ ํ์! ** (supervised learning - regression problem์์ ๋ง์ด ์ฐ์ด๋ ํ๊ฐ์งํ๋ค) - ๊ณผ์ (5) - ๐ ๊ทธ๋ฌ๋ฉด ์ฐจ๊ทผ์ฐจ..
sh-avid-learner.tistory.com
1> R-squared (coefficient of determination)
→ r-squared๋ ๋ชจ๋ธ์ด ์ผ๋ง๋ ์์ธก๋ ฅ์ด ์ข์ ์ง, ๋ช ๊ฐ์ point๋ฅผ ์ ์์ธกํ ์ ์๋ ์ง๋ฅผ ์ค๋ช
ํ๋ ์งํ๊ฐ ์๋๋ค.
→ = 'the proportion of variance of y that has been explained by the independent variables in the model'
→ ์ฆ, independent variable์ ๋ณํ๋ฅผ ๊ฐ์ง๊ณ y์ ๋ณํ๋ฅผ ์ผ๋งํผ ์ค๋ช ํ ์ ์๋ ์ง ์ค๋ช ๋ ฅ์ ๋ํ๋ด๋ ์งํ์ด๋ค!
→ ์ ๊ทธ๋ฆผ์ ์์์ ๋ค๋ค๋ฏ์ด R-squared ๊ฐ์ SSR/SST์ด๋ค.
โซ ์ ๊ทธ๋ฆผ์์ ์ค์ ๊ฐ ๋นจ๊ฐ ์ ๊ณผ ๊ฒ์์ ์ (points' mean) ์ฌ์ด์ ๊ฑฐ๋ฆฌ ์ ๊ณฑํฉ(์ด๋ก์ )์ด SST - ์ฆ, ์๋ฏธ์์ผ๋ก points์ y ์์ฒด variance
โซ ๊ทธ๋ฆฌ๊ณ ์์ธก๊ฐ ํ๋์ (model)๊ณผ ๊ฒ์์ ์ (points' mean) ์ฌ์ด์ ๊ฑฐ๋ฆฌ ์ ๊ณฑํฉ(๋นจ๊ฐ์ )์ด SSR - ์ฆ, ์๋ฏธ์์ผ๋ก ๋ชจ๋ธ๊ณผ ์ค์ y ํ๊ท ๊ณผ์ variance
→ ์ค์ ๊ฐ ๋นจ๊ฐ ์ & ์์ธก๊ฐ ํ๋์ ์ด ๊ฐ๊ฐ ๊ธฐ์ค์ด ๋๋ (point ๋ณ) ๊ฒ์ ์ ๊น์ง์ ๊ฑฐ๋ฆฌ ์ ๊ณฑํฉ์ด ์๋ก ๊ฐ๋ค๋ฉด ์ค์ ๊ฐ๊ณผ ์์ธก๊ฐ์ ๊ฐ์ผ๋ฏ๋ก y์์ฒด์ variance์ธ SST์ SSR์ ๋์ผ, ์ฆ SSR/SST = 1๋ก R-squared ๊ฐ์ 1์ด ๋๋ค.
→ R-squared๊ฐ์ด 1์ด๋ผ๋ ๊ฑด, ์์ธก๊ฐ ํ๋์ model์ด ์ค์ ๊ฐ(ํ๊ท )์ ๊ธฐ์ค์ผ๋ก ํ variance๊ฐ ์ค์ ๊ฐ์ variance์ ๊ฐ๋ค๋ ๋ป์ผ๋ก, model์ด ์ค์ ๊ฐ์ variance๋ฅผ ์๋ฒฝํ ์ค๋ช ํด์ฃผ๋ 100%์ ์ค๋ช ๋ ฅ์ ๊ฐ์ง๋ค๊ณ ํ ์ ์๋ค.
โป ์ฆ R-squared๊ฐ์ x๋ค์ ๋ณํ๋ฅผ ๊ฐ์ง๊ณ y์ ๋ณํ๋ฅผ ์ผ๋ง๋ ์ ์ค๋ช ํ ์ ์๋๊ฐ์ด๋ค. ์๋ฅผ ๋ค์ด R-squared ๊ฐ์ด 80%๋ผ๋ฉด, x๋ณ์์ ์ฆ๊ฐ๋ก ์ธํด y๋ณ์์ ์ฆ๊ฐ์ ์ํฅ์ ๋ฏธ์น ์ ๋๋ 80%๋ผ๊ณ ํ๋จ์ ๋ด๋ฆด ์ ์๋ค.
โป ํ๊ณ์ - ๋ง์ฝ dependent variable์ ์ํฅ์ ๊ฑฐ์ ๋ฏธ์น์ง ์๋ ๋ณ์์ด๋๋ผ๋ dependent variable์ ๊ณ์ํด์ ์ถ๊ฐํ ์๋ก R-squared ์งํ ํน์ฑ์ ์ ๊ณฑํฉ์ด๊ธฐ ๋๋ฌธ์ ๋จ ์กฐ๊ธ์ด๋ผ๋ R-squared ์งํ๊ฐ์ด ๋ฌด์กฐ๊ฑด ์ฆ๊ฐํ๊ฒ ๋๋ค. model๊ณผ ๊ด๋ จ์๋ ์์ธ์ ๋ฃ์๋๋ฐ๋ ์ด์ ๋ณด๋ค R-squared๊ฐ์ด ์์นํ๋ค๋ ๊ฑด ๋งค์ฐ ์ฌ๊ฐํ ํ๊ณ..
2> adjusted r-squared
๐จ๐พ๐ป ๋ฐ๋ผ์ ์ฐ๋ฆฌ๋ adjusted r-squared ์งํ๋ฅผ ์ฌ์ฉํด r-squared์ ํ๊ณ๋ฅผ ๋ณด์ํ๋ค.
โป ์๋ก์ด term์ด ์ถ๊ฐ๋ ๋ ์ฐ๋ฆฌ๋ ์๋์ ๊ฐ์ด ๋ ๊ฐ์ง case๋ฅผ ๊ณ ๋ คํ ์ ์๋ค.
(์ฌ๊ธฐ์ term์ด ์ถ๊ฐ๋๋ค๋ ๊ฒ์ polynomial regression model์ term ์ถ๊ฐ๋ฅผ ๋งํ๋ ๊ฒ ์๋๋ค. ๋ค์ํ independent variable์ ๊ฐ์๋ฅผ ๋งํ๋ค.)
(ํ๋จ ๊ฒ์๊ธ์ ๋ณด๋ฉด ์๊ฒ ์ง๋ง, polynomial regression model์์ term ๊ฐ์ ์ฆ๊ฐํ๋ค๊ณ r-squared๊ฐ ๋ฌด์กฐ๊ฑด์ ์ผ๋ก ์ฆ๊ฐํ๋ ๊ฑด ์๋์ ํ์ธ ๊ฐ๋ฅํ๋ค.)
Polynomial Regression Model
* Linear Regression Model - ์ฆ, y ์ข ์๋ณ์์ x ๋ ๋ฆฝ๋ณ์(1๊ฐ ๋๋ 2๊ฐ ์ด์)๋ค ๊ฐ์ ๊ด๊ณ๊ฐ ์ ํ์ธ ๊ฒฝ์ฐ๋ฅผ ๋ปํ๋ค. ์ฆ, x ๋ ๋ฆฝ๋ณ์์ ์ฆ๊ฐ ๋ณํ์ ๋ฐ๋ผ y๋ ์ด์ ์์ํ์ฌ ์ฆ๊ฐ์ด ์ผ์ ํ ์์น์ ํญ์ผ๋ก
sh-avid-learner.tistory.com
→ โ ๊ณผ์ ํฉ์ด ์์๋๊ฑฐ๋ ์์ธก๋ ฅ์ ์คํ๋ ค ๊ฐ์์ํค๋ predictor ์งํ๊ฐ ๊ธฐ์กด model์ ์ฒจ๊ฐ๋ ๊ฒฝ์ฐ ์์ฒด penalty๋ฅผ ๋ถ๊ณผํด adjusted r^2๊ฐ ๊ฐ์
→ โก ๊ทธ ๋ฐ๋๋ก ์คํ๋ ค model์ ์ฑ๋ฅ์ ๋์ด๋ predictor ์งํ๊ฐ ์ฒจ๊ฐ๋๋ฉด adjusted r^2๊ฐ ์ฆ๊ฐ
$R^2 = 1 - [\cfrac{(1-R^2)(n-1)}{n-k-1}]$
(k: independent variable ๊ฐ์ = term ํญ ๊ฐ์ / n: point ๊ฐ์)
→ ์ผ๋ฐ์ ์ผ๋ก adjusted r-squared๊ฐ์ ํญ์ ์์์ธ ๊ฒฝ์ฐ๊ฐ ๋๋ถ๋ถ์ด๋ฉฐ, ๋์ฒด์ ์ผ๋ก r-squared๊ฐ๋ณด๋ค ์์น๊ฐ ์ ์๊ฐ์ผ๋ก ์ธก์ ๋๋ค.
→ adjusted ์งํ๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ๋ฉฐ, adjusted ์งํ๋ ๋ค์ํ independent variable์ ์กฐํฉ์ ๊ณ ๋ คํ๊ณ model์ ๋ค์ด๊ฐ ์ต์ ์ independent variable ๊ฐ์๋ฅผ ์์๋ผ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค.
→ adjusted $R^2$ ์ ์ค๋ช : ์ โ ์ case๋ผ๋ฉด ๊ธฐ์กด R^2๋ณด๋ค k๊ฐ์ด ์ฆ๊ฐํ๋๋ฐ ๋ ํฐ ํญ์ ์ฐจ์งํ๊ธฐ์ ๊ฒฐ์ ์ ์ผ๋ก adjusted๊ฐ์ ๊ฐ์ / โก์ case๋ผ๋ฉด ๊ธฐ์กด R^2 ์ฆ๊ฐํญ์ด k๊ฐ ์ฆ๊ฐํญ์ ๋๊ธฐ์(outweigh) ๊ฒฐ์ ์ ์ผ๋ก adjusted๊ฐ์ ์ฆ๊ฐ
์ค์ต w/python>
1> dataset ์ค๋น + import + ์ ์ฒ๋ฆฌ
import numpy as np
import pandas as pd
import matplotlib
import seaborn as sns
import matplotlib.pyplot as pyplot
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.metrics import r2_score
#read in data
data = pd.read_csv("./data/nba_logreg.csv")
data.dropna(inplace=True) #๊ฒฐ์ธก์น ์๋ ํ ์ญ์
data.drop(columns=['Name'],inplace=True) #์ด๋ฆ column ์ญ์
2> target vector ์ถ์ถ + feature vector๋ ๋ค์ฏ๊ฐ๋ง ์ถ์ถ
#y target vector ๋ฐ๋ก ๋นผ๋๊ธฐ
y = data['TARGET_5Yrs'].copy()
data.drop(columns=['TARGET_5Yrs'],inplace=True)
data_cut = data.iloc[:,:5]
3> adjusted r-squared์ r-squared์ ์ฐจ์ด๋ฅผ ์์๋ณด๊ธฐ ์ํด dataframe์ ๋๋คํ๊ฒ ์์ฑ๋ ๋ column์ ๊ฐ๋ค๋ถ์ธ๋ค.
np.random.seed(11)
data_cut['random1'] = np.random.randn(len(data_cut))
data_cut['random2'] = np.random.randint(len(data_cut))
4> ์ง์ dataframe ์ผ์ชฝ column๋ถํฐ ๋์ ์ผ๋ก independent variables ๋ชฉ๋ก ์ถ๊ฐ - r-squared์ adjusted r-squared ์ฐ์ฐํ๊ธฐ
r_squared = []
adj_r_squared = []
for i in range(1, data_cut.shape[1]+1):
data_new = data_cut.iloc[:,:i].copy()
linear_regression = LinearRegression()
linear_regression.fit(data_new, y)
prediction = linear_regression.predict(data_new)
r2 = r2_score(y_true=y, y_pred=prediction)
r_squared.append(r2)
adj_r2 = 1 - ((1 - r2) * (len(data) - 1) / (len(data) - i - 1))
adj_r_squared.append(adj_r2)
5> ๊ฒฐ๊ณผ ์๊ฐํ
result = pd.DataFrame({'r^2':r_squared, 'adjusted_r^2':adj_r_squared})
fig = plt.figure(figsize=(7,6))
sns.set_style('ticks')
sns.set_context("poster", font_scale = .8, rc={"grid.linewidth": 0.2})
s = sns.lineplot(data=result);
plt.axvline(4.0, color='red', linewidth=4)
s.set_xticks(range(8))
s.set_xticklabels(['1', '2','3','4','5','6','7','8']);
6> ๊ฒฐ๊ณผ ๋ถ์
โถ ์๊ฐํ ๊ฒฐ๊ณผ adjusted๊ฐ์ r^2๋ณด๋ค ์ธ์ ๋ ๊ฐ์ด ์๊ฒ ์ธก์ ๋จ์ ์ ์ ์๋ค.
โถ independent variable ๊ฐ์๊ฐ 6์ด ๋๋ ๋๋ถํฐ ์ค์ ๋ก model๊ณผ ๊ด๋ จ์๋ ๋๋คํ data๋ฅผ ์ง์ด๋ฃ์ ์์ ์ธ๋ฐ, ์ค์ ๋ก adjusted ์์น๋ ํด๋น data๊ฐ model ์ฑ๋ฅ ํฅ์์ ์๋ฏธ๊ฐ ์๋ค ํ๋จํ์ฌ ์์น๊ฐ์ด ๊ฐ์ํจ์ ์ก์์ผ๋ก ํ์ธํ ์ ์๋ค.
โถ ํ์ง๋ง, ๋ฐ๋๋ก ์๋ฌด๋ฆฌ ๋ฌด์๋ฏธํ variable์ ์ง์ด๋ฃ์์ด๋ r^2๊ฐ์ ๊ณ์ ์ฆ๊ฐํ๋ ํ๊ณ๋ฅผ ๋ณด์ฌ์ฃผ๊ณ ์๋ค.
โถ ๋ฐ๋ผ์ ์ฐ๋ฆฌ๊ฐ ์ด๋ค data์ธ์ง ๋ชจ๋ฅธ๋ค๋ ๊ฐ์ ํ, ๋จ์ํ adjusted r^2 ์์น๋ง์ ํตํด์ ์ฐ๋ฆฌ๋ randomํ๊ฒ ๋ฃ์ ๋ variable์ model ๊ตฌ์ถ์ ์ ์ธ์ํฌ ์ ์๋ ์ฅ์ ์ด ์กด์ฌํ๋ค. (์ ๊ทธ๋ํ์ ๊ฒฝ์ฐ 4๋ฒ์งธ variable์ ๋ฃ์์ ๋ ์คํ๋ ค adjusted๊ฐ์ด ๊ฐ์ํ๋๋ฐ, ์ด๋ฅผ ํตํด 4๋ฒ์งธ variable๋ง ๋ชจ๋ธ ๊ตฌ์ถ์ ์ ์ธ์ํฌ ์ ์๋ค.)
* ์ถ์ฒ1) ๋น๊ต https://www.investopedia.com/ask/answers/012615/whats-difference-between-rsquared-and-adjusted-rsquared.asp
* ์ถ์ฒ2) adjusted r-squared ๊ฐ๋ https://youtu.be/_I7sKr77Ci8
* ์ถ์ฒ3) r-squared ๊ฐ๋ https://www.youtube.com/watch?v=IMjrEeeDB-Y
* ์ถ์ฒ4) python ์ค์ต https://www.statology.org/adjusted-r-squared-in-python/
* ์ถ์ฒ5) ์๊ฐํ code ์ผ๋ถ ์ฐธ์กฐ https://towardsdatascience.com/demystifying-r-squared-and-adjusted-r-squared-52903c006a60
* ์ถ์ฒ6) r-squard ๊ฐ๋ <statquest> https://www.youtube.com/watch?v=2AQKmw14mHM
'Machine Learning > Fundamentals' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
All About Evaluation Metrics (2/2) โ MAPE, MPE (0) | 2022.06.11 |
---|---|
Unsupervised Learning (0) | 2022.06.03 |
PCA(w/code) (0) | 2022.05.31 |
PCA(concepts) (0) | 2022.05.30 |
Feature Selection vs. Feature Extraction (0) | 2022.05.18 |
๋๊ธ