Week9 주간 회고

Jihoon·2022년 11월 20일
2

주간회고

목록 보기
5/9
post-thumbnail

✨Week9 요약

LG 아이들나라, DKT 두 대회를 동시에 진행했다. 강의를 수강하면서 수요일까지는 LG 대회에 집중 좀 하다가, 수요일 끝나가는 시점부터 DKT에 집중했다. 두 대회를 진행하려다 보니 많이 벅찼다. 일주일에 2~3번은 LG 팀원들이랑도 얘기를 많이 하는데, 다들 힘들어보였다....ㅠ
당분간은 힘든 걸 인정하고 지내야겠다... 힘들 수 밖에 없지만, 많이 성장하고 있다. 화이팅

✨LG AI 아이들나라 대회

월~수요일 까지 시청한 데이터만을 기반으로 Catboost Ranker Model을 적용하기 위해 Tutorial 참고하면서, 데이터 전처리 및 모델링을 진행했다. 그러나, 결과는 꽝! 시청한 데이터가 User별 평균 1/400이였기 때문에, 더 그랬던 것 같다. 가설을 세우고 쳐내가는 과정이라 생각하고, 좋게 받아들이기로 했다..

🤷‍♂️ 가설 종류

🙂 시청한 Data만을 가지고 모델링

  1. 정형 데이터 였기에 Boosting 계열 모델을 활용해서 진행해보자는 팀원의 의견이 있었고, 거기에 나도 동의했기에 범주형 데이터가 많은 데이터셋을 참고해서 Catboost Ranker Model을 적용했다.

  2. 적용을 했지만, Baseline Model인 NMF보다 성능이 훨씬 안좋았다. 즉, 여기서 많은 문제점이 있을 수 있겠다라는 생각을 했다.

    첫 번째, Labeling 하는 과정에서의 문제
    두 번째, 시청한 데이터를 보는 것 보다, 시청하지 않은 데이터를 더 많이 봤겠구나 하는 Insight
    세 번째, 전처리가 덜 된 merge만을 진행하고, 주관적으로 컬럼들이 선정했던 문제

  3. 위에서 언급한 여러 가지 문제가 있지만, 여기서도 우선순위가 필요하다는 게 팀원들과의 의견 총합이였다. 따라서, 시청한 데이터 만을 대상으로 모델링하는게 아니라, Item Cold Start를 해결할 수 있는, 즉, 시청하지 않은 컨텐츠도 추천할 수 있도록 하는 Model을 찾기로 결정했다.

    내가 생각했던건, Molecular 결합 상수 예측 Kaggle 대회에서 우승한 코드인 Transformer의 인코더만 사용하는 Bert를 사용하는 것이였다.
    분자의 종류 별로 여러 가지의 데이터가 있었는데, 이는 한 시청자가 여러 컨텐츠를 봤다는 것으로 볼 수 있고, Baseline의 Negative Sampling을 Embedding해서 사용한다면 문제점이 많이 해결될 수 있다는 생각을 했다.
    그리고, Labeling 역시 봤는지 안봤는지에 대한 Binary 문제로 바꿀 수 있겠다 싶어서 지금까지 내가 생각한 최고의 Model이 아닌가하는 생각을 했다.
    (Negative Sampling 때문에 데이터가 없어서 Sequence적으로는 적용할 수 없겠다라는게, 이건 어쩔 수 없는 한계점이라 생각한다.)

DKT 대회에서도 Transformer를 중요하게 다루고 있기 때문에, 팀원들에게 Attention is All you need 논문 리뷰를 진행하자고 제안했는데, 팀원들 역시 필요성을 느끼고 있어서 흔쾌히 수락해줘서 고마웠다! (다음 주 진행예정)

아직 적용은 안했지만, 곧 코드화 시켜서 블로그에 공유할 예정이다.

  1. DataFrame이 많았기에 merge하는 과정에서 시청한 User가 8300명 중 800명이 사라지는 문제가 있었다. -> 시청은 했지만, 종료 데이터가 없다는 것
    (해결방안?) 모두 Merge하는게 아니라, 필요한 Df만 이용해서 모델링을 적용하는 것이라 생각한다. 시청한 데이터에는 모든 User는 있기 때문에(Cold start방지)

