파이널 프로젝트

 

24.03.25(월)

데이터 추가 파악 및 모델 공부

  • action 컬럼들에 대한 관계에 대한 가설을 하나 선택하고 그걸 가정으로 추가적인 데이터 파악 및 모델링을 위한 EDA를 진행했다.
  • 또한 우리의 1차 목표인 이진 분류를 위한 모델을 선정하기 위해 멘토님께서 공부를 해오라고 하셔서 XGBoost와 CatBoost 두가지에 대한 공부를 시작했다
  • 우선 공식 문서 위주로 공부를 시작했다 → 논문은 읽어도 이해가 어렵고 특히 수식 해석이 쉽지 않기 때문에 최대한 공식 문서에서 설명해주는 걸 체득하려고 노력했다.
  • 유튜브에 StatQuest라는 분의 설명 영상이 이해하기 쉽고 친절하게 설명해줘서 해당 영상을 보면서 정리했다.
  • CatBoost와 XGBoost에 대해 정리한 글은 노션에 작성했다.

 

24.03.26(화)

사용 모델 선정 및 인프라 구축

  • 팀원과 각자 공부한 내용을 공유하는 스터디 형식으로 하루는 CatBoost, 다음날은 XGBoost에 대해서 공부하며 어떤 모델이 우리 프로젝트에 적합할지 논의하였다
  • 두 모델의 장단점을 모두 고려한 결과, 범주형 변수가 많은 우리 데이터에는 CatBoost가 더 적합하다는 결정을 내렸다.
  • 그리고 멘토님과 미팅을 진행하여 다음 스텝에 대해 논의했다.
  • 시간이 얼마 남지 않았기 때문에 2명은 이진분류 모델링을 들어가고 2명은 AWS를 이용하여 인프라 구축을 시도하기로 하였다.
  • 나는 인프라 구축 팀에 합류하였다.

 

24.03.27(수)

인프라 구축

  • AWS를 지원받아 사용할 수 있는 기회가 있으니, 꼭 사용해보고 싶다는 생각이 들었다.
  • 따라서 S3에 원본 데이터를 저장하여, Redshift로 copy를 해서 가져오는 방식으로 진행을 결정했다.
  • S3 버킷을 생성하여 원본 데이터를 업로드했고, 그 다음 Redshift 클러스터를 생성하여 포트 번호를 열어주고 버킷에서 불러올 수 있도록 하였다.
  • 처음에는 조금 복잡하여서 헤맸지만 한번 과정을 겪고 나니 의외로 간단했다.
  • 또한 몰랐던 것이 있었는데, Redshift는 데이터를 가져올 때 분산해서 자동적으로 정렬을 하여 가져오기 때문에 세션 데이터가 멋대로 정렬이 되어 넘어왔다.
  • 이에 대한 해결법으로 인덱스를 만들어 주고, 인덱스를 sort key로 선정하였다.

 

24.03.28(목)

다중분류 모델 구축

  • 앞서 인프라 구축을 하는 동안 다른 팀원 두 분은 이진 분류 모델을 구축하고 계셨다.
  • 결과와 과정을 공유받아보니 예약 / 비예약에 대한 이진 분류 모델은 정확도를 평가 지표로 삼아 약 0.77정도의 정확도가 나왔다.
  • 다중 분류 모델에 집중을 하고 싶어 더 이상의 정확도 증가는 나오지 않을 것 같아, 4명 모두 다중 분류 모델로 넘어갔다.
  • 다중 분류 모델 구축 전, 다시 한 번 전처리를 하고 파생변수 생성 등 모델 학습을 위한 준비를 했다.
  • 특히 세션 데이터는 사용자 데이터와 1 : N 관계이기 때문에 조인을 하면 중복값이 많아지는게 문제였다.
  • 이러한 문제를 해결해보고자 나는 device_type, secs_elapsed 같은 변수는 통계값(최빈값, 최빈값)으로 대체하여 각 유저 당 하나의 값만 갖게 하였다
  • 문제는 action 관련 변수였는데, 이는 팀원 분의 아이디어인 action - action_type - action_detail 을 한 줄로 묶은 action_flow를 유저 별로 모두 묶어서 보는 시도를 했다.
  • 이것을 유저의 고유 문서라고 생각하고 쉼표로 연결시킨 다음 TF-IDF를 적용하여 어떤 단어(행위)가 중요한지 확인해보았다.
  • TF-IDF를 하기 전 모델의 성능은 0.8597이었고, 적용 후의 성능은 0.8616으로 성능 증가가 눈에 띄었다.
  • 하지만 문제는 TF-IDF를 적용한 후의 총 컬럼은 449개여서 피처 중요도를 확인하며 feature selection을 해야겠다고 생각했다.

 

24.03.29(금)

다중분류 모델 구축

  • 다양한 피처 조합, 파라미터로 성능을 개선하기 위해 계속 시도했다.
  • 하지만 계속 아쉬웠던 점은 타깃 클래스의 불균형이 심하게 존재해 모델이 1순위 도착지를 NDF 혹은 US로만 예측을 한다는 것이었다.
  • 매일 팀원들과 진행 과정을 공유하고, 2-3일마다 멘토님과 만나 질문도 하고 조언도 얻으면서 진행했다.

 

 

 

 

 

 

+ Recent posts