오늘은 저번시간에 이어 3차 피쳐엔지니어링과 더불어 메타모델(최종모델)의 하이퍼파라미터 튜닝을 해보겠다.

 

지난 포스팅에서는 2차 피쳐엔지니어링을 진행하였고 

1차와 비교했을때 오차점수가 같았다. 

즉, 성능향상이 되지않았다.

 

< 지난 포스팅 : 2차 피쳐엔지니어링 >

https://jayindustry.tistory.com/36

 

[머신러닝/딥러닝] 회귀예측 7 - 2차 피쳐엔지니어링

오늘은 저번 피쳐엔지니어링을 이어서 진행해보았다. 저번에 했던 피쳐엔지니어링은 타겟밸류와 상관관계가 높게 나온, 즉, MI score가 0.5 이상인 피쳐들만 가지고 나머지는 drop처리 한 뒤, 모델

jayindustry.tistory.com

 

 

그래서 원인을 분석해보았다.

 

원인파악 )

1. 고민끝에 마구 지웠는데 막상 1차와 비교해보니 피쳐가 거의 달라진게 없었다.

2. 너무 많은 피쳐들을 제거한 것 같다.

3. 카테고리컬에 사람수,차량수도 포함시켜야했는데 실수로 뉴메리컬에 포함시켜서 함께 지워버렸다.

 

 

어디부터 시작해야할까 방향성을 고민해보았다.

 

1. MI Score를 기반으로 피쳐중요도가 카테고리컬 컬럼들이 높으니, 카테고리컬 위주로 해보자.

2. 뉴메리컬 컬럼중에서도 중요도가 높은 컬럼들은 포함시키자.

3. 유의미할만한 피쳐들을 기존 피쳐들의 연산을 통해 내가 추가로 생성해보자.

4. 실수로 뉴메리컬에 넣었던 사람수, 차량수를 카테고리컬에 포함시켜서 넣어보자.

5. MI Score (타겟밸류와의 상관관계 점수)가 낮은 카테고리컬 컬럼들을 지워보자.

 

 

코드

 

1. 2가지 컬럼을 추가했는데 지난번에 이어 여러 편의시설들의 총합을 추가했다.

2. 사람수, 차량수를 카테고리컬에 포함시켰다.

 

 

지울 컬럼들이 정해졌다!

 

연관성이 전혀없는 컬럼들과

다중공선성 때문에 오히려 방해가 되는 컬럼을 지웟다.

 

대부분의 뉴메리컬 컬럼들을 지우고,

'store_sqft' 매장면적은 MI Score가 높으니 살려두었다.

low_fat같은 상관관계가 낮게나온 카테고리컬 컬럼들 또한 지웠다.

 

 

 

 

위처럼 추가적인 전처리까지 해주었다.

 

- Null값이 있는지 확인해주고

- 혹여나 음수 값이 있으면 그 행자체를 지워주었다.

 

남은 컬럼들이다.

거의 절반가량 지워졌다.

 

이제 똑같은방법으로 5개의 모델에 학습을 돌리고

그 예측값들을 모아 train data set을 만든 후,

앙상블기법으로 최종 메타모델인 LightGBM에 넣어보았다.

 

 

[ 결과 ]

 

1,2차 피쳐엔지니어링보다 훨씬 좋게나왔다!

 

 

 

지난번 결과들과 비교해보자!

 

 

Try 4가 이번점수이다.

0.012점 가량 오차점수가 낮아진것을 볼 수 있다.

이 경진대회에서는 RMSLE 오차 0.001점 차이가 굉장히 큰 만큼, 굉장히 유의미한 결과이다.

 

 

 

[ 고민 & 생각정리 ]

 

사실 2차 피쳐엔지니어링 이후로 점수변화가 없는것을 보고 큰 충격을 먹었다.

 

그래서 여러 컬럼들간의 사칙연산들을 통해 유의미할만한 컬럼들을 만들어보고

지워보고를 반복하여 얻어낸 최상의 결과가 이번 포스팅의 컬럼들이다.

 

그래서 말이 3차 피쳐엔지니어링이지 실은 30차 피쳐엔지니어링이 맞다  ㅠㅠ..

그래도 결과가 확연히 좋아졌으니,

 

 

이제 머신러닝의 꽃,

하이퍼파라미터 튜닝을 진행해보려고한다!

 

 

총 6개 : 5개의 모델 + 1개의 메타모델(스태킹앙상블)을 사용하였다.

 

5개 모델 각각을 모두 튜닝하고 마지막 모델을 튜닝해야할지

마지막 앙상블모델만 튜닝해볼지 고민이다.

 

모두 시도해보고 결과를 비교해보겠다.

 

 

+ Recent posts