본문 바로가기
2021/추천

[T아카데미]추천시스템 분석 입문

by 에이도 2021. 2. 2.

T아카데미 추천시스템 강의를 듣고 작성한 리뷰 포스팅입니다.


tacademy.skplanet.com/live/player/onlineLectureDetail.action?seq=194

 

추천시스템 분석 입문하기 | T아카데미 온라인강의

 

tacademy.skplanet.com

 

https://www.youtube.com/watch?v=43gb7WK56Sk&feature=emb_logo

기존 비즈니스에서는 파레토의 법칙에 따라 상위 20%의 고객에게 집중했지만, 

인터넷의 발전에 따라 롱테일의 법칙이 등장하였다.
롱테일의 법칙은 하위80%가 상위20%의 가치보다 크다는 법칙이다.

파레토의법칙 롱테일의 법칙
상위 20% >> 하위 80% 상위 20% << 하위 80% 

이러한 이유로 온라인을 기반으로 하는 아마존, 넷플릭스는 롱테일의 법칙에 더 집중한다고 한다.

https://tacademy.skplanet.com/live/player/onlineLectureDetail.action?seq=194

 


연관분석의 예시 : 월마트) 맥주 - 기저귀

 

평가지표

 


여러가지 유사도함수 

 

유클리안 유사도

유클리디안 유사도 = 1 / (유클리디안 거리 + 1e-05)

[장점]
계산하기가 쉬움

[단점]
p와 q의 분포가 다르거나 범위가 다른 경우에 상관성을 놓침

 

코사인 유사도

: 두 특성 벡터간의 유사 정도를 코사인 값으로 표현, -1에서 1까지의 값을 가진다.

[장점]
벡터의 크기가 중요하지 않은 경우에 거리를 측정하기 위한 메트릭으로 사용한다.
(예 : 문서내에서 단어의 빈도수 : 문서내에서 얼마나 나왔는지라는 비율를 확인하기 때문에 상관없음. )

[단점]
벡터의 크기가 중요한 경우에 대해서 잘 작동하지 않는다

 

피어슨 유사도

: 두 벡터의 상관계수를 의미한다.

 


TF-IDF

https://tacademy.skplanet.com/live/player/onlineLectureDetail.action?seq=194

TF-IDF를 사용하는 이유

  1.  Item이라는 컨텐츠를 벡터으로 "Feature Extract" 과정을 수행해준다.

  2. 빈도수를 기반으로 많이 나오는 중요한 단어들을 잡아준다. 이러한 방법을 Counter Vectorizer 라고한다.

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

[장점]
직관적인 해석이 가능하다.

[단점]
대규모 말뭉치를 다룰 때 메모리상의 문제가 발생한다.
- 높은 차원을 가짐 , 매우 sparse한 형태의 데이터임
- 예) 100만개의 문서를 다루는 경우 : 100만개의 문서에 등장한 모든 단어를 추출해야하고 이때 단어의 수는 1문서당 새로운 단어가 10개면, 1000만개정도의 말뭉치가 형성됨. 즉, 100만 x 1000만의 매트릭스가 형성

- 한번에 학습 데이터 전체를 진행함
   - 큰 작업을 처리하기 어려움
   - GPU와 같은 병렬처리를 기대하기 힘듬

- 학습을 통해서 개선하기가 어려움

위에서 처럼 TF-IDF는 모든 말뭉치를 사용하기때문에 메모리가 많이 사용된다.
이러한 문제를 해결하기 위해 신경망 기반의 Word2Vec사용한다.
말뭉치의 단어들을 의미기반으로 바꾸고 
한번에 학습이 아닌 배치 기반의 딥러닝에 도움을 받아 학습 


Word2Vec

[정의] Word2Vec은 단어간 유사도를 반영하여 단어를 벡터로 바꿔주는 임베딩 방법론입니다.
원-핫벡터 형태의 sparse matrix 이 가지는 단점을 해소하고자 저차원의 공간에 벡터로 매핑하는 것이 특징입니다. Word2Vec은 “비슷한 위치에 등장하는 단어들은 비슷한 의미를 가진다“ 라는 가정을 통해서 학습을 진행합니다. 저차원에 학습된 단어의 의미를 분산하여 표현하기에 단어 간 유사도를 계산할 수 있습니다. 

추론기반의 방법 (Word2Vec) 추론
   -> 주변 단어(맥락)이 주어졌을 때 “?”에 무슨 단어(중심단어)가 들어가는지를 추측하는 작업
        예) you say goodbye and I say hello.

 

알고리즘 ( CBOW , Skip-Gram)

CBOW는 주변에 있는 단어들을 가지고, 중간에 있는 단어들예측하는 방법입니다.
반대로, Skip-Gram은 중간에 있는 단어주변 단어들을 예측하는 방법입니다.
일반적으로 Skip-Gram가 CBOW보다 많이 사용한다고 합니다.
그 이유는 Skip-Gram이 성능이 더 좋고, 실제 논문에서 결과 차이가 크기 때문입니다.

 

CBOW 알고리즘

  1. One Hot Vector 형태의 입력값을 받는다.
    You -> [Say] 예측 - Goodbye -> [Say] 예측
    주변 단어 : 주변에 있는 단어 (you, goodbye)
    중심 단어 : 중간에 있는 단어 (say)
    윈도우 크기 : 주변을 몇 칸까지 볼 지에 대한 크기(1)
    만일, 윈도우 크기가 2이면 you, goodbye, and를 통해서 [Say]를 예측한다.
  2. One Hot Vector 형태의 입력값을 Win과 곱
  3. Hidden state의 값을 W_out과 곱해서 Score를 추출한다.
  4. Score에 Softmax를 취해서 각 단어가 나올 확률을 계산한다.
  5. 정답과 Corss Entropy Loss 를 계산
  6. 계산한 Loss를 가지고 Backpropagation 과정을 통해서 Weight를 업데이트
  7. 위의 과정을 다른 문맥에 대해서도 수행

 

Skip-Gram 알고리즘

  1. One Hot Vector 형태의 입력값을 받는다. - [say]-> [you] 예측 - [say]-> [goodbye] 예측 - 주변 단어 : 주변에 있는 단어 (you, goodbye) - 중심 단어 : 중간에 있는 단어 (say) - 윈도우 크기 : 주변을 몇 칸까지 볼 지에 대한 크기 (1), 만일, 윈도우 크기가 2이면 [say]를 통해 you, goodbye, and를 예측
  2. One Hot Vector 형태의 입력값을 Win과 곱
  3. Hidden state의 값을 W_out과 곱해서 Score를 추출한다.
  4. Score에 Softmax를 취해서 각 단어가 나올 확률을 계산한다.
  5. 정답과 Corss Entropy Loss 를 계산
  6. 5에서 계산한 Loss를 가지고 Backpropagation 과정을 통해서 Weight를 업데이트
  7. 위의 과정을 다른 문맥에 대해서도 수행  

'2021 > 추천' 카테고리의 다른 글

내가 보려고 정리하는 [A/B 테스트]  (0) 2021.02.01

댓글