working_helen
[추천시스템 학습] 1주차 : 협업 필터링 본문
1. 협업 필터링
2. 협업 필터링 과정
3. 협업 필터링 종류
1) Memory-based CF
2) Model-based CF
3) Hybrid CF
4) User-based CF
5) Model based CF
4. 행렬 분해
5. 행렬 분해 장단점
1. 협업 필터링(Collaborative Filtering CF)
: 구매 이력, 평가 점수(후기)와 같은 사용자들의 행동 데이터를 기반으로 사용자 간 유사성을 분석하여 아이템을 추천하는 방법이다. 유사한 행동 패턴을 보이는 = 비슷한 관심사를 보이는 사용자들에게 같은 아이템을 추천해준다. CF는비슷한 취향을 가진 사용자들은 어떠한 아이템에 대해 비슷한 선호도를 가질 것이라는 가정 하에 이루어진다.
다루는 문제 : 개별 사용자마다의 아이템 호불호 분류 문제
사용 데이터 : 사용자들의 행동 데이터, 특히 분석 목표 사용자와 유사한 취향을 가지는 다른 사용자의 데이터
제시하는 답 : 사용자들의 행동 데이터를 기반으로 사용자간 유사성 분석
> 사용자와 유사한 취향을 가진 사용자 집단이 선호했던 아이템을 중심으로 추천 리스트 작성
(위키백과) 협업 필터링(collaborative filtering)은 많은 사용자들로부터 얻은 기호정보(taste information)에 따라 사용자들의 관심사들을 자동적으로 예측하게 해주는 방법이다. 선호도, 관심에서 비슷한 패턴을 가진 고객들을 식별해 내는 기법이다. 비슷한 취향을 가진 고객들에게 서로 아직 구매하지 않은 상품들은 교차 추천하거나 분류된 고객의 취향이나 생활 형태에 따라 관련 상품을 추천하는 형태의 서비스를 제공하기 위해 사용된다.
2. 협업 필터링 과정
각 사용자를 행으로, 아이템을 열로, 평점을 성분으로 하는 Matrix
step 1. 각 사용자의, 각 아이템에 대한 평점을 벡터 형태로 표현한다.
step 2. 타겟 사용자와 평점이 유사한 이웃 사용자들을 찾는다.
step 3. 이웃 사용자들의 평점을 이용해 타겟 사용자가 평가하지 않은 아이템에 대한 평점을 예측한다.
step 4. 예측 평점값이 높은 순으로 추천 리스트를 작성한다.
3. 협업 필터링 종류
- 협업 필터링은 크게 메모리 기반과 모델 기반으로 나뉜다.
1) Memory-based CF 메모리 기반 협업필터링
: 사용자 간 혹은 아이템 간 유사성 similarity 값을 계산하여 평점을 예측하고, 이를 활용해 추천 리스트를 작성하는 방식. 전통적인 MBCF 방식으로, 목표 사용자와 유사한 최근접 이웃 사용자를 찾고 해당 사용자들이 소비한 아이템들을 추천하거나, 특정 아이템과 유사한 아이템들에 대한 평점 정보를 바탕으로 특정 아이템에 대한 평점을 예측하여 추천 리스트를 작성한다.
- 장점 : 추천의 근거를 설명하기 쉽고, 적용이 용의하다.
- 단점
- Sparsity 문제 : 웃 사용자를 찾기 위해 사용하는 유사도 지표들의 경우 두 사용자 간의 공통 평가 항목이 적을 때 계산이 제대로 되지 않는다. 즉 결측치가 많은 Sparse한 데이터인 경우 추천 성능이 현저히 떨어지게 된다.
- Scalability 문제 : 아이템이나 사용자가 추가될 때마다 User-Item Matrix의 차원이 커지면서 연산이 복잡해지고 효율성이 떨어진다. 이때문에 대규모 데이터에는 적용하기 힘든 확장성의 한계가 존재한다.
2) Model-based CF 모델 기반 협업필터링
: 데이터에 숨겨진 User-Item 관계의 잠재적 특성 혹은 패턴을 찾고, 이를 기반으로 평가되지 않은 항목에 대한 사용자의 평가를 예측해 추천 리스트를 작성하는 방식. 이때 잠재적 특성을 Latent factor, Latent feature 등으로 표현하며, 다양한 데이터 마이닝, 기계 학습 알고리즘을 사용하여 User-Item Matrix의 저차원 표현을 찾아낸다. 현재 사용되고 있는 Model-based CF 방법들은 크게 클러스터링 기반 알고리즘, Latent Factor 방식(행렬 분해), 그리고 딥러닝 알고리즘으로 나뉜다.
- 장점 : Memory-based CF의 단점을 극복
- Sparsity 해결 : 결측치가 많고 Sparse한 데이터 셋에서도 잘 작동한다. Memory-based CF보다 행렬의 희소성을 더 잘 처리한다.
- Scalability 해결 : 고차원 행렬을 저차원 공간의 더 작은 행렬로 분리하여 다루기 때문에 사용자나 아이템 개수가 늘어나도 사용할 수 있다. Memory-based CF보다 확장성이 좋다.
- 단점 : 모델을 처음 학습하는 과정에서 많은 시간과 연산량이 필요하다.
3) Hybrid 하이브리드 협업 필터링
: 각 추천 알고리즘의 한계를 상호보완하기 위해 여러 추천 알고리즘을 결합하여 사용하는 경우. 추천 알고리즘의 예상 평점이나 추쳔 리스트를 종합하여 사용한다.
- 메모리 기반 협업필터링은 다시 사용자 기반과 아이템 기반으로 나뉜다.
4) User-based CF 사용자 기반 협업필터링
- "너랑 비슷한 사람들이 이것도 좋아하더라"
- 사용자 간의 유사도를 기준으로 추천리스트를 작성한다.
- 목표 사용자와 유사한 취향, 관심사, 구매 패턴을 보인 사용자들을 찾아 그들이 선호했던 아이템을 추천한다. 즉 분석에 활용되는 대상이 타겟 사용자와 행동 패턴이나 관심사가 유사한 다른 사용자들이다.
- 사용자를 아이템으로 구성된 벡터로 표현하고 사용자 벡터 간의 유사성을 계산한다. (행렬 행 간의 유사성을 계산)
- 유사도의 기준으로 피어슨 상관계수가 자주 사용되며, 상관계수가 높을수록 유사한 사용자로 분류된다.
- 장점 : 사용자 데이터만을 사용하기 때문에 CBF와 달리 산업에 대한 전문적인 도메인 지식이 요구되지 않는다.
- 단점
- 대부분의 사용자가 리뷰를 잘 남기지 않아 평점 데이터가 매우 희소하다.
- Scalability(확장성) 문제 : 데이터 규모가 커지는 경우 수백만의 사용자를 대상으로 한 유사성을 연산이 어렵다.
- Cold Start 문제 : 기본적으로 사용자들의 사용 이력 데이터에 근거하기 때문에 평점 데이터가 없는 경우 추천 결과로 포함되기 어렵다. 대표적으로 신규 가입자인 경우, 새로운 아이템인 경우가 이에 해당된다.
5) Item-based CF 아이템 기반 협업 필터링
- "그거 산 사람들은 이것도 사더라"
- 아이템 간의 유사도를 기준으로 추천리스트를 작성한다.
- 사용자가 사려는 특정 아이과 같이 자주 팔리는 아이템, 특정 상품을 구매한 사용자들이 공통적으로 선호했던 아이템을 찾아 추천한다. 즉 분석에 활용되는 대상이 특정 아이템을 이미 구매한 다른 사용자들이다.
- 아이템을 사용자로 구성된 벡터로 표현하고 아이템 벡터 간의 유사성을 계산한다. (행렬 열 간의 유사성을 계산)
- 장점 : User-based CF에 비해 연산량이 적고 확장성이 좋다. 아마존이나 넷플릭스 같이 아이템에 비해 사용자 수가 현저히 많은 경우 비슷한 사용자를 찾기 위한 유사도 연산에 비해 비슷한 아이템을 찾기 위한 유사도 연산이 더 빠르다.
- 단점 : 여전히 Cold Start 문제가 존재한다. 신상품이거나 평점이 별로 없는 아이템인 경우 데이터의 희소성으로 인해 유사도 연산이 어렵고, 추천 결과로 포함되기 어렵다.
4. 행렬 분해(matrix decomposition, MF)
1) 행렬 분해
: 행렬곱의 역연산, 주어진 행렬을 두 행렬의 행렬곱으로 표현하는 것이다.
(위키백과) 행렬을 특정한 구조를 가진 다른 행렬의 곱으로 나타내는 것
2) 추천시스템과 행렬 분해
- 행렬 분해는 Collaborative Filtering의 한 종류이다.
- Collaborative Filtering에선 사용자, 아이템, 평점 데이터를 기반으로 각 아이템에 대한 사용자들별 선호도를 User-Item Matrix(Rating Matrix)로 표현한다. 결측값이 많은 Sparse Matrix(희소행렬)로 표현된다.
- 행렬 분해는 CF 중에서도 Latent Factor(잠재 인수) 방식이다.
- Latent Factor 방식 : 사용자와 아이템 데이터에 숨어있는 특징을 잠재적인 차원으로 나타내는 모델
- User-Item Matrix을 User Matrix와 Item Matrix 2개의 행렬곱으로 분해한다.
- User Matrix와 Item Matrix는 각각 k개의 Latent feature(잠재 요인)를 갖게 된다.
User-Item Matrix(R) = 사용자 행 x 아이템 열
User Matrix (U) = 사용자 행 x k개의 열
Item Matris (I) = k개의 행 x 아이템 열
- U와 I의 행렬곱 결과가 최대한 원본 R과 유사하도록 행렬 원소값을 조정한다.
- 찾아낸 U와 I의 행렬곱 결과가 R에 대한 예측값 R_hat이 된다.
- 희소행렬인 R에는 아이템에 대한 사용자의 평점이 없어 아직 데이터가 존재하지 않는 성분이 존재하는데, R_hat을 활용해 해당 성분 값을 예측할 수 있다. 즉 사용자가이 아직 평점을 부여하지 않은 아이템에 대한 예측 평점을 알 수 있으며, 이를 기반으로 추천 리스트를 작성할 수 있다.
User-Item Matrix를 잠재요인으로 이루어진 2개의 행렬 User Matrix와 Item Matrix로 행렬 분해하고,
다시 이들간 행렬곱을 통해 User-Item Matrix의 빈 펑점값을 예측하는 방법
- k는 임의의 값으로, k값이 클수록 원본 행렬을 잘 복원하지만 계산량이 늘어난다.
- k개의 Latent feature가 무엇인지는 파악할 수 없다. 이에 따라 행렬 분해는 사용자와 아이템의 관계를 잠재적인 차원을 활용해 나타내는 Latent Factor 모델(잠재 인수 모델)에 포함된다.
5. 행렬 분해의 장단점
1) 장점
- 누락되거나 불완전한 데이터에 대해 처리할 수 있으며, 값을 예측할 수 있다는 강점이 있다.
- 데이터의 잠재적 특징과 패턴을 발견할 수 있다.
- 데이터의 차원과 복잡성을 줄일 수 있어 효욜적이다.
2) 단점
- 과적합 혹은 과소적합 문제
- feature 개수(k), regularization term 등 매개변수 선택이 알고리즘 성능에 영향을 줄 수 있다. 이에 따라 최적의 매개변수를 찾기 위한 Cross Validation(교차검증) 혹은 Grid Search를 진행해야 하므로 이에 따른 수행시간 및 비용이 소요된다.
- 행렬 분해의 경우 각 feature가 독립성과 선형성을 가정하기 때문에 해당 가정에서 심각하게 벗어나는 데이터의 경우 적용이 어렵다.
Reference
[협업 필터링]
https://ko.wikipedia.org/wiki/%ED%98%91%EC%97%85_%ED%95%84%ED%84%B0%EB%A7%81
https://en.wikipedia.org/wiki/Collaborative_filtering
https://www.notion.so/deepdaiv/1-e5a3d98afd574dc9a89ba6a323124070#154008da63294644b8a1eb1cecc5a69d
https://www.notion.so/deepdaiv/3188627a359943689157abcf131ef033#6c6bcacfecff48c4bfaee3f49c079bcf
https://tech.kakao.com/2021/10/18/collaborative-filtering/
https://m.newspim.com/news/view/20200925000879
https://data-science-hi.tistory.com/169
https://ai-with-sudal-ee.tistory.com/5
https://velog.io/@readymadelife/%EC%B6%94%EC%B2%9C%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%9D%98-Model-based-CF
https://yeong-jin-data-blog.tistory.com/entry/%ED%95%98%EC%9D%B4%EB%B8%8C%EB%A6%AC%EB%93%9C-%EC%B6%94%EC%B2%9C%EC%8B%9C%EC%8A%A4%ED%85%9C
[행렬 분해]
https://ko.wikipedia.org/wiki/%ED%96%89%EB%A0%AC_%EB%B6%84%ED%95%B4
https://tech.kakao.com/2021/10/18/collaborative-filtering/
https://blog.naver.com/with_msip/222929150127
https://ai-with-sudal-ee.tistory.com/7
https://www.linkedin.com/advice/0/what-some-advantages-disadvantages-using-matrix-factorization
'deep daiv. > 추천시스템 스터디' 카테고리의 다른 글
[추천시스템 논문 리뷰] 4주차 : Loss function (0) | 2023.08.26 |
---|---|
[추천시스템 논문 리뷰] 3주차 : 경사하강법 / SGD (0) | 2023.08.24 |
[추천시스템 논문 리뷰] 3주차 : Factorization Machines (1) | 2023.08.23 |
[추천시스템 논문 리뷰] 3주차 : SVM (0) | 2023.08.23 |
[추천시스템 학습] 1주차 : 콘텐츠 기반 필터링 (0) | 2023.08.01 |