Ch 04-4. 근접이웃 추천 알고리즘

Yeonghyeon·2022년 7월 27일
0

Recommender System

목록 보기
7/33
post-custom-banner

본 포스팅은 Fastcampus 강의를 수강하며 일부 내용을 정리한 글임을 밝힙니다. 보다 자세한 내용은 아래 강의를 통해 확인해주세요.
참고 : Fastcampus 딥러닝을 활용한 추천시스템 구현 올인원 패키지 Online


Ch 04. Contents-based Recommender System


k-Nearest Neighbor(KNN) 알고리즘

  • 데이터(유저/아이템)로부터 거리가 가까운 K개의 다른 데이터를 선택

  • 다른 데이터사이의 거리를 측정할 때 Euclidean Distance 지표 사용

  • 회귀(Regression)의 k-NN 알고리즘

    • k개의 nearest neighbor값들의 평균 (주변의 값들 이용해서 평균 값으로 점을 쭉 이어나간다)
  • 분류(Classification)의 k-NN 알고리즘

    • k개의 nearest neighbor 중 과반수로 분류
  • 클러스터링(unsupervised learning)과의 차이점은 label을 사용하기때문에 supervised learning임

  • Model-based Learning이 아닌 Lazy Model

    • 이유: 딱히 무언가를 학습하는 것이 없고 주어진 데이터를 좌표공간에 뿌려놓고, 새 데이터 들어왔을 때 데이터들과 거리 계산하는 것 => 이미 주어진 상황에서 어느 데이터와 관련있는지 판단

k값과 거리측정 방법 ➡️ 알고리즘 성능의 가장 중요한 hyperparameter

  1. k값
  • k값에 따라 overfitting과 underfitting 발생
  • 개별 데이터 모두를 반영한 지역적 모델 or 과도한 정규화로 label 특성 반영 안된 모델 발생할 수 있다
  • 현재는 하나하나 시도하는 방법이나 grid-search로 찾아야 함

  1. 거리측정 metric
  • Euclidean Distance: 두 변수의 직선 거리 사용
  • Mahalanobis Distance: 변수 상관관계 고려, 변수 내 분산과 변수간 공분산 반영
  • Manhattan Distance: 좌표축 따라 이동한 거리(절댓값)를 사용

특징

  1. k는 홀수로 하는 것이 일반적(과반수 선택)
  2. 장점
    • 훈련이 없음 ➡️ 빠르게 학습 가능한 알고리즘(loss 계산 같은 학습이라는 뜻이 아니라 거리 계산만 하면 되는 것)
    • 수치 기반 데이터에서 우수한 성능
    • 단순하고 효율적
  3. 단점
    • 명목 or 더미 데이터 처리 어려움
    • 변수가 많은 데이터 ➡️ 처리 속도 느리고 정확도 많이 떨어짐
    • ⭐️ 적절한 k 선택 어려움
    • 변수를 이해하는 알고리즘 X, label과의 관계 파악 등 설명력 떨어짐
    • 각 변수마다 스케일이 다른 경우 동일한 거리 척도 사용 어려움

k-NN 구현을 위한 고려 사항

  1. 변수 간의 분포가 다르기 때문에 정규화를 꼭 해야 함
    • Z-Score, Min-Max Normalization 등
  2. 데이터 간의 거리 측정 효율화
    • Locality Sensitive Hashing(LSH), Network based Indexer 등
    • 굳이 모든 거리를 구하지 않더라도 거리 계산을 효율적으로 할 수 있도록 구현 상에서 중요한 포인트
  3. 공간 상에서 데이터의 representation 상태 확인
    • 다른 모델에 비해 outlier에 강건한 편(outlier면 거리가 더 머니까 더 배척할 수 있겠지), but 전반적으로 성능 끌어내기 위해서 주어진 공간에 데이터 특성에 따라 위치와 거리가 적절히 분포(데이터 representation이 조금 더 중요하다)되어 있어야 함
post-custom-banner

0개의 댓글