지난 시간에 모형을 평가하는 지표로 MSE, MAE,MAPE 를 설명한 바 있습니다.
이번 시간은 이 중에서 MSE(Mean Squared Error) 구하는 실습을 해 보겠습니다.
제가 강의에 자주 사용하는 패키지 {stats}에 들어 있는 데이터 mtcars 를 이용합니다.
보다 세부적인 내용은 유명한 ISLR(An Introduciton to Statitical Learning)을 보시면 많은 도움이 되실 겁니다.
data(mtcars)
str(mtcars)
set.seed(123) # 매번 동일한 난수 생성
ran1 <- sample(32,20) # 32개의 숫자를 이용, 20개의 난수 발생
ran1 # 난수 확인
train_mt <- mtcars[ran1,] # 생성된 난수이용, 훈련 데이터 20개 생성
test_mt <- mtcars[-ran1,] # 생성된 난수 이용, 테스트 데이터 12개 생성
train_mt # 훈련데이터 20개 확인
test_mt # 테스트 데이터 12개 확인
model_lm <- lm(mpg~cyl,data=train_mt) # train 데이터로 회귀분석
pred <- predict(model_lm,train_mt) # train 데이터 회귀모델로 예측
pred # 예측된 값 확인
mean((train_mt$mpg-pred)^2) # train 데이터 MSE 계산(원래 목적 아님)
model_lm <- lm(mpg~cyl,data=train_mt) # train 데이터로 회귀분석
pred <- predict(model_lm,test_mt) # test 회귀모델로 예측
pred # 예측된 값 확인
mean((test_mt$mpg-pred)^2) # test 데이터 MSE 계산(원래 목적 ^^^)
[설명]
data(mtcars)
str(mtcars)
set.seed(123) # 매번 동일한 난수 생성
ran1 <- sample(32,20) # 32개의 숫자를 이용, 20개의 난수 발생
ran1 # 난수 확인
train_mt <- mtcars[ran1,] # 생성된 난수이용, 훈련 데이터 20개 생성
test_mt <- mtcars[-ran1,] # 생성된 난수 이용, 테스트 데이터 12개 생성
train_mt # 훈련데이터 20개 확인
test_mt # 테스트 데이터 12개 확인
여기에서 난수를 발생하여 20개의 데이터를 추출합니다. 나머지 데이터를 test 데이터로 사용합니다.
model_lm <- lm(mpg~cyl,data=train_mt) # train 데이터로 회귀분석
pred <- predict(model_lm,train_mt) # train 데이터 회귀모델로 예측
pred # 예측된 값 확인
mean((train_mt$mpg-pred)^2) # train 데이터 MSE 계산(원래 목적 아님)
회귀분석 모형을 이용하여 예측치(pedict)를 구합니다.
(실제값-예측치 , error)를 구하여 각 값에 제곱(square)을 하고 평균값(mean)을 구합니다.
MSE 들 구합니다. 이것은 예측할 때에도 (테스트데이터를 사용하지 않고) 훈련데이터를 사용하여 보았습니다.
이것은 원래의 목적이 아닙니다.
model_lm <- lm(mpg~cyl,data=train_mt) # train 데이터로 회귀분석
pred <- predict(model_lm,test_mt) # test 회귀모델로 예측
pred # 예측된 값 확인
mean((test_mt$mpg-pred)^2) # test 데이터 MSE 계산(원래 목적 ^^^)
테스트 데이터를 이용하여 MSE 를 구합니다.
여기서 궁금:
32개의 데이터에서 test 데이터(20개)를 추출하고, 나머지 train 데이터(12개)에 적용하여
MSE를 구했는데 이렇게 한 번만 구한 MSE 를 얼마나 신뢰를 할 수 있을까요?
적어도 여러 번 작업을 하여 MSE를 구해 보는 것이 신뢰성이 더해 지겠지요?
이 방법이 K-fold CV(Cross Validatrion), LOO(Leave-One-Out) CV 등이 있습니다.
이것에 대해서는 추후에 보완하도록 하겠습니다...
'머신러닝 > 2. 모형성능평가' 카테고리의 다른 글
(R1)제01강(04) 모형성능평가 - 붓스트랩 Bootstrap (0) | 2022.01.06 |
---|---|
(R1)제01강(05)_모형성능평가 : LOOCV, k-fold 실습 (0) | 2021.12.30 |
(R1,P1)제02강(03)_Confusion Matrix와 ROC Curve/AUC (0) | 2021.12.16 |
(R1,P1)제02강(01)모형 평가 지표 -SSE, MSE, MAE, MAPE (0) | 2021.12.16 |