수즐 커뮤니티

사용자-문서 유사도(Recommendation Score)

개요

각 사용자에게 적절한 뉴스피드를 생성하는 과정에 앞서, 본 문서에서는 사용자와 문서 간의 관련성을 수식화하는 과정에 대하여 서술한다.

데이터 포맷

사용자 관심분야 측정을 통해, 각 사용자의 관심 분야는 문서의 주제를 나타내는 방식과 동일한 형태로 표현할 수 있다. 즉, 각 벡터 간의 유사도 측정이 가능하다. 사용자와 문서가 공통적으로 갖는 데이터 포맷은 다음과 같다.

LDA Topic Format

# (토픽 넘버, 성분 비율)
ToL = [
(1, 0.16926806), 
(2, 0.0), 
(3, 0.04034211), 
(4, 0.0), 
(5, 0.0), 
(6, 0.02776434),
...
]

Tag Format

# 성분 비율로 정렬 후, 상위 N개 추출
TaL = {IT:0, 컴터:3, 공모전:24, 동아리:19,...}

사용자-문서 유사도

사용자와 문서 간의 유사도를 구하는 공식은 다음과 같다. (X는 불확정 변수)

Topic Similarity(ToS)

사용자와 문서 간의 LDA Topic 유사도를 나타내는 변수이다. 두 벡터간의 유사도를 판단하기 위해 Cosine Similarity를 사용한다. 사용자와 문서의 ToL(Topic List)이 다음과 같이 주어졌을 때, 다음과 같이 유사도를 구할 수 있다.

단, 코사인 유사도의 경우, 공식의 특성상 음수 값이 나올 수 있기 때문에 아래와 같이 처리를 하여 0 ~ 1 사이의 결과로 고정시킨다.

Tag Similarity(TaS)

사용자와 문서 간의 보유한 태그 유사도를 나타내는 변수이다. 태그의 경우, 각 태그에 대한 가중치 정보를 갖고 있지 않기 때문에 다음과 같이 TaL(태그 리스트)의 교집합 값을 통해 결과를 도출한다.

Issue Score(IS)

해당 게시물의 인기도를 나타내는 변수이다. 인기도의 지표로 사용되는 수치는 해당 단일 글의 "좋아요" 횟수조회수이다.

MaxInterests : 현재까지 모든 게시물 중, 최대 "좋아요" 수 MaxViews : 현재까지 모든 게시물 중, 최대 조회수 Interests: 현재 게시물의 좋아요 수 Views: 현재 게시물의 조회수 X: 불확정 변수

rand(X)

뉴스피드에 지속적으로 새로운 글을 표출하기 위한 어떠한 변수에도 종속되지 않는 랜덤 변수이다.

except(X)

관리자 혹은 시스템이 직접 뉴스피드 생성에 관여하고 접근할 수 있도록 하기 위해 존재하는 예외 변수이다. 초값은 0으로 되어 있다. 해당 변수는 다음과 같은 형태로 사용된다.

  • SOOJLE 메인 공지사항

  • 학사 공지를 비롯한 교내 중요사항 공지

Last updated