전복 나이 예측 AI 해커톤

정형 | NMAE

  • moneyIcon 상금 : 참가시 최소 50 XP, 특별상 데이콘 후드
  • 655명 마감

 

[public 1위, private 7위 0.14186] Tree Model + CNN Ensemble

2022.04.01 20:19 1,703 조회 language

다른 분들의 좋은 코드 공유와 토론덕에 좋은 점수를 얻을 수 있었습니다. 데이콘 측과 다른 참가자분들께 모두 감사드립니다.

코드
로그인이 필요합니다
0 / 1000
Junghoon
2022.04.06 06:03

안녕하세요 Pobredward 님 코드 공유 정말 감사합니다! 요즘 스태킹에 대해서 공부하고 있었는데, 많이 배웠습니다 ㅎㅎ 한 가지 여쭤봐도 될까요?

파생변수를 6000~8000개 정도 만드셨는데, 어차피 나중에 서로 다른 모델들을 스태킹하게 되니 6000개의 변수가 전부 도움이 되는건 아니더라도 일단 최대한 많은(다양한) 변수를 만드신 건가요? 

Pobredward
2022.04.06 16:36

답변 정말 감사드립니다 Junghoon님~^^
파생 변수를 최대한 많이 만든 이유는 여러 가지 단일모델 (LightGBM, XGBoost, Catboost)들의 스코어들(성능)을 올리기 위함입니다!
몇천개의 파생 변수들을 만든 이유는, HP튜닝만 잘 해준다면 각각 모델마다의 의미있는 변수들을 잘 활용할 것이라고 생각했기 때문입니다.
그렇게 해서 단일 모델들의 성능이 좋아지면, 그 모델의 예측값들로 스태킹한 최종 스코어도 올라가기 마련이죠 ^^

Junghoon
2022.04.06 23:05

감사합니다 ^^
그럼 혹시 변수를 만드실때는 cv score를 확인하면서 만드신 건가요? 그게 아니면 6000개가 아니라 많게는 10,000개도 만드는 것도 가능한건가요?
예를들면, 사용하신 세 종류의 Scaler 외에도 RobustScaler를 추가해본다거나..

Pobredward
2022.04.07 08:39

네 맞습니다. 그리고 저의 경우엔 변수를 추가하고 적당한 HP튜닝까지 하며 cv 스코어를 체크합니다.
Case 1. 변수를 추가하지 않고 default 파라미터 사용
Case 2. A변수를 추가하고 default 파라미터 사용
여기서 Case 1보다 Case 2의 성능이 떨어진다면 A 변수를 제외하겠죠. 하지만!
Case 3. 변수를 추가하지 않고 HP 튜닝
Case 4. A변수를 추가하고 HP 튜닝
여기서 Case 3보다 Case 4의 성능이 좋아진다면? 그러면 A 변수를 쓰는 방향으로 결론이 나겠죠.

여기까지가 제가 파생 변수를 만드는 조건이긴 한데,,, 사실 feature라는게 독립적인 애가 아닌지라 저처럼 이런 방식으로만 늘려간다면 최고의 점수를 받긴 힘드실 겁니다. 초기점수 10점에서 시작했다고 가정해봅시다.  A변수와 B변수를 순서대로 추가해서 30점이 상승했는데, 알고 보니 B변수만 추가하면 60점이 상승하는 상황이 있을 수가 있습니다. 저희는 A먼저 넣고 나중에 B를 추가로 넣었으니 그 사실을 알 리가 없죠. 대회를 몇 번 거치다 보면 대충 감이 잡히실 겁니다.

RobustScalar를 넣어서 해보긴 했었는데 아마 성능이 떨어졌던 것으로 기억이 납니다. 하지만 이 사실이 이번 대회에서 RobustScalar를 쓰지 말아야 한다는 이유는 절대 아닙니다. 제가 MinMaxScalar를 없애고 RobustScalar를 넣었다면 성능이 올랐을 수도 있으니 말입니다. 변수들끼리 보이지 않게 서로 얽혀 있다고 생각 하시는게 편하실 겁니다!

Feature Engineering은 가장 중요한 과정 중 하나지만, 제 기준으로는 가장 어려운 작업입니다 ^ㅠ^ 그리고 제 답변이 100% 맞지 않을 수도 있음을 강조드리고 싶습니다.

Junghoon
2022.04.07 01:06

자세한 답변 너무 감사드립니다! ㅎㅎ 정말 많이 배우고 큰 도움이 되었습니다! ^^ 헷갈렸던 부분이 명쾌히 이해되는 느낌이네요 ㅎㅎ 감사합니다!