LG Aimers 4: Hackathon, 인화원, Career, etc.
본선이 4/6~4/7 1박 2일동안 진행되었다.
수상하지 못했지만 데이터 대회를 처음 참여한 것 치고 잘 한것 같아서 좋았고 또 아쉬웠다.
1. 온라인 교육
1월 한달 동안 LG AI 연구원에서 국내 저명한 교수님들의 강의를 제공해주었다.
원래 온라인 교육은 한달이지만, 온라인 해커톤(이하 예선)때도 참고할 수 있도록 2월까지 강의를 듣게 해주었다.
강의주제는 다음과 같다.
- AI 윤리
- 수학
- SVD를 설명하기 위한 선형대수
- Convex Optimization, 경사하강법
- PCA
- 기계학습
- ML 기본 이론
- 최근 LLM 연구 동향 및 성과 (GPT-4, Bard, PaLM, LLaMA)
- 지도학습
- 지도학습 개념
- 선형회귀
- 경사하강법, SGD
- 선형분류기, softmax
- SVM, 기본 신경망
- Ensemble
- 인과추론
- do() calculus
- Causal Effect
- (어려워서 잘 이해하지 못했다)
- 딥러닝
- 기본 딥러닝 알고리즘 (역전파, Batch Normalization, 회귀, 분류)
- CNN (Convolution, Pooling, VGG, ResNet)
- RNN (Sequence Modeling, Image Captioning, Language Model, LSTM)
- Transformer (Seq2Seq, Attention, Transformer)
- Large-Scale Pre-trained Models (BERT, GPT-2/3)
- B2B 마케팅
- B2B 스코어링
마지막 두 강의가 B2B 인것을 보고 해커톤 대회가 B2B 주제일 것으로 예상했다.
2. 온라인 해커톤 (예선)
과거 LG Aimers가 사용하던 플랫폼인 Dacon이 아니라 elice에서 진행되었다.
이유는 모르겠지만 데이터를 공개하기 원하지 않았던 것 같다.
보다 더 폐쇄적이고 elice에서 데이터 대회를 해보지 않아서 조금 낯설었다.
torch에서 GPU를 찾지 못해서 CPU 기반으로 모델을 학습해야 했다.
데이터 형식은 대회 치고 단순했다. train.csv, submission.csv
테이블도 한개에 다 몰아주어서 table join과 같은 고민은 안해도 되어서 좋았다.
task도 binary classification이다. (대회치고 쉬운걸?이라 생각했다면 오산이다.)
실제 영업을 통해 고객 전환이 되면 True, 전환되지 않은 경우는 False로 기록되어있다.
그런데 True:False 비율이 1:10 정도로 매우 심각하게 imbalance했다.
row(data point)개수는 약 59,000개, column 개수는 약 30개였다.
그런데, 대부분의 컬럼이 수치형 데이터가 아니라 범주형 데이터였고, 심지어 unique 개수가 너무 많았다.
텍스트 데이터도 좀... 영어만 있는게 아니라 중국어, 스페인어(확실하지 않음) 등 여러 언어가 등장했다.
카테고리 데이터가 너무 많고 cardinality도 심각해서 CatBoost를 베이스라인으로 잡았다.
(아마 대부분 팀들이 CatBoost를 사용했을 것으로 생각함)
몇가지 파생변수를 만들고, CatBoost로 F1-score를 대강 높였다.
Optuna로 hyperparameter를 찾으려 했으나 오히려 성능이 많이 안좋아져서 폐기
7개였다 9개였나 seed ensemble만 적용해서 제출했다.
마지막 주에 성능이 전혀 나아지지 않아서 절망했다.
그런데 public 20 -> private 5로 오히려 많이 상승하여 본선에 진출하게 되었다.
대부분 참가자들 역시 private에서 F1-score가 상승했다.
3. 오프라인 해커톤 (본선)
예선과 같은 점은?
elice 플랫폼에서 대회를 진행한다.
row(data point)개수는 그대로이다.
예선에서 준 30개의 컬럼도 그대로 있다. 별도 값이 바뀌거나 그런것도 아니었다.
평가방법도 똑같이 F1-score 이다.
예선과 달라진 점은?
GPU 사용이 가능해졌다.
제출 횟수가 1일 100회이다. (총 200회인데 100번도 못채웠다)
10개의 컬럼이 추가되었다!!
그리고 이 자리에 와서 알게 된 것이데, 예선에서는 난이도 조절을 위해 target 비율을 1:2로 조정했지만
본선에서는 원본데이터 그대로 사용한다고 한다.
(예선에 사용된 public/private가 59,000개 데이터 모두 사용하지 않은 것으로 이해했다.)
본선 전략 및 결과
XGB, LightGBM도 사용하려 했는데, 예상 외로 추가된 컬럼 분석이 시간이 많이 걸려서 예선때 쓴 CatBoost 그래도 사용하게 되었다.
몇가지 파생변수를 만드느라 고생했다. GPT 없었으면 겨우 2개나 만들었을 것 같다.
예산 관련 컬럼이 있어서, 각 숫자를 USD로 바꾸고 몇까지 컬럼을 생성했는데 성능에 영향을 주지 못했다.
피처 생성에 몰두한 나머지, 해당 컬럼의 null 비율이 꽤 높다는 것을 잊고 있었다.
수상자들의 전략과 우리 팀과의 비교
3위는 팀원 없이 혼자 대회 참여하신 분이었는데, 예선에서도 높은 점수여서 기억났다.
매우 특이하게 BERT만을 이용해서 높은 성능을 냈다.
대부분의 컬럼들이 (범주형이지만) text로 되어있다는 점을 이용하여 긴 context를 구성하고, input-context, output-0/1로 하는 모델을 설계했다.
수치형 데이터가 많으면 under/oversampling, SMOTE과 같은 방법이 통하지만, 이렇게 카테고리가 많은 경우에는 데이터 증강이 쉽지 않다. 이 방법은 같은 데이터여도 문장 paraphrasing을 통해 동일한 데이터를 증강할 수 있었다고 발표했다. (그래서 개인적으로 이 방법의 가장 큰 장점이라고 생각했다.)
private에서는 2위였던 걸로 기억하는데, 후술할 2위 팀의 발표자료가 feature engineering 면에서 BERT와 같은 딥러닝보다 설명력을 더 갖추어서 그런지 3위가 되었다. (이 분은 파생변수를 만들지 않았다고 한다. )
1/2위는 CatBoost을 베이스로 하고 XGB, LGBM도 이용한 앙상블 모델이었다.
두 팀의 파생변수는 사뭇 달랐던 것으로 기억한다.
한 팀은 휴리스틱으로 파생변수를 생성했고(i.e. LG 제품을 정말로 사고 싶은 고객은 견적서 내용을 열심히 채우지 않았을까? 이런 잠재 고객이 실제 영업으로 이루어지지 않았을까?) 다른 한팀은 경영학적 도메인 지식을 이용하여 파생변수를 생성했다. (i.e. 과거 전환율, 자세히 기억이 나지 않는다.)
그나마 위안인 점은... 접근방법은 사실상 동일했다는 것이다. (당연한 소리)
CatBoost로 카테고리 데이터를 처리하고, 파생 변수를 생성하는 것.
그리고 어떤 팀은 class imbalance를 해결하기 위해 False 데이터셋을 10개로 나누어서 True:False=1:1인 데이터셋을 10개 만들어서 학습했다고 한다. 이 방법은 예선에서 우리팀도 사용했는데 F1-score에는 영향이 없던 것으로 기억한다...
영업사원 성공률 등의 파생 변수도 동일하게 만들었다.
다른점은, 아마 모델 복잡도인 것 같다.
데이터가 매우 irregular하고 null이 많아서 1위 F1-score가 0.60정도로 매우 낮았다.
점수를 어떻게든 영끌(?!)하고싶어서 Optuna로 hyperparameter tuning도 하고, 이것도 안되어서 경험과 직관으로 CatBoost의 hyperparamter(max_depth, l2_leaf_reg, min_data_in_leaf 등)를 임의로 할당했다. 그리고 feature importance를 지속적으로 관찰하면서도 나의 노고가 아까워서(밤샘으로 제정신이 아닌게 분명하다!) 20%의 feature만 drop했다.
그런데 우승자들의 모델은 그렇지 않았다.
hyperparameter는 기본 default로 설정하고, feature도 20개 이하만 사용했다고 한다. 사실 우리도 feature importance를 고려하면 10~15개만 사용했어야 했는데 왜 그랬는지 모르겠다.
대회에서 느낀 점은 이 글의 맨 마지막에 다시 remind한다.
4. 인화원
필자는 사실 2년 전에 LG전자를 다니다 퇴사하고 대학원에 진학했다.
인화원은 LG 전체 계열사의 신입/경력/진급예정자들의 교육장소인데, 코로나 때문에 인화원 교육을 온라인으로 들었다.
LG 다닐 때도 가보지 못한 인화원을 대회를 통해 처음 가보았다. (LG 동기들보다 먼저 인화원 가게 되었다.)
엘지의 신제품 스탠바이미도 있었다. 대회를 밤새면서 집중하다 보니 정작 저 스탠바이미는 10분 틀었다.
저 침대에 누운 시간도 20분 정도? 수상 못할 거였으면 일찍 잘 걸 그랬다.
진한 분홍색 후드티랑 이렇게 웰컴 키트도 받았다. 후드티는 벚꽃색을 닮았다고 한다. (좀 더 진했다)
피카츄 주머니는 내가 가져온게 아니고 LG Aimers에서 준 칫솔&치약 세트이다. 치약도 포켓몬 치약이고 분홍색 치약이 나와서 어린이용인줄 알았는데 엄청 맵다.
텀블러, 노트북 거치대, 급속충전기도 있다.
5. 기타 프로그램들
그렇다고 대회 기간동안 인화원 방에 갇혀서 데이터 뜯어보고 코딩만 한 것은 아니다.
LG계열사 채용박람회, 취업 컨설팅(자소서 첨삭?), AI 면접 연습, 퍼스널컬러 진단 등 다양한 프로그램들이 있다.
다들 대회에 전념하느라 늦게가도 여유 있을 줄 알았는데, 예약제여서 미리 원하는 시간에 예약하길 권한다.
채용박람회는 졸려 죽겠는데 2일차 아침에 가서 상담받았다. ㅎㅎ;;
지금 당장 취업준비를 할게 아니어서 마음 편하게 질문했다.
아무래도 SW개발자 보다는 데이터 관련 직무에 관심이 있어서 그 부분을 질문했다.
인사 담당자/현업 담당자분의 시선으로 어떤 관점으로 준비해야할지 알았다.
너무 늦게 신청해서 2개 계열사에만 상담을 받아서 아쉬웠다.
세분의 상담사 분들이 오셔서 퍼스널컬러도 상담해주셨다.
유튜브로 남이 퍼스널 컬러 하는것만 봤는데, 실제로 천을 얼굴에 가져다 대니 낯빛이 변하는게 신기했다.
나는 여름-뮤트가 1순위, 겨울-딥이 2순위라 한다. 겨울-딥은 외투가 어울린다고 했다.
직관적으로 내가 쿨톤인건 알았는데, 여름-뮤트 옷으로 새로 사야겠다.ㅎㅎ
대회 회고
- 역시 Tabular 데이터에서는 GBDT 계열이 좋다. (관련 논문도 많다. 나중에 리뷰해봐야지)
- 예상대로 feature engineering이 결정적이다. 그러나 과유불급이다.
- (이번 대회처럼) 데이터가 very irregular하면 최적의 hyperparameter를 찾기보다는 기본 파라미터로 robust를 챙기자
- null 비율이 적은 컬럼부터 파생변수를 만드는 것이 좋다. (암만 많아봐야 null 비율이 높으면 소용이 없더라ㅠㅠ)
- is_null 과 같은 파생 변수도 tree 모델에선 좋다.
- Domain 지식이 있다면 적극 활용하자
- Heuristic 접근도 좋다. 대신에 가설-검정 시간을 줄이는 것이 관건 (feature selection 관점)
- Text가 많은 경우, BERT와 같이 Language model로 접근할 수 있다. Augmentation이 쉬운 것도 덤.
'스터디 > 데이터사이언스' 카테고리의 다른 글
Multiple Linear Regression (2) - Evaluation (0) | 2024.10.14 |
---|---|
Multiple Linear Regression (1) - Modeling (0) | 2024.10.12 |
[CS246] Bandits (3) - UCB1 Algorithm (0) | 2024.03.06 |
[CS246] Bandits (2) - Epsilon-Greedy Algorithm (0) | 2024.02.27 |
[CS246] Bandits (1) - Problem Settings (0) | 2024.02.23 |