1. 대회 설명
- 목표: 사용자에게 가장 적합한 교육 콘텐츠를 추천하는 커리큘럼 추천 시스템 구축
- 문제 유형: 추천 시스템
- 데이터 배경
-> topics.csv: 추천 기준이 되는 학습 주제 데이터 (계층 구조 포함)
-> content.csv: 추천 대상이 되는 교육 콘텐츠 데이터
-> correlations.csv: 주어진 콘텐츠와 토픽 간 실제 연관 관계 (훈련용)
2. 성능 평가 방식 이해
- F2 Score 기반 micro-average
3. 데이터 전처리
3-1) EDA
- topics와 contents 모두 title, description 결측값 존재 → ""로 채움
- topics는 계층 구조를 가지며 parent column 활용 가능
3-2) Data Cleansing
- 학습 목적상 필요한 주요 컬럼만 사용 (title, description 중심)
3-3) Feature Engineering
- title + description 텍스트 결합 후 토큰화
- Transformer 기반 텍스트 임베딩 생성 (vscode 환경에서 단일 모델 기반으로 진행 함)
4. 모델링
4-1) 모델
- xlm-roberta-large 모델 사용 (실제 진행 시에는 Hugging Face에서 직접 다운로드)
- 별도 체크포인트 없이 사전 학습된 모델만 사용
- Mean Pooling으로 문장 임베딩 생성
- PyTorch 기반 커스텀 MetricModel 정의
4-2) 데이터 분할
- 별도 학습 없이 inference-only 실습 진행으로 train/val 분할 생략
4-3) 하이퍼파라미터 튜닝
- cfg_fold0.yaml 내 설정은 불러오되 학습 관련 파라미터는 무시
- 토크나이저 길이 설정만 참조 (max_length)
4-4) 최종 성능
- cosine similarity를 통한 토픽-콘텐츠 간 유사도 계산
- 메모리 이슈 방지를 위해 batch 기반 top-K 추출 방식 적용
5. 정리(Lesson & Learned)
- Kaggle 노트북 환경에 의존하지 않고 로컬 환경에서 직접 실행 가능한 구조로 수정하는 과정을 통해 실전 환경에 대한 이해를 높임
- 원래 노트북은 사전 학습된 체크포인트를 기반으로 여러 모델을 앙상블하지만, 이번 필사에서는 Hugging Face의 공개 모델(xlm-roberta-large)을 직접 다운로드하여 사용하고, 단일 모델만으로 진행함
- 체크포인트가 없이 공개된 사전 학습 모델만으로 적절한 추론이 가능
Learning Equality - Curriculum Recommendations