[머신러닝/딥러닝] 회귀예측 6 - 1차 피쳐엔지니어링 실전코드
저번에 포스팅한 예측프로젝트의 스태킹앙상블을 이어서, 오늘은 피쳐엔지니어링과 그 결과를 가져왔다.
지난 포스팅 : 스태킹 앙상블 실전코드
https://jayindustry.tistory.com/27
[머신러닝/딥러닝] 스태킹 앙상블(Stacking Ensemble) 설명 및 실전코드
오늘은 지난시간에 포스팅한 스태킹 앙상블의 실전에 직접 사용했던 코드를 공유하고 설명해보겠다. < 지난 포스팅 : 스태킹 앙상블 개념 및 예시 > https://jayindustry.tistory.com/24 [ML/DL] Stacking Ensemble
jayindustry.tistory.com
저번까지 진행한 과정을 정리하면 다음과 같다.
1. 5개의 모델을 학습하고 검증(RMSLE)하는 코드를 리팩토링하여 하나의 클래스로 정리
https://jayindustry.tistory.com/category/Deep%20Dive/Refactoring%20Code : 리팩토링 포스팅 모음
2. 학습된 5개의 모델로 예측한 예측값들을 csv로 저장 후, 모두 concat하여 새로운 데이터프레임으로 만든다.
3. 새로운 데이터프레임을 학습데이터 삼아, LightGBM (meta model = 최종모델)로 최종학습을 한다.
-> KNN을 제외한 나머지 모델들로 각각 학습하여 스태킹 앙상블을 하였다.
현재, KNN (x), 피쳐엔지니어링 (x), 파인튜닝 (x)인 상태이며 모두 디폴트값으로 검증하였다.
오늘은 여기서 피쳐엔지니어링만 추가로 해보았다.
저번에 포스팅했던 MI Score를 사용하여 (https://jayindustry.tistory.com/18)
타겟밸류(cost)에 가장 상관관계가 높은 피쳐들만 남기고 학습 및 예측검증을 해보았다.
이 스코어가 높을수록 타겟밸류와 상관관계가 높은것으로 판단된다.
0.5 미만인 피쳐들은 제거하기로 한다.
학습시킬 데이터셋의 컬럼이 6개로 줄었다.
참고로 salad_bar는 EDA결과, 상관관계가 prepare_food와 1의 관계를 가졌다.
이는 컬럼은 다르나, 같은 값들만 있다는 뜻이므로 삭제했다.
결과는 ?
또잉..?
아무런 변화도 주지 않는 1차의 점수가 오히려 높게나왔다.
( RMSLE는 낮을수록 모델의 예측률이 좋다는 뜻이다. )
고민
피쳐를 너무 줄인 것 같다. 거의 절반이상을 줄였으니..
다음 시도에서는 피쳐를 좀 더 늘리고,
MI Score를 참고하여 거르되, 뉴메리컬과 카테고리컬로 컬럼들을 나누어 각각 넣어봐야겠다.
그리고 하이퍼파라미터 튜닝을 각각 하여 점수를 높여보도록하고,
KNN을 추가해서 앙상블을 해보려고한다.
확실히 모델학습은 과학실험같다.
내 전공이 화학교육과여서 그런가 이런 실험들이 익숙하게 느껴진다.
고정할 변인과 변화를 줄 변인을 정확히 나누어 실험해보도록 해야겠다.