오음

추천시스템 본문

데이터 분석

추천시스템

오준돌 2023. 10. 9. 17:53

추천시스템 역사

연관 규칙 - 규칙 평가 지표

연관 분석 문제점:

아이템의 수가 늘어날 수록 너무 많은 규칙이 생김

 

Apriori 알고리즘

빈번한 아이디어 아이템 셋 또한 빈번할 것이다. → 아이템 셋의 증가를 줄이는 방법

항목 집단을 줄이면서 진행

희소 행렬 : 0이라는 무의미한 값이 많은 행렬을 의미

Implicit Feedback : 구매하고 만족했는지 만족 안 했는지 모르는 데이터를 표현한다.

  1. 단일 항목 집단 생성

p(우유) : 0.5 / p(양상추) : 0.75 / p(기저귀) : 0.75 / p(주스): 0.25 / p(맥주) : 0.75

  1. 단일항목집단에서 최소 지지도(support)이상의 항목만 선택
  2. 이제 2개 항목 집단 생성
  3. 최소 지지도 이상의 항목만 선택
  4. 위의 과정을 k개의 k-item frequent set을 생성할 때까지 반복

단점 : 데이터가 클 경우(item이 많은 경우) 속도가 너무 느림 / 너무 많은 연관 상품들이 나타남

 

FP_Growth 알고리즘

  1. 최소 지지도를 없애는 것은 aprori알고리즘과 같음
  2. 모든 거래에서 빈도가 높은 아이템 순서대로 순서를 정렬한다. ex) 기저귀가 우유보다 더 많이 나왔음으로 정렬을 기저귀 ,우유
  3. 부모 노드를 중심으로 거래를 자식 노드로 추가해주면서 tree 생성
  4. 새로운 아이템이 나올 경우에는 부모노드부터 시작하고, 그렇지 않으면 기존의 노드에서 확장
  5. 지지도가 낮은 순서부터 시작하여, 조건부 패턴을 생성
  6. 모든 아이템에 대해서 반복
  7. 조건을 토대로 패턴 생성

장점: DB를 두번만 스캔하면 되기 때문에 빠름/ 후보 itemsets을 생성할 필요 없음

단점 : 대용량에서 효율적이지 않음 / 설계가 어려움

 

컨텐츠 기반 추천

 유사도 함수

  • 유클리디안 유사도 : p와 q의 거리를 단순 계산하는 방법
    • 계산하기 쉬움
    • But p와q의 분포가 다르거나 범위가 다른 경우 상관성을 놓칠 수 있음

  • 코사인 유사도 : 얼마나 비슷한 방향(cos(세타))을 가지고 있는지를 계산 ex) 세타가 똑같으면 같은 방향을 보고 있음으로 1을 가짐
    • 벡터의 크기가 중요하지 않은 경우에 예를 들어 문서 내에서 단어의 빈도수 - 문서들의 길이가 고르지 않더라도 문서 내에서 얼마나 나왔는지라는 비율로 확인하기 때문에 상관없음
    • 반대로 벡터의 크기가 중요한 경우에 대해서 잘 작동하지 않음

방향으로

  • 피어슨 유사도 : 상관 계수 기반으로 계산

  • sorence 유사도
  • 유사도 구하는 방법은 여러 개 있음 -> 상황에 맞게 써야한다.
  • 유사도 값을 가중치를 더해서 적절하게 만들 수도 있다.
  • 각각의 유사도 모델을 만들고 순서대로 추천해 줄 수 도 있다.
  • 유사도 매트릭스들을 더해서 만들어도 된다.

컨텐츠 기반 모델 이론

1.2 TF-IDF모델

  • 특정 문서 내에 특정 단어가 얼마나 자주 등장하는 지를 의미하는 단어 빈도(TF)와 전체 문서에서 특정 단어가 얼마나 자주 등장하는지를 의미하는 역문서 빈도(DF)를 통해서 “다른 문서에서는 등장하지 않지만 특정 문서에서만 자주 등장하는 단어”를 찾아서 문서 내 단어의 가중치를 계산하는 방법.
  • 용도 : 문서의 핵심어를 추출,문서들 사이의 유사도를 계산, 검색 결과의 중요도를 정하는 작업등에 활용할 수 있음

TF(d,t)

  • 특정 문서 d에서의 특정 단어 t의 등장 횟수

DF(t)

  • 특정 단어 t가 등장한 문서의 수

IDF(d,t)

  • DF(t)에 반비례하는 수

⇒ TF(d,t) * IDF(d,t) = TF_IDF(d,t)

단순 빈도만을 계산하기에 조사,관사처럼 의미는 없지만 문장에 많이 등장하는 단어들도 높게 쳐주는 한계가 있다. 이러한 단어들에 패널티를 줘서 적절하게 중요한 단어만을 잡아내는게 TF-IDF 기법이다.

 

예제)

  1. TF는 문서수 / DF는 문서내에 바나나가 포함한 문서가 몇개인지

 2. IDF 계산

n은 문서의 개수 / 1+df(t) :IDF(역 문서 빈도)

 

3. TF * IDF 를 곱하면 최종 매트릭스가 나옴

4. 문서간의 유사도를 계산

5. 먹고 싶은 사과 user에게 먹고 싶은 바나나 를 추천!

장점 : 직관적인 해석이 가능함

단점 : 메모리 효율적으로 사용하지 못함/ 매우 sparse한 형태의 데이터 / 높은 차원을 가짐

 

https://www.kaggle.com/code/chocozzz/00-tf-idf-2

 

00. 컨텐츠 기반 추천시스템 - TF-IDF를 이용한 추천시스템#2

Explore and run machine learning code with Kaggle Notebooks | Using data from T Academy Recommendation2

www.kaggle.com

https://www.youtube.com/watch?v=43gb7WK56Sk&list=PL9mhQYIlKEhdkOVTZWJJIy8rv6rQaZNNc 

'데이터 분석' 카테고리의 다른 글

Word2Vec모델  (1) 2023.10.09