티스토리 뷰

본 포스팅은 Learning To Rank(LTR) 모델의 주요 개념을 정리하였고, 자료는 아래의 블로그를 참고하여 작성하였습니다. 

https://towardsdatascience.com/learning-to-rank-a-complete-guide-to-ranking-using-machine-learning-4c9688d370d4

 

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) 하는 것

https://www.researchgate.net/figure/A-two-stage-recommender-system-that-serves-users-highly-personalized-content-within-the_fig1_341128860

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. 손실함수

어떤 손실함수를 사용해 모델을 학습할 것인가?

  1. point-wise (~wise: ~별로 따로따로 나눠서 뭔가를 수행한다)
    • 한번에 하나의 아이템만 고려
    • 하나의 Query(user)가 들어왔을 때, 이에 대응하는 하나의 item만 가져와서 score를 계산
    • 아이템 간의 순서관계를 무시하고, 독립적인 개체로 학습
  2. 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보다 좋은 성능을 보임
  3. List-wise
    • 한번에 전체의 아이템을 고려하는 것
    • 전체 아이템 간의 rank를 학습
    • ndcg 등

 6. 주요 모델 (LightGBM Ranker) 

https://tamaracucumides.medium.com/learning-to-rank-with-lightgbm-code-example-in-python-843bd7b44574

 

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 모델을 코드로 구현한 내용을 살펴보도록 하겠습니다. 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함