본문 바로가기

프로젝트 & 챌린지/프로젝트 연습

회귀 과제) big mart 자료를 이용하여 분석하기(설명2)

728x90
반응형

라벨 인코딩 먼저 해보고 있을 것. 분석 시간은 오래 걸릴 듯함

1. 전처리

  1) 변수 변환(라벨인코딩, 스케일링)

  2) 결측치 처리

  3) 파생변수

  4) 변수 선택

    4-1) 상관계수(수치 - 수치)

    4-2) T통계량(범주 - 수치)

 

1), 2) 만 잘 해도 될 것 같음. 초기 MSE보다 올라가는 변환 기법을 알아가는 것이 좋겠음. 

MSE를 막대그래프화하여 비교하는 방법으로 나타내는 것이 좋겠음.

 

train/test가 나뉜 경우 라벨 인코딩 결과는 같아야 함.

이에 대한 설명은 전 시간 자료에 설명되어 있음.

https://metime.tistory.com/217

 

회귀 과제) big mart 자료를 이용하여 분석하기(설명1)

모델 선택 / 변수 연구(선택, 가공(변환), 파생변수 등) / 이상치 / 결측치 라벨 인코딩 방법 문자 → 수치 변환 방법 1. 서로 다른 숫자로 변경(수치의 크기는 의미를 갖고 있지 않음) 방법2. 사용자

metime.tistory.com

 

 

또한 train/test 분리된 경우 스케일링 시 주의 할 점이 있다.

같은 기준으로 스케일링을 진행하여야 한다(스케일링을 진행하는 공식이 서로 같아야 한다).

아래는 잘못된 스케일링

 

scale(mart_train$Item_weight)       # train의 Item_Weight의 평균, 표준편차를 사용하여 표준화

scale(mart_test$Item_weight)        # test의 Item_Weight의 평균, 표준편차를 사용하여 표준화

 

스케일링 기준도 train과 test가 동일하여야 한다(평균, 표준편차 등이 같아야 함)

따라서 올바른 스케일링이란 서로 같은 기준으로 진행한 스케일링이다.

 

f_sc <- function(fit, trans) {

  vmean <- mean(fit, na.rm = T)

  vstd <- sd(fit, na.rm = T)

  

  z <- (trans - vmean)/vstd

  return(z)

}

 

v1 <- f_sc(mart_train$Item_weight, mart_train$Item_weight)

v2 <- f_sc(mart_train$Item_weight, mart_test$Item_weight)

 

round(mean(v1, na.rm=T), 4)    # 0

round(sd(v1, na.rm=T), 4)         # 1

 

round(mean(v2, na.rm=T), 4)    # 0이 아님

round(sd(v2, na.rm=T), 4)         # 1이 아님

 

 

그렇게 되면 train의 평균과 표준편차가 0과 1이 되겠으나 test의 평균과 표준편차가 0과 1이 되지 않을 수 있다. min/max 스케일링도 마찬가지로 train data는 0~1 사이의 범위를 가지나 test data는 그렇게 되지 않을 수 있다.

 

따라서 올바른 스케일링을 하였다 하더라도 데이터가 항상 평균과 표준편차가 0, 1, min/max 스케일링 시에는 0~1사이 값을 가지지 않을 수 있다.

 

과제할 때에는 test data는 신경쓰지 않을 것이다. train data set만 raw data set이라고 생각하고 분석하여라(MSE 구하기)

 

이 문제는 결측치 처리가 어렵다.

 

라벨 인코딩 할 때 NA가 있는 채로 라벨인코딩 하게되면 R은 모르겠으나 파이썬의 경우 NA도 하나의 라벨로 취급하게 되므로 무조건 NA를 처리 하고 라벨 인코딩을 진행할 것.

728x90
반응형