추천시스템

    [python] 코사인 유사도를 이용한 추천시스템 - 기초

    코사인 유사도는 벡터의 '방향'이라는 특징으로만 벡터간 유사도를 구할 수 있습니다. 유클리드 거리는 방향은 무시한 채, 거리가 얼마나 가까운지에 기반하여 추천 시스템의 엔진이 되었죠. 두 추천 알고리즘 모두 완벽하거나 현재 이상적으로 활발하게 사용되는 추천 시스템은 아닙니다. 하지만 다른 고급(?) 알고리즘의 기초가 되는 만큼 간단하게 이해하고 넘어가는 것이 좋다고 생각합니다. 또한 NLP를 처음 공부한다면, Bag of Words에 기반한 단어 표현 방법인 Document Term Matrix, TF-IDF 등과 같이 단어를 수치화할 수 있는 방법을 알고 있다면, 코사인 유사도는 위 표현식에 아주 적용하기 쉬운 알고리즘입니다. 이를 기반으로 "문서의 유사도"를 구하는 게 가능합니다. 코사인 유사도는 기..

    [python] 유클리드 거리 (Euclidean Distance) - 기초

    유클리드 거리는 크기로만 비교한다는 명확한 단점이 있어서 사실 추천시스템에서 유용한 방법은 아니라고 알려져있다. 하지만 선형대수 관점에서 유클리드 거리가 단순히 크기만 뜻하는 것이 아니라, 현실 세계에서 어떻게 접목되고 활용되는지 알 수 있는 것만으로도 큰 도움이 되리라 생각한다. 또한 시도해보는 것 자체만으로 다른 개념을 이해할 때 큰 도움이 되리라 생각한다. 엑셀 테이블에 고객의 데이터가 저장되어 있다고 가정해보자. 이를 테면 아래와 같은 테이블처럼 고객 데이터가 있을 때, 이 데이터를 euclidean distance 개념에 입각해서 어떻게 활용할 수 있을까? 고객명 키 몸무게 나이 성별 박미영 160 50 23 여성 아이윳 155 48 27 여성 이순신 175 71 31 남성 강감찬 176 75..