작성
·
462
0
항상 정성스럽게 답변해주셔서 감사합니다.
혼자 주피터노트북 보면서 복습하고 있는데, 예측성능을 올리기 위해 범주형 데이터에 원핫인코딩을 적용하는 것 같습니다.
다만 'day' 피쳐도 범주형 데이터인데 따로 인코딩을 안하는 이유가 있나요?
# 'year','month','hour','season','weather' feature들을 One Hot Encoding
X_features_ohe = pd.get_dummies(X_features, columns=['year','month','hour', 'holiday', 'workingday','season','weather'])
그리고 보통 회귀분석 할 땐, 이렇게 전처리가 많이 필요한가봐요? 타겟값 정규분포로 만들고, 범주형 데이터는 원핫 인코딩 하고
그런데 회귀트리는 너무 짧게 설명해주셨지만, 그 강의 봤을 때는 전처리를 거의 하지 않으시고, 회귀트리는 전처리에 큰 영향을 받지 않는다고 하셨는데, 만약에 전처리가 필요하다면 선형모델과 똑같이 하면 되나요?
답변 2
1
안녕하십니까,
1. 원핫 인코딩을 적용한다고 반드시 선형 모델의 성능이 올라가진 않지만 적용하여 성능향상을 비교해 볼 수 있습니다. 비슷한 의미로 day의 경우는 원핫인코딩을 했을 때 오히려 성능이 떨어져서 제외했습니다.
2. 일반적으로 회귀 트리의 전처리 방향성은 선형 회귀와는 좀 차이가 있습니다. 원핫 인코딩을 회귀 트리에는 적용하지 않는게 더 좋다는 의견도 있습니다(불필요한 분할을 발생시킬수 있습니다). MinMaxScaling 작업도 굳이 할 필요는 없습니다. 다만 다양한 유형의 feature engineering을 일반적으로 적용합니다. 가령 추가적인 feature를 도출한다거나, 여러개의 feature를 sum, min, max 등의 feature engineering 작업을 수행하는게 일반적입니다(물론 이것은 선형 모델도 마찬가지 입니다)
3. 로그 변환을 포함한 feature engineering 작업에 정답은 없습니다. 다양하게 돌려보고 잘 나오면 적용하면 됩니다. 특별히 로그변환을 하지 않은 이유는 없습니다. 다만 값의 편차가 큰 feature들이 없는거 같아서 안했는데, 로그 변환을 별로 생각하지 않았는데, 로그 변환도 적용해 볼 option일 수 있겠군요.
감사합니다.
0
그리고 x_data에는 원핫인코딩 외에 로그변환같은걸 취하지 않으셨는데, 만약 데이터 돌려보고 성능이 별로면 로그변환같은걸 시도해보고 그런 식으로 진행되는건가요??
로그변환하면 예측성능이 좋아질 것 같은데 하지 않으시는 이유가 궁금합니다