기존의 이웃 기반 협업 필터링(Neighbor Based Collaborative Filtering, NBCF)이 가지고 있는 희소성(Sparsity), 확장성(Scalarbility) 문제를 해결하기 위해 모델 기반 협업 필터링(Model Based Collaborative Filtering, MBCF)이 등장했다. MBCF의 종류는 엄청나게 다양하지만 여기서는 행렬 분해(Matrix Factorization) 중 대표적인 기법인 SVD(Singular Value Decomposition)에 대해서만 다룰 것이다. 이전에 다룬 고윳값 분해와는 조금 다른 방식으로 접근한다.
SVD는 특이값 분해라고 부른다. SVD는 행렬을 고윳값과 고유벡터가 아닌, 특이벡터(Singular vector)들과 특이값(singular value)들로 분해한다. 얻을 수 있는 정보는 고윳값 분해와 동일하지만, SVD는 조금 더 일반적인 행렬들에 적용이 가능하다는 장점이 존재한다. 고윳값 분해는 고유벡터로 이루어진 직교행렬을 통해 계산이 되기 때문에, 정방행렬이 아닐 경우 계산이 불가능하다. 일반적으로 우리가 실제로 접하는 변수들의 경우 정방행렬이 거의 없기 때문에 이 경우에는 특이값 분해 방식을 적용해야 한다. 추천시스템에서의 SVD는 기존 사용자의 평점 행렬을 분해하는 개념으로 보면 된다. 선형 대수에서 잘 알려진 사실 중 하나는 모든 행렬은 인수분해 될 수 있다는 점이다. 우리는 사용자의 평점 행렬을 분해해 보다 좋은 예측 알고리즘을 구축하기 위해 SVD를 사용한다.
여기서
여기서
기존의 평점 행렬은 다차원 공간에서 사용자-아이템 간 상호작용을 표현했다. 하지만 Sparse Matrix 의 한계로 복잡한 사용자-아이템 상호작용을 표현하는데에는 한계가 존재했다. 그러한 이유로 SVD를 사용하게 되었고, SVD는 다차원 행렬을 저차원 행렬로 변환시켜 보다 복잡한 사용자-아이템 간 상호작용을 표현할 수 있게 되었다.
'Mathematics > Linear Algebra' 카테고리의 다른 글
[Linear Algebra] 노름(norm) 이란? (0) | 2022.03.05 |
---|---|
[Linear Algebra] 선형대수학 기초 용어 정리 (0) | 2022.03.05 |
[Linear Algebra] 선형 변환 (0) | 2021.07.21 |
[Linear Algebra] 부분공간의 기저와 차원 (0) | 2021.07.20 |
[Linear Algebra] 선형독립과 선형종속 (0) | 2021.07.18 |