KR101319647B1 - 중첩 정보를 이용하여 효율적인 협업 필터링 프레임워크를 제공하는 방법 - Google Patents

중첩 정보를 이용하여 효율적인 협업 필터링 프레임워크를 제공하는 방법 Download PDF

Info

Publication number
KR101319647B1
KR101319647B1 KR1020110109296A KR20110109296A KR101319647B1 KR 101319647 B1 KR101319647 B1 KR 101319647B1 KR 1020110109296 A KR1020110109296 A KR 1020110109296A KR 20110109296 A KR20110109296 A KR 20110109296A KR 101319647 B1 KR101319647 B1 KR 101319647B1
Authority
KR
South Korea
Prior art keywords
user
users
similarity
items
query
Prior art date
Application number
KR1020110109296A
Other languages
English (en)
Other versions
KR20130044931A (ko
Inventor
김상욱
이상철
이시용
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Priority to KR1020110109296A priority Critical patent/KR101319647B1/ko
Publication of KR20130044931A publication Critical patent/KR20130044931A/ko
Application granted granted Critical
Publication of KR101319647B1 publication Critical patent/KR101319647B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0241Advertisements
    • G06Q30/0251Targeted advertisements
    • G06Q30/0254Targeted advertisements based on statistics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q30/00Commerce
    • G06Q30/02Marketing; Price estimation or determination; Fundraising
    • G06Q30/0201Market modelling; Market analysis; Collecting market data

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Finance (AREA)
  • General Physics & Mathematics (AREA)
  • Development Economics (AREA)
  • Accounting & Taxation (AREA)
  • Theoretical Computer Science (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Game Theory and Decision Science (AREA)
  • Algebra (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Probability & Statistics with Applications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

유저 기반 협업 필터링 프레임워크를 제공하기 위한 방법이 제공된다. 중첩 유저 정보를 이용한 유사도 계산 방법은 공통으로 레이팅한 아이템이 없는 유저들 간의 유사도를 계산하지 않는다. 중첩 레이팅 정보를 이용한 유사도 계산 방법은 전체 아이템들 중 양 유저들이 공통으로 레이팅한 아이템들의 점수들을 사용하여 양 유저들 간의 유사도를 계산한다. 전체 유저들 중 유사도 계산 대상 유저들이 선택되며, 유사도 계산 대상 유저들 각각의 질의 유저에 대한 유사도들이 계산된다. 계산된 유사도들에 기반하여 선택된 유저들 중 질의 유저와 유사한 성향을 갖는 적어도 하나의 유저가 추천된다. 상기의 유사도들은 질의 유저 및 유사도 계산 대상 유저들에 의해 아이템들에게 부여된 점수들에 기반하여 계산될 수 있다.

Description

중첩 정보를 이용하여 효율적인 협업 필터링 프레임워크를 제공하는 방법{METHOD FOR PROVIDING SCALABLE COLLABORATIVE FILTERING FRAMEWORK WITH OVERLAPPED INFORMATION}
아래의 실시예들은 협업 필터링 프레임워크를 제공하기 위한 방법에 관한 것이다.
중첩된 유저 정보 및 중첩된 레이팅 정보를 이용하여 효율적인 협업 필터링 프레임워크를 제공하는 방법이 개시된다.
최근 전자상거래(E-Commerce)의 성장으로 인하여 많은 상품(아이템) 및 서비스들이 온라인상에서 거래되고 있다. 시간적인 한정 때문에, 전자상거래를 이용하는 사용자들이 전자상거래 시스템에서 제공하는 모든 상품들을 다 확인할 수는 없다. 따라서, 대부분의 전자상거래 시스템은 사용자 개인에 맞는 상품을 소개해주는 추천 시스템을 가지고 있다
이러한 추천 시스템에서 추천하기 위한 방법 중 가장 널리 사용되는 것이 유저 기반 협업 필터링(user based collaborative filtering)이다. 유저 기반 협업 필터링은 과거에 유저들이 아이템(item)에 레이팅(rating)한 점수를 분석하여 유사한 성향을 가진 유저 집단을 찾고, 유저 집단의 유저에게 유저 집단의 다른 유저들이 높은 점수를 레이팅한 아이템을 추천해 준다.
그러나, 시스템 내의 유저 수 및 아이템 수가 많아짐에 따라 특정한 유저와 유사한 성향을 가진 다른 유저들을 찾는 과정에 많은 시간이 소요될 수 있다. 따라서 대부분의 협업 필터링에 기반한 추천 시스템은 주기적으로 오프라인에서 유저들 간의 유사도를 미리 계산해 놓는다. 유저들 간의 유사도가 미리 계산될 경우, 계산 성능이 개선될 수는 있지만, 변하는 유저의 성향이 실시간으로 반영되기 어려울 수 있다. 왜냐하면 전자상거래 시스템의 전체 아이템들 중 유저가 점수를 부여한 아이템의 개수는 상대적으로 많지 않기 때문에, 유저가 소수의 아이템들에게 새롭게 점수를 부여하면, 그 유저의 성향이 크게 변하기 때문이다. 정확한 추천을 하기 위하여 추천 시스템은 유저가 아이템에 점수를 부여 할 때마다 실시간으로 레이팅 정보를 반영해야 한다. 따라서 허용되는 검색 시간 내에 실시간으로 유사한 성향을 가진 유저를 찾는 방안이 요구된다.
추천 시스템이 이용하는 데이터 및 유사도 함수는 하기와 같은 세 가지의 특징적인 요소들을 사용할 수 있다.
1) 첫 번째 특징적인 요소는, 고차원 데이터이다. 추천 시스템에서, 유저 정보는 유저가 아이템들에게 부여한 점수의 벡터로 표현된다. 전자상거래 시스템 내에 존재하는 하나의 아이템을 하나의 차원으로 보면, 유저 정보는 아이템들의 개수만큼의 차원들으로 이루어진다.
2) 두 번째 특징적인 요소는, 성긴(sparse) 데이터이다. 유저가 레이팅하지 않은 아이템에는 레이팅 점수가 존재하지 않는다. 유저는 전자상거래 시스템 내에 존재하는 전체 아이템들 중 극히 일부에만 레이팅을 하기 때문이다.
3) 세 번째 특징적인 요소는, 행렬 공간(metric space)을 만족하지 않는 유사도 함수이다. 즉, 추천 시스템에서 사용하는 유사도 함수들은 행렬 공간을 만족하지 않는다.
일반적으로, 대용량 데이터에서 유사한 객체를 빠르게 찾기 위하여 인덱싱이 사용된다. 그러나 이러한 인덱싱이 추천 시스템 환경에 적용되기는 어렵다. 이는, 하기아 같은 세 가지의 이유들 때문이다.
1) 첫 번째 이유는, 추천 시스템 환경에서 사용하는 데이터는 고차원의 데이터이기 때문에 추천 시스템 환경에 있어서의 인덱싱의 효율은 순차 검색(sequential scan)에서의 인덱싱의 효율에 비해 낮다는 것이다. 여기에서, 순차 검색이란, 유사한 성향을 갖는 유저를 찾기 위해 사용되는 가장 기본적인 방법으로서, 특정한 유저와 유사한 성향을 갖는 유저를 찾기 위해 상기의 특정한 유저 및 다른 모든 유저들 각각 간의 유사도들을 순차적으로 계산하는 방법이다.
2) 두 번째 이유는, 데이터의 객체(유저)간의 유사도가 고르게 분포되지 않기 때문에 트리의 검색 성능이 낮아진다는 것이다.
3) 마지막 이유는, 인덱싱 구조인 R-트리 및 M-트리 모두 유사도 함수가 행렬 공간을 만족하지 않는 경우에는 사용될 수 없다는 것이다.
따라서, 인덱싱 외의, 유사한 성향의 유저를 빠르게 찾기 위한 다른 방법이 요구된다.
유저 기반 협업 필터링의 성능을 개선한 다양한 방법이 제안되었다. 이 중 대표적인 방법으로서, 아이젠테이스트(Eigentaste) 방법을 들 수 있다. Eigentaste 방법은 주성분 분석(Principal Component Analysis; PCA)를 이용하여 레이팅 행렬(rating matrix)를 축소시킴으로서 유저 기반 협업 필터링의 성능을 향상시키는 방법이다.
Eigentaste 방법은 계산 과정을 온라인 및 오프라인으로 나누어 진행한다. Eigentaste 방법에서, 추천 시스템의 레이팅 행렬은 많은 개수의 널(null) 값들을 갖는 희소 레이팅스 행렬(sparse ratings matrix)를 나타낸다.
Eigentaste 방법은 오프라인 과정에서, PCA를 적용하여 레이팅 행렬을 축소함으로써 유저들을 그룹화한다. 또한, Eigentaste 방법은, 온라인 과정에서, 새로운 유저가 들어왔을 때 고유벡터(eigenvector)를 사용하여 축소된 레이팅 행렬 내에서 새로 들어온 유저의 그룹을 찾은 후, 상기의 그룹의 유저들이 가장 선호하는 아이템을 새로운 유저에게 추천한다.
상술된 Eignetaste 방법을 비롯한 기존의 방법들은 검색 성능을 향상시킬 수 있지만, 검색 정확도를 낮추는 문제를 발생시킬 수 있다. 특정한 방법의 검색 정확도란, 상기의 특정한 검색 방법이 도출하는 결과가 정답에 일치하는 비율을 의미한다. 여기에서, 정답이란 순차 검색 방법이 사용되었을 경우의 도출된 결과를 의미한다. 또한, 기존의 방법들은 검색 성능 및 추천의 정확도를 향상시키지만 기존의 데이터를 변형시키는 문제를 발생시킬 수 있다.
본 명세서에서는 유저에게 정확한 추천을 해주기 위하여 정확도를 유지하면서도 성능을 개선할 수 있는 유저 기반 협업 필터링 방법이 제공된다. 후술될 유저 기반 협업 필터링 방법은 기존의 데이터를 변형하지 않은 채 계산 성능을 향상시킬 수 있다. 따라서, 후술될 유저 기반 협업 필터링 방법은 기존의 방법들이 사용하는 데이터에 적용될 수 있으며, 기존의 방법 및 본 발명의 실시예에 따른 유저 기반 협업 필터링 방법이 함께 사용될 수도 있다.
본 발명의 일 실시예는 공통으로 레이팅한 아이템이 없는 유저들 간의 유사도를 계산하지 않는 중첩 유저 정보를 이용한 유사도 계산 방법을 제공할 수 있다.
본 발명의 일 실시예는 전체 아이템들 중 양 유저들이 공통으로 레이팅한 아이템들의 점수들을 사용하여 양 유저들 간의 유사도를 계산하는 중첩 레이팅 정보를 이용한 유사도 계산 방법을 제공할 수 있다.
본 발명의 일 측에 따르면, 전체 유저들 중 유사도 계산 대상 유저들을 선택하는 단계 - 상기 유사도 계산 대상 유저들은 질의 유저가 점수를 부여한 아이템들 중 적어도 하나의 아이템에 점수를 부여한 유저들임 -, 상기 유사도 계산 대상 유저들 각각의 상기 질의 유저에 대한 유사도들을 계산하는 단계 및 상기 계산된 유사도들에 기반하여 상기 선택된 유저들 중 상기 질의 유저와 유사한 성향을 갖는 적어도 하나의 유저를 추천하는 단계를 포함하는, 유저 기반 협업 필터링 방법이 제공된다.
상기 전체 유저들 중 상기 유사도 계산 대상 유저들로서 선택되지 않은 유저의 상기 질의 유저에 대한 유사도는 0일 수 있다.
상기 적어도 하나의 유저를 추천하는 단계는, 상기 계산된 유사도들의 내림차순으로 상기 전체 유저들의 목록을 정렬하는 단계 및 상기 정렬된 목록 내에서 미리 지정된 수의 상위 유저들을 추천하는 단계를 포함할 수 있다.
상기 유사도들은 코사인 유사도 계산에 기반하여 계산될 수 있다.
상기 유사도들은 상기 질의 유저 및 상기 유사도 계산 대상 유저들에 의해 상기 아이템들에게 부여된 점수들에 기반하여 계산될 수 있다.
상기 계산된 유사도들은 순차 검색 방안을 적용하여 계산된 상기 유사도 계산 대상 유저들 각각의 상기 질의 유저에 대한 유사도들과 동일할 수 있다.
상기 유사도들을 계산하는 단계는, 상기 유사도 계산 대상 유저 및 상기 질의 유저가 공통으로 점수를 부여한 아이템들을 식별하는 단계, 상기 식별된 아이템들 각각에 대해 상기 유사도 계산 대상 유저가 부여한 제1 점수들 및 상기 식별된 아이템들 각각에 상기 질의 유저가 부여한 제2 점수들을 사용하여 상기 유사도 계산 대상 유저의 상기 질의 유저에 대한 유사도의 분자 값을 계산하는 단계 및 상기 유사도 계산 대상 유저의 유저 벡터의 놈 값 및 상기 질의 유저의 질의 유저 벡터의 놈 값을 곱함으로써 상기 유사도의 분모 값을 계산하는 단계를 포함할 수 있다.
상기 유저 벡터는 상기 유사도 계산 대상 유저가 상기 아이템들에 부여한 점수들의 벡터일 수 있다.
상기 질의 유저 벡터는 상기 질의 유저가 상기 아이템들에 부여한 점수들의 벡터일 수 있다.
상기 식별된 아이템들 중 k 번째 식별된 아이템의 곱 값은 상기 k 번째 식별된 아이템의 상기 제1 점수 및 상기 제2 점수의 곱일 수 있다. k는 1 이상 n 이하의 정수일 수 있다. n은 상기 식별된 아이템들의 개수일 수 있다. 상기 분자 값은 상기 식별된 아이템들의 곱 값들의 합일 수 있다.
상기 유사도의 분자 값을 계산하는 단계는, 상기 식별된 아이템들 중 곱 값이 계산되지 않은 아이템을 선택하는 단계, 상기 선택된 아이템의 제1 점수 및 제2 점수를 곱하여 상기 선택된 아이템의 곱 값을 계산하는 단계 및 상기 계산된 곱 값을 상기 유사도의 분자 값에 더하는 단계를 포함할 수 있다.
공통으로 레이팅한 아이템이 없는 유저들 간의 유사도를 계산하지 않는 중첩 유저 정보를 이용한 유사도 계산 방법이 제공된다.
전체 아이템들 중 양 유저들이 공통으로 레이팅한 아이템들의 점수들을 사용하여 양 유저들 간의 유사도를 계산하는 중첩 레이팅 정보를 이용한 유사도 계산 방법이 제공된다.
도 1은 본 발명의 일 예에 따른 유저가 아이템에 부여한 레이팅 점수 및 유저들 간의 유사도를 설명한다.
도 2는 유저 간 유사도 계산 방안을 설명한다.
도 3은 순차 검색 방안의 레이팅 테이블이다.
도 4는 순차 검색 방안의 알고리즘의 슈도 코드이다.
도 5는 본 발명의 일 실시예에 따른 유저 기반 협업 필터링 방법의 흐름도이다.
도 6은 본 발명의 일 예에 따른 중첩된 유저 방안의 레이팅 테이블이다.
도 7은 본 발명의 일 예에 따른 중첩된 유저 방안에서 사용되는 자료 구조를 설명한다.
도 8은 본 발명의 일 예에 따른 중첩된 유저 방안의 알고리즘의 슈도 코드이다.
도 9는 본 발명의 일 예에 따른 중첩된 레이팅 방안의 레이팅 테이블이다.
도 10은 본 발명의 일 예에 따른 순차적 방안 및 중첩된 레이팅 방안의 계산 과정을 설명하고, 양 방안들의 계산 결과들을 비교한다.
도 11은 본 발명의 일 예에 따른 중첩된 레이팅 방안에서 사용되는 자료 구조를 설명한다.
도 12는 본 발명의 일 예에 따른 중첩된 레이팅 방안의 알고리즘의 슈도 코드이다.
도 13은 본 발명의 일 예에 따른 검색 성능의 비교를 위해 사용된 데이터를 나타낸다.
도 14는 본 발명의 일 예에 따른 랜덤 k-NN 질의가 사용되었을 때의 검색 성능을 나타낸다.
도 15는 본 발명의 일 예에 따른 100k 레이팅들 데이터가 사용되었을 때의 k-NN 질의의 검색 성능을 나타낸다.
도 16은 본 발명의 일 예에 따른 1M 레이팅들 데이터가 사용되었을 때의 k-NN 질의의 검색 성능을 나타낸다.
도 17은 본 발명의 일 예에 따른 10M 레이팅들 데이터가 사용되었을 때의 k-NN 질의의 검색 성능을 나타낸다.
이하에서, 본 발명의 일 실시예를, 첨부된 도면을 참조하여 상세하게 설명한다. 그러나, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다. 각 도면에 제시된 동일한 참조 부호는 동일한 부재를 나타낸다.
전체 유저들은 유저 기반 협업 필터링 시스템 내의 모든 유저들을 의미할 수 있다. 전체 아이템들은 유저 기반 협업 필터링 시스템 내의 모든 아이템들을 의미할 수 있다. 질의 유저(query)는 전체 유저들 중 자신과 유사한 유저를 추천 받기 원하는 유저를 나타낼 수 있다.
하기에서, "A 및 B 간의 유사도" 및 "A의 B에 대한 유사도"는 동일한 의미로 간주될 수 있다. 또한, "아이템에 레이팅하였다"는 "아이템에 레이팅 점수를 부여하였다"와 동일한 의미로 간주될 수 있다.
도 1은 본 발명의 일 예에 따른 유저가 아이템에 부여한 레이팅 점수 및 유저들 간의 유사도를 설명한다.
왼쪽의 u 1, u 2u 3는 각각 유저의 식별자를 나타낸다. 상단의 i 1, i 2, i 3, i 4i 5는 각각 아이템의 식별자를 나타낸다. 여기에서, 아이템은 영화를 나타낸다. 유저 및 아이템 사이의 숫자는, 유저가 아이템에 부여한 레이팅 점수를 나타낸다. 유저 및 아이템 사이의 "X" 기호는 유저가 아이템에 레이팅을 하지 않았음을 나타낸다.
종래의 유사도 계산 방법은 질의 유저와 유사한 유저를 찾기 위해, 질의 유저 및 모든 유저들 각각 간의 유사도를 계산한다.
후술될 본 발명의 실시예들에서 제안되는 방안은 질의 유저 및 모든 유저들 각각 간의 유사도를 계산하지 않고, 질의 유저가 레이팅한 아이템과 동일한 아이템에 레이팅한 유저들만을 대상으로 양자 간의 유사도를 계산함으로써 계산 효율을 높일 수 있다. 또한, 양 유저들이 공통으로 레이팅한 아이템이 존재하지 않는 경우, 상기의 양 유저들은 유사하지 않은 유저들인 것으로 간주될 수 있다. 말하자면, 양 유저들 간의 유사도는 0이 될 수 있다.
예컨대, 도 1에서 u 1u 2에 의해 공통으로 레이팅된 아이템은 존재하지 않는다. 따라서 u 1u 2는 서로 유사하지 않고, u 1u 2 간의 유사도는 계산될 필요가 없다. 이하, 공통으로 레이팅한 아이템이 없는 유저들 간의 유사도를 계산하지 않는 방안을 중첩 유저 정보를 이용한 유사도 계산(similarity calculation with overlapped user information) 방안으로 칭한다. 중첩 유저 정보를 이용한 유사도 계산 방안을 중첩된 유저(overlapped user) 방안으로 약술한다.
양 유저들이 공통으로 레이팅한 아이템이 존재하는 경우에도, 전체 아이템들 중 양 유저들이 공통으로 레이팅한 아이템들의 점수들을 사용하여 양 유저들 간의 유사도를 계산할 수 있기 때문에, 양 유저들 간의 유사도를 계산하기 위해 양 유저들 각각이 레이팅한 아이템들의 레이팅 점수들이 모두 사용될 필요는 없다.
예컨대, 도 1에서, u 1u 3 간의 유사도는, u 1u 2가 공통으로 레이팅한 i 1i 3의 레이팅 점수를 사용하여 계산될 수 있다. 반면, u 1u 3 간의 유사도를 계산함에 있어서, u 3i 5에 부여한 레이팅 점수는 불필요하다.
상술된 것과 같은, 전체 아이템들 중 양 유저들이 공통으로 레이팅한 아이템들의 점수들을 사용하여 양 유저들 간의 유사도를 계산하는 방안을 중첩 레이팅 정보를 이용한 유사도 계산(similarity calculation with overlapped rating information) 방안으로 칭한다. 중첩 레이팅 정보를 이용한 유사도 계산 방안을 중첩된 레이팅 방안으로 약칭한다.
중첩 레이팅 정보를 이용한 유사도 계산은 유저들 간의 유사도를 계산하기 위해 요구되는 계산량을 감소시킴으로써 유저들 간의 유사도를 빠르고 정확하게 계산할 수 있다.
후술될 실험 결과에서, 제안된 방안은 데이터의 종류에 따라 2 내지 30 배의 성능 향상을 도출한다. 또한, 제안된 방안은 동적으로 변화하는 상황을 유사도 계산에 실시간으로 적용하여, 특정한 유저와 유사한 성향을 갖는 유저들을 정확하계 찾을 수 있다. 즉, 제안된 방안은 동적으로 변하는 상황을 실시간으로 반영하면서도, 우수한 계산 성능을 도출할 수 있다.
하기에서, 도 2내지 도 4를 참조하여, 기존의 유사도 계산 방안이 설명된다.
도 2는 유저 간 유사도 계산 방안을 설명한다.
m 명의 유저들 각각이 n 개의 아이템들 각각에 레이팅한 정보(210)는 m 행, n 열(m x n)의 행렬 R(220)로 나타낼 수 있다.
행렬 R(220)은 하기의 수학식 1과 같이 표현될 수 있다.
Figure 112011083527809-pat00001
일반적으로 추천 시스템에서 사용되는 유사도 함수로서, 코사인 유사도(cosine similarity), 상관 계수(correlation coefficient) 및 자카드 계수(jaccard coefficient) 등이 있다.
하기의 실시예에서는 상기의 유사도 함수들 중 가장 보편적인 코사인 유사도가 사용될 수 있다.
코사인 유사도는 하기의 수학식 2 및 수학식 3과 같이 표현될 수 있다.
Figure 112011083527809-pat00002
Figure 112011083527809-pat00003
수학식 2 및 수학식 3에서, u a u b 는 유저들 각각의 식별자이다. Sim(u a , u b )는 코사인 유사도를 사용하였을 때 계산된 u a u b 간의 유사도이다. r ai r bi u a u b 가 각각 아이템 i에 부여한 레이팅 점수이다. u a 가 아이템 i에 레이팅하지 않은 경우, r ai 의 값은 0이다. n은 전체 아이템들의 개수이다.
|u a |는 벡터 u a 의 놈(norm)이다. 벡터 u a 는 유저 u a n 개의 전체 아이템들에게 부여한 레이팅 점수들의 벡터이다. 이하, 한 유저가 전체 아이템들 각각에게 부여한 레이팅 점수들의 벡터를 상기 유저의 유저 벡터로 명명한다. 예컨대, 도 2에 따르면, 벡터 u 1은 (2, 0, 4, 0, 0, 5, 0)이며 행렬 R의 제1 행에 대응할 수 있다.
수학식 2에서 나타난 것처럼, 양 유저들 간의 유사도는 분자 및 분모로 구분될 수 있다. 이하, 수학식 2의 우측 항의 분모에 대응하는 부분(예컨대, 양 유저들의 유저 벡터들 각각의 놈 값들의 곱)을 "유사도의 분모"로 명명한다. 또한, 수학식 2의 우측 항의 분자에 대응하는 부분(예컨대, n 개의 아이템들 각각에 대해, 양 유저들에 의해 부여된 레이팅 점수들의 곱을 계산하고, n 개의 아이템들 각각의 계산된 곱들을 모두 합한 값)을 "유사도의 분자"로 명명한다.
도 3은 순차 검색 방안의 레이팅 테이블이다.
u q 는 질의 유저의 식별자(identifier; ID)이다. u 1, u 2, u 3, u 4u 5는 유저들 각각의 ID이다. i 1, i 2, i 3, i 4, i 5, i 6i 7은 아이템들 각각의 ID이다.
순차 검색 방안은 질의 유저 및 전체 유저들 각각 간의 유사도들을 계산하여 질의 유저와 유사한 유저를 찾는다.
순차 검색 방안은, "X"를 포함한 레이팅 테이블 내의 모든 항목(예컨대, 레이팅 점수)들을 유사도 계산을 위해 사용한다. 도 3에서, u q u 2 간에는 공통으로 레이팅된 아이템이 존재하지 않는다. 따라서, u q u 2 간의 유사도는 0이다. 순차 검색 방안은 u q u 2 간의 유사도가 실제로는 계산될 필요가 없음에도 불구하고 u q u 2 간의 유사도를 계산한다.
상술된 것처럼, 순차 검색 방안은 공통으로 레이팅한 아이템이 없는 유저들 간의 유사도를 계산하기 때문에, 계산 성능에 있어서 나쁜 결과를 도출할 수 있다.
도 4는 순차 검색 방안의 알고리즘의 슈도 코드이다.
도 4에서 도시된 코드(400)는 순차 검색 방안의 슈도 코드(pseudocode)일 수 있다.
R은 유저가 아이템에 부여한 레이팅 점수의 행렬이다. m은 모든 유저들의 수이다. n은 모든 아이템들의 개수이다. u q 는 질의 유저의 ID이며, User_sim_array는 유저 ID 및 계산된 유사도를 저장하는 배열이다. 여기에서, 계산된 유사도란 u q 에 대한 유저 ID가 나타내는 특정한 유저의 유사도, 즉 u q 및 특정한 유저 간의 유사도이다.
메쏘드(method) SequentialScan는 양 유저들 간의 유사도를 계산하는 메인 함수이다. 메쏘드 SortingUser_sim_array를 유사도를 기준으로 내림차순으로 정렬하는 함수이다. 메쏘드 Sorting은 다양한 정렬 방법들을 사용하여 User_sim_array를 정렬할 수 있다.
코드(410)는 User_sim_array의 타입(type)의 정의를 나타낸다. 여기에서, 변수 userID는 유저 ID를 나타낸다.
코드(420)는 메쏘드 SequentialScan 내에서 질의 유저 및 모든 유저들 각각 간의 유사도들을 차례로 계산하여, 계산된 유사도들을 User_sim_array 내에 넣는 과정을 나타낸다.
코드(430)는 계산된 유사도를 기준으로, User_sim_array 내의 유저들 간의 순서를 정렬하는 과정을 나타낸다.
도 5는 본 발명의 일 실시예에 따른 유저 기반 협업 필터링 방법의 흐름도이다.
본 실시예의 유저 기반 협업 필터링 방법은 중첩된 유저 방안 및 중첩된 레이팅 방안이 적용된 것이다.
단계(510)에서, 전체 유저들 중 유사도 계산 대상 유저들이 선택된다.
유사도 계산 대상 유저들은 질의 유저가 점수를 부여한 아이템들 중 적어도 하나의 아이템에 점수를 부여한 유저들이다.
전체 유저들 중 유사도 계산 대상 유저들로서 선택되지 않은 유저의 질의 유저에 대한 유사도는 0일 수 있다.
단계(510)에서, 도 6 내지 도 8을 참조하여 후술될 중첩된 유저 방안이 사용될 수 있다.
단계(520)에서, 유사도 계산 유저들 각각의 질의 유저에 대한 유사도들이 계산된다. 상기의 유사도들은 코사인 유사도 계산에 기반하여 계산될 수 있다.
단계(520)에서, 도 9 내지 도 9를 참조하여 후술될 중첩된 레이팅 방안이 사용될 수 있다. 예컨대, 유사도들은 질의 유저 및 선택된 유저들에 의해, 특정 아이템들에게 부여된 점수들에 기반하여 계산될 수 있다. 여기에서, 특정 아이템들은 전체 아이템들 중 질의 유저가 점수를 부여한 아이템들을 의미한다.
중첩된 레이팅 방안의 특성에 의해, 단계(520)에서 계산된 유사도들은 전술된 순차 검색 방안을 적용하여 계산된 유사도 계산 대상 유저들 각각의 질의 유저에 대한 유사도들과 동일하다.
단계(530)에서, 계산된 유사도들에 기반하여 선택된 유저들 중 질의 유저와 유사한 성향을 갖는 적어도 하나의 유저가 추천된다.
단계(530)은 단계(531) 및 단계(532)를 포함할 수 있다.
단계(531)에서, 계산된 유사도들의 내림차순으로 전체 유저들의 목록이 정렬된다.
단계(532)에서, 정렬된 목록 내에서 미리 지정된 수의 상위 유저들이 추천된다.
단계(520)는 단계(530), 단계(540) 및 단계(550)를 포함할 수 있다. 또한, 단계(530)은 단계(531), 단계(532) 및 단계(533)을 포함할 수 있다. 단계(530), 단계(540), 단계(550), 단계(531), 단계(532) 및 단계(533)에 대해서, 도 11을 참조하여 하기에서 상세히 설명된다.
도 6은 본 발명의 일 예에 따른 중첩된 유저 방안의 레이팅 테이블이다.
상술된 것과 같이, 순차 검색 방안은 유사도가 0인 유저들 간의 유사도 또한 계산한다. 따라서, 순차 검색 방안이 사용될 경우, 유사도 계산에 있어서 오버헤드가 발생한다. 중첩된 유저 방안은 이러한 오버헤드를 해결하기 위해, 특정한 상기의 양 유저들이 공통으로 레이팅한 아이템이 존재할 경우에만 상기의 유저들 간의 유사도를 계산할 수 있다..
u q 는 질의 유저의 식별자이다. u 1, u 2, u 3, u 4u 5는 유저들 각각의 ID이다. i 1, i 2, i 3, i 4, i 5, i 6i 7은 아이템들 각각의 ID이다.
질의 유저 u q i 1, i 3i 6에 레이팅하였다. 단계(510)에서, u q 가 레이팅한 아이템들의 목록을 이용하여 u q 와 동일한 아이템에 레이팅한 유저들이 유사도 계산 대상 유저로들로서 선택될 수 있다. 도 3의 테이블에 따르면, u q 에 대한 유사도 계산 대상 유저들은 u 1, u 3u 5이다. u 3u 5는 각각 u q 와 동일한 아이템에 레이팅하지 않았다. 따라서, u q u 3(또는, u 5) 간의 유사도는 0이고, 단계(530)에서 u q 에 대한 u 3(또는, u 5)의 유사도는 계산될 필요가 없다.
도 7은 본 발명의 일 예에 따른 중첩된 유저 방안에서 사용되는 자료 구조를 설명한다.
U q 가 나타내는 배열은 질의 유저 벡터(710)이다. 질의 유저 벡터(710)의 아래에 도시된 아이템 식별자 배열(720) 및 아이템 별 유저 목록(730)들은 중첩된 유저 방안에서 사용되는 자료 구조(data structure)이다. 가장 아래의 유저 목록(740)은 질의 유저 u q 와 동일한 아이템에 레이팅한 유저들을 검색하기 위해 사용되는 저장 공간이다.
질의 유저 벡터(710)는 전체 아이템들 중 질의 유저가 레이팅한 아이템들을 나타내는 벡터이다. 질의 유저 벡터(710)에서 u q 가 레이팅한 아이템들인 i 1, i 3i 6은 진하게 표시되었다.
아이템 식별자 배열(720)은 전체 아이템들 각각의 ID들에 대응하는 배열이다. 아이템 식별자 배열(720)의 요소들은 각각 아이템 별 유저 목록(730)를 가리키는 포인터이다. 아이템 식별자 배열(720)에서, u q 가 레이팅한 아이템들인 i 1, i 3i 6은 진하게 표시되었다.
아이템 별 유저 목록(730)들 각각은 하나의 아이템에 레이팅한 유저들의 목록이다. 도시된 6 개의 아이템 별 유저 목록(730)들은 각각 i 1, i 2, i 3, i 4, i 5 또는 i 6 에 레이팅한 유저들을 나타낸다. 아이템 별 유저 목록(730)들 중 u q 가 레이팅한 아이템들인 i 1, i 3i 6에 대응하는 아이템 별 유저 목록(730)들은 진하게 표시되었다. 진하게 표시된 아이템 별 유저 목록(730)들은 각각 단계(510)의 유사도 계산 대상 유저들 중 하나의 유저에 대응한다.
유저 목록(740)은 i 1, i 3i 6에 레이팅한 유저들을 나타내는 아이템 별 유저 목록(730)들 내의 유저들을 합집합하여 생성된 목록이다. 유저 목록(740)은 단계(510)의 유사도 계산 대상 유저들을 나타낸다. 전체 유저들 중 유저 목록(740) 내에 포함되지 않은 유저의 질의 유저에 대한 유사도는 0이다.
단계(510)는, 1) 질의 유저 벡터(710)를 사용하여 질의 유저가 레이팅한 아이템들을 식별하는 단계, 2) 각각의 식별된 아이템에 레이팅한 유저들을 나타내는 아이템 별 유저 목록(730)들을 식별하는 단계 및 3) 식별된 아이템 별 유저 목록(730)들 내의 유저들을 합집합함으로써 유저 목록을 생성하는 단계를 포함할 수 있다. 여기서, 유저 목록(740) 내의 유저들이 단계(510)의 선택된 유사도 계산 대상 유저들이다.
단계(520)는, 유저 목록(730) 내의 유저들 각각의 질의 유저에 대한 유사도를 계산하는 단계를 포함할 수 있다. 단계(520)가 종료하면, 질의 유저와 유사한 유저들이 판별될 수 있다.
상술된 단계(510) 및 단계(530)는 유사도가 0이 아닌 질의 유저 및 모든 유저를 각각 간의 유사도를 계산하므로, 검색 정확도를 100% 만족시킬 수 있다.
도 8은 본 발명의 일 예에 따른 중첩된 유저 방안의 알고리즘의 슈도 코드이다.
도 8에서 도시된 코드(800)는 중첩된 유저 방안의 슈도 코드일 수 있다.
R은 유저가 아이템에 부여한 레이팅 점수의 행렬이다. m은 모든 유저들의 수이다. n은 모든 아이템들의 개수이다. u q 는 질의 유저의 ID이며, User_sim_array는 유저 ID 및 계산된 유사도를 저장하는 배열이다. 여기에서, 계산된 유사도란 u q 에 대한 유저 ID가 나타내는 특정한 유저의 유사도, 즉 u q 및 특정한 유저 간의 유사도이다. User_pointer_array는 해당 아이템을 레이팅한 유저 목록을 저장하는 배열이다. Check_array는 유저가 검색 대상인지를 여부를 저장하는 배열이다.
성능 향상을 위하여, 유저 목록들을 모아서 따로 합집합 하는 방법이 아닌, 전체 유저 목록을 생성한 후, 생성된 전체 유저 목록 내의 모든 유저들을 거짓(false)으로 초기화 한 후, 유사도 계산 대상 유저를 참(true)으로 변경하는 방법이 사용될 수 있다.
메쏘드 Overlapped_user는 양 유저들 간의 유사도를 계산하는 메인 함수이다. 메쏘드 SortingUser_sim_array를 유사도를 기준으로 내림차순으로 정렬하는 함수이다. 메쏘드 Sorting은 다양한 정렬 방법들을 사용하여 User_sim_array를 정렬할 수 있다.
코드(810)는 User_sim_array의 타입의 정의를 나타낸다. User_sim_array는 변수 userIDsim를 포함한다. 여기에서, 변수 userID는 유저 ID를 나타낸다. 변수 sim은 유저 ID가 나타내는 유저의 질의 유저 u q 에 대한 유사도를 나타낸다.
코드(820)는 유사도 계산 대상 유저를 찾는 과정을 나타낸다. 코드(820)에서, 전체 유저 목록이 생성된 후, 특정한 유저가 유사도 계산 대상 유저이면, 상기의 특정한 유저를 나타내는 요소에 참을 대입한다. 코드(820)는 단계(510)에 대응할 수 있다.
코드(830)는 질의 유저 및 유사도 계산 대상 유저 간의 유사도를 계산하는 과정을 나타낸다. 코드(830)는 단계(520)에 대응할 수 있다.
코드(840)는 계산된 유사도를 기준으로, User_sim_array 내의 유저들 간의 순서를 정렬하는 과정을 나타낸다. 코드(840)는 단계(531)에 대응할 수 있다.
도 9는 본 발명의 일 예에 따른 중첩된 레이팅 방안의 레이팅 테이블이다.
도 6에서, u q는 질의 유저의 식별자(identifier; ID)이다. u 1, u 2, u 3, u 4u 5는 유저들 각각의 ID이다. i 1, i 2, i 3, i 4, i 5, i 6i 7은 아이템들 각각의 ID이다.
각 유저는 각 아이템에 레이팅할 수 있다. 유저가 레이팅한 아이템에는 레이팅 점수가 표시되었다. 예컨대, u 1i 1에 레이팅한 레이팅 점수는 "2"이다. 유저가 레이팅하지 않은 아이템에는 "X"가 표시되었다. 예컨대, u 1i 2, i 4, i 5i 7에는 레이팅하지 않았다.
도 6 내지 도 8를 참조하여 전술된 중첩된 유저 방안은, 유사도 계산 대상 유저들이 선택된 후, 질의 유저 및 유사도 계산 대상 유저들이 레이팅한 모든 아이템들이 유사도를 계산하기 위해 사용된다. 반면, 코사인 유사도(cosine similarity) 계산은 양 유저들이 공통으로 레이팅한 아이템의 레이팅 점수만을 이용하여 양 유저들 간의 유사도를 계산할 수 있다.
도 9에서, 레이팅 테이블 중 진하게 표시된 부분은 중첩된 유저 방안을 사용하여 유사도가 계산될 때 사용되는 부분을 나타낸다. 레이팅 테이블 중 사각형으로 둘러쌓인 부분은 중첩된 레이팅 방안을 사용하여 유사도가 계산될 때 사용되는 부분을 나타낸다.
중첩된 유저 방안이 사용될 경우, u 1, u 3u 5에 의해 레이팅된 모든 아이템들의 레이팅 점수들이 유사도 계산을 위해 사용된다. 중첩된 레이팅 방안이 사용될 경우, 상기의 레이팅 점수들 중 u 3i 4, i 5i 7에 각각 레이팅한 레이팅 점수들 및 u 5i 5에 레이팅한 레이팅 점수들이 유사도 계산에서 제외된다. 상기의 제외로 인해 유사도 계산의 효율이 향상될 수 있다.
도 10은 본 발명의 일 예에 따른 순차적 방안 및 중첩된 레이팅 방안의 계산 과정을 설명하고, 양 방안들의 계산 결과들을 비교한다.
도 10에서, 상단에는 순차적 방안의 행렬 계산 과정이 도시되었고, 하단에는 중첩된 레이팅 방안의 행렬 계산과정이 도시되었다.
순차적 방안의 행렬 계산 과정에서, 행렬 R(1010)은 5 명의 유저들 각각이 7 개의 아이템들 각각에 레이팅한 정보이다. 행렬 u q (1020)는 벡터 u q 를 행렬로 나타낸 것으로, 질의 유저 u q 가 7 개의 아이템들 각각에 레이팅한 정보이다. 유사도 행렬 S(1030)는 R(1010) 및 u q (1020)를 곱한 결과이다.
중첩된 레이팅 방안의 행렬 계산 과정에서, 행렬 R'(1060)은 R(1010)에 중첩된 레이팅 방안이 적용됨으로써 생성된 결과이다.
우선, 중첩된 유저 방안에 의해, R(1010)의 행들 중 U q (1020)의 0이 아닌 값을 갖는 요소들에 대응하는 모든 요소들의 값이 0인 행들이 제거된다. 도 10에서, U q (1020)의 1행 1열의 요소, 3행 1열의 요소 및 6행 1열의 요소가 0이 아닌 값을 갖는다. 따라서, R(1010)의 행들 중 1열의 요소의 값, 3열의 요소의 값 및 6열의 요소의 값이 모두 0인 행들(즉, 2행 및 4행)이 제거된다. 상기의 제거로 인해 생성된 행렬을 R t 로 명명한다. R(1010)의 각 행은 각 유저를 나타낸다. 따라서, R(1010)에서 특정한 행을 제거하는 것은 상기의 제거되는 행에 대응하는 유저를 유사도 계산의 대상에서 제외함을 의미할 수 있다. 또한, R(1010)에서 특정한 행을 제거하는 것은 단계(510)에 대응할 수 있다.
다음으로, 중첩된 레이팅 방안에 의해, R t 의 열들 중 U q (1020)의 값이 0인 요소들에 대응하는 열들이 제거된다. 도 10에서, U q (1020)의 2행 1열의 요소의 값, 4행 1열의 요소의 값, 5행 1열의 요소의 값 및 7행 1열의 요소의 값이 0이다. 따라서, R t 의 열들 중 2열, 4열, 5열, 7열이 제거된다. 상기의 제거로 인해 R'(1060)이 생성된다. R(1010)의 각 열은 각 아이템을 나타낸다. 따라서, R(1010)에서 특정한 열을 제거하는 것은 상기의 제거되는 열에 대응하는 아이템을 유사도 계산의 대상에서 제외함을 의미할 수 있다. 또한, R(1010)에서 특정한 열을 제거하는 것은 단계(540)에 대응할 수 있다.
U q (1020)의 행들 중 (1열의) 값이 0인 행들을 제거함으로써 행렬 U q '(1070)이 생성된다. U q (1020)의 각 행은 각 아이템을 나타낸다. 따라서, U q (1020)에서 특정한 행을 제거하는 것은 상기의 제거되는 행에 대응하는 아이템을 유사도 계산의 대상에서 제외함을 의미할 수 있다. 또한, U q (1020)에서 특정한 행을 제거하는 것은 단계(540)에 대응할 수 있다.
유사도 행렬 S'(1080)는 R'(1060) 및 u q '(1070)를 곱한 결과이다.
S(1030)는 질의 유저 u q 에 대한 모든 유저들 각각의 유사도들을 나타낸다. S'(1080)는 u q 에 대한 유저 u 1, u 3u 5 각각의 유사도들을 나타낸다.
S(1030) 내의 n 행의 값들은, u q 에 대한 n 번째 유저(u n )의 유사도의 분자 값을 나타낸다. u q 에 대한 n 번째 유저(u n )의 유사도의 분모 값은, u q 의 유저 벡터의 놈 값에 n 번째 유저(u n )의 유저 벡터의 놈 값을 곱한 값이다.
u 2u 4가 유사도 계산의 대상에서 제외된 것을 감안하였을 때(즉, 유사도를 계산할 필요 없이 u q 에 대한 u 2(또는, u 4)의 유사도는 0임), S(1030) 및 S'(1080)는 동일한 결과를 나타낸다. 이는, 단계(520)에서, 중첩된 레이팅 방안을 사용하여 계산된 유사도는 기존의 코사인 유사도를 사용하여 계산된 유사도와 동일하다는 것을 나타낸다. 하기에서 양 유사도들이 동일하다는 것을 증명한다.
수학식 1에서, 유저 벡터 u a 의 놈 |u a | 및 유저 벡터 u b 의 놈 |u b |가 별도로 계산된 경우, 1) 모든 유저들 중 적어도 하나의 유저 및 2) u q 에 의해 공통으로 레이팅된 아이템들을 제외한 나머지 아이템들의 레이팅 점수는 유사도 계산에서 포함되지 않는다. 따라서, u q 가 레이팅한 아이템들이 r 개라고 가정하면, 상기의 r 개의 아이템들을 제외한 나머지 아이템들의 레이팅 점수는 유사도 계산에 포함되지 않는다. 또한, u q 와 공통으로 레이팅한 유저가 u a 단 l 명이라고 가정하면, 전체 행렬 R(1010) 중 유사도 계산을 위해서 l행 r열의 행렬 R 1이 필요하다. 이때, u q 는 r행 1열의 행렬로 나타낼 수 있다.
두 행렬 R 1u q 을 곱한 결과는 l행 1열의 행렬 S R 이다. S R 의 (1행 1열의) 값을 양 유저 벡터들(즉, u q 의 유저 벡터 및 u a 의 유저 벡터) 각각의 놈 값들의 곱으로 나눔으로써 u q u a 간의 유사도가 계산된다.
도 10에서, 1) S가 나타내는 순차적 방안을 사용하여 계산된 특정 유저의 질의 유저에 대한 유사도의 분자 값과 2) S'가 나타내는 중첩된 레이팅 방안을 사용하여 계산된 특정 유저의 질의 유저에 대한 유사도의 분자 값은 동일하다. 또한, 1) 순차적 방안을 사용하여 계산된 특정 유저의 질의 유저에 대한 유사도들의 분모 값과 2) S'가 나타내는 중첩된 레이팅 방안을 사용하여 계산된 특정 유저의 질의 유저에 대한 유사도의 분모 값은 모두 질의 유저 벡터의 놈 값 및 특정 유저의 벡터의 놈 값의 곱이다. 따라서, 순차적 방안 및 중첩된 레이팅 방안을 각각 사용하여 계산된 유사도들은 서로 일치한다.
도 11은 본 발명의 일 예에 따른 중첩된 레이팅 방안에서 사용되는 자료 구조를 설명한다.
U q 가 나타내는 배열은 질의 유저 벡터(1110)이다. 질의 유저 벡터(1110)의 아래에 도시된 아이템 식별자 배열(1120) 및 아이템 별 유저 목록(1130)들은 중첩된 레이팅 방안에서 사용되는 자료 구조이다. 가장 아래의 유저 목록(1140)는 유저들 각각의 질의 유저에 대한 유사도의 분자 값을 저장하는 공간이다. 우측의 놈 목록(1150)는 유저들 각각의 유저 벡터의 놈 값을 저장하는 저장 공간이다.
질의 유저 벡터(1110)는 전체 아이템에 대해 1) 질의 유저가 레이팅한 아이템들 및 2) 아이템들 각각에 대해 질의 유저가 부여한 레이팅 점수를 나타내는 벡터이다. 질의 유저 벡터(1110)에서, u q 가 레이팅한 아이템들인 i 1, i 3i 6은 진하게 표시되었으며, i 1, i 3i 6에 각각 부여한 레이팅 점수가 진하게 표시되었다. u q 가 레이팅하지 않은 아이템들인 i 2, i 4i 5에 대해서는 레이팅 점수가 부여되지 않았음을 나타내는 "X"가 표시되었다.
아이템 식별자 배열(1120)은 전체 아이템들 각각의 ID들에 대응하는 배열이다. 아이템 식별자 배열(1120)의 요소들은 각각 아이템 별 유저 목록(1130)를 가리키는 포인터이다. 아이템 식별자 배열(1120)에서, u q 가 레이팅한 아이템들인 i 1, i 3i 6은 진하게 표시되었다.
아이템 별 유저 목록(1130)들 각각은 하나의 아이템에 레이팅한 유저들의 목록 및 상기 유저들 각각이 상기의 아이템에 부여한 레이팅 점수들의 목록이다. 도시된 6 개의 아이템 별 유저 목록(1130)들은 각각 i 1, i 2, i 3, i 4, i 5 또는 i 6 에 레이팅한 유저들 및 상기의 유저들이 각각 아이템에 부여한 레이팅 점수들을 나타낸다. 아이템 별 유저 목록(1130)들 중 u q 가 레이팅한 아이템들인 i 1, i 3i 6에 대응하는 아이템 별 유저 목록(1130)들은 진하게 표시되었다.
놈 목록(1150)는 유저 벡터들의 놈 값들을 관리 및 저장한다.
다시 도 5를 참조하면, 단계(540)에서, 아이템 식별자 배열(1120) 및 아이템 별 유저 목록(1130)을 사용함으로써 유사도 계산 대상 유저 및 질의 유저가 공통으로 점수를 부여한 아이템들이 식별된다.
단계(550)에서, 식별된 아이템들 각각에 대해 유사도 계산 대상 유저가 부여한 제1 점수들 및 식별된 아이템들 각각에 질의 유저가 부여한 제2 점수들을 사용하여 유사도 계산 대상 유저의 질의 유저에 대한 유사도의 분자 값이 계산된다.
식별된 아이템들 중 k 번째 식별된 아이템의 곱 값은 k 번째 식별된 아이템의 제1 점수 및 제2 점수의 곱일 수 있다. 여기에서, k는 1 이상 n 이하의 정수이고, n은 식별된 아이템들의 개수이다. 또한, 유사도의 분자 값은 식별된 아이템들의 곱 값들의 합일 수 있다.
단계(560)에서, 유사도 계산 대상 유저의 유저 벡터의 놈 값 및 질의 유저의 질의 유저의 벡터의 놈 값을 곱함으로써 유사도 계산 대상 유저의 질의 유저에 대한 유사도의 분모 값이 계산된다.
유사도 계산 대상 유저의 질의 유저에 대한 유사도는 상기의 분자 값을 상기의 분모 값으로 나눈 값이다.
단계(540), 단계(550) 및 단계(560)은 유사도 계산 유저들 각각에 대해 1회씩 반복하여 수행될 수 있다.
단계(551)에서, 식별된 아이템들 중 곱 값이 계산되지 않은 아이템이 선택된다.
단계(552)에서, 선택된 아이템의 제1 점수 및 제2 점수를 곱하여 선택된 아이템의 곱 값이 계산된다.
단계(553)에서, 계산된 곱 값이 유사도의 분자 값에 더해진다.
단계(551), 단계(552) 및 단계(553)은 식별된 아이템들 각각에 대해 1회씩 반복하여 수행될 수 있다.
상술된 자료 구조를 사용한 중첩된 레이팅 방안은 자료 구조의 스캔(scan) 과정 및 유사도의 계산 과정을 별도로 분리하지 않을 수 있다. 즉, 자료 구조가 스캔되면서 유사도가 계산될 수 있다. 질의 유저가 부여한 레이팅 점수들이 유저 벡터(1110)로부터 일혀진 후, 질의 유저와 동일한 아이템을 레이팅한 유저들에 대응하는 아이템 별 유저 목록(1130)이 검색될 수 있다. 동일한 아이템에 대한, 아이템 별 유저 목록 내의 레이팅 점수 및 질의 유저가 부여한 레이팅 점수를 곱함으로써 곱 값을 생성할 수 있다, 생성된 곱 값을 유저 목록(1140) 내에 저장할 수 있다. 질의 유저가 레이팅한 모든 아아템에 대해 상가의 과정을 반복하면서, 곱 값들을 유저 목록(1140) 내에 계속 더해주면, 코사인 유사도의 분자 값이 계산되어 저장될 수 있다. 마지막으로, 계산된 분자 값을 양 유저들(즉, 질의 유저 및 동일한 아이템을 레이팅한 유저)의 유저 벡터들 각각의 놈 값들의 곱으로 나눔으로써 동일한 아이템을 레이팅한 유저의 질의 유저에 대한 유사도가 계산될 수 있다.
도 12는 본 발명의 일 예에 따른 중첩된 레이팅 방안의 알고리즘의 슈도 코드이다.
도 12에서 도시된 코드(1200)는 중첩된 레이팅 방안의 슈도 코드일 수 있다.
R은 유저가 아이템에 부여한 레이팅 점수의 행렬이다. m은 모든 유저들의 수이다. n은 모든 아이템들의 개수이다. u q 는 질의 유저의 ID이며, User_sim_array는 유저 ID 및 계산된 유사도를 저장하는 배열이다. 여기에서, 계산된 유사도란 u q 에 대한 유저 ID가 나타내는 특정한 유저의 유사도, 즉 u q 및 특정한 유저 간의 유사도이다. Norm_Array는 유저 벡터들의 놈 값들을 저장하는 배열이다.
메쏘드 Overlapped_user_calculation은 중첩된 레이팅 방안을 사용하여 유사도들을 계산하는 메인 함수이다. 메쏘드 SortingUser_sim_array를 유사도를 기준으로 내림차순으로 정렬하는 함수이다. 메쏘드 Sorting은 다양한 정렬 방법들을 사용하여 User_sim_array를 정렬할 수 있다.
코드(1210)는 User_sim_array의 타입의 정의를 나타낸다. User_sim_array는 변수 userIDsim를 포함한다. 여기에서, 변수 userID는 유저 ID를 나타낸다. 변수 sim은 유저 ID가 나타내는 유저의 질의 유저 u q 에 대한 유사도를 나타낸다.
코드(1220)는 유저들 각각의 유사도의 분자 값을 계산하는 과정을 나타낸다. 코드(1220)은 단계(550)에 대응할 수 있다.
코드(1230)는 유저들 각각의 1) 유사도의 분모 값 및 2) 유사도를 계산하는 과정을 나타낸다. 코드(1230)는 단계(560)에 대응할 수 있다.
코드(1240)는 계산된 유사도를 기준으로, User_sim_array 내의 유저들 간의 순서를 정렬하는 과정을 나타낸다. 코드(1240)는 단계(531)에 대응할 수 있다.
도 13은 본 발명의 일 예에 따른 검색 성능의 비교를 위해 사용된 데이터를 나타낸다.
무비렌스(Movielens) 데이터는, 유저가 영화를 보고, 선호도에 따라 영화에 점수를 부여한 데이터이다.
무비렌스 데이터는 데이터의 크기(즉, 레이팅의 개수)에 따라 세 종류의 데이터가 존재한다. 도 13에서, 세 종류의 데이터의 정보가 도시되었다.
세 종류의 데이터는 100k 레이팅들, 1M 레이팅들 및 10M 레이팅들의 데이터이다. 각 종류의 데이터에 대해, 전체 유저들의 수, 전체 아이템들의 개수 및 레이팅의 개수가 도시되었다.
본 무비렌스 데이터를 사용하여, 제안된 중첩된 유저 방안 및 중첩된 레이팅 방안의 검색 성능들이 순차 검색 방안의 검색 성능에 비해 우수함이 하기의 도 14 내지 도 17을 참조하여 설명된다.
도 14 내지 도 17에서 각각 순차적 방안(Seq.), 중첩된 유저 방안(O. U.), 중첩된 레이팅 방안(O. R.) 및 m-최근접 이웃 세이브(nearest neighbor save) 방안(m-NN)의 성능이 도시된다.
m-NN 세이브 방안은, 일반적으로 k-NN 검색이 수행될 때 k 값이 100 이상인 경우가 드물기 때문에, 모든 유저에 대하여 질정한 수의 유사한 유저들을 미리 저장해 놓고, 미리 저장된 유사한 유저들에 대한 정보를 질의 유저에게 유사한 유저들을 선택하기 위해 이용하는 방안이다. m-NN 세이브 방안에서, m은 미리 저장하는 유사한 유저들의 수다. 하기의 예들에서, k의 값은 100이다. m-NN 세이브 방안은, 계산 과정을 요구하지 않고, 미리 계산된 유사 유저들이 질의 유저와 유사한 유저들로서 선택된다. 따라서, m-NN 세이브 방안의 검색 과정은 우수하다. 반면, m-NN 세이브 방안은 유사 유저들을 미리 계산하기 위해 전처리 과정을 요구하며, 상기의 전처리 과정으로 인해 동적 상황이 실시간으로 적용될 수 없다. 따라서, m-NN 세이브 방안의 검색 정확도는 하락할 수 있다. 하기의 예들에서, m-NN 세이브 방안이 유저 기반 협업 필터링 방법에 적용될 수 있는지 여부가 검증된다.
하기의 예들에서, 전부 100명의 질의 유저들이 선택되고, 선택된 질의 유저와 유사한 성향을 갖는 유저들이 검색되었다. 검색된 결과의 평균으로 성능 및 정확도 결과가 도출되었다.
도 14는 본 발명의 일 예에 따른 랜덤 k-NN 질의가 사용되었을 때의 검색 성능을 나타낸다.
랜덤 k-NN 질의는 전체 유저들 중에서 랜덤하게 질의 유저를 선택한 후, 선택된 질의 유저에게 가장 가까운 k 명의 유저를 검색하는 질의이다. 본 예에서 k의 값은 20이다.
전체 시간(whole time)은 유사한 유저들을 검색하는데 걸린 전체 시간을 의미한다. 페이지(page) I/O는 전체 시간 중 페이지 I/O에 걸린 시간을 의미한다. 중앙 처리 장치(Central Processing Unit; CPU) 시간은 전체 시간 중 CPU 시간을 의미한다. 계산들(calculations)은 유저 간 유사도를 계산한 횟수를 의미한다. 비율(ration)는 중첩된 레이팅 방안의 전체 시간을 기준으로 했을 때, 다른 방안의 전체 시간의 비율을 의미한다.
도 14에 따르면, 데이터의 크기가 클수록 중첩된 레이팅 방안이 다른 방안들에 비해 더 좋은 성능을 갖는다. 특히 10M의 데이터가 사용된 경우 중첩된 레이팅 방안은 순차적 방안에 비해 12 배 정도 향상된 성능을 갖는다. 중첩된 사용자 방안은 순차적 방안에 비해 큰 성능 향상을 보이지 않았다. 이는, 무비렌스 데이터의 레이팅 개수가 유저 기반 협업 필터링에 기반한 추천 시스템의 데이터 중 비교적 밀도가 높은(dense) 편이라서, 유사도 계산 대상 유저들로서 전체 유저들 중 대부분의 유저들이 포함되었기 때문이다.
도 15 내지 도 17은 본 발명의 일 예에 따른 그룹 별 k-NN 질의가 사용되었을 때의 검색 성능을 나타낸다.
도 15는 본 발명의 일 예에 따른 100k 레이팅들 데이터가 사용되었을 때의 k-NN 질의의 검색 성능을 나타낸다.
도 16은 본 발명의 일 예에 따른 1M 레이팅들 데이터가 사용되었을 때의 k-NN 질의의 검색 성능을 나타낸다.
도 17은 본 발명의 일 예에 따른 10M 레이팅들 데이터가 사용되었을 때의 k-NN 질의의 검색 성능을 나타낸다.
그룹 별 k-NN 질의는 레이팅 개수를 기준으로 전체 유저들을 정렬한 후, 유저들의 수가 균등하도록 전체 유저들을 세 그룹으로 나눈다. 그룹 별 k-NN 질의는 나뉘어진 각 그룹 내에서 랜덤하게 질의 유저를 선택하여, 각 그룹 별로 성향을 판단한다. 하기의 예들에서, k의 값은 20이다.
G 1, G 2G 3은 아이템에 레이팅 점수를 부여한 횟수를 기준으로 전체 유저들을 그룹화한 것이다. G 1은 가장 적은 개수의 아이템들에 점수를 부여한 유저들의 그룹이다. G 3은 가장 많은 개수의 아이템들에 점수를 부여한 유저들의 그룹이다. G 1에서 순차적 방안의 성능 비해 중첩된 레이팅 방안의 성능이 33 배 이상 향상되었음을 알 수 있다.
본 발명의 일 실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치가 포함된다. 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다.
그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
1110: 질의 유저 벡터
1120: 아이템 식별자 배열
1130: 아이템 별 유저 목록
1140: 유저 목록
1150: 놈 목록

