본문 바로가기

AI 인공지능

인공지능 수첩 (추천 시스템 / 협업 필터링 / 콘텐츠 기반 필터링 / 행렬 분해 MF / CSR 행렬 / implicit 패키지)

반응형

 

추천 시스템 (Recommender System)

- 추천 시스템의 원리는 나와 비슷한 다른 사용자들이 좋아하는 것과 비슷한 것을 내게 추천해 주는 것임.

- 사용자가 선호할 만한 아이템을 추측함으로써 여러 항목 중 사용자에게 적합한 항목을 필터링(filtering)함.

- 추천 시스템에는 협업(collaborative)필터링과 콘텐츠 기반(content-based)필터링 등이 있음.


협업(collaborative) 필터링

- 대규모의 기존 사용자 행동정보를 분석하여 해당 사용자와 비슷한 성향의 사용자들이 기존에 좋아했던 항목을 추천함. (라면을 구입한 사용자가 생수를 구입한 경우가 많으면, 라면을 구입하는 구매자에게 생수를 추천하는 경우)

- 비슷한 패턴을 가진 사용자나 항목을 추출하는 기술이 핵심적임.

- 행렬 분해(Matrix Factorization)와 k-최근접 이웃 알고리즘(kNN)이 사용됨.

- 사용자들의 검색기록, 구매내역 등의 기존자료를 반드시 활용해야 함.

- 기존에 없던 새로운 항목이 추가되는 경우 초기 정보가 부족하므로 추천이 곤란해짐. (cold start 문제 발생)

- 사용자수가 많은 경우 시간이 오래 걸리며, 비효율적임.

- 아이템과 사용자 간의 행동 또는 관계에만 주목할 뿐, 아이템 자체의 고유한 속성에 주목하지 않음.

 


 

콘텐츠 기반 (content-based) 필터링

- 항목 자체를 분석하여 추천을 구현함. (음악 자체를 분석하여 유사한 음악을 추천하는 방식)

- 항목을 분석한 프로파일(item profile)과 사용자의 선호도를 추출한 프로파일(user profile)을 추출하여 이의 유사성을 계산함.

- 콘텐츠의 내용인 아이템을 분석하는 알고리즘이 핵심적임.

- 군집(clustering)분석, 인공신경망(ANN), TF-IDF(term frequency-inverse document frequency)가 사용됨

- 다양한 형식의 항목을 추천하기는 어려움. (음악, 사진, 비디오를 동시에 추천하기는 어려움.)

- 아이템 자체의 속성에만 주목하고, 사용자와 아이템 간의 관련성에는 주목하지 않음.


 

모델 기반 협업 (Model-based Collaborative) 필터링

- 기존의 협업 필터링을 고도화시킴.

- 연관되는 자료의 크기를 동적으로 변화시키는 방법이 있음.

- 사용자가 특정 항목을 선호하는 이유를 알고리즘적으로 알아내는 잠재(latent)모델에 기반을 둔 방법이 있음.

- 자료안에 내재되어 있는 패턴을 알아내는 것이 핵심적인 기술임.

- LDA (Latent Dirichlet Allocation), 베이지안 네트워크 (Bayesian Network)등이 사용됨.


Matrix Factorization (MF, 행렬 분해)

- (m,n) 사이즈의 행렬 R을 (m,k) 사이즈의 행렬 P와 (k,n) 사이즈의 행렬 Q의 행렬곱으로 표현하는 것

- 아이템 선호도 R = 사용자의 특성 P ⋅ 아이템의 특성 Q


 

CSR (Compressed Sparse Row) 행렬

- 메모리 낭비를 최소화하기 위해 사용자가 이용한 아이템에 대해서만 정보를 저장하며, 전체 행렬 형태를 유추함.

- 0이 아닌, 유효한 데이터로 채워지는 데이터의 값과 좌표 정보만으로 구성하며, Sparse한 matrix와 동일한 행렬을 표현할 수 있도록 함.

- data, indices, indptr 로 행렬을 압축하여 표현함.

data: 0이 아닌 원소를 차례로 기입한 값

indices: 데이터의 각 요소가 어느 열에 있는지를 표현한 인덱스

indptr: [최초시작행번호, 시작행에서의 데이터 개수, 두번째 행에서의 데이터 누적 개수, ... , 마지막행에서의 데이터 누적개수]


사용자의 피드백

- 명시적(explicit) 피드백: 좋아요나 별점 등

- 암묵적(implicit) 피드백: 사용자의 플레이 횟수, 클릭 수, 구매 여부, 검색 기록, 방문 페이지 이력 등


implicit 패키지

- 암묵적 데이터셋을 사용하는 다양한 모델을 빠르게 학습할 수 있는 패키지

- AlternatingLeastSquares 클래스가 있음. from implicit.als import AlternatingLeastSquares


AlternatingLeastSquares 클래스

- Matrix Factorization로 쪼개진 두 Feature Matrix의 한쪽을 고정시키고, 다른 쪽을 학습하는 방식을 번갈아 수행함.

- .similar_items 메서드: 매개변수와 비슷한 아이템을 찾아줌.

- ​.recommend 메서드: 해당 아이템을 추천해줌.

- ​.explain 메서드: 추천한 콘텐츠의 점수에 기여한 다른 콘텐츠와 기여도를 반환함.

반응형