Notice
Recent Posts
Recent Comments
Link
«   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
Tags
more
Archives
Today
Total
관리 메뉴

what i learned

[ML] 추천시스템(1) 본문

Artificial Intelligence/Machine Learning

[ML] 추천시스템(1)

햄식이111 2023. 11. 16. 02:19

추천시스템은 크게 콘텐츠 기반 필터링협업 필터링으로 나뉜다.

1️⃣ 콘텐츠 기반 필터링
2️⃣ 협업 필터링
    ◎ 최근접 이웃 협업 필터링(=메모리 협업 필터링)
        - 사용자 기반
        - 아이템 기반
    ◎ 잠재 요인 협업 필터링 (with. 행렬 분해 기법)

 

1️⃣ 콘텐츠 기반 필터링이란?

사용자가 특정한 아이템을 매우 선호하는 경우, 그 아이템과 비슷한 콘텐츠를 가진 다른 아이템을 추천하는 방식이다.

 

영화 추천 시스템을 예로 들어보면,

사용자가 "컨택트"라는 영화에 평점 8점을 주고 "프로메테우스"라는 영화에 평점 9점을 줬다.

"컨택트" 영화의 장르, 감독, 출연진 등의 정보와 "프로메테우스" 영화의 장르, 감독, 출연진의 정보를 파악하여 공통되는 장르나 감독, 출연진을 사용자에게 추천해주는 시스템이다.

 

즉, 사용자가 선호하는 콘텐츠의 정보를 파악하여 다른 콘텐츠들의 정보와 비교하여 추천하는 것이다.

 

[ML] 추천시스템 - 콘텐츠 기반 필터링

"파이썬 머신러닝 완벽 가이드(권철민 저)" 추천시스템은 크게 콘텐츠 기반 필터링과 협업 필터링으로 나뉘게 된다. [ML] 추천시스템 "파이썬 머신러닝 완벽 가이드(권철민 저)" 추천시스템은 크

enddl3224.tistory.com

 

 

2️⃣ 협업 필터링이란?

사용자가 아이템에 매긴 평점 정보를 다른 사용자들이 매긴 평점 정보와 비교하여 비슷한 아이템을 추천하는 방식이다.

 

이번에도 영화 추천 시스템을 예로 들어보자.

사용자A가 "컨택트"라는 영화에 8점을 주고 "프로메테우스"라는 영화에 평점 9점, "겨울왕국"이라는 영화에 평점 3점을 줬다고 하자.

이런 상황에서 사용자A가 "블레이드러너"라는 영화에 평점을 얼마나 줄지 위와 같은 행렬을 가지고 예측하는 방식이다.

 

다른 사용자들의 평점을 기반으로 아이템을 추천하는 협업 필터링은 최근접 이웃 방식잠재 요인 방식으로 나뉜다.

 

◎ 최근접 이웃 방식이란?

최근접 이웃 방식은 다시 사용자 기반과 아이템 기반 방식으로 나뉠 수 있다.

"당신과 비슷한 고객들이 다음 상품도 구매했습니다!"

"이 상품을 선택한 다른 고객들이 다음 상품도 구매했습니다!"

위와 같은 문구를 본 적이 있을 것이다.

  • 사용자 기반 ➡️ "당신과 비슷한 고객들이 다음 상품도 구매했습니다!"
  • 아이템 기반 ➡️ "이 상품을 선택한 다른 고객들이 다음 상품도 구매했습니다!"

사용자 기반 방식은 영화의 평점을 비슷하게 준 다른 사용자를 기반으로 추천해주는 방식이다.

이 표를 다시 확인해보면, 사용자A가 "블레이드러너"라는 영화에 대한 평점을 주지 않았지만,

사용자B와 사용자C의 평점을 확인해보면 사용자B의 평점 정보가 사용자A와 비슷하기 때문에 "블레이드러너"라는 영화도 좋아할 것이라고 추천하는 것이다.

 

