안녕하세요. Growth Scientist입니다.
오늘은 회귀모형을 훈련하고 성능을 테스트 해볼거예요.
다중회귀모형은 아주 기본적인 모델이고, 머신러닝에서도 쓰이는 학습 모델이에요.
학습을 반복하며 모델의 성능을 높여 최적의 모델로 만드는 것이 목적이죠.하지만 오늘 포스팅은 한 개의 데이터 셋으로 학습과 테스트를 할 수 있는 방법을 알려드릴게요.
먼저 충분한 양의 표본이 있다면 학습자료와 테스트 자료로 분리시켜요.학습 자료를 새로운 다중 회귀모형으로 구성하고, 이 모형으로 테스트 자료를 이용하여 예측값(Y_hat)을 구해요.마지막으로 원시 반응변수(Y)와 예측값을 비교하며 유사성을 체크하면 끝입니다.
그럼 바로 실습으로 가볼까요?
DATA : 국민건강영양조사(2019) - hn_dat
Y <- hn_dat$HE_BMI #BMI
X1 <- hn_dat$age #연령
X2 <- hn_dat$BO1;#주관적 체형인식
X9 <- hn_dat$HE_insulin #인슐린 수치
X10 <- hn_dat$sex;X10 #성별
[ 자료 분리 ]
먼저 코드부터 살펴볼게요.
set.seed 는 난수 생성할 때 중요한 역할을 하는데요.
내가 만들어낸 난수를 메모리 해주는 역할이라고 생각하면 쉬워요.
set.seed(123)
sample(5,3)
위 예제를 보면 123이라는 key값에 sample(5,3)의 첫번째 결과부터 저장이 돼요.
나중에 입력했던 난수를 부르고 싶으면 123을 seed로 설정하고 똑같은 명령을 주면
예전에 봤던 난수들이 다시 같은 순서로 나오게 돼요.
이 후 표본의 수만큼 난수를 만들어주고 중복이 없게 replace=F를 줍니다.
가지고 있던 데이터 프레임에 난수들을 열로 붙여주고,
인덱싱을 통해서 train_dat와 test_dat로 분리시켜줘요.
저는 여기서 학습 : 테스트의 자료비율을 7:3으로 설정했어요.
그리고 train 모델을 만들면 준비는 끝!
[ 테스트 값 생성 ]
predict함수에 훈련시킨 모델에 테스트 데이터의 설명변수(X)를 넣어 예측값을 산출해요.
[ 결과 비교 ]
결과를 비교하는 데엔 여러가지 방법이 있겠지만,
가장 대표적으로 오차제곱합(SSE)를 쓸게요.
predict error는 예측값과 테스트자료의 Y값의 차이의 제곱합이에요.
변수변환 때문에 1/test_dat$Y가 된것을 잊지마세요!
SSE_train은 학습된 모델의 잔차(Y-Y_hat)의 제곱합이죠.
만약 두 제곱합이 유사한 값을 가진다면,
오차가 근사하다는 것이고 예측이 잘 되었다고 볼 수 있겠죠?
두 오차를 비교해보니 0.0005정도 차이가 나네요.
즉 1% 정도의 차이로 적합이 잘 된 모형이라고 할 수 있겠네요.
오늘은 다중회귀모형을 학습시키고 테스트 해봤어요.
앞선 포스팅에서 쭉 회귀모형의 절차를 밟으며 만들어봤는데,
생략한 부분도 많고, 빠진 부분도 있겠지만
직접 데이터를 통해 실습할 때 중요한 부분은 모두 담았어요.
부족하거나 강조하고 싶은 부분은 다른 포스팅에서 또 볼게요!
그럼 BYE~

'Data Analysis > [Project] Regression With R' 카테고리의 다른 글
[R 프로그래밍 회귀분석] 표준화 회귀계수 (0) | 2022.07.07 |
---|---|
[R 프로그래밍 회귀분석] 다중공선성과 더빈왓슨 검정 (0) | 2022.07.05 |
[R 프로그래밍 회귀분석] BOXCOX 변수변환 (0) | 2022.07.02 |
[R 프로그래밍 회귀분석] 잔차도 분석 (0) | 2022.07.01 |
[R 프로그래밍 회귀분석] 부분 F 검정과 ANOVA를 통한 모델 비교 (0) | 2022.06.29 |