Claims (9)

  1. 전체 유저들 중 유사도 계산 대상 유저들을 선택하는 단계 - 상기 유사도 계산 대상 유저들은 질의 유저가 점수를 부여한 아이템들 중 적어도 하나의 아이템에 점수를 부여한 유저들임 -;
    상기 유사도 계산 대상 유저들 각각의 상기 질의 유저에 대한 유사도들을 계산하는 단계; 및
    상기 계산된 유사도들에 기반하여 상기 선택된 유저들 중 상기 질의 유저와 유사한 성향을 갖는 적어도 하나의 유저를 추천하는 단계
    를 포함하고,
    상기 유사도들을 계산하는 단계는,
    상기 유사도 계산 대상 유저 및 상기 질의 유저가 공통으로 점수를 부여한 아이템들을 식별하는 단계;
    상기 식별된 아이템들 각각에 대해 상기 유사도 계산 대상 유저가 부여한 제1 점수 및 상기 식별된 아이템들 각각에 상기 질의 유저가 부여한 제2 점수를 사용하여 상기 유사도 계산 대상 유저의 상기 질의 유저에 대한 유사도의 분자 값을 계산하는 단계; 및
    상기 유사도 계산 대상 유저의 유저 벡터의 놈 값 및 상기 질의 유저의 질의 유저 벡터의 놈 값을 곱함으로써 상기 유사도의 분모 값을 계산하는 단계
    를 포함하고
    상기 유저 벡터는 상기 유사도 계산 대상 유저가 상기 아이템들에 부여한 점수들의 벡터이고, 상기 질의 유저 벡터는 상기 질의 유저가 상기 아이템들에 부여한 점수들의 벡터인, 유저 기반 협업 필터링 방법.
  2. 제1항에 있어서,
    상기 전체 유저들 중 상기 유사도 계산 대상 유저들로서 선택되지 않은 유저의 상기 질의 유저에 대한 유사도는 0인, 유저 기반 협업 필터링 방법.
  3. 제1항에 있어서,
    상기 적어도 하나의 유저를 추천하는 단계는,
    상기 계산된 유사도들의 내림차순으로 상기 전체 유저들의 목록을 정렬하는 단계; 및
    상기 정렬된 목록 내에서 미리 지정된 수의 상위 유저들을 추천하는 단계
    를 포함하는, 유저 기반 협업 필터링 방법.
  4. 제1항에 있어서,
    상기 유사도들은 코사인 유사도 계산에 기반하여 계산되는, 유저 기반 협업 필터링 방법.
  5. 제1항에 있어서,
    상기 유사도들은 상기 질의 유저 및 상기 유사도 계산 대상 유저들에 의해 상기 아이템들에게 부여된 점수들에 기반하여 계산되는, 유저 기반 협업 필터링 방법.
  6. 삭제
  7. 삭제
  8. 제1항에 있어서,
    상기 식별된 아이템들 중 k 번째 식별된 아이템의 곱 값은 상기 k 번째 식별된 아이템의 상기 제1 점수 및 상기 제2 점수의 곱이고 - k는 1 이상 n 이하의 정수이고, n은 상기 식별된 아이템들의 개수임 -, 상기 분자 값은 상기 식별된 아이템들의 곱 값들의 합인, 유저 기반 협업 필터링 방법.
  9. 제1항에 있어서,
    상기 유사도의 분자 값을 계산하는 단계는,
    상기 식별된 아이템들 중 곱 값이 계산되지 않은 아이템을 선택하는 단계;
    상기 선택된 아이템의 상기 제1 점수 및 상기 제2 점수를 곱하여 상기 선택된 아이템의 곱 값을 계산하는 단계; 및
    상기 계산된 곱 값을 상기 유사도의 분자 값에 더하는 단계
    를 포함하는, 유저 기반 협업 필터링 방법.
