웹 로그 기반 조회수 예측 해커톤

알고리즘 | 정형 | 회귀 | 웹 로그 | RMSE

  • moneyIcon 상금 : 인증서
  • 639명 마감

 

[Private 10위] VotingRegressor(XGB+LGBM+GB+HistGB+Catboost)

2024.03.05 12:21 460 조회 language

제가 만든 코드가 이렇게 가도 되는 건지 잘 모르겠네요...
피드백 주시면 너무 감사하겠습니다!!

<모델 전체 요약>
* 모델을 생성하고 실험하는 과정에서 후진 소거법을 사용해 보았지만, 제거를 하지 않았을 때가 가장 좋은 성능을 보여주어, train과 test 데이터에서 seesionID와 userID열만 삭제 하였습니다.
* 결측치를 채울때는 그 결측치도 전부 하나의 의미가 있다고 생각하여 또 다른 문자열로 추가하였습니다.
* 여러 파생변수를 생성한 이후에 자체적으로 실험 하였고 그중에 최고의 성능을 보여주었던 하나의 feature를 생성하였습니다.
* label encdoing은 baseline 코드를 참고하여 만들었습니다.
* one hot encoding도 진행 해보았지만 오히려 성능이 안 좋아 져서, 하지 않기로 했습니다.
* XGB, LGBM, GradientBoosting, HistGradientBoosting, Catboost 모델들로 각각 회귀를 진행하고 이를 VotingRegressor로 최종 결과물을 만들었습니다.
* HistGB와 Catboost의 columns 에는 기존 데이터에 범주형 데이터를 사용하였습니다.
* 각각의 하이퍼파라미터는 Optuna를 사용해서 도출했습니다.
* 다른 여러가지 모델과 함께 다양한 학습을 통한 실험을 해본 뒤, 최적의 결과물을 찾아내었습니다.

코드
로그인이 필요합니다
0 / 1000
Lt.Kang
2024.03.05 13:19

코드 잘봤습니다! 많이 배워갑니다. ㅎㅎ

질문이 몇가지 있습니다.
1. * 여러 파생변수를 생성한 이후에 자체적으로 실험 하였고 그중에 최고의 성능을 보여주었던 하나의 feature를 생성하였습니다. 
>> 해당 부분에서 혹시 여러 파생변수를 생성할때 
각 칼럼의 의미를 명확하게 알고 생성한 파생변수가 무엇을 의미하는지 명확하게 이해한 상태에서 진행하셨을까요??
아니면 다양한 조합을 시도해본 결과 score가 좋은 feature를 선택하신걸까요??

2. stacking이 아닌 soft-voting을 채택한 이유가 있으실까요??

병또먹
2024.03.05 18:44

1. 파생변수를 만들때는, 원래 기존의 데이터가 정수 또는 실수인 값들만 고려하였습니다. 구글링 해보면서 연관이 있는 것들을 가지고, 비율과 같은 변수들을 여러개 만들었습니다.
그다음에는 각 변수들끼리 조합해가면서 자체 모델 평가 기준 가장 좋았던 것을 사용했습니다.
경우의 수가 많다 보니 모두 데이콘 score를 모두 확인하지는 못했고, 자체 모델 평가로 판단을 내렸습니다.
2. stacking도 진행해보았는데, 자체평가 했을때 rmse가 너무 높게 나와서 사용하지 않았습니다. 그래서 과적합도 방지하고, 편향도 방지하고자 soft-voting을 진행하였습니다.

Lt.Kang
2024.03.05 18:58

답변 감사합니다!