KR20160064448A - 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법 - Google Patents
유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법 Download PDFInfo
- Publication number
- KR20160064448A KR20160064448A KR1020140168063A KR20140168063A KR20160064448A KR 20160064448 A KR20160064448 A KR 20160064448A KR 1020140168063 A KR1020140168063 A KR 1020140168063A KR 20140168063 A KR20140168063 A KR 20140168063A KR 20160064448 A KR20160064448 A KR 20160064448A
- Authority
- KR
- South Korea
- Prior art keywords
- item
- preference
- user
- items
- matrix
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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
- G06Q10/00—Administration; Management
- G06Q10/04—Forecasting or optimisation specially adapted for administrative or management purposes, e.g. linear programming or "cutting stock problem"
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION 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/00—Commerce
- G06Q30/06—Buying, selling or leasing transactions
Landscapes
- Business, Economics & Management (AREA)
- Engineering & Computer Science (AREA)
- Economics (AREA)
- Strategic Management (AREA)
- General Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Development Economics (AREA)
- Physics & Mathematics (AREA)
- Finance (AREA)
- General Physics & Mathematics (AREA)
- Accounting & Taxation (AREA)
- Marketing (AREA)
- Human Resources & Organizations (AREA)
- Game Theory and Decision Science (AREA)
- Entrepreneurship & Innovation (AREA)
- Operations Research (AREA)
- Quality & Reliability (AREA)
- Tourism & Hospitality (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
모든 사용자가 아이템에 부여하는 실제 선호도로부터 전체 완성된 예측 선호도를 구하고, 특정 사용자에게 특정 아이템을 추천할 때 가장 유사하면서 아이템의 예상 선호도 보다 실제 선호도가 낮은 아이템 중에서 가장 높은 실제 선호도를 추천하는, 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법에 관한 것으로서, (a) 아이템에 대한 사용자의 선호도 데이터를 입력받는 단계; (b) 행렬완성 알고리즘 및 클러스터링 알고리즘을 이용하여 다수의 사용자가 다수의 아이템에 대하여 부여한 불완전한 선호도 행렬로부터 완성된 예측 선호도 행렬을 생성하는 단계; (c) 모든 아이템들 간에 코사인 유사도(cosine similarity)를 계산하여 아이템 간의 유사도를 계산하는 단계; (d) 특정 아이템을 추천할 때, 상기 특정 아이템과의 코사인 유사도가 높으면서 상기 특정 아이템의 예측 선호도 보다 실제 선호도가 낮은 아이템들 중에서 실제 선호도가 가장 높은 아이템을 함께 추천하는 단계를 포함하는 구성을 마련한다.
상기와 같은 방법에 의하여, 추천하고자 하는 아이템과 함께 사용자에게 어떠한 아이템이 더 좋은 경험을 할 수 있다는 것을 알려줌으로써, 종래기술에 의한 추천 방법에 비하여 더 나은 사용자 경험을 제공해줄 수 있다.
상기와 같은 방법에 의하여, 추천하고자 하는 아이템과 함께 사용자에게 어떠한 아이템이 더 좋은 경험을 할 수 있다는 것을 알려줌으로써, 종래기술에 의한 추천 방법에 비하여 더 나은 사용자 경험을 제공해줄 수 있다.
Description
본 발명은 모든 사용자가 아이템에 부여하는 실제 선호도로부터 전체 완성된 예측 선호도를 구하고, 특정 사용자에게 특정 아이템을 추천할 때 가장 유사하면서 아이템의 예상 선호도 보다 실제 선호도가 낮은 아이템 중에서 가장 높은 실제 선호도를 추천하는, 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법에 관한 것이다.
일반적으로, 구매물품이나 콘텐츠 등 아이템의 추천 방식으로 가장 많이 사용되는 것은 이미 이들 아이템을 사용한 사용자들의 별표 부여 등 선호점수에 의한 추천방식이다. 즉, 많은 사용자로부터 높은 점수를 받은 아이템이 가장 좋은 아이템으로서 추천된다. 그러나 이러한 추천 방식은 개인의 취향이나 성향을 무시한 방식이다. 즉, 대중적인 성향을 갖지 않은 사용자에게는 이러한 추천 방식이 전혀 도움이 되지 않는다.
따라서 사용자별 사용 기록을 분석하여, 분석결과를 바탕으로 각 사용자에게 콘텐츠 추천을 수행하는 방법들도 많이 제시되고 있다[특허문헌 1]. 그러나 상기와 같은 개인 사용 패턴에 따른 추천 방식은 활용 데이터의 성격이 단순하고 제한적이어서 데이터 희귀문제가 자주 발생한다. 예컨대, 콘텐츠, 구매물품 등 아이템 사용에 따른 사용 로그가 많이 남아있는 사용자일 경우 사용 로그를 통해 사용자의 사용 패턴을 정확하게 분석할 수 있으므로 이러한 사용자에게는 만족도 높은 아이템을 추천해줄 수 있지만, 상대적으로 사용 로그가 적게 남아있는 사용자일 경우 자료가 부족하여 사용 로그만으로는 사용 패턴을 정확하게 분석할 수 없으므로 추천해줄 아이템의 양과 그에 대한 충실도가 떨어져 추천 결과에 대한 사용자 만족도가 저하될 수 있다.
상기와 같은 종래 추천방식의 문제점을 해결하고자, 협업 필터링(collaborative filtering) 방법이 제시되고 있다. 협업 필터링(collaborative filtering) 방법은 사용자의 과거 아이템 검색 결과에 기초해 사용자의 선호도를 분석하고, 사용자의 선호도와 유사한 선호도를 가지는 그룹의 사용자들이 선택한 아이템을 검색하는 방법이다. 그룹에 속한 사용자들이 많이 선택하였거나, 높은 평가 점수를 수여한 아이템을 검색하고, 검색된 아이템에 대한 정보를 사용자에게 제공한다. 협업 필터링은 사용자 개인이 별점이나 댓글과 같이 해당 아이템에 대해 표현한 선호도 값을 이용한다.
일례로서, 각 사용자의 콘텐츠 사용 히스토리 정보 외에, 각 사용자와 소셜 네트워크상에서 관계를 맺은 유관 사용자들의 콘텐츠 사용 히스토리 정보를 사용하여 추천하는 기술이 제시되고 있다[특허문헌 2]. 또한, 시청자와 유사한 시청 취향을 갖는 시청자 그룹의 시청 프로그램으로부터 협업필터링을 이용한 프로그램을 추출하고 취향 선호도가 높은 순서로 정렬하여 추천하는 기술도 제시되고 있다[특허문헌 3]. 서로 다른 정보 필터링 알고리즘을 이용하여 서버와 클라이언트가 각각 필터링을 수행하는 기술도 제시되고 있다[특허문헌 4]. 또한, 선호 업종에 기초하여 유사 성향 그룹으로 분류하는 협업 필터링 기술도 나타나고[특허문헌 5], EMD(Earth Mover's Distance)를 이용하여 사용자와 타겟 사용자 간의 유사도를 계산하는 기술도 나타난다[특허문헌 6].
그러나 상기 선행기술들은 사용자의 속성이나 사용 패턴 등을 이용하여 사용자들을 그룹화시킨 후, 해당 그룹의 선호도를 제시하고 있다. 따라서 서로 다른 그룹에 속하는 사용자들의 선호도들은 서로 영향을 주지 않는다. 그러나 실제로 모든 사용자들의 각 아이템에 대한 선호도는 서로 연관성을 가지고 있다. 결국, 상기 선행기술들은 사용자들의 선호도들이 모두 상호작용하는 효과를 전체적으로 반영하고 있지 못한 문제점이 있다.
본 발명의 목적은 상술한 바와 같은 문제점을 해결하기 위한 것으로, 모든 사용자가 아이템에 부여하는 실제 선호도로부터 전체 완성된 예측 선호도를 구하고, 특정 사용자에게 특정 아이템을 추천할 때 가장 유사하면서 아이템의 예상 선호도 보다 실제 선호도가 낮은 아이템 중에서 가장 높은 실제 선호도를 추천하는, 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법을 제공하는 것이다.
상기 목적을 달성하기 위해 본 발명은 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법에 관한 것으로서, (a) 아이템에 대한 사용자의 선호도 데이터를 입력받는 단계; (b) 행렬완성 알고리즘 및 클러스터링 알고리즘을 이용하여 다수의 사용자가 다수의 아이템에 대하여 부여한 불완전한 선호도 행렬로부터 완성된 예측 선호도 행렬을 생성하는 단계; (c) 모든 아이템들 간에 코사인 유사도(cosine similarity)를 계산하여 아이템 간의 유사도를 계산하는 단계; (d) 특정 아이템을 추천할 때, 상기 특정 아이템과의 코사인 유사도가 높으면서 상기 특정 아이템의 예측 선호도 보다 실제 선호도가 낮은 아이템들 중에서 실제 선호도가 가장 높은 아이템을 함께 추천하는 단계를 포함하는 것을 특징으로 한다.
또한, 본 발명은 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법으로서, 상기 (c)단계에서, 상기 코사인 유사도를 계산하고, 계산된 코사인 유사도를 0 ~ 100% 이내의 백분율로 치환하는 것을 특징으로 한다.
상술한 바와 같이, 본 발명에 따른 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법에 의하면, 추천하고자 하는 아이템과 함께 사용자에게 어떠한 아이템이 더 좋은 경험을 할 수 있다는 것을 알려줌으로써, 종래기술에 의한 추천 방법에 비하여 더 나은 사용자 경험을 제공해줄 수 있는 효과가 얻어진다.
도 1은 본 발명을 실시하기 위한 전체 시스템의 구성에 대한 블록도.
도 2는 본 발명의 일실시예에 따른 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법을 설명하는 흐름도.
도 2는 본 발명의 일실시예에 따른 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법을 설명하는 흐름도.
이하, 본 발명의 실시를 위한 구체적인 내용을 도면에 따라서 설명한다.
또한, 본 발명을 설명하는데 있어서 동일 부분은 동일 부호를 붙이고, 그 반복 설명은 생략한다.
먼저, 본 발명을 실시하기 위한 전체 시스템 구성의 일례를 도 1을 참조하여 설명한다.
도 1a 또는 도 1b에서 보는 바와 같이, 본 발명에 따른 선호 점수를 이용한 협력적 필터링 기반 선호도 예측 방법은 네트워크 상의 서버 시스템 또는 컴퓨터 단말 상의 프로그램 시스템으로 실시될 수 있다.
도 1a와 같이, 본 발명의 실시를 위한 전체 시스템의 일례는 사용자 단말(10)과 선호도 예측 시스템 또는 서버(30)로 구성되고 서로 네트워크(20)로 연결된다. 또, 필요한 데이터를 저장하기 위한 데이터베이스(40)를 더 구비할 수 있다.
사용자 단말(10)은 물품, 콘텐츠 등 아이템을 소비하는(구매하거나 이용하는) 사용자가 이용하는 PC, 노트북, 넷북, 스마트폰, 태블릿PC, 모바일 등의 통상의 컴퓨팅 단말기이다. 사용자가 사용자 단말(10)을 이용하여 아이템을 소비할 때, 사용자의 소비 패턴이 선호도 예측 시스템(30)에 전송된다.
한편, 선호도 예측 시스템(30)은 시용자 단말(10)에서 사용자의 아이템 소비 패턴을 캡쳐하여, 사용자 선호도를 분석하고, 사용자 단말(10)에 아이템에 대한 추천 서비스를 제공한다.
데이터베이스(40)는 선호도 예측 시스템 또는 서버(30)에서 필요한 데이터를 저장하는 통상의 저장매체로서, 사용자의 아이템 소비 패턴, 또는 사용자의 선호도 행렬 등을 저장한다.
도 1b와 같이, 본 발명의 실시를 위한 전체 시스템의 다른 예는 컴퓨터 단말(13)에 설치되는 프로그램 형태의 선호도 예측 시스템(30)으로 구성된다. 즉, 선호도 예측 시스템(30)의 각 기능들은 컴퓨터 프로그램으로 구현되어 컴퓨터 단말(13)에 설치되어, 사용자의 아이템 소비 패턴에 대한 데이터를 입력받아, 사용자의 선호도 행렬을 추정하여 예측하고, 예측된 선호도 행렬에 따라 아이템의 추천 데이터를 생성하는 작업을 수행한다. 선호도 예측 시스템(30)에서 필요한 데이터들은 컴퓨터 단말(13)의 하드디스크 등 저장공간에 저장되어 이용된다.
다음으로, 본 발명의 제1 실시예에 따른 선호 점수를 이용한 협력적 필터링 기반 선호도 예측 방법을 도 2를 참조하여 설명한다.
추천엔진은 다음과 같은 데이터를 수집하고 처리하여 사용자에게 아이템을 추천해준다.
1. 사용자 u가 아이템 i에 대해 매긴 별점 rui 들의 집합을 알고 있다.
2. 사용자 u가 아이템 i와 j 중 어떤 아이템을 더 선호하는지 알고있다.
우리가 수집할 수 있는 데이터는 이 중의 일부이고, 수집하지 못한 부분의 데이터를 예측해야 한다. 우리는 1과 2의 데이터를 각각 이용해 사용자 u의 아이템 i에 대한 선호도를 수치화해내고 예측해 낸다. 1의 데이터만을 사용해 예측한 선호도를 행렬 A, 2의 데이터만을 이용해 예측한 선호도를 행렬 B로 나타낼 수 있다. 이를 이용해 추천 엔진이 최종으로 사용하는 선호도를 나타내는 행렬 C는 다음과 같이 계산한다.
[수학식 1]
여기서 M은 원래 알고 있는 사용자 u의 아이템 i에 대한 선호도 이다. 그럼 이제 우리의 추천엔진이 어떻게 1과 2의 데이터를 각각 이용하여 사용자의 선호도를 알아내는지 기술하고자 한다.
1. 선호 점수(또는 별점 데이터)만을 이용해 사용자 선호를 예측하는 방법
선호 점수(또는 별점 데이터)만을 이용해 사용자 선호를 예측하는 기존 방법은 넷플릭스 경연대회(Netflix Prize)를 통해 알려졌듯이 행렬완성 알고리즘(Matrix Completion Algorithm)만을 사용하는 것이다. 행렬완성 알고리즘(Matrix Completion Algorithm) 알고리즘이 별점 데이터를 이용한 추천 상황에 잘 동작한다고 알려져 있다. 우리의 추천 엔진은 기존의 행렬완성 알고리즘(Matrix Completion Algorithm)에 기반해 여러 가지 알고리즘을 혼합한 기법들을 사용한다.
행렬 완성(Matrix Completion)을 하기 위해서는 완성할 행렬의 계수(rank)인 k를 알고리즘의 입력(input) 인자로 같이 넘겨주어야 한다. 이것은 행렬 완성(Matrix Completion)을 수행하는 여러 알고리즘들 중 교차 최소화(Alternating Minimization) 방식을 사용하기 때문이다. 이 방식은 이론적으로는 다른 알고리즘보다 성능이 좋음을 보이지 못했으나, 실용적(practical)으로 잘 들어맞는다고 알려져 있다. 넷플릭스(Netflix)도 여러 행렬 완성(Matrix Completion) 알고리즘 중 교차 최소화(Alternating Minimization) 방식을 사용한다).
넷플릭스(Netflix)는 k=20으로 넘겨줘서 행렬을 완성한다고 알려져 있다. 계수(rank)를 높이면 높일 수록 기존 데이터에 대한 설명력은 높아지지만, 남은 데이터에 대한 예측력은 떨어지는 과도적합(Ovefitting) 현상이 발생하므로 적절한 계수(rank)를 설정하는 것은 매우 중요한 일이다.
이제, 별점 데이터만을 이용해 사용자 선호를 예측하는 가장 핵심적인 방법에 대해서 소개하고자 한다. 우리의 추천엔진은 적절한 계수(rank)를 찾는 데에 그치지 않고, 이를 확장한 기법을 사용한다. 계수(rank) k를 통해 완성한 행렬 즉, 사용자 선호를 예측한 행렬을 Ak 라고 하자. 우리의 추천엔진도 넷플릭스 알고리즘이 사용하는 것과 마찬가지로 어떤 값 k를 설정한다. 바람직하게는, 이 값은 쌓인 별점 데이터의 양에 따라 적절한 k값이 바뀌므로 추후 데이터가 많아졌을 시 증가하게 설계한다. k값이 결정되면, kmin 과 kmax 를 다음과 같이 결정한다.
[수학식 2]
kmin = max(1, k - 3)
kmax = k + 4
이제 이렇게 결정한 값을 이용하여 어떻게 사용자 선호를 나타내는 행렬 A를 계산해 내는지 설명하고자 한다.
각 행렬 Ak 에 대해 사용자 u의 예측 선호도 벡터(vector)를 Au k 로 표현할 수 있다. 주어진 행렬 M에 대해서도 사용자 u에 대한 선호도 벡터를 Mu 로 표현할 수 있다.
Mu 와 Au k 간의 학습 오차(training error)를 eu k 라고 하자. 이 때, wu k 를 다음과 같이 정의한다.
[수학식 3]
이 wu k 를 이용하여 사용자 u에 대한 최종 선호도 벡터인 Au 를 다음과 같이 계산한다.
[수학식 4]
Au 를 모든 사용자 u에 대해서 계산하면, 사용자 선호도를 예측한 행렬 A를 계산할 수 있다.
이해를 돕기 위해, 이 알고리즘을 종합적(Synthetic)으로 설명하고자 한다. 예측된 선호를 나타내는 행렬의 계수(rank)가 커지면 고려하는 인자가 많아지기 때문에 점점 소수(Minority)의 취향까지 고려하는 것으로 받아들일 수 있다. 하지만, 앞서 언급했듯이 계수(rank)가 커지면 커질수록 소수에 대한 취향은 잘 예측해 내지만, 전체적으로 보면 취향에 대한 예측력이 떨어진다.
위 방법에서는 각 사용자마다 이 사용자가 얼마나 대중적인 취향을 갖고 있는지를 파악하여 수치화 한다. 이 수치화된 사용자에 대한 분석을 바탕으로 여러 개의 완성된 행렬(Completed Matrix)들의 선형 결합(Linear combination)을 구하는 방식이다. 최대 8개의 예측된 취향을 나타내는 행렬을 설정한 이유는 내부데이터를 이용해 실험적으로 판단해 본 결과 8개만 보는 것이 가장 좋은 예측력을 나타내었기 때문이다. 후에 데이터가 많아지고 변화하면 이 값을 조정할 수 있도록 내부 엔진을 설계해 두었다.
[ Callibrating Prediction of User Preference ]
행렬 완성(Matrix Completion) 알고리즘 등 많은 추천 알고리즘들은 기본적으로 소수에 대한 취향을 무시하고 전체적인 경향성을 파악하려는 성향이 강하다. 넷플릭스 대회(Netflix Prize)를 통해 기존 추천 알고리즘의 성능을 10% 향상시키기가 얼마나 어려운지 알게 되었다. 이런 힘든 문제를 해결하기 위해서는 소수의 취향을 더 잘 예측할 필요가 있었다. 이번 아이디어도 역시 사용자를 분석하는 것에 기반을 둔 방식이다.
사용자를 분석하여 추천을 위한 확장 행렬완성 알고리즘(Extended Matrix Completion Algorithm For Recommendation)에서 얻은 데이터를 보정한다.
우리는 어떤 아이템에 대해 선호를 매길 때 좋으나 싫으나 다른 사람들에게 영향을 받는다. 특히 고전적으로 우리가 다른 사람들에게 영향을 받아온 방식은 평균별점이다. 대부분의 별점을 이용한 평가 방식을 사용하고 있는 기존 웹사이트들의 경우 평균별점을 같이 제시함으로써 평균적으로 이 아이템이 얼마나 좋은 평가를 받았는지 알려준다.
협업적 필터링(Collaborative Filtering)은 이런 평균 별점 방식에서 벗어나 보고자 하는 시도이지만, 아직 사람들은 평균별점이라는 방식에 많이 익숙해져 있을 것이라고 가정했다. 따라서, 우리의 추천엔진은 사용자의 평균별점에 대해 얼마나 반감을 가지고 있는지를 계산해 냈다. 각 사용자 u에 대한 이 점수를 frogu 라고 하겠다. 평균별점과 다른 점수를 주려고 의도적으로 노력한 사람들은 이 점수가 높게 나타날 것이고, 평균별점과 비슷한 점수를 주고 있는 사람들은 이 점수가 낮게 나타날 것이다.
각 아이템 i의 별점은 가우시안 분포(Gaussian Distribution)을 나타낸다고 가정하였다. 그래서 사용자 u가 준 각각의 별점을 아이템 i의 평균별점과 표준편차를 이용하여 정규화(normalize)했다. 사용자 u의 아이템 i에 대한 별점이 ki 로 정규화되었다고 가정하자. 이 때, frogu 는 다음과 같이 계산한다.
[수학식 5]
여기서 집합 I는 전체 아이템의 집합을 의미한다. 이 값을 이용하여 예측 별점을 보정하기 위해, 먼저 frogu 를 이용하여 승수(mulitiplier) mulu 를 계산해 낸다. 어떤 아이템 i의 평균별점을 ri 이라고 한다. 보정된 예측 선호도(rating) r은 다음과 같이 계산한다.
[수학식 6]
도 3은 로지스틱 함수(Logistic Function)와 유사한 오차 함수(Error Function)들을 나타낸다.
마지막으로 우리의 추천엔진이 어떻게 frogu 를 이용하여 mulu 를 계산해 내었는지 설명하고자 한다. frogu 를 이용하여 mulu 를 계산하는 방식이 바뀜에 따라 추천엔진의 성능이 많이 바뀔 수 있다. 시도해 본 대부분의 함수들의 경우 오히려 추천 성능을 나쁘게 했다.
frogu 를 mulu 로 계산해내는 함수, 즉, mulu(frogu)에 많은 증가함수를 시도해보았다. 하지만, 로지스틱 함수(Logistic Function)와 유사한 개형을 가진 함수들이 다른 시도해보았던 증가함수들에 비해 높은 성능 증가를 보였다. 도 3에서 제시한 함수들을 x축으로 1.5, y축으로 1만큼 평행이동시켜 테스트 해보았고, 그 중에서 가장 좋은 성능을 나타낸 함수를 mulu(frogu)로 채택하였다. 자세한 방정식은 다음과 같다.
[수학식 7]
[행렬완성 최소화와 클러스터링]
많은 추천엔진들이 협업적 필터링(Collaborative Filtering)을 위해 클러스터링(Clustering) 알고리즘들을 같이 사용한다고 알려져 있다. 이웃 예측자(Neighboorhood Predictor)를 계산할 때 추천엔진의 성능을 높이기 위해 클러스터링(Clustering) 알고리즘을 사용할 것으로 예상한다. 하지만, 이웃 예측자(Neighboorhood Predictor) 자체가 그렇게 빠른 알고리즘도 아닐 뿐더러, 추천 성능은 데이터가 작으면 작을수록 행렬 완성(Matrix Completion) 자체에 비해 매우 떨어짐을 실험적(Practical)으로 확인한 바 있다.
추천 기법에 있어 클러스터링을 사용하는 알고리즘들은 행렬 완성(Matrix Completion)과 별개로 계산되어 이후 우리의 추천엔진에서 사용하듯 기하 평균(Geometric Mean)이나 선형 결합(Linear Combination)을 이용하여 두 결과를 합치는 방식으로 이용되어 왔다. 우리의 추천엔진에서는 클러스터링(Clustering)과 행렬 완성(Matrix Completion)을 근본적으로 합치는 방식을 고안하였다. 역시 다른 클러스터링(Clustering) 알고리즘과 마찬가지로, 데이터의 크기가 작을 때에는 행렬 완성(Matrix Completion) 자체와 비교했을 때 좋지 못한 성능을 나타낸다. 하지만, 데이터 크기가 커질수록 클러스터링(Clustering)만 사용한 후 행렬 완성(Matrix Completion)의 결과와 합친 것보다 근본적으로 두 알고리즘을 결합한 것이 더 좋은 성능을 나타내는 경향이 있음을 확인하였다.
이제 어떻게 행렬 완성(Matrix Completion)과 클러스터링(Clustering)을 혼합(Mixing)하는지 설명하고자 한다. 먼저 이해를 돕기 위해 행렬 완성(Matrix Completion) 알고리즘이 푸는 문제에 대해 다시한 번 기술하면 다음과 같다.
[수학식 8]
여기서 집합 U는 사용자 전체의 집합을 의미한다. 우리는 클러스터링(Clustering)과 혼합(Mixing)하기 위해 다음과 같은 문제를 해결하는 알고리즘을 고안하였다.
[수학식 9]
행렬 완성(Matrix Completion) 문제 자체는 다항시간 내에 풀기 힘들기 때문에, 다항시간 내에 풀어내기 위해 여러가지 테크닉들을 도입한다. 위에서 제시한 문제의 경우 C = 1 일 때, 행렬 완성(Matrix Completion) 문제와 정확히 같은 문제로 축약(reduced)되고, C > 1 인 경우, 문제가 더 어려워지므로 다항시간 내에 풀기 힘들다고 볼 수 있다.
풀기 힘든 문제이지만, 추천 성능을 높이기 위해서 실용적(Practical)으로 해답(solution)을 구해야 했고, 우리는 이 문제를 다항시간 내에 풀기 위해 교차 최소화(Alternating Minimization) 방식을 도입하였다. 교차 최소화(Alternating Minimization)는 어떤 변수들을 일정한 값으로 고정하면, 문제를 다항시간 내에 풀 수 있는 성질을 이용하여, 다른 값들을 구해낸 이후에는 구한 값들을 이용하여 다시 이전에 고정했던 값들을 구해내는 방식을 의미한다.
Global한 Solution을 얻을 수 있을지는 미지수이지만, 적어도 Practical하게 의미있는 결과는 얻어낼 수 있다. 우리는 각 사용자 u의 클러스터(Cluster)를 초기화 한 뒤, 그 클러스터(Cluster)를 이용하여 Au j 를 각각 구해내고, Au j 를 이용하여 다시 클러스터(Cluster)를 구해낸다. 이러한 과정을 반복해서 학습 오차(Training Error)가 수렴할 때 까지 반복한다.
교차 최소화(Alternating Minimization) 알고리즘의 경우, 초기값을 어떻게 설정하느냐에 따라 알고리즘의 성능이 매우 큰 차이를 보인다. K-means, EM, 랜덤 클러스터(Random Cluster) 등 여러 가지 클러스터링 알고리즘을 시험해보았으나, 랜덤(Random)하게 각 사용자의 클러스터를 지정하는 랜덤 클러스터(Random Cluster)가 가장 좋은 성능을 나타내었기에 우리의 추천엔진에서는 랜덤 클러스터링(Random Clustering)으로 초기화해 이 알고리즘을 사용한다.
이 알고리즘을 이용해 구해낸 예측 행렬은 이전 두 가지 방식 [ Extended Matrix Completion For Recommendation ], [Callibrating Prediction of User Preference ]을 통해 계산된 예측 행렬과 비교해서 예측 결과값의 변동(Fluctuation)이 더 큰 것을 확인할 수 있었다. 다른 알고리즘에서 구한 결과와 합쳐질 때 너무 데이터가 예측값과 멀어지는 것을 방지하기 위해 산술평균보다는 기하평균으로 계산하는 것이 바람직하다고 판단했고, 뒤에서 정리하겠지만, 앞에서 구한 예측행렬과 이 알고리즘을 이용해 구한 예측행렬을 엔트리별 가중 기하 평균(entry-wise weighted geometric mean)을 계산해 최종 예측행렬을 구해낸다.
[ Final Algorithm For Rating Data Only ]
지금까지 우리의 추천엔진이 어떻게 별점 데이터만을 이용해 사용자 선호를 예측해 내는지에 대해 [ Extended Matrix Completion For Recommendation ], [ Callibrating Prediction of User Preference ], [ Mixing Matrix Completion and Clustering ]의 세 가지 주요 알고리즘에 대해서 설명하였다.
별점 데이터만을 이용해 추천엔진이 사용자 선호를 예측하는 방식을 간략하게 정리하면 다음과 같다. 여기서, 문턱치(Threshold)나 기타 성능을 튜닝하기 위한 과정들은 생략하였다
1. [ Extended Matrix Completion For Recommendation ]를 이용해 예측 선호도를 나타내는 행렬 A1 을 계산한다.
2. 행렬 A1 과 [ Callibrating Prediction of User Preference ]를 이용해 보정된 행렬 A2 를 계산한다.
3. [ Mixing Matrix Completion and Clustering ]을 이용해 예측 선호도를 나타내는 행렬 A3 을 계산한다.
4. A2 와 A3 의 각 엔트리(entry)별로 가중 기하 평균(weighted geometric mean)을 계산한다. 이때, 데이터가 커질수록 A3 의 가중치를 높인다.
다음으로, 본 발명의 제2 실시예에 따른 처음 사용자에 대한 추천 제공 방법에 도 4를 참조하여 설명한다.
[ Fast Recommendation For A New User ]
추천엔진을 이용하는 사용자가 꽤 늘어난 상태라고 가정하자. 이후 새로운 사용자가 들어왔을 때, 이 새로운 사용자에게 최대한 정확한 추천을 해주는 것이 필요하다. 새로운 사용자가 받는 첫 추천은 사용자의 추천시스템에 대한 첫인상이다. 따라서, 첫 추천이 사용자가 느끼기에 정확하지 않다면, 사용자가 이후 추천엔진을 사용하는 어플리케이션을 이용할 확률이 적어질 것이다. 이를 위해서, 새로운 사용자가 들어왔을 때, 사용자에게 정확한 추천을 해주는 것은 꽤 중요하다.
하지만, 새로 들어온 사용자에게 정확한 추천을 해주기는 매우 어렵다. 추천엔진은 새로운 사용자가 들어왔을 때, 사용자가 소수의 아이템들에 대한 선호도를 평가하였을 때, 이를 기반으로 빠르게 추천해주는 것이 필요하다.
일반적으로 추천엔진이 추천을 위해 사용하는 알고리즘은 O(n3)의 order를 가지며, 어느 정도 사용자가 쌓인 경우 10~20초 이내(사용자가 첫 추천을 받기 까지 기다릴 수 있는 최대 시간 추정치)에 계산할 수 없다(보통 사용자가 들어오는 것과는 별개로 비동기적으로 계산한다).
따라서, 첫 추천에 있어서는 협력적 필터링(Collaborative Filtering)을 포기하고 콘텐츠 필터링(Content Filtering)을 사용하거나, 필요한 모든 값들을 미리 계산해둔 후에 이웃탐지 방법(Neighboorhood Method)을 사용하거나, 사용자를 샘플링(Sampling)해서 사용할 수 밖에 없다. 그것도 아니면, 평균별점이 높은 순으로라도 사용자에게 보여주어야 한다.
우리의 추천 시스템은 빠르게 추천을 해주기 위해, 메인 특징(Main Features)에서 구한 행렬 C를 이용한다. 행렬 C를 SVD(Singular Value Decomposition, 특이값 분해)를 통해 C = U S VT 와 같이 표현할 수 있다. C 를 계산해낼 때마다, S와 V를 미리 계산해서 데이터베이스에 저장해둔다. 우리의 추천엔진의 경우 빠르게 접근하기 위해 레디스(Redis) 등 인메모리 데이터베이스(In-Memory Database)를 이용한다.
새로운 사용자 u에 대해 미리 계산된 추천 아이템들이 아직 없다고 하자. 이 때, 추천엔진을 이용한 어플리케이션은 추천엔진에게 빠르게 추천을 만들어줄 것을 요청한다.
추천엔진은 그 요청을 받아들여, 다음과 같은 문제를 풀어 빠르게 사용자 u의 아이템들에 대한 선호를 예측해 낸다.
[수학식 10]
즉, 위와 같은 벡터 Cu FAST 를 계산해 내는 것이다. 이 문제는 다음과 같이 폐쇄형태 방정식(Closed Form Equation)을 품으로써 구할 수 있음을 선형대수학 이론에 근거해 증명할 수 있다.
[수학식 11]
여기서 S는 대각행렬이므로, 역행렬을 구하기 위해 대각성분만 역수를 취해주면 된다. 따라서, 굉장히 빠른 시간 내에 Cu FAST 를 계산해 낼 수 있다. 랜덤 발생(Random Generating)된 저 계수(Low-rank) 행렬에 대하여 테스트해본 결과 C와 크게 다르지 않는 Test Error를 나타냄을 확인하였다.
단, 사용자가 평가한 아이템들이 너무 작은 경우 C의 테스트 에러보다는 큰 에러를 나타냈지만, 그래도 의미있는 결과를 나타냄을 확인하였다.
CFAST는 빠르게 계산한 어떤 사용자의 모든 제품에 대한 예상별점이다. 따라서 벡터를 말한다. S와 V는 앞서 제1 실시예에서 계산해낸 최종 선호도 행렬 C를 SVD를 통해 분해하여 구한 두 행렬이다. Mu는 빠르게 선호를 계산해 내고자 하는 사용자가 현재 매긴 레이팅이다. 즉, arg min 부분에서 현재 데이터 Mu를 가장 잘 설명하는 Lu를 구해서 Cu를 복원하는 것입니다.
즉, 모든 사용자의 모든 상품에 대해 선호를 예측한 행렬을 C라고 한다. 상기 제1 실시예가 선호도 행렬 C를 만들어내는 전체 과정을 기술한 것이다. C가 만들어지는 과정에서는 굉장히 복잡하고 많은 계산 비용을 발생한다. 빠른 추천을 위해서 성능이 낮지만 빠른 새로운 알고리즘(Neighborhood Method 등)을 사용해도 되지만, 그것보다는 본 발명에서 제1 실시예에서 구한 행렬 C를 이용해서 빠르게 추천해주는 것이 훨씬 더 좋은 성능을 나타내기 때문에 새로운 알고리즘을 사용하지 않은 것이다.
행렬 계수(Rank)는 얼마나 이 행렬이 복잡한지를 나타내는 지표로 볼 수 있다. 다시 말해서, 행렬계수가 커질수록 행렬이 많은 정보를 담고 있다는 것을 의미한다. 이제 행렬완성 알고리즘의 원리는 다음과 같다. 어떤 행렬 X가 있다고 가정하면, X의 대부분의 정보는 가려져 있다(예를 들어, n x m 행렬의 nm개의 엔트리(entry)중에 0.1%미만의 엔트리 정보만 갖고 있다고 가정한다) 행렬 완성은 알려진 일부분만의 정보를 이용해서 나머지 엔트리들을 복원해내는 알고리즘이다. 만약 행렬의 모든 엔트리가 서로 관계가 없다면 행렬완성 알고리즘은 제대로 동작하지 않을 것이다. 각 엔트리들이 서로 관계된 구조를 이루고 있을 때 행렬완성 알고리즘이 잘 작동할 수 있다. 다시 말하면, 행렬의 계수가 작을 때에는 행렬완성이 잘 작동하나 행렬의 계수가 클 때에는 행렬완성 알고리즘이 잘 작동하지 않는다. 그래서, 행렬완성할고리즘을 LRMC(Low-rank Matrix Completion)이라고 부르기도 한다.
넷플릭스 대회(Netflix Prize)의 우승자는 행렬완성 알고리즘을 통해 성능 개선의 대부분을 이뤄 냈다고 알려져 있다. 또한, 사용자의 선호를 행렬로 나타냈을 때, 그 행렬은 저 계수(Low-rank)의 구조를 갖고 있다. 즉, 사용자의 선호를 행렬로 나타내었을 때, 그 행렬은 저 계수(Low-rank)의 행렬로 근사할 수 있다. 그렇기 때문에 본 발명에서도 마음 놓고 행렬완성 알고리즘을 사용한 것이다.
보통 행렬을 SVD 분해하는 이유는 그 행렬의 특정 특징(Feature)를 뽑아내기 위해서이다. 어떤 특징(Feature)를 뽑아내야 하는지에 따라 분해의 방식이 달라질 것입니다. LU, EVD 등 중에서 SVD를 사용하는 이유는 다른 분해들이 모든 행렬에서 되지 않는데 비해 SVD는 모든 행렬에 대해 가능하고 low-rank행렬에 대해서는 더 작은 행렬의 곱을 통해 전체 행렬을 복원할 수 있는 장점도 따라오기 때문에 SVD를 사용하였습니다.
Main Feature에서 만들어낸 행렬의 Featrue를 뽑아내서 그 Feature를 이용해 Fast하게 유저에게 추천을 해주는 것이라 보시면 됩니다.
다음으로, 본 발명의 제3 실시예에 따른 비슷한 제품군에서 예상 선호가 낮은 제품과 대비해 추천해 주는 방법을 도 5를 참조하여 설명한다.
[ Finding Similar Product with Constraints ]
많은 추천엔진들의 경우 추천을 해줄 때에 해당 아이템이 왜 추천 되었는지를 같이 띄워준다. 영화를 추천해주는 경우, 좋아하는 배우, 좋아하는 감독, 좋아하는 장르 등에 의해 추천되었다고 띄워주는 것이다. 이와 같이 추천의 이유를 띄워주기 위해서는 데이터베이스에 해당 정보들이 들어있어야 하며, Content-based Filtering의 기법들을 도입해야 한다.
우리의 추천엔진에서는 해당 도메인에 대해 잘 이해하고 있는 인력이 많이 필요하게 될 수 있는 Content-Based Filtering기법들을 지양하기 때문에 앞서 제시한 추천의 이유를 제시하는 것은 고려하지 아니하였다.
하지만, 몇몇 추천엔진에서는 추천의 이유로 어떤 아이템과 유사한 아이템과 유사한 아이템이라고 알려준다. 합리적인 추천의 이유를 알려주는 것은 사용자 경험에 중요한 요소가 될 수 있으며, 유사한 아이템에 대한 정보는 수학적으로 계산해 낼 수 있기 때문에 유사한 아이템은 계산해서 사용자에게 제공하기로 결정하였다.
일반적인 추천엔진들의 경우 유사한 아이템을 cosine similarity를 모든 item pairs에 대해서 계산하거나, 미리 아이템들을 클러스터링 알고리즘을 통해 클러스터링 해둔다. 그리고, 어떤 아이템을 추천할 때 내가 이미 평가한 아이템 중에 같은 클러스터에 있거나 cosine similarity가 높은 아이템을 추천의 이유로 띄워준다.
우리의 추천 엔진의 경우 어떠한 이유로 인해(뒤에서 제시할 것이다) 클러스터링을 사용하지 않고 cosine similarity를 이용한다. 다른 추천엔진들 처럼 모든 item pairs에 대해 cosine similarity를 계산하고, 이를 0 ~ 100%의 백분율로 치환하는 과정을 거쳐 각 아이템 간의 유사도를 계산해 둔다.
하지만, 이러한 값만 계산해서 추천에 추천의 이유로써 활용할 때는 분명히 한계가 있다. 실제적인 예를 들어 설명하면, 내가 높은 점수를 준 item i’가 있다. 이때 item i’과 유사한 item i"이 추천되는 상황을 가정해보자. 이 때, item i"의 예상선호도는 item i’의 선호도보다 낮다고 가정하자. 이 때, item i"를 사용자에게 추천할 때, item i’와 유사한 상품이라는 정보를 사용자에게 같이 띄워주는 경우 사용자는 item i"가 사용자가 좋게 판단했던 item i’을 기대하고 item i"에 대한 추천에 대해 Action을 할 것이다. 하지만, 실제 사용자가 느낀 item i"에 대한 경험은 기대에 미치지 못함으로써 추천엔진에 대한 불신을 초래할 수 있다.
이를 방지하기 위해 우리의 추천엔진에서는 어떤 아이템을 추천할 때, 가장 유사하면서 추천하고자 하는 아이템의 예상선호도보다 실제 선호도가 낮은 아이템 중 가장 실제 선호도가 높은 아이템을 추천의 이유로써 함께 제공한다.
즉, 추천하고자 하는 아이템 함께 사용자에게 어떠한 아이템 보다 더 좋은 경험을 누릴 수 있을 것이라고 알려주는 것이다. 이 방식이 기존 다른 추천엔진들이 사용하는 것보다 더 나은 사용자 경험을 가능하게 한다. (이를 가능하게 하기 위해 아이템간의 유사도를 수치화하고, 예상 별점과 실제 별점간 차이가 작을수록 높게 점수를 매겨 가장 점수가 높은 아이템을 각 아이템의 유사 아이템으로 선정한다. )
Content-based Filtering은 유저에게 영화를 추천해야 한다고 생각합시다. 그러면 유저가 어떤 장르의 영화를 얼마나 좋아하는지 일단 알아냅니다. 그 이후, 각 영화들에 어떤 장르의 성격이 얼마나 섞여 있는지 정합니다. 그러면 각 유저의 각영화에 대한 예상 선호도를 아주 쉽게 계산해 낼 수 있습니다. 이 방법을 Content-base filtering이라고 합니다. 콘텐츠를 기반으로 유저에게 추천해줄 내용들을 필터링한다는 것이죠. 이 방법의 한계는 각 영화에 어떤 장르의 성격이 얼마나 있는지 사람이 일일이 입력해줘야 한다는 것입니다.
이를 방지하기 위해 우리의 추천엔진에서는 어떤 item을 추천할 때, 가장 유사하면서 추천하고자 하는 item의 예상 선호도보다 실제 선호도가 낮은 items 중 가장 실제 선호도가 높은 item을 추천의 이유로써 함께 제공한다. 즉, 추천하고자 하는 item 함께 사용자에게 어떠한 item보다 더 좋은 경험을 누릴 수 있을 것이라고 알려주는 것이다. 이 방식이 기존 다른 추천엔진들이 사용하는 것보다 더 나은 사용자 경험을 가능하게 한다. 이를 가능하게 하기 위해 아이템간의 유사도를 수치화하고, 예상 별점과 실제 별점간 차이가 작을 수록 높게 점수를 매겨 가장 점수가 높은 아이템을 각 아이템의 유사 아이템으로 선정한다.
행을 사용자로 생각하고, 열을 영화로 생각하는 행렬을 기본적으로 가정한다. 우리가 갖고 있는 텅텅비어있는 행렬을 M이라고 한다. 그리고 그 M과 비교데이터를 이용해서 M의 비어 있는 모든 부분을 채운 행렬을 C라고 합시다.(이 때 M에 비어있지 않은 데이터도 비교데이터로 인한 보정과 다른 데이터와의 관계에 의해 보정되어 실제 별점 유저가 매긴 별점과 다른 값이 들어가 있다. 하지만 이 값을 우리의 추정된 사용자의 실제 별점이므로 실제 별점이라 칭하기로 한다.
어떤 제품 A가 주어질 때, 제품 B를 다음과 같이 점수를 매깁니다.
1. 제품 B의 예상 별점이 제품 A의 보정된 실제 별점보다 미세한 차이로 작을수록 더 높게 점수를 매깁니다.
2. 제품 A가 제품 B와 유사도가 높을 수록 높은 점수를 매깁니다. (코사인 유사도를 사용한다.)
1.과 2.의 기준으로 만들어 점수를 만들어내 제품 A를 제외한 모든 제품들 중 가장 점수가 높은 제품 X를 출력합니다.
이상, 본 발명자에 의해서 이루어진 발명을 실시 예에 따라 구체적으로 설명하였지만, 본 발명은 실시 예에 한정되는 것은 아니고, 그 요지를 이탈하지 않는 범위에서 여러 가지로 변경 가능한 것은 물론이다.
10 : 사용자 단말 20 : 네트워크
30 : 선호도 예측 시스템 40 : 데이터베이스
30 : 선호도 예측 시스템 40 : 데이터베이스
Claims (2)
- 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법에 있어서,
(a) 아이템에 대한 사용자의 선호도 데이터를 입력받는 단계;
(b) 행렬완성 알고리즘 및 클러스터링 알고리즘을 이용하여 다수의 사용자가 다수의 아이템에 대하여 부여한 불완전한 선호도 행렬로부터 완성된 예측 선호도 행렬을 생성하는 단계;
(c) 모든 아이템들 간에 코사인 유사도(cosine similarity)를 계산하여 아이템 간의 유사도를 계산하는 단계;
(d) 특정 아이템을 추천할 때, 상기 특정 아이템과의 코사인 유사도가 높으면서 상기 특정 아이템의 예측 선호도 보다 실제 선호도가 낮은 아이템들 중에서 실제 선호도가 가장 높은 아이템을 함께 추천하는 단계를 포함하는 것을 특징으로 하는 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법.
- 제1항에 있어서,
상기 (c)단계에서, 상기 코사인 유사도를 계산하고, 계산된 코사인 유사도를 0 ~ 100% 이내의 백분율로 치환하는 것을 특징으로 하는 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140168063A KR20160064448A (ko) | 2014-11-28 | 2014-11-28 | 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020140168063A KR20160064448A (ko) | 2014-11-28 | 2014-11-28 | 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법 |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20160064448A true KR20160064448A (ko) | 2016-06-08 |
Family
ID=56193454
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020140168063A KR20160064448A (ko) | 2014-11-28 | 2014-11-28 | 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법 |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR20160064448A (ko) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101877282B1 (ko) * | 2017-02-14 | 2018-07-11 | 주식회사 아이디어랩스 | 개인화 회귀 분석을 이용하여 품목의 이용자가 상기 품목에 부여하는 선호도를 예측하기 위하여 정보를 정화하는 방법 및 이를 이용한 컴퓨팅 장치 |
CN108364463A (zh) * | 2018-01-30 | 2018-08-03 | 重庆交通大学 | 一种交通流量的预测方法和*** |
KR20190016249A (ko) * | 2017-08-08 | 2019-02-18 | 한국과학기술원 | 유사도 기반의 관계망에서 군집 구조를 도출하는 방법 |
CN110782287A (zh) * | 2019-10-25 | 2020-02-11 | 北京沃东天骏信息技术有限公司 | 实体相似度计算方法及装置、物品推荐***、介质、设备 |
KR20200122652A (ko) * | 2019-04-18 | 2020-10-28 | 주식회사 퍼피팝 | 영양 성분 프로파일링 기반 사료추천 시스템 |
CN112614029A (zh) * | 2020-12-24 | 2021-04-06 | 江苏知途教育科技有限公司 | 一种选修课程推荐的方法和装置 |
US11064233B2 (en) | 2017-08-01 | 2021-07-13 | Samsung Electronics Co., Ltd. | Providing service recommendation information on the basis of a device use history |
KR102367568B1 (ko) * | 2020-12-14 | 2022-02-24 | 숙명여자대학교산학협력단 | 사용자 유사도 기반 컨텐츠 분배 시스템 및 그 방법 |
KR20220152013A (ko) * | 2021-05-07 | 2022-11-15 | 경희대학교 산학협력단 | 리뷰 빅데이터 기반의 아이템 추천 장치 및 그 방법 |
CN117150150A (zh) * | 2023-10-31 | 2023-12-01 | 中国科学技术大学 | 一种基于图信号处理的群体推荐方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090010866A (ko) | 2007-07-24 | 2009-01-30 | 삼성전자주식회사 | 복합 알고리즘 이용한 정보 추천 방법 및 장치 |
KR20100096975A (ko) | 2009-02-25 | 2010-09-02 | 한국정보통신대학교 산학협력단 | 협업 필터링을 이용한 사용자 맞춤형 아이피 티브이 프로그램 자동 추천 방법 |
KR20120076477A (ko) | 2010-11-25 | 2012-07-09 | 주식회사 케이티 | 상점 추천 방법 및 시스템 |
KR20130098841A (ko) | 2012-02-28 | 2013-09-05 | 전자부품연구원 | 추출된 사용자 그룹을 활용한 사용자별 콘텐츠 추천 장치 및 방법 |
KR20140079639A (ko) | 2012-12-18 | 2014-06-27 | 한양대학교 산학협력단 | 협업 필터링을 위한 emd 기반 유사 사용자 선별 방법 |
KR20140111152A (ko) | 2013-03-08 | 2014-09-18 | 공주대학교 산학협력단 | 음악추천 시스템 및 방법 |
-
2014
- 2014-11-28 KR KR1020140168063A patent/KR20160064448A/ko not_active Application Discontinuation
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20090010866A (ko) | 2007-07-24 | 2009-01-30 | 삼성전자주식회사 | 복합 알고리즘 이용한 정보 추천 방법 및 장치 |
KR20100096975A (ko) | 2009-02-25 | 2010-09-02 | 한국정보통신대학교 산학협력단 | 협업 필터링을 이용한 사용자 맞춤형 아이피 티브이 프로그램 자동 추천 방법 |
KR20120076477A (ko) | 2010-11-25 | 2012-07-09 | 주식회사 케이티 | 상점 추천 방법 및 시스템 |
KR20130098841A (ko) | 2012-02-28 | 2013-09-05 | 전자부품연구원 | 추출된 사용자 그룹을 활용한 사용자별 콘텐츠 추천 장치 및 방법 |
KR20140079639A (ko) | 2012-12-18 | 2014-06-27 | 한양대학교 산학협력단 | 협업 필터링을 위한 emd 기반 유사 사용자 선별 방법 |
KR20140111152A (ko) | 2013-03-08 | 2014-09-18 | 공주대학교 산학협력단 | 음악추천 시스템 및 방법 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101877282B1 (ko) * | 2017-02-14 | 2018-07-11 | 주식회사 아이디어랩스 | 개인화 회귀 분석을 이용하여 품목의 이용자가 상기 품목에 부여하는 선호도를 예측하기 위하여 정보를 정화하는 방법 및 이를 이용한 컴퓨팅 장치 |
US11064233B2 (en) | 2017-08-01 | 2021-07-13 | Samsung Electronics Co., Ltd. | Providing service recommendation information on the basis of a device use history |
KR20190016249A (ko) * | 2017-08-08 | 2019-02-18 | 한국과학기술원 | 유사도 기반의 관계망에서 군집 구조를 도출하는 방법 |
CN108364463A (zh) * | 2018-01-30 | 2018-08-03 | 重庆交通大学 | 一种交通流量的预测方法和*** |
CN108364463B (zh) * | 2018-01-30 | 2020-07-31 | 重庆交通大学 | 一种交通流量的预测方法和*** |
KR20200122652A (ko) * | 2019-04-18 | 2020-10-28 | 주식회사 퍼피팝 | 영양 성분 프로파일링 기반 사료추천 시스템 |
CN110782287A (zh) * | 2019-10-25 | 2020-02-11 | 北京沃东天骏信息技术有限公司 | 实体相似度计算方法及装置、物品推荐***、介质、设备 |
KR102367568B1 (ko) * | 2020-12-14 | 2022-02-24 | 숙명여자대학교산학협력단 | 사용자 유사도 기반 컨텐츠 분배 시스템 및 그 방법 |
CN112614029A (zh) * | 2020-12-24 | 2021-04-06 | 江苏知途教育科技有限公司 | 一种选修课程推荐的方法和装置 |
CN112614029B (zh) * | 2020-12-24 | 2024-04-12 | 江苏知途教育科技有限公司 | 一种选修课程推荐的方法和装置 |
KR20220152013A (ko) * | 2021-05-07 | 2022-11-15 | 경희대학교 산학협력단 | 리뷰 빅데이터 기반의 아이템 추천 장치 및 그 방법 |
CN117150150A (zh) * | 2023-10-31 | 2023-12-01 | 中国科学技术大学 | 一种基于图信号处理的群体推荐方法 |
CN117150150B (zh) * | 2023-10-31 | 2024-02-09 | 中国科学技术大学 | 一种基于图信号处理的群体推荐方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR20160064447A (ko) | 협력적 필터링의 예측 선호도를 이용한 처음 사용자에 대한 추천 제공 방법 | |
KR20160064448A (ko) | 유사 집합의 예상 선호도 대비 기반 아이템 추천 제공 방법 | |
Yang et al. | A survey of collaborative filtering-based recommender systems for mobile internet applications | |
CN110162693B (zh) | 一种信息推荐的方法以及服务器 | |
Shi et al. | Getjar mobile application recommendations with very sparse datasets | |
Almazro et al. | A survey paper on recommender systems | |
Musto et al. | Semantics-aware graph-based recommender systems exploiting linked open data | |
Khatwani et al. | Building personalized and non personalized recommendation systems | |
Gras et al. | Identifying grey sheep users in collaborative filtering: a distribution-based technique | |
Nakhli et al. | Movie recommender system based on percentage of view | |
Wasilewski et al. | Intent-aware diversification using a constrained PLSA | |
KR20170079429A (ko) | 사용자 속성을 고려한 클러스터링 기반의 협업 필터링 방법 및 영화 추천 시스템 | |
Puntheeranurak et al. | An Item-based collaborative filtering method using Item-based hybrid similarity | |
Wei et al. | A unified framework for recommendations based on quaternary semantic analysis | |
Deldjoo et al. | Using Visual Features and Latent Factors for Movie Recommendation. | |
Mirbakhsh et al. | Leveraging clustering to improve collaborative filtering | |
Zhang et al. | An efficient recommender system using locality sensitive hashing | |
Thomas et al. | Comparative study of recommender systems | |
Codina et al. | Local context modeling with semantic pre-filtering | |
US20140365456A1 (en) | Item-based recommendation engine for recommending a highly-associated item | |
Guan et al. | Enhanced SVD for collaborative filtering | |
CN111198991A (zh) | 一种基于信任度和专家用户的协同过滤推荐方法 | |
Kartoglu et al. | Two collaborative filtering recommender systems based on sparse dictionary coding | |
Molina et al. | Recommendation system for netflix | |
Hartatik et al. | A comparison study of model based collaborative filtering using alternating least square and singular value decomposition |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
WITN | Withdrawal due to no request for examination |