반면에 아이템 기반 방식은 아이템별 사용자의 선호도를 파악하여 사용자가 싫어할지, 좋아할지를 파악하는 방식이다.

"다크나이트" 영화와 "프로메테우스" 영화는 사용자들에게 비슷한 평점을 받았다.

즉, "다크나이트"를 좋아하는 사람은 "프로메테우스"를 좋아할 것이다. 라고 생각하는 것이다.

그렇기 때문에 다크나이트만 본 사용자D에게 스타워즈가 아닌 "프로메테우스"를 추천할 수 있는 것이다.

 

사용자A가 좋아하는 영화를 사용자B에게 추천한다고 해서 사용자B도 좋아할 것이라는 보장은 없다.

때문에 사용자기반 방식보다 아이템기반 방식의 협업 필터링의 정확도가 더 높은 편이다.

 

[ML] 추천시스템 - 최근접 이웃 협업 필터링

추천시스템은 크게 콘텐츠기반 필터링과 협업 필터링으로 나뉘게 된다. [ML] 추천시스템 "파이썬 머신러닝 완벽 가이드(권철민 저)" 추천시스템은 크게 콘텐츠 기반 필터링과 협업 필터링으로 나

enddl3224.tistory.com

 

 

◎ 잠재 요인 방식

잠재 요인 방식은 넷플릭스 추천 시스템으로 사용되어서 요즘 많이 사용되는 방식이라고 한다.

지금까지 계속 사용했던 이 행렬을 두 개의 행렬 P와 Q로 분해한 뒤, P와 Q의 내적의 곱 연산을 통해 좀 더 세심한 값을 가지고 추천하는 방식이다.

이름이 잠재 요인 방식인 이유는 두 개의 행렬 P와 Q로 나눌 때, 그 기준이 되는 요인을 정확히 알 수 없기 때문이다.

출처 파이썬 머신러닝 완벽 가이드

이해를 돕기 위해 지금까지 예로 들었던 영화 추천 시스템을 다시 얘기해보자면,

아래의 그림처럼 factor는 영화장르가 될 수 있다. 

출처 파이썬 머신러닝 완벽 가이드

<행렬 분해를 통한 잠재 요인 협업 필터링> 그림의 결과를 확인해보면,

사용자1이 아이템1에 대해 4점이라는 평점을 남겼는데 잠재요인 협업 필터링을 통한 값도 3.98로 원본 행렬과 근사한 값을 알 수 있다.

따라서, 이 값을 토대로 아이템2에 대한 평점을 기록하지 않았던 사용자1의 예측 결과값을 가지고 아이템을 추천해 줄 수 있는 방식이다.

 

이렇게 P와 Q행렬을 잠재요인에 의해 나누어 내적의 곱을 수행하여 예측 값을 얻는 방식을 잠재 요인 협업 필터링이라고 하는데,

잠재요인에 의해 나누는 방법으로 SVD(Singular Value Decomposition)이 있다.

하지만 이 방식은 Null이 포함된 행렬에는 적용하기 어렵다는 점이 있다.

 

🤔..??

 

이 방법을 해결하기 위해 경사하강법을 사용하여 행렬을 나누게 된다.

💡 경사하강법이란
가장 최소의 오류를 가질 수 있도록 반복적인 최적화를 통해 결과를 도출하는 방법이다.

경사하강법을 사용하여 나뉘어진 P와 Q행렬에 대해 내적의 곱을 수행했을 때, 나뉘어지기 전의 원본 행렬과 가장 유사한 값을 가질 수 있도록 최적화를 통해 P와 Q를 유추하는 것이다.

 

 

 

"파이썬 머신러닝 완벽 가이드"를 학습하여 기록한 글입니다.


공부한 내용을 기록하는 공간입니다.

잘못된 정보가 있을 경우 댓글로 피드백 주세요.

올바른 지식을 알려주셔서 감사합니다:)