안녕하세요 이번엔 SVD를 이용한 추천 시스템을 소개해 보려고 합니다.
그전에 SVD에 대해 간략히 소개해드리겠습니다.
저는 이분의 글을 참고하여 개념을 익혔지만 사실 수학적인 부분은 깊게 이해하지 못했기 때문에 추천시스템을 활용하기 위한 정도만 학습하였고, 제 이해를 바탕으로 글을 작성하는 것이기 때문에 깊은 이해를 원하시면 위의 링크나 따로 검색을 이용해 주세요!!
* 배경 지식
먼저 고유값 분해(EVD)가 있습니다. 고유값 분해는 정방행렬에 대해서만 적용 가능하여 한계가 존재합니다.
따라서 정방 행렬이 아닌 m x n 행렬에 적용될 수 있게 일반화된 EVD가 SVD 입니다.
즉, 특이값 분해(Singular Value Decomposition, SVD)의 정의는 임의의 m x n 차원의 행렬 A에 대하여 행렬을 분해할 수 있는 방법 중에 하나입니다.
* 특이값 분해의 기하학적 의미
직교하는 벡터 집합에 대하여, 선형 변환 후에 그 크기는 변하지만 여전히 직교할 수 있게되는 그 직교 집합은 무엇인가?
그리고 선형 변환 후의 결과는 무엇인가?
* 특이값 분해의 활용
특이값 분해는 분해되는 과정보다 분해된 행렬을 다시 조합하는 과정에서 그 응용력이 빛을 발합니다.
A행렬을 특이값 p개 만을 이용해 A' 라는 행렬로 부분복원이 가능합니다.
특이값의 크기에 따라 A의 정보량이 결정되기 때문에 값이 큰 몇개의 특이값들을 가지고도 충분히 유용한 정보를 유지할 수 있습니다.
특이값 분해를 통해 부분 복원을 하여 사진을 더욱 선명하게 만들 수도 있습니다.
SVD를 이용한 실습 예제를 보고 싶으시면 다음 글을 클릭해주세요↓↓↓↓↓
'코딩 기록 > PYTHON' 카테고리의 다른 글
[Python] SVD를 이용한 추천시스템 만들기 - 2 (0) | 2021.07.22 |
---|---|
[Python] 파이썬으로 오라클 데이터베이스 가져오기 (0) | 2021.04.27 |
[Python] 네이버 이메일 보내기 (0) | 2021.04.23 |
[Python] tesseract를 이용한 자동차 번호판 인식기 - 2 (0) | 2021.04.01 |
[Python] tesseract를 이용한 자동차 번호판 인식기 - 1 (0) | 2021.04.01 |