티스토리 뷰
본 포스팅은 Learning To Rank(LTR) 모델의 주요 개념을 정리하였고, 자료는 아래의 블로그를 참고하여 작성하였습니다.
Learning to Rank: A Complete Guide to Ranking using Machine Learning
Sorting items by relevance is crucial for information retrieval and recommender systems.
towardsdatascience.com
1. Learning To Rank란 ?
- 랭킹 문제를 해결하기 위해, 지도학습 머신러닝 기법을 적용한 모델
- 랭킹(정렬)
- 검색엔진 : 사용자 키워들 검색하면, 해당 키워드의 연관성이 높은 순으로 웹페이지 결과를 보여주는 것
- 추천 : 사용자의 구매내역을 기반으로, 사용자가 관심있어야할만한 아이템을 추천하는 것
- 2-stage Recommendation에 ranking 작업에서 활용
- 후보군을 추출 한 후, 후보 군 내에서 유저가 관심있을만한 아이템의 순서를 정렬(Ranking) 하는 것

2. 주요 알고리즘
- Vector Space Model : 문서별 벡터 임베딩을 계산하고, 벡터 임베딩 간의 코사인 유사도를 구하는 것
- LTR(Learning To Rank) : x=(q,d)가 주어지면, 점수 s를 예측하는 방법을 학습하는 기계학습 모델
3. 주요 평가 지표 : MAP, NDCG
- MAP (Mean Average Precision) : Precision Score의 평균

- NDCG
- 랭킹 추천 시스템에서 주로 사용하는 평가 지표
- 관련성이 높은 결과를 상위권으로 추천했는지를 평가함
- CG ( Cumulative Gain) : 상위 p개의 추천 결과들의 관련성을 합한 누적값
- DCG (Discounted Cumulative Gain) : CG 값에서 랭킹 순서에 따라 점점 비율을 줄여 관련도를 계산하는 방법
- 분모에 log 함수를 두어, 랭킹 하위권으로 갈 수록 작은 DCG 값을 가짐



4. 기계학습 구현
- 입력 - 쿼리 q 에 대해 n 문서 D = { d ₁, …, d ₙ } 가 관련성에 따라 순위가 매겨집니다. xᵢ = ( q , dᵢ ) 요소 는 우리 모델에 대한 입력
- 출력 – 쿼리 문서 입력 xᵢ = ( q , dᵢ )의 경우 실제 관련성 점수 yᵢ 가 있다고 가정합니다 . 우리 모델은 예측 점수 sᵢ = f ( xᵢ ) 를 출력
5. 손실함수

어떤 손실함수를 사용해 모델을 학습할 것인가?
- point-wise (~wise: ~별로 따로따로 나눠서 뭔가를 수행한다)
- 한번에 하나의 아이템만 고려
- 하나의 Query(user)가 들어왔을 때, 이에 대응하는 하나의 item만 가져와서 score를 계산
- 아이템 간의 순서관계를 무시하고, 독립적인 개체로 학습
- pair-wise
- 한번에 2개의 아이템을 고려하며, Positive item, Negative Item으로 구성
- Pos,Negative Item이 들어오면 pos_item > neg_item이라는 rank가 자연스럽게 형성되고, 이를 학습과정에서부터 rank를 고려할 수 있음
- 데이터 셋에서 Positem 보다 Neg item이 훨씬 많은 비율을 차지하고 있어,샘플링 기법 (Negative Sampling)
- BPR, WARP, CLImf
- RankNET : Binary Cross Entropy loss를 사용하여 Pair-wise를 학습
- LambdaRank : 높은 rank에 해당하는 item은 높은 gradient를 주는 방식으로 학습
- LambdaMart : Gradient Boosting 방법을 활용하여 LambdaRank보다 좋은 성능을 보임
- List-wise
- 한번에 전체의 아이템을 고려하는 것
- 전체 아이템 간의 rank를 학습
- ndcg 등
6. 주요 모델 (LightGBM Ranker)
Learning-to-rank with LightGBM (Code example in python)
LightGBM: brief description and usage
tamaracucumides.medium.com
- GBM(Gradient Boosting Machine)
- 의사결정 트리의 앙상블 모델
- 각 반복에서 알고리즘은 잔차 오류를 확인하여 의사결정 트리를 학습
- 순위를 매기는 방법 --> LambdaRank를 목적함수로 사용
- LambdaRank : 높은 Rank에 해당하는 Item은 높은 gradient를 주는 방식으로 학습 & 최적화
- 평가 지표 : nDCG@k를 사용
7. 결론
이번 포스팅에서는, Learning To Rank의 주요 개념, 손실함수, 평가지표에 대해 정리해보았습니다. 다음 포스팅에서는 LightGBM Ranker 모델을 코드로 구현한 내용을 살펴보도록 하겠습니다.
'추천시스템' 카테고리의 다른 글
[추천 논문 리뷰] Deep Knowledge Tracing 논문 리뷰 (0) | 2022.08.21 |
---|---|
[추천 논문 리뷰] Session based recommendations with recurrent neural network (0) | 2022.07.24 |
[추천 논문 리뷰] Neural Collaborative Filtering (0) | 2022.06.26 |