오늘은 저번 피쳐엔지니어링을 이어서 진행해보았다.

 

저번에 했던 피쳐엔지니어링은 타겟밸류와 상관관계가 높게 나온,

즉, MI score가 0.5 이상인 피쳐들만 가지고

나머지는 drop처리 한 뒤, 모델학습을 진행하였다.

 

결과는 오히려 좋지 않게 나왔는데,

너무 많은 피쳐들을 제거함이 원인이지 않나 싶다.

 

< 저번 포스팅 >

https://jayindustry.tistory.com/34

 

[머신러닝/딥러닝] 피쳐엔지니어링 실전코드

저번에 포스팅한 예측프로젝트의 스태킹앙상블을 이어서, 오늘은 피쳐엔지니어링과 그 결과를 가져왔다. 지난 포스팅 : 스태킹 앙상블 실전코드 https://jayindustry.tistory.com/27 [머신러닝/딥러닝] 스

jayindustry.tistory.com

 

 

 

 

오늘은 색다르게 접근해보았다.

 

 

데이터셋의 모든 피쳐들(컬럼들)을 뉴메리컬(연속된 수치)와 카테고리컬(분류,0or1)로 나누어 진행해보았다.

 

 

 

그리고 추가로 with_children이라는 컬럼도 추가하였는데,

데이터셋에 고객의 총자녀수와 집에 머물고있는 자녀수가 있길래

그 둘의 차이를 이용하여 함께 '마트에 온 자녀수'라는 의미의 컬럼값들을 만들었다.

 

[ 피쳐엔지니어링 2차 시도 ]

- with_children 추가

- 뉴메리컬 컬럼들 제거 ( MI score가 카테고리컬 컬럼들이 높았기 때문 )

- 높은 상관관계를 가지는 뉴메리컬 컬럼들은 살림

- 제거 : 타겟밸류(cost)와 전혀 관련없는 id, prepared_food와 완전히 같은 값인 salad_bar 제거

 

살아남은 컬럼들...

 

똑같이 5개의 모델로 학습시키고

스태킹앙상블 기법으로 최종 모델인 LightGBM으로 학습시켰다.

 

< 전체 코드는 github 참고 >

https://github.com/seokjunHwang/MachinLearning/blob/master/ML_Playground/playground-s3e11-ensemble%20.ipynb

 

 

[ 결과 ]

 

 

2차가 이전에 했던 점수이고

3차가 이번에 검증한 점수이다.

 

Train점수가 아주약간 좋아졌으나 이건 똑같다고 봐야한다.

성능향상이 되지않았다.

 

여전히 너무 많은 피쳐들을 제거한 것이 아닌가 하는 생각이 들었다.

 

 

 

[ 고민해보기 ]

다시 보니 뉴메리컬에 카테고리컬 컬럼들도 포함시킨것같다.

아이들 수, 차량 수 같은 컬럼들은 카테고리컬 컬럼으로 포함시켜야했다.

그리고 여전히 학습에 사용된 컬럼 수가 너무 적다.

좀 더 추가하고 제거할 컬럼들을 조정해봐야겠다.

그리고 확실히 하이퍼파라미터 튜닝이 없으니 오차점수가 별 차이가 없는 것 같다.

파인튜닝의 중요성을 실감했다.

 

다음 포스팅에서 다룰 업데이트내용은 아래와 같다.

추가적인 피쳐엔지니어링 : 시설 합계 추가, 카테고리컬에 정수형(사람 수 ,차량 수)추가

간단한 파인튜닝

+ Recent posts