🙂 시청하지 않은 Data 함께 모델링

  • NMF를 적용한 Negative Sampling 활용

  • Position Encoding을 제외한 Bert 모델 활용
    -> 그럼에도, 모든 컨텐츠는 추천할 수 있을지? Cold start를 어떻게 해결할지 더 고민이 필요하다. Embedding을 학습시켜서 적용시킬지, 또는 컨켓하면서 앙상블을 진행할지 고민 중에 있다. 다음 주 내로 끝낼 예정이다.

🙂 컨텐츠 기반 추천 및 Rule-Based 기반 모델링

  • Item Cold Start 해결 위해 반드시 필요함

🙂 최종적으로는 Ensemble 진행

  • 이 Part는 Transformer를 완성시키고, 생각해볼 예정.

✨DKT 대회

강의를 수강하고, Sequential한 모델을 먼저 손 댈지, Tabular Model을 다룰지 고민했었다. 조금 더 익숙한 Tabular Model을 먼저 손대고 나중에 더 많은 시간을 Sequential Model을 손대기로 결정했다. Lgbm Boosting Model을 사용했는데, 이는 데이터 형태가 대부분 Numerical했기 때문에 이 Model이 최적이라 생각했다.

🤷‍♀️대회 준비

1. Data 파악

종속 변수와의 관계를 잘 파악해서 실제로 어떤 변수가 종속 변수에게 영향을 많이 미치는 지 시각화를 통해 파악한 후, 이를 범주화를 시키거나 또는 제거 등등 다양한 처리를 통해 모델이 잘 예측할 수 있도록 전처리를 해주는 것이 필요하다.
그러나, 아무렇게나 하는 것이 아니라, Two Track인 정형 데이터 또는 시퀀셜 데이터 두 모델에 적용하기 위해 다르게 Data를 처리해줘야 한다.

  • Tabular -> 데이터 EDA, 전처리르 진행했는데, 생각보다 별로 얻은 건 없었다.(성능에 있어서) 풀이 시간이 정답률에 영향을 미치는 건 당연한데, 모델이 그걸 잘 받아들이도록 전처리를 해주지 못했다. 이 부분을 좀 더 보완해서 전처리를 해줘야겠다.

  • Sequential -> 시간적인 부분을 고려해서 데이터를 처리해줘야 모델이 잘 알아 먹는다. 아직, 진행하지 못했다.

2. Task 파악

과연 새로운 특정 User가 어떤 특성들로 인해 마지막 문제를 맞출지, 틀릴지 예측하는 Task이다. 이 부분을 항상 염두하면서 데이터 및 모델링을 진행해야 하는 걸 인지해야 한다.

3. Model 선정 (Tabular VS Sequential)

  • Tabular -> Boosting (LGBM, CATB)

    	11/14 (수 ~ 금):  LGBM
  • Sequential -> Transformer, LSTM

  • Light GCN

✨ 하고 싶은 말

막상 쓰고 나니, 나에 대한 회고가 아니라 그저 대회에서 뭘 했고, 어떤 걸 느꼈고 앞으로 어떻게 할 지에 대해서만 적은 것 같다.. 음.. 이것만 쓰는데도 힘든데 더 쓸까 말까.. 고민중
회고는 왜 하는 걸까? 글쓰기의 중요성, 나를 되돌아 보는 시간, 되돌아봄으로써 앞으로 나가기 위해 개선하려고, 나를 보살피려고, 여러 가지 이유가 있구만.. 오케이

1. 잘했던 점

  1. 뭐,, 나름 열심히 살았다 이번 주도. LG 대회에서 좋은 성능을 내보려고 처음 보는 모델도 End-to-End로 진행해봤고, Documentation도 많이 읽은 것 같고.. 열심히 했다.

  2. 강의를 정말 열심히 수강했다. 하나를 씹어 먹겠다는 의지. 근데, 이게 맞는 것 같다. 항상 이렇게 내 것으로 만드려고 노력하자. 결국, 듣는게 목적이 아니라, 내 것으로 만드는 것이 본질이자 목적이니까

  3. EDA, 전처리 거의 이번 대회에 처음 진행한 것 같은데, 하마터면 베이스라인만 돌려보다 이번 주를 끝냈을 수도 있지만, 시도를 했으니 오케이!

2. 아쉬운 점

  1. LG 대회 성능이 안나왔던 것.. 열심히해서 구현했지만, 아쉬웠다..

  2. 강의를 많이 수강하지 못한 것 -> 더 열정적으로 들어보자!

  3. DKT 대회에 신경을 많이 못 썼다. LG 집중 하느라,, 코어타임에는 DKT에 집중을 더 많이 하자.

profile
장난감이 데이터인 사람

0개의 댓글