프로젝트 3 랩업리포트를 직접 작성했다.
https://github.com/boostcampaitech7/level2-bookratingprediction-recsys-06
├── src # AI 모델 학습을 위한 부분
│ ├── data # data 처리를 위한 .py 모듈
│ ├── ensembles # 앙상블 처리를 위한 .py 모듈
│ ├── loss # loss 계산을 위한 .py 모듈
│ ├── model # DL & ML 모델
│ └── train # 학습 관련 .py모듈
├── data #.gitignore # 데이터 저장소
├── app.py # 모델 학습을 위한 python 파일
├── config-sample.yaml # 하이퍼 파라미터 및 모델 & 서버 선택을 위한 설정 값 예시 -> config.yaml로 복사해서 사용
├── .env.sample # .env 설정의 예시값 -> .env로 복사해서 사용
├── 1.server-keygen.sh # github 연동을 위한 keygen
├── 2.init-git-clone.sh # github 연동 이후 server에 git clone 적용
├── 3.start-app.sh # app.py 실행을 위한 .sh
├── 4.kill-app.sh # app.py 실행 이후 중단을 위한 .sh
├── 5.scp-data-send-server.sh # data 파일의 변경이 있을 경우, 사용을 위한
├── 6.scp-get-output-data.sh # output directory 그대로 이전을 위한 .sh
├── .gitignore
├── README.md
└── requirements.txt
upstage의 Book Rating Prediction 대회 참가를 위한 프로젝트.
소비자들의 책 구매 결정에 대한 도움을 주기 위한 개인화된 상품 추천 대회
주어진 users, books 메타데이터와 실제 평점 데이터로 평점 76,699건을 예측
모델 | 설명 | 특징 |
---|---|---|
FM | Factorization Machine의 기본 모델로, 특징 간 2차 상호작용을 학습 | • 선형적 구조 • 희소 데이터에 강점 |
FFM | Field-aware FM. 각 피처를 필드별로 다른 임베딩을 학습 | • 필드별 잠재 벡터 사용 • FM보다 세밀한 상호작용 학습 |
DeepFM | FM과 딥러닝을 결합한 하이브리드 모델 | • FM + DNN 구조 • 저차원/고차원 피처 동시 학습 |
WDN | Wide(선형) & Deep(비선형) 구조를 결합한 모델 | • 메모리 + 일반화 능력 • 유연한 구조 |
NCF | MF를 일반화한 GMF + MLP 모델 | • 풍부한 피처 표현 • 비선형 상호작용 학습 |
ImageFM | 이미지(책 표지)를 FM에 통합한 확장 모델 | • 이미지 피처 활용 • CNN 특징 추출 |
Image DeepFM | 이미지(책 표지)를 DeepFM에 통합한 모델 | • 이미지 피처 활용 • CNN + DeepFM 구조 |
TextFM | 책 내용 요약을 사전 학습된 BERT로 임베딩해 FM에 통합한 확장 모델 | • 임베딩 된 텍스트 피처 활용 • BERT 임베딩 활용 |
Text DeepFM | 책 내용 요약을 사전 학습된 BERT로 임베딩해 DeepFM에 통합한 모델 | • 임베딩 된 텍스트 피처 활용 • BERT + DeepFM 구조 |
ResNet DeepFM | ResNet 구조를 DeepFM에 통합한 모델 | • 잔차 연결 활용 • 깊은 네트워크 학습 |
run_model/load_config/run_app
함수로 각각 분리.sh
파일 생성학습률 수정
기본 베이스라인 학습률에선 epoch이 진행됨에 따라 train RMSE는 줄어드는 반면 valid RMSE는 발산했다. 그래서 학습률을 0.0001로 낮추고 lr_scheduler를 사용해서 갈수록 더 낮아지게 했다.
앙상블
각 모델들로 예측한 output을 균일한 비중으로 앙상블하고, 조합을 바꿔보면서 실험했다.
위의 모델들을 다 돌려보고 여러 조합으로 앙상블 진행 후, public score(RMSE)가 가장 잘 나온 두 결과를 최종 선택해 제출했다.
자세한 하이퍼파라미터와 실험 환경 설정은 config-sample.yaml에서 확인 가능