인프런 커뮤니티 질문&답변

윤석우님의 프로필 이미지
윤석우

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

회귀 실습 2: 캐글경연 주택가격 예측 - Advanced Regression Techniques - 03

Boston House 실습 표준화, 이상치제거 관련 질문입니다.

해결된 질문

작성

·

274

0

안녕하세요! ML공부하면서 강의 정말 많이 도움이 되고 있습니다^^
 
ㅇ skew를 사용한 왜곡도 제거부분에서(강의 8:00~10:00 부분)
1. skew 대신 standardscaler를 사용해 표준화 시키는 것은 단점이 있나요? (정규분포를 만들어주기 때문에 skew보다 더 정리를 잘해줄것 같은 생각이 듭니다.)
2. 또한 log를 씌워 정규분포와 비슷하게 만들어준다고 하셨는데, 이부분 또한 standardscaler를 적용하면 안되는 걸까요?
 
ㅇ GrLivArea 이상치를 제거하는 부분에서(강의 14:00~18:00 부분)
1. 다른 이상치 제거방법(사분위수)을 써도 되는지?
2. 이상치 제거할 때 테스트 데이터에 이상치가 있는지 확인하고 제거하라고 하셨는데 학습검증단계에서 테스트 데이터를 참고해도 되는건가요?
 
ㅇ 전처리 과정 순서를 기본전처리(null, 범주형 변환 등) → standardscaler → 이상치제거(IQR 등) → minmaxscaler 이렇게 기본틀로 잡고 머신러닝을 진행하고 있었는데 돌리는 모델이나 데이터별로 달라져야할까요?
 
ㅇ 마지막으로, house price 타켓 컬럼을 log변환해서 학습을 진행을 하셨는데, 타겟값만 log를 씌워주고 다른 값들은 log를 안씌운 상태에서 학습을 하게되면 오류(수치상의 차이 기반)가 발생할 가능성은 없을까요?
 
질문이 난잡하긴 한데 간략하게나만 답변 주시면 감사하겠습니다! 감사합니다.

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까, 

 

강의가 도움이 되어서 저도 기쁩니다. ^^

 

1. 

skew가 심한 feature들은 log 변환이 standard scaler 보다 나은 선택입니다. . standard scaler가 (x - 평균값)/표준편차 이므로 right skew가 심하게 된 값들을 평균에 가깝게 보정하기 어려울 수 있습니다.  standard scaler는 서로 다른 feature들이 서로 다른 평균과 표준 편차를 가지고 있을 때 이를 feature들의 평균과 표준 편차를 동일하게 가져가는 경우에 잘 활용됩니다. 

 

2. 

GrLivArea 이상치를 제거하는 부분에서(강의 14:00~18:00 부분)

 1. 다른 이상치 제거방법(사분위수)을 써도 되는지?

=> 네, 가능합니다. 다만 크게 성능이 좋아지지는 않아서 적용하지 않았습니다. 

 

 2. 이상치 제거할 때 테스트 데이터에 이상치가 있는지 확인하고 제거하라고 하셨는데 학습검증단계에서 테스트 데이터를 참고해도 되는건가요?

 

=> 테스트 데이터에 이상치가 있는지 확인하고 제거하라는 의미는 너무 이상치 제거를 남용(?)하지 말라는 의미입니다. 테스트 데이터도 이상치가 있다면 학습 데이터의 이상치도 삭제할지 좀 더 생각해 보라는 의미 입니다.  

 

그리고 테스트 데이터 역시 우리가 정해주는 경우가 대부분이기 때문에(캐글이 아니기 때문에 ^^), 테스트 데이터 선정 시 이런 이상치 부분도 필요한 것인지 미리 검토를 하는게 좋습니다. 

 

3. 

=> 네, 돌리는 모델 별로 달라질 수 있습니다. 트리 기반 앙상블 모델은 굳이 scaler를 적용하지 않으셔도 됩니다. 

기본 전처리 -> log 변환등의 feature engineering -> 이상치 제거 등으로 수행하시면 좋을 것 같습니다. 

 

4. 

마지막으로, house price 타켓 컬럼을 log변환해서 학습을 진행을 하셨는데, 타겟값만 log를 씌워주고 다른 값들은 log를 안씌운 상태에서 학습을 하게되면 오류(수치상의 차이 기반)가 발생할 가능성은 없을까요?

 

=> 타겟값만 log를 씌워 주셔야 합니다. 그리고 나중에 예측시 log 변환된 target 값을 예측하므로 예측값을 다시 지수변환으로 역 변환만 해주면 됩니다. 

 

감사합니다.

윤석우님의 프로필 이미지
윤석우
질문자

바쁘실텐데 빠르고 상세한 답변 정말 감사합니다~!

윤석우님의 프로필 이미지
윤석우

작성한 질문수

질문하기