KR1020110109296A 2011-10-25 2011-10-25 중첩 정보를 이용하여 효율적인 협업 필터링 프레임워크를 제공하는 방법 KR101319647B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110109296A KR101319647B1 (ko) 2011-10-25 2011-10-25 중첩 정보를 이용하여 효율적인 협업 필터링 프레임워크를 제공하는 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110109296A KR101319647B1 (ko) 2011-10-25 2011-10-25 중첩 정보를 이용하여 효율적인 협업 필터링 프레임워크를 제공하는 방법

Publications (2)

Publication Number Publication Date
KR20130044931A KR20130044931A (ko) 2013-05-03
KR101319647B1 true KR101319647B1 (ko) 2013-10-17

Family

ID=48657231

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110109296A KR101319647B1 (ko) 2011-10-25 2011-10-25 중첩 정보를 이용하여 효율적인 협업 필터링 프레임워크를 제공하는 방법

Country Status (1)

Country Link
KR (1) KR101319647B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11250308B2 (en) 2016-06-01 2022-02-15 Seoul National University R&Db Foundation Apparatus and method for generating prediction model based on artificial neural network

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114581165A (zh) * 2020-11-30 2022-06-03 中移(苏州)软件技术有限公司 一种产品推荐方法、装置、计算机存储介质及系统

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100052896A (ko) * 2008-11-11 2010-05-20 한국과학기술원 사용자에 따른 지능형 콘텐츠 추천 방법 및 시스템

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20100052896A (ko) * 2008-11-11 2010-05-20 한국과학기술원 사용자에 따른 지능형 콘텐츠 추천 방법 및 시스템

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11250308B2 (en) 2016-06-01 2022-02-15 Seoul National University R&Db Foundation Apparatus and method for generating prediction model based on artificial neural network

Also Published As

Publication number Publication date
KR20130044931A (ko) 2013-05-03

Similar Documents

Publication Publication Date Title
US8516357B1 (en) Link based clustering of hyperlinked documents
Wu et al. Finch: Evaluating reverse k-nearest-neighbor queries on location data
US7216123B2 (en) Methods for ranking nodes in large directed graphs
US10754887B1 (en) Systems and methods for multimedia image clustering
CN109325032B (zh) 一种索引数据存储及检索方法、装置及存储介质
US20060218138A1 (en) System and method for improving search relevance
CA2470899A1 (en) Method and system for similarity search and clustering
CN110598061A (zh) 一种多元图融合的异构信息网嵌入方法
Gulzar et al. Optimizing skyline query processing in incomplete data
US20060117252A1 (en) Systems and methods for document analysis
KR101738809B1 (ko) IoT 기반 스마트 홈 커뮤니티에서 소셜 매칭 및 소통 서비스를 위한 다차원매트릭스 지역화 방법 및 시스템
KR101319647B1 (ko) 중첩 정보를 이용하여 효율적인 협업 필터링 프레임워크를 제공하는 방법
EP1207464A2 (en) Database indexing using a tree structure
CN113918807A (zh) 数据推荐方法、装置、计算设备及计算机可读存储介质
Berman et al. Selecting good keys for triangle-inequality-based pruning algorithms
KR101601820B1 (ko) 유사 사용자 인덱스 방법 및 프로그램
Gandhi et al. Hybrid recommendation system with collaborative filtering and association rule mining using big data
CN114911826A (zh) 一种关联数据检索方法和系统
Rachkovskij Fast similarity search for graphs by edit distance
Kiran et al. Mining periodic-frequent patterns with maximum items' support constraints
CN112860734A (zh) 地震数据多维度范围查询方法及装置
Georgoulas et al. User-centric similarity search
Kousari et al. Improvement of mining fuzzy multiple-level association rules from quantitative data
Al-Khalidi et al. Approximate static and continuous range search in mobile navigation
US20100293176A1 (en) Range inclusive probe algorithm

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20161004

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170925

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20181005

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20190925

Year of fee payment: 7