(19) 대한민국특허청(KR) (12) 등록특허공보(B1) (45) 공고일자 2013년01월02일 (11) 등록번호 10-1217421 (24) 등록일자 2012년12월24일 (51) 국제특허분류(Int. Cl.) G06F 19/00 (2011.01) G06F 17/40 (2006.01) G06F 17/16 (2006.01) G06F 17/30 (2006.01) (21) 출원번호 10-2010-0087523 (73) 특허권자 애플 인크. 미합중국 95014 캘리포니아 쿠퍼티노 인피니트 루 프 1 (22) 출원일자 2010년09월07일 (72) 발명자 심사청구일자 2010년09월07일 게이츠, 패트릭 (65) 공개번호 10-2011-0027594 미국 94114 캘리포니아주 샌 프란시스코 출라 레 (43) 공개일자 2011년03월16일 인 49 (30) 우선권주장 워너, 제레미 12/646,916 2009년12월23일 미국(US) 61/240,630 2009년09월08일 미국(US) (56) 선행기술조사문헌 US20080021851 A1 US20090006353 A1 미국 94010 캘리포니아주 버링게임 반크로프트 로 드 212 (뒷면에 계속) (74) 대리인 백만기, 양영준 전체 청구항 수 : 총 19 항 심사관 : 석상문 (54) 발명의 명칭 유사성 데이터에 기초한 미디어 아이템 클러스터링 (57) 요 약 다수의 프로그램 참가자에 의해 제공되는 미디어 라이브러리 목록 정보에 적어도 부분적으로 기초해서 프로그램 참가자에 대한 미디어 혼합물의 생성을 용이하게 하는 방법 및 구성이 제시된다. 프로그램 참가자가 될 것으로 결정되는 이들 개인은, 그 프로그램의 다른 참가자 전체로부터 얻어진 데이터에 적어도 부분적으로 기초해서, 자 신의 음악을 정리하고 유지하고 재생하는데 관심이 있다. 프로그램 참가자는 그 프로그램 참가자의 미디어 목록 을 대표하는 데이터를 송신하고 시스템은 이 데이터를 수신해야만 한다. 시스템 또는 프로그램은, 각각의 다른 아이템에 대한 프로그램 참가자의 콜렉션으로부터의 각 아이템의 상대적 유사성 및 식별된 유사한 아이템의 유사 성 정보 클러스터로부터의 각 아이템의 상대적 유사성을 결정한다. 이들 클러스터는 개별 프로그램 참가자의 미 디어 라이브러리에 있는 유사한 아이템의 클러스터를 식별하는데 사용될 수 있고, 그로부터 유사한 미디어 아이 템의 혼합물이 생성될 수 있다. - 1 -
대 표 도 (72) 발명자 비로스, 앤드류 에이치. 미국 94110 캘리포니아주 샌 프란시스코 넘버223 21번 스트리트 3288 맥쿨로, 존 앤드류 미국 94002 캘리포니아주 벨몬트 메제스 애비뉴 2008 와그너, 리차드 프레더릭 미국 94110 캘리포니아주 샌 프란시스코 코스타 스 트리트 47 스트람, 에릭 단포스 미국 95051 캘리포니아주 산타 클라라 에이피티. 2207 사라토가 애비뉴 111-2 -
특허청구의 범위 청구항 1 미디어 아이템들의 프로그램 참가자의 콜렉션으로부터 미디어 아이템들의 혼합물(mix)들을 생성하는 방법으로서, 미디어 아이템들의 프로그램 참가자의 콜렉션(collection)의 개별 미디어 아이템들을 기술하는 정보를 수신하는 단계; 상기 미디어 아이템들의 프로그램 참가자의 콜렉션 내에 포함된 미디어 아이템들의 클러스터들을 기술하는 데이 터를 컴파일링(compiling)하는 단계 - 상기 클러스터들은, 서버에게 알려진 미디어 아이템들의 계층적으로 관련 된 클러스터들에서 발견되는 트랙들의 병합(agglomeration)에 기초해서 컴파일링되고, 목록(inventory)에 있는 미디어 아이템들의 클러스터들은 복수의 프로그램 참가자들로부터 도출된 유사성 데이터(similarity data)의 클 러스터 분석에 기초해서 결정됨 -; 미디어 아이템들의 혼합물을 결정하는 단계 - 상기 혼합물은, 상기 서버로부터 수신된 상기 미디어 아이템들의 프로그램 참가자의 콜렉션 내에 포함된 상기 미디어 아이템들의 클러스터들 중 하나로부터 선택된 미디어 아이 템들을 포함함 -; 및 프로그램 참가자의 클라이언트 장치에게 상기 미디어 아이템들의 혼합물을 제공하는 단계 를 포함하는 미디어 아이템 혼합물들의 생성 방법. 청구항 2 제1항에 있어서, 상기 서버에게 알려진 미디어 아이템들의 클러스터들은 상기 서버에게 알려진 미디어 아이템들의 콜렉션을 비중 첩되는 미디어 아이템들의 각 그룹들을 포함하는 캐노피(canopy)들로 분할함으로써 또한 결정되는 미디어 아이 템 혼합물들의 생성 방법. 청구항 3 제2항에 있어서, 상기 서버에게 알려진 미디어 아이템들의 클러스터들은 각 캐노피 내의 상기 미디어 아이템들을 반복적으로 (recursively) 하위 분할함으로써 또한 결정된 미디어 아이템 혼합물들의 생성 방법. 청구항 4 제3항에 있어서, 각각의 반복은, 상기 복수의 프로그램 참가자들로부터 도출된 유사성 데이터의 클러스터 분석에 기초해서 각각 의 서버 클러스터 내에서 다른 아이템들과 유사하다고 결정된 미디어 아이템들의, 비중첩적이고 리파인(refin e)된 서버 클러스터들을 산출하는 미디어 아이템 혼합물들의 생성 방법. 청구항 5 제3항에 있어서, 상기 반복적 하위 분할은, 마지막 반복으로부터 생성된 서버 클러스터들 각각이 미디어 아이템들의 결정된 수 이하의 미디어 아이템들을 포함한다는 결정에 응답해서 종료되고, 이로 인해 복수의 최저 레벨 서버 클러스터가 얻어지는 미디어 아이템 혼합물들의 생성 방법. 청구항 6 제1항에 있어서, 상기 미디어 아이템들의 혼합물은, 상기 클러스터들 중 하나로부터 선택된 노래들 및 상기 클러스터들 중 하나 - 3 -
로부터 선택된 노래들과 유사한 노래들로부터 생성된 재생리스트를 포함하는 미디어 아이템 혼합물들의 생성 방 법. 청구항 7 기계가 방법을 수행하도록 야기하는 기계 판독가능 명령어들이 저장된 기계 판독가능 매체로서, 상기 방법은, 각각이 복수의 프로그램 참가자들 중 적어도 하나의 프로그램 참가자의 미디어 라이브러리에 존재하는 미디어 아이템들의 콜렉션을, 비중첩되는 미디어 아이템들의 각 그룹들을 포함하는 캐노피들로 분할하는 단계; 각 캐노피의 미디어 아이템들을 반복적으로 하위 분할하는 단계 - 각각의 반복은, 상기 복수의 프로그램 참가자 들로부터 도출된 유사성 데이터의 클러스터 분석에 기초해서 각각의 서버 클러스터 내에서 다른 아이템들과 유 사하다고 결정된 미디어 아이템들의, 비중첩적이고 리파인된 서버 클러스터들을 생성함 -; 마지막 반복으로부터 생성된 서버 클러스터들 각각이 미디어 아이템들의 결정된 수 이하의 미디어 아이템들을 포함한다는 결정에 응답해서 상기 반복적 하위 분할을 종료하고, 이로 인해 복수의 최저 레벨 서버 클러스터가 얻어지는 단계; 및 특정 프로그램 참가자의 미디어 라이브러리에 존재하는 아이템들로부터 상기 특정 프로그램 참가자에 대한 하나 이상의 미디어 아이템 클러스터를 생성하는 단계 - 이 생성 단계는, 상기 최저 레벨 서버 클러스터들 중 임의의 서버 클러스터에서 자신들의 멤버십으로부터 상기 프로그램 참가자의 미디어 라이브러리에서 발견된 미디어 아이템들에 대해 각각의 참가자 미디어 아이템 클러스터들을 결 정하는 단계; 및 공통 부모 서버 클러스터를 공유하고, 또한 참가자 클러스터 최소 수의 미디어 아이템들보다 더 적은 미디어 아이템들을 갖는 참가자 클러스터들을, 더 큰 참가자 클러스터들 각각이 상기 참가자 클러스터 최소 수 의 미디어 아이템들을 적어도 포함할 때까지, 각각의 더 큰 참가자 클러스터들내로 반복적으로 병합하는 단계를 포함함 - 를 포함하는 기계 판독가능 매체. 청구항 8 제7항에 있어서, 상기 캐노피들은 상기 프로그램 참가자들의 집합적 미디어 라이브러리 목록들을 편집 데이터에 기초하여 미디어 아이템들의 상이한 그룹들로 분할하고, 상기 상이한 그룹들은 서로 비유사한 것으로 결정되는 기계 판독가능 매 체. 청구항 9 제7항에 있어서, 상기 클러스터 분석은 k-평균 분석을 포함하는 기계 판독가능 매체. 청구항 10 제7항에 있어서, 각각의 캐노피 내의 상기 미디어 아이템들은 상기 클러스터 분석 전에 아티스트에 의해 그룹화되는 기계 판독가 능 매체. 청구항 11 제7항에 있어서, 상기 복수의 프로그램 참가자들로부터 도출된 상기 유사성 데이터는 벡터 공간을 포함하고, 상기 벡터 공간 내 의 각 벡터는 한 미디어 아이템 및 이 미디어 아이템에 유사한 모든 미디어 아이템을 나타내는 기계 판독가능 매체. 청구항 12-4 -
프로그램 참가자의 미디어 라이브러리에 유사한 미디어 아이템들을 클러스터링하기 위한 시스템에 있어서, 복수의 프로그램 참가자들 중 적어도 하나의 프로그램 참가자의 미디어 라이브러리에 존재하는 미디어 아이템들 로부터 형성된 미디어 아이템의 콜렉션을 반복적으로 하위 분할하고 - 각각의 반복적 하위 분할은, 상기 복수의 프로그램 참가자들의 미디어 라이브러리들로부터 도출된 유사성 데이터의 클러스터 분석에 기초해서 각각의 서 버 클러스터 내에서 다른 아이템들과 유사하다고 결정된 미디어 아이템들의, 비중첩적이고 리파인된 서버 클러 스터들을 생성함 -, 또한 마지막 반복적 하위 분할로부터 생성된 서버 클러스터들 각각이 미디어 아이템들의 결 정된 수 이하의 미디어 아이템들을 포함한다는 결정에 응답해서 상기 반복적 하위 분할을 종료하도록 구성된 제 1 서버 ; 하나 이상의 최저 레벨 서버 클러스터에서 발견되는 특정 프로그램 참가자의 미디어 라이브러리로부터 미디어 아이템들에 대한 참가자 클러스터들을 결정하는 단계, 및 더 큰 참가자 클러스터들 각각이 결정된 최소 수의 미 디어 아이템들을 적어도 포함할 때까지, 공통 부모 서버 클러스터를 공유하는 참가자 클러스터들을 더 큰 참가 자 클러스터들이 되도록 반복적으로 병합하는 단계를 포함하는 방법을 수행함으로써, 상기 서버 클러스터들에 기초해서 특정 프로그램 참가자의 미디어 라이브러리에 존재하는 아이템들로부터 특정 프로그램 참가자에 대한 하나 이상의 미디어 아이템 클러스터를 생성하도록 구성된 제2 서버; 및 상기 참가자 클러스터들 중 하나에 나타내어진 미디어 아이템들의 선택에 기초해서 재생을 위한 유사한 미디어 아이템들의 혼합물을 생성하도록 구성된 미디어 재생 장치 를 포함하는 시스템. 청구항 13 제12항에 있어서, 상기 제1 서버 및 상기 제2 서버는 하나의 서버 어레이의 일부를 구성하는 시스템. 청구항 14 제12항에 있어서, 상기 복수의 프로그램 참가자들로부터 도출된 상기 유사성 데이터는 벡터 공간을 포함하고, 상기 벡터 공간 내 의 각 벡터는 각각의 프로그램 참가자의 미디어 라이브러리 내에서 개별 미디어 아이템의 발생들을 나타내는 시 스템. 청구항 15 제12항에 있어서, 상기 복수의 프로그램 참가자들로부터 도출된 상기 유사성 데이터는 프로그램 참가자의 미디어 라이브러리들 중 개별 미디어 아이템들의 쌍들의 동시 발생 사건들을 나타내는 유사성 행렬을 포함하는 시스템. 청구항 16 미디어 아이템들의 프로그램 참가자의 콜렉션에 저장된 미디어 아이템들의 클러스터들을 기술하는 데이터를 저 장하도록 구성된 미디어 저장부 - 상기 클러스터들은 서버 목록으로부터 이용가능한 미디어 아이템들의 계층적 으로 관련된 클러스터들에서 발견되는 트랙들의 병합에 기초해서 컴파일링되고, 상기 서버 목록의 상기 미디어 아이템들의 클러스터들은 복수의 프로그램 참가자들로부터 도출된 유사성 데이터의 클러스터 분석에 기초해서 결정됨 -; 미디어 아이템들의 상기 프로그램 참가자의 콜렉션 내의 상기 미디어 아이템들의 클러스터들 중 하나에서 식별 된 미디어 아이템들로부터 선택된 미디어 아이템들의 혼합물을 선택하도록 프로세서를 구성하기 위한 명령어들 이 저장된 유형적(tangible) 컴퓨터 판독가능 매체; 및 상기 컴퓨터 판독가능 매체로부터 얻어진 명령어들에 의해 구성되는 프로세서 를 포함하는 장치. 청구항 17-5 -
제16항에 있어서, 미디어 아이템들의 프로그램 참가자의 콜렉션에 의해 포함된 개별 미디어 아이템들을 기술하는 정보를 상기 서 버에 송신하도록 구성되고, 또한 상기 미디어 아이템들의 프로그램 참가자 콜렉션 내의 미디어 아이템들의 클러 스터들을 기술하는 데이터를 상기 서버로부터 수신하도록 구성된 통신 인터페이스를 더 포함하는 장치. 청구항 18 제16항에 있어서, 상기 클러스터 데이터는 상기 복수의 클러스터 각각 내에서 식별된 미디어 아이템들 및 복수의 클러스터들을 식 별하는 정보를 포함하는 장치. 청구항 19 제16항에 있어서, 상기 혼합물은 상기 클러스터 데이터로부터 생성된 유사한 미디어 아이템의 리스트들을 포함하는 장치. 명 세 서 [0001] 기 술 분 야 본 출원은, 2009년 12월 23일에 출원된 미국 특허 출원 일련 번호 제12/646,916호에 대해 우선권을 주장하고, 또한, 2009년 9월 8일에 출원되고 제목이 "유사성 데이터에 기초한 미디어 아이템 클러스터링"인 미국 가출원 번호 제61/240,630호에 대해 우선권을 주장하며, 이 두 출원은 본 명세서에서 그 전체 내용이 참조로서 결합된 다. [0002] 배 경 기 술 본 발명은 미디어 아이템의 클러스터에 관한 것으로, 보다 구체적으로 미디어 아이템의 클러스터에 기초한 미디 어 혼합물(mix)을 생성하는 것에 관한 것이다. 발명의 내용 [0003] [0004] [0005] [0006] [0007] 해결하려는 과제 MPEG, ACC와 같은 압축 미디어 파일 세대 전에, WMA 미디어는 자기 테이프에 저장되었고, 후에는 콤팩트 디스크 (CD)에 저장되었다. 특히, 음악 미디어 파일에 관련해서, 소비자들은 일반적으로 다수의 음악 트랙을 포함하는 앨범으로 음악 미디어를 구입하였다. 종종 이러한 앨범들은, 청취자의 취향에 대한 개별 트랙의 적합성 또는 청취자의 현재 청취 분위기로 인해 청취자의 흥미의 정도가 변화되는 트랙들을 포함한다. 이는 종종, 청취자가 청취하고 싶어하는 트랙들이 여러 개의 또는 매우 많은 앨범들에 산재되어 있는 상황을 가 져 온다. 이러한 상황에 의해서, 사용자는 보통 자신이 선호하는 오디오 트랙들의 "혼합물", 또는 유사해서 동 일한 테이프 또는 콤팩크 디스크에서 재생될 때 훌륭하게 들을 수 있는 오디오 트랙들의 "혼합물"을 생성한다. 이러한 혼합물을 생성하기 위해서, 사용자는 자신의 콜렉션에 있는 모든 트랙들에 대한 방대한 지식을 가져야만 한다. 또한, 사용자는 원 미디어로부터 각 트랙을 다른 미디어에 기록해야만 한다. 사용자는 종종, 어떤 트랙 이 테이프 또는 CD의 한정된 공간에 맞는지를 결정하고, 그 순서를 결정하기 위해서 트랙들을 듣는데 시간을 소 비한다. 오늘날, 다수의 미디어 소비자들은 전체 앨범을 구입하기 보다 개별 트랙을 구입한다. 또한, 현재 사용자들은 종종, 자신의 전체 콜렉션이 다수의 테이프 또는 CD 대신에 하나의 장치에 들어가기 때문에, 자신의 라이브러리 에 있는 다수의 트랙들을 청취한다. 자신의 미디어 라이브러리에 있는 매 트랙에 언제나 액세스할 수 있고 스크롤 및 클릭으로 각 트랙에 액세스할 수 있는 이러한 상대적 편리성에도 불구하고, 청취자는 여전히, 종종 재생목록(playlist) 형태로 트랙들의 혼합 물을 생성한다. 하지만, 이러한 혼합물을 생성하는 것은, 많은 양의 사용자 상호작용 및 다수의 사용자 결정을 요하는 시간 소모 프로세스이다. 따라서, 높은 품질의 혼합물을 생성하면서도 청취자에 대한 부담을 없앨 필요 - 6 -
가 있다. [0008] [0009] [0010] [0011] [0012] [0013] [0014] [0015] 과제의 해결 수단 본 명세서에 개시된 발명의 추가적 특징 및 장점들이 아래 설명에서 개시될 것이며, 그 일부는 본 명세서로부터 명백할 것이고, 또 다른 일부는 개시된 기술들의 실시를 통해 주지될 수 있다. 본 발명의 특징 및 장점들은 첨 부된 청구항에서 특별히 언급되는 수단 및 그 조합에 의해 실현되고 획득될 수 있다. 본 발명의 상기 및 기타 특징들은 아래 기술 및 첨부 청구항으로부터 보다 충분히 명백해질 것이고, 또는 본 명세서에서 앞서 개시한 개 념들의 실시에 의해 주지될 수 있다. 본 명세서는, 미디어 아이템의 혼합물을 생성하는데 사용하기 위해 프로그램 참가자(participant)의 미디어 라 이브러리에서 미디어 아이템의 클러스터를 식별하기 위한 방법 및 구성을 개시한다. 최고 품질의 혼합물을 생 성하기 위해서, 클러스터는 전체 사용자의 입력에 기초한다. 전체 프로그램 참가자는, 자신의 개별 음악 라이브러리에 특히 관련된 클러스터링 데이터를 수신하기 위한 교환 시 프로그램을 호스팅하는 서버와 자신의 음악 라이브러리에 있는 개별 미디어 아이템의 콘텐츠에 대한 정보를 모두 공유한다. 일부 실시예에서, 아이템은 프로그램 참가자의 라이브러리 분석에 기초한 유사성으로서 식별된다. 적어도 2개 의 프로그램 참가자의 미디어 라이브러리에 나타내진 각 미디어 아이템에 대해, 각각의 프로그램 참가자의 라이 브러리에서의 그 미디어 아이템의 존재를 나타내는 벡터가 표시된다. 각 벡터는 미디어 아이템을 나타내고, 모 든 다른 벡터와 비교될 수 있다. 임의의 2개의 아이템에 대해, 임의의 2개의 벡터들 간의 관계가 가까울수록, 서로에 대해 이 2개의 아이템이 더 유사하다고 할 것이다. 상술한 유사성 데이터를 사용해서, 클러스터링 분석은 프로그램 참가자의 라이브러리로부터 수집된 개별 미디어 아이템을 서버 클러스터, 또는 서로에 대해 모두 상대적으로 유사한 서버 데이터베이스의 미디어 아이템의 그룹 으로 매핑할 수 있다. 일부 실시예에서, 클러스터링 분석은 각 서버 클러스터에 대해 반복적으로 적용되어, " 부모(parent)" 클러스터를 포함하는 미디어 아이템보다 서로에 대해 더 강한 유사성 관계를 갖는 미디어 아이템 을 포함하는 더 작은 서버 클러스터를 가져 온다. 클러스터 분석을 반복적으로 적용함으로써, 서버 클러스터들 의 트리형 관계가 생성될 수 있으며, 여기에서 각 "부모" 서버 클러스터는 2개 이상의 "자식(child)" 서버 클러 스터를 갖고, "자식" 서버 클러스터들 간에 "부모" 서버 클러스터의 콘텐츠를 나눈다. 이러한 반복적 분석은 원하는 횟수만큼 적용될 수 있지만, 일부 실시예에서 이 분석은 "자식" 서버 클러스터가 1000 이하, 100 이하, 또는 50 이하의 미디어 아이템을 가질 때까지 재적용될 수 있다. 이러한 기준에 맞는 서버 클러스터는 트리에 있어서 최저 레벨의 서버 클러스터가 될 것이다. 일부 실시예에서, 클러스터링 분석은 편집(editorial) 분할과 결합된다. 클러스터링 분석 전에 편집 분할을 수 행하는 것이 가장 간편하지만, 편집 분할은 언제나 수행될 수 있다. 일부 실시예에서, 잠재적으로 유사한 미디 어 아이템들의 비중첩 그룹들의 캐노피(canopy)가, 클러스터링 분석이 수행되기 전에 장르 정보에 기초해서 생 성된다. 예를 들어, 음악의 경우, "랩" 장르에 속하는 음악 미디어 아이템은 "오페라" 장르에 속하는 음악 미 디어 아이템과 유사한 것으로 절대 고려되지 않을 것이다. 따라서, 미디어 아이템의 전체 콜렉션은 "락", "랩", "클래식", "오페라" 등과 같은 비중첩 그룹들의 큰 캐노피들로 분할될 수 있다. 하지만, 미디어 아이템 이 동일한 캐노피로 함께 그룹화되는 것으로 인해, 이것이 이들 아이템 각각이 서로 유사하다는 것을 의미하지 는 않지만, 이들 아이템이 서로 유사할 수 있다. 서버는, 서버 클러스터에 의해 표시되는 유사성 관계를 프로그램 참가자의 미디어 라이브러리에 반영함으로써, 프로그램 참가자의 미디어 라이브러리에 존재하는 미디어 아이템만을 포함하는 참가자 클러스터를 생성할 수 있 다. 서버가 프로그램 참가자의 미디어 라이브러리의 콘텐츠를 이미 알기 때문에, 서버는, 어떤 최저 레벨 서버 클러스터가 프로그램 참가자의 미디어 라이브러리에 각 아이템을 포함하고 그로부터 참가자 클러스터를 형성하 는지를 결정할 수 있다. 참가자 클러스터들 중 임의의 하나가 예를 들어, 20 이하 또는 50 이하의 미디어 아이템과 같이 너무 적은 미디 어 아이템을 포함한다면, 서버는 공통 부모 서버 클러스터를 공유하는 클러스터를 반복적으로 집합 (agglomeration)할 수 있다. 이러한 집합 동작을 반복함으로써, 공통 부모로부터 내려온 프로그램 참가자의 미 디어 아이템은, 참가자 클러스터가 용인되는 사이즈에 도달할 때까지 더 큰 참가자 클러스터로 모인다. 일부 실시예에서, 이러한 집합 동작은 정해진 수의 클러스터만이 남아 있을 때까지 계속된다. - 7 -
[0016] [0017] [0018] 서버는 프로그램 참가자의 미디어 라이브러리의 미디어 아이템으로부터 생성된 참가자 클러스터에 대한 정보를 송신하고, 클라이언트 장치는 이 정보를 수신할 수 있다. 클라이언트 장치는 서버로부터 임의의 특정 클러스터 에 포함된 모든 미디어 아이템들의 리스트를 수신할 수 있다. 상술한 바와 같이, 클러스터는, 서버상의 미디어 아이템의 계층적으로 연관된 참가자 클러스터에서 발견되는 프로그램 참가자의 트랙들의 집합에 기초해서 컴파 일된다. 미디어 아이템의 클러스터는, 서버의 목록(inventory)에서의 서로에 대한 각 노래의 상대적 유사성에 기초한, 서버의 목록에 있어서의 미디어 아이템의 클러스터 분석에 기초해서 결정되고, 노래들 간의 상대적 유 사성은 서로 다른 프로그램 참가자의 미디어 라이브러리 내의 미디어 아이템들의 동시 발생 정도를 분석해서 결 정된다. 그 결과로서의 참가자 클러스터는 미디어 아이템의 혼합물을 생성 및 재생하는데 사용될 수 있다. 이 혼합물은, 서버로부터 수신된 미디어 아이템들의 프로그램 참가자의 콜렉션 내에 포함되는 미디어 아이템의 클 러스터들 중 하나에 표시되는 미디어 아이템을 포함한다. 일부 실시예에서, 혼합물은, 클러스터에 표시된 아이 템들 중 일부 및 이들 미디어 아이템과 유사한 것으로 여겨지는 다른 노래들의 선택물을 포함한다. 즉, 클러스 터의 미디어 아이템은 혼합물의 나머지 아이템들에 대한 시드(seed) 아이템으로서 작용할 수 있다. 클러스터로 부터 어떤 미디어 아이템이 혼합물을 생성하기 위한 시드 아이템으로서 사용될지를 선택하는 다수의 방법이 존 재한다는 것을 이해할 것이다. 예를 들어, 일부 실시예에서, 미디어 아이템은 전체로서의 클러스터에 대한 자 신의 상대적 유사성에 기초해서 선택될 수 있다. 일부 실시예에서는, 클러스터의 모든 아이템들이 혼합물을 생 성하는데 사용될 수 있다. 이러한 전체 프로그램 또는 시스템의 특정 양상은, 미디어 공급자(온라인 음악 판매점), 참가자의 미디어 재생 장치, 종종, 재생 장치와 온라인 판매점의 컴퓨터 시스템 간의 통신을 제공하는 사용자의 개인용 컴퓨터와 같은 중간 설비의 서버들에서 발생한다는 것을 이해해야 한다. [0019] 발명의 효과 본 발명은, 미디어 아이템의 혼합물을 생성하는데 사용하기 위해 프로그램 참가자의 미디어 라이브러리에서 미 디어 아이템의 클러스터를 식별하기 위한 방법 및 구성을 개시하여, 높은 품질의 혼합물을 생성하면서도 청취자 에 대한 부담을 줄인다. [0020] 도면의 간단한 설명 상기 개시의 다른 장점 및 특징을 정의할 뿐만 아니라, 상술한 실시예들이 구현되는 방식을 가장 잘 설명하기 위해서, 보다 구체적인 설명이 후술되고 첨부 도면에서 도시된다. 이들 도면은 단지 본 발명의 예시적 실시예 들을 도시하는 것이므로, 발명의 범위를 제한하는 것으로 고려되어서는 안 되며, 이 예들은 다음과 같은 첨부 도면을 사용해서 추가적 특정 및 상세로서 기술되고 설명될 것이다. 도 1은 예시적 시스템 실시예를 도시하는 도면. 도 2는 프로그램 참가자 라이브러리에서 아이템을 수신 및 식별하고 유사성 데이터를 생성하기 위한 예시적 방 법 실시예를 도시하는 도면. 도 3a 및 3b는 상관 데이터를 결정하는 방법을 도시하는 도면. 도 4는 샘플 구매 행렬을 도시하는 도면. 도 5는 마스터(master) 유사성 표의 컬럼을 도시하는 도면. 도 6은 개별 유사성 표를 도시하는 도면. 도 7은 벡터 공간의 클러스터를 식별하는 예시적 방법을 도시하는 도면. 도 8은 벡터 공간의 서브클러스터(sub-cluster)를 식별하는 예시적 방법을 도시하는 도면. 도 9는 예시적 서버 클러스터 실시예를 도시하는 도면. 도 10은 서버 클러스터를 생성하는 예시적 방법을 도시하는 도면. 도 11은 서버 클러스터를 생성하는 예시적 방법을 도시하는 도면. 도 12는 클러스터 벡터를 계산하는 예시적 방법을 도시하는 도면. - 8 -
도 13은 예시적 서버 클러스터 및 캐노피 실시예를 도시하는 도면. 도 14는 참가자 클러스터를 생성하는 예시적 방법을 도시하는 도면. 도 15는 참가자 클러스터를 생성하는 예시적 방법을 도시하는 도면. 도 16은 예시적 시스템 실시예를 도시하는 도면. 도 17은 유사성 데이터를 수신하는 예시적 방법을 도시하는 도면. 도 18은 예시적 재생목록 방법 실시예를 도시하는 도면. 도 19는 예시적 미디어 혼합물 방법 실시예를 도시하는 도면. 도 20은 구매용 아이템을 추천하기 위한 예시적 방법 실시예를 도시하는 도면. 도 21은 예시적 시스템 실시예를 도시하는 도면. 도 22는 미디어 및 유사성 표를 디지털 미디어 재생기에 동기화(synch)하기 위한 예시적 시스템을 도시하는 도 면. 발명을 실시하기 위한 구체적인 내용 개시된 방법 및 구성의 다양한 실시예들이 아래에서 논의될 것이다. 특정 구현이 논의되더라도, 이는 단지 예 시를 목적으로 한다는 것을 이해해야 한다. 당업자는, 본 발명의 사상 및 범위에서 벗어나지 않으면서 다른 구 성 요소, 구성, 및 단계들이 사용될 수 있다는 것을 인식할 것이다. 도 1을 참조하면, 예시적 시스템은 범용 컴퓨팅 장치(100)를 포함하고, 이 장치는, 프로세싱부(CPU)(120), 및 판독가능 메모리(ROM)(140) 및 랜덤 액세스 메모리(RAM)(150)와 같은 시스템 메모리를 포함하는 다양한 시스템 구성 요소를 프로세싱부(120)에 연결하는 시스템 버스(110)를 포함한다. 다른 시스템 메모리(130)도 물론 사용 될 수 있다. 시스템은 하나 이상(more than one)의 CPU(120)를 갖는 컴퓨팅 장치, 또는 더 큰 프로세싱 성능을 제공하기 위해서 함께 네트워킹된 컴퓨팅 장치의 그룹 또는 클러스터에서 동작할 수도 있다는 것을 이해해야 한 다. 시스템 버스(110)는, 메모리 버스 또는 메모리 제어기, 주변 버스, 및 다양한 버스 아키텍처 중 임의의 것 을 사용하는 로컬 버스를 포함하는 다양한 형태의 버스 구성들 중 임의의 것일 수 있다. ROM(140) 등에 저장된 기초 입/출력(BIOS)은, 예를 들어 개시 시에 컴퓨팅 장치(100) 내의 구성 요소들 간에 정보를 전송하는 것을 돕 는 기초 경로를 제공할 수 있다. 컴퓨팅 장치(100)는 또한 하드 디스크 드라이브(160), 자기 디스크 드라이브, 광 디스크 드라이브, 테이프 드라이브 등과 같은 기억 장치를 포함한다. 기억 장치(160)는 드라이브 인터페이 스에 의해 시스템 버스(110)에 접속된다. 드라이브 및 연관된 컴퓨터 판독가능 미디어는, 컴퓨터 판독가능 명 령, 데이터 구조, 프로그램 모듈, 및 컴퓨팅 장치(100)용 다른 데이터의 비휘발성 저장을 제공한다. 일 양상에 서, 특정 기능을 수행하는 하드웨어 모듈은, 그 기능을 수행하기 위해 CPU, 버스, 디스플레이, 등과 같은 필수 하드웨어 구성 요소와 함께 실재 컴퓨터 판독가능 매체에 저장된 소프트웨어 구성 요소를 포함한다. 기본 구성 요소들은 당업자에게 공지되어 있고, 장치가 작은 휴대용 컴퓨팅 장치인지, 데스크톱 컴퓨터인지, 또는 대형 컴 퓨터 서버인지와 같은 장치의 유형에 따라서 적절한 변형들이 고려될 수 있다. 본 명세서에서 기술된 예시적 환경에서는 하드 디스크를 채용하지만, 당업자는, 자기 카세트, 플래시 메모리 카 드, DVD, 카트리지, RAM, 또는 ROM과 같이 컴퓨터에 의해 액세스가능한 데이터를 저장할 수 있는 다른 유형의 컴퓨터 판독가능 매체도 예시적 동작 환경에서 사용될 수 있다는 것을 이해해야 한다. 컴퓨팅 장치(100)와의 사용자 상호작용을 가능하게 하기 위해서, 입력 장치(190)는 스피치를 위한 마이크, 몸동 작 또는 그래픽 입력을 위한 터치 스크린, 키보드, 마우스, 모션 입력, 음성 등과 같은 다수의 입력 메카니즘을 나타낸다. 장치 출력(170)은 당업자에게 공지된 다수의 출력 메카니즘들 중 하나 이상일 수 있다. 소정 경우 에, 다중 시스템은 사용자가 다수 형태의 입력을 제공해서 컴퓨팅 장치(100)와 통신할 수 있게 한다. 통신 인 터페이스(180)는 일반적으로 사용자 입력 및 시스템 출력을 지시하고 조정한다. 임의의 특정 하드웨어 구성에 서 동작하는 상기 방법 및 장치에 있어서 어떤 제한도 존재하지 않으며, 따라서, 개발에 따라 개선된 하드웨어 또는 펌웨어 구성에 대해 상기 기본 특징들이 용이하게 대체될 수 있다. 설명의 명료성을 위해서, 예시적 시스템 실시예가 ("프로세서"로서 표시되는 기능 블록을 포함하는) 개별 기능 블록을 포함하는 것으로서 제시된다. 이 블록들이 나타내는 기능들은, 소프트웨어를 실행할 수 있는 하드웨어 를 포함하지만 이것으로 제한되는 것은 아닌 공유 또는 전용 하드웨어 중 하나를 사용해서 제공될 수 있다. 예 - 9 -
를 들어, 도 1에 제시된 하나 이상의 프로세서들의 기능은 단일 공유 프로세서 또는 다중 프로세서에 의해 제공 될 수 있다. ("프로세서"라는 용어의 사용은 소프트웨어를 실행할 수 있는 하드웨어를 배타적으로 지칭하는 것 으로 이해되어서는 안된다.) 예시적 실시예는 마이크로프로세서 및/또는 디지털 신호 프로세서(DSP) 하드웨어, 후술될 동작들을 수행하는 소프트웨어를 저장하는 ROM, 및 결과를 저장하기 위한 RAM을 포함할 수 있다. 범용 DSP 회로와 결합된 주문형 VLSI 회로뿐만 아니라, 초고밀도 집적 회로(VLSI) 하드웨어 실시예도 제공될 수 있다. 다양한 실시예들의 논리적 동작은 다음과 같이 구현된다: (1) 범용 컴퓨터 내의 프로그램가능 회로에서 동작하 는 컴퓨터 구현 단계, 동작, 또는 절차들의 시퀀스, (2) 특정 용도 프로그램가능 회로에서 동작하는 컴퓨터 구 현 단계, 동작, 또는 절차들의 시퀀스, 및/또는 (3) 프로그램가능 회로 내의 상호접속된 기기 모듈 또는 프로그 램 엔진. 상술한 컴퓨팅 장치는, 대형 샘플의 사용자들로부터 얻어진 유사성 데이터의 클러스터링 분석에 기초해서 미디 어 아이템들의 혼합물을 생성 및 사용하는데 특히 유용하다. 수학적 분석에 기초해서 다수의 사용자들의 라이 브러리에 있어서 2 이상의 노래들의 상관이 발생하는 것을 결정하기 위해서, 통계적 유사성이 결정될 수 있다. 통계적 유사성 데이터로부터, 클러스터링 분석은 큰 데이터 세트를 관련 미디어 아이템의 더 작은 세트로 분할 할 수 있다. 큰 데이터 세트의 분석 결과를 작은 데이터 세트(개별 프로그램 참가자의 미디어 라이브러리)에 반영함으로써, 미디어 아이템의 고품질 혼합물이 생성될 수 있다. 이러한 유사성 데이터는, 고품질 재생리스트의 생성, 구매를 위해 사용자에게 추천하기 위한 제안 제품의 결정, 새로운 선곡으로 사용자의 미디어 장치를 최신으로 유지하는 것, 다른 것들 중에서 사용자의 미디어 라이브러리 로부터 혼합물을 생성하는 것을 포함하는 다양한 유용한 기능들을 위해 사용될 수 있다. 일 예에서, 사용자는, 자신의 전체 미디어 데이터베이스의 콘텐츠에 관련된 업로드 정보를 사용자의 폭 넓은 청취자에게 액세스가능한 서버에 업로드할 수 있다. 2 이상의 미디어 아이템이 사용자의 전체 청취자의 라이브러리에서 얼마나 자주 동 시에 발생하는 지에 기초해서, 미디어 아이템은 서로 상관되고 유사한 것으로 주지된다. 이러한 유사성에 기초 해서, 서버는 시드 트랙의 선택에 기초해서 하나 이상의 유사한 노래들을 포함하도록 재생리스트를 생성할 수 있고, 또는 서버는 사용자의 라이브러리에 있지 않은 유사한 노래들의 구매를 추천할 수 있다. 시스템의 상기 및 기타 특징들은 아래에서 보다 상세하게 기술될 것이다. 클러스터는 유사한 아이템의 콜렉션이 사용될 수 있는 임의의 방법에서 사용될 수 있다. 일 예에서, 클러스터 는 클러스터의 콘텐츠에 기초해서 재생리스트를 생성하는데 유용하다. 다른 예에서, 클러스터는 미디어 아이템 의 혼합물을 생성하는데 유용하다. 이러한 맥락에서의 혼합물은, 청취자가 함께 잘 모이는 음악 아이템들이 선 택된 CD 또는 테이프를 생성하는 음악 혼합물의 개념과 유사하다. 이 경우에, 클러스터는 미디어 아이템의 혼 합물을 자동적으로 생성하는 방법을 장치에 제공한다. 상술한 기술 및 제품의 다수의 특징들이 Apple Inc.의 ITUNES Store와 같은 온라인 음악 판매점과 관련해서 기 술되겠지만, 이 시스템은 시스템의 어떤 양호한 실시예를 수행하더라도 어떤 미디어 판매도 요하지 않는다는 것 을 이해해야 한다. 또한, 설명의 일부가 하나의 특정 형태의 미디어만을 지칭하더라도, 본 명세서에 개시된 원 리는 오디오, 비디오, 사진, 문서 및 다른 형태의 데이터 파일과 같은 어떤 미디어에도 적용될 수 있다. 서버 업로딩 도 2는 유사성 데이터를 생성하기 위한 예시적 방법 실시예를 도시한다. 이 방법은 서버에 의해 프로그램 참가 자의 개인용 미디어 목록에 관련된 사용자 데이터를 수신하는 단계(202)를 포함한다. 사용자 데이터는, 통상 메타데이터의 형태인 사용자의 라이브러리에 있는 개별 미디어 아이템에 관한 식별 정보를 포함한다. 사용자의 라이브러리에 있는 미디어 아이템의 기원(origin)은 시스템과 관련되지 않는다. 상술한 방법이 음악 콘텐츠 판 매점에서 채용되더라도, 본 실시예는, 서버가 소스에 기초하여 파일 정보들을 구별하지 않고, 즉, 모든 미디어 아이템들이 동일한 것으로 처리되기 때문에, 사용자의 파일이 음악 판매점으로부터 얻어지는 것을 요하지 않는 다. 이 방법은, 물리적 미디어가 디지털 포맷으로 트랜스코드(transcode)되어 사용자의 미디어 라이브러리에 들어가는 경우뿐만 아니라, CD, DVD, HD-DVD와 같은 물리적 미디어에 대해 동일하게 적용된다. 양호한 실시예 에서, 서버는, 사용자가 모든 미디어 아이템에 관한 업로드 정보를 자신의 라이브러리에 업로딩할 것을 요하지 않으며, 제한된 수의 미디어 아이템에만 관련된 정보 또는 미디어 아이템에 대한 부분적 정보만이 서버에 의해 서 수용된다. - 10 -
사용자 데이터 식별 이 방법은 또한 특정 미디어 아이템으로서 사용자 데이터를 식별하는 단계(203)를 포함한다. 이 단계는, 파일 의 일 부분의 상세한 분석을 통해 파일명, 메타데이터를 실행시키는 단계를 포함하는 다수의 방법들 중 어떤 하 나로 수행될 수 있다. 음악 트랙의 일 예에서, 서버는 다양한 메카니즘을 통해 음악 트랙을 식별할 수 있다. 예를 들어, 약 8분의 길이를 갖는 Led Zepplin의 Stairway to Heaven과 같은 특정 트랙은, 아티스트, 곡명, 장 르, 트랙의 길이, 앨범명, 트랙 번호, 등을 식별하는 메타데이터 또는 파일명을 포함하는 파일과 관련된 다양한 데이터를 가질 수 있다. 이 데이터의 일부는 서버가 파일을 Led Zepplin 앨범 4집에서 Led Zepplin의 Stairway to Heaven으로 식별하는데 충분할 수 있다. 선택적으로, 상업적 노래 식별 서비스가 파일을 식별하는 데 사용될 수 있다. 또한, 음악 트랙의 일부를 샘플링함으로써, 또는 판매점으로부터 특정 식별자를 인식함으 로써, 노래 디지털 지문을 인식함으로써 트랙을 식별할 수도 있다. 예를 들어, 서버 또는 서비스는 ITUNES Store로부터 구입한 노래 및 그 파일의 메타데이터가 ITUNES Store에 특정한 특정 식별자를 포함한다는 것을 인 식할 수 있다. 서버는 식별자에 의해 미디어 아이템을 식별할 수 있다. 미디어 아이템을 인식하는 다수의 다 른 가능한 방법들이 공지되어 있으며, 이들은 모두 개시된 방법 및 구성에 의해 포괄된다는 것을 이해해야 한다. 상관 각 미디어 아이템은 특정 식별자와 연관되고(204), 표에 저장된다(205). 서버가 이전에 그 노래를 한 번도 접 한 적이 없다면, 서버는 새로운 식별자를 트랙에 할당한다. 하지만, 대부분의 미디어 아이템에 대해서, 식별자 는 이미 할당되어 있을 것이고, 미디어는 그 식별자와 상관되기만 하면 된다. Stairway to Heaven을 계속 예로 들면, 미디어 아이템이 트랙으로서 일단 식별되면, 서버는 그 트랙에 대해 특정 식별 데이터를 찾을 수 있다. 이 프로세스는 서버에 의해 수신된 각 미디어 아이템에 대해 반복된다. 서버가 이미 대부분의 노래들과 결합하기 위한 식별자를 갖더라도, 어떤 경우에, 미디어 아이템은 서버에 완전 히 새로울 수 있거나, 또는 적어도 그와 같이 인식될 수 있다. 이러한 경우에, 서버는 새로운 식별자를 발행하 고, 이를 미디어 아이템에 할당할 것이다. 예를 들어, 새로운 아티스트 또는 차고 밴드(garage band)는 서버에 의해 인식되지 않을 것이다. 하지만, 서버는 그 아티스트의 트랙에 대해 새로운 식별자를 발행할 것이고, 서버 가 다른 사용자의 라이브러리에서 동일한 트랙을 만나는 경우, 서버는 이전에 발행된 바와 같이 그 동일한 식별 자를 그 트랙에 할당할 것이다. 어떤 경우에, 서버는 새로운 식별자를 서버에 새로운 미디어 아이템에 제공하지 않을 수도 있다. 예를 들어, 미디어 아이템은 사용자의 라이브러리에 특정할 수 있고, 이에 따라, 그 아이템에 대해서 동시에 발생할 경우가 없기 때문에, 식별자를 제공하는 것이 의미 없을 수 있다. 따라서, 시스템은 특정 식별자를 모든 새로운 아이 템에 제공할 필요는 없다. 후에, 시스템은, 다른 사용자가 자신의 라이브러리에 그 미디어 아이템을 또한 가질 경우, 그 트랙에 대한 특정 식별자를 제공하고, 그 아이템에 대해 유사성 데이터를 제공할 수 있다. 마스터 구매 행렬 각 미디어 아이템은 단계 205에서 마스터 구매 행렬에 저장된다. 마스터 구매 행렬은 도 4에서 도시된다. 구 매 행렬(402)은 표에서 각각의 특정 미디어 아이템에 대응하는 컬럼(404)을 포함하는 표이다. 이 표가 ITUNES Store와 같은 음악 콘텐츠 판매자에 의해 호스트되는 실시예에서, 구매 행렬은 ITUNES Store로부터 구매가능한 모든 미디어 아이템을 또한 포함할 수 있다. 마스터 구매 행렬의 로우(404)는 사용자 특정 사용자 식별 번호 (406)와 결합된다. 이 식별 코드는 사용자에게는 알려지지만 시스템은 알 수 없는 익명 식별 코드에 의해 사용 자를 나타낸다. 따라서, 마스터 구매 행렬은 참가하는 모든 사용자로부터 프로그램 서버에 의해 수신된 모든 파일의 기록을 포함한다. 구매 행렬이 모든 프로그램 참가자 및 각 프로그램 참가자의 라이브러리에 있는 모든 미디어를 수용하기 때문에, 구매 행렬(402)은 엄청나게 커질 것이다. 예를 들어, 음악 판매점이 약 225만 명의 사용자와 5백만 곡 이상의 노래를 갖는다면, 이러한 온라인 판매점에 대한 구매 행렬은 약 225만 개의 로우와 5백만 개의 컬럼, 또 는 1조 1천 2백 50억 개의 개별 셀을 가질 것이다. ITUNES Store는 5천만의 등록 사용자를 가지며, 천만 이상 의 노래를 갖고 있다. 이러한 온라인 판매점에 대한 구매 행렬은 약 5천만 개의 로우와 천만 개의 컬럼, 또는 500조의 개별 셀의 표가 될 것이다. 사용자의 라이브러리에 있는 노래에 대해, 그 사용자 및 그 노래에 대응하는 행렬의 셀이 마킹(marking)된다. 이 마킹은 구매에 대해 1(408), 비구매에 대해 0(410)으로서 불 방식으로 간단한 데이터 형태로 수행된다. 불 - 11 -
데이터 형태보다 더 많은 데이터가 저장되어야만 하는 경우에 다른 데이터 형태도 사용될 수 있다. 이 행렬은 매우 클 수 있지만, 대부분의 사용자가 자신의 라이브러리에 (5백만에 비해) 상대적으로 적은 수의 노래를 갖기 때문에, 이 행렬은 그 밀도가 매우 희박하게 된다. 각 노래 컬럼이 보다 대중적인 노래에 대해 수십, 수백, 수 천, 또는 심지어 수백만의 엔트리를 포함하더라도, 각 사용자 로우는 얼마 안 되는 수의 엔트리만을 가질 것이 고, 엄청난 양의 대다수의 구매 행렬은 비어 있다. 또한, 마스터 구매 행렬 또는 표가, 새로운 노래를 자신의 라이브러리에 부가하고, 파일 메타데이터를 변경하고, 또는 파일을 삭제하는 것으로부터 사용자 라이브러리 변경으로서 갱신을 요구할 것이라는 것을 이해 해야 한다. 구매 행렬이 실시간으로 갱신될 수 있고, 트랜잭션(transaction)이 이후의 삽입을 위해 줄지어 대 기할 수 있다. 대기(queuing)를 위한 일 구성은 매일 오후 11:30과 같이 규칙적으로 트랜잭션을 구매 행렬에 삽입한다. 다른 대기 구성은, 어떤 최소 수의 트랜잭션이 삽입에 대기하고 있을 경우 트랜잭션을 구매 행렬에 삽입한다. 구매 표에 대한 갱신은 모든 미디어 아이템에 대해 단계 203 및 204를 반복하는 것을 요하지 않는다. 이미 식 별되고 프로그램 기반 식별 번호에 상관된 미디어 아이템은, 사용자의 데이터가 표에 처음에 존재하고 있을 때 이미 식별 및 상관 단계가 수행되었기 때문에, 식별 및 상관 단계를 요하지 않는다. 일 실시예에서, 서버가 일 단 자신의 식별 데이터에 미디어 아이템을 상관시키면, 서버는 이 식별 데이터를 메타데이터에 저장하기 위해서 다시 사용자에게 송신할 수 있다. 서버와의 이후의 통신에 있어서, 서버는 관련 식별 데이터를 갖는 미디어 아 이템에 대한 갱신을 수신할 수 있으며, 이에 따라, 단계 204를 재수행할 필요가 없게 된다. 일부 실시예에서, 구매 행렬은, 판매 시간 및 날짜, 어떤 미디어 포맷이 있는지, 미디어가 고품질인지 표준 품 질인지, 트랜잭션이 선물인지 구매한 것인지, 어떤 장치가 재생에 대해 인증된 것인지, 등과 같은 각 트랜잭션 에 관한 추가 정보를 포함하는 대형 표 또는 행렬의 일부일 수 있다. 구매 행렬은 별개의 개별 표일 수 있고, 더 큰 표 또는 행렬에 완전히 집적될 수 있다. 또 다른 실시예에서, 마스터 구매 행렬은 사용자의 미디어 목록에 대한 업로딩된 정보를 포함할 필요가 없다. 마스터 구매 행렬은 구매 정보에 기본적으로 포함될 수 있다. 구매 정보는 사용자에 의해 온라인 판매점으로부 터 구매된 아이템만이 될 수 있거나, 또는 추가 정보를 포함할 수 있다. 이 실시예에서, 표는 각 사용자에 의 해 구매된 모든 아이템들의 리스트를 포함할 수 있다. 또한, 마스터 구매 행렬은 사용자의 미디어 목록의 콘텐 츠에 관한 적어도 제한된 세트의 데이터를 포함하려고 할 것이다. 협업 필터 엔진 도 2에 도시된 방법은 다음으로, 마스터 구매 행렬에 교정 필터 엔진(도 14에서 308로 도시됨)을 실행시켜 유사 성 데이터를 생성하는 단계(206), 및 마스터 유사성 표에 이 유사성 데이터를 저장하는 단계(207)를 포함한다. 유사성 데이터는 마스터 표의 일부 다른 미디어 아이템과 동시 발생하는 미디어 아이템으로부터 얻어진다. 사 용자가 동일한 2개의 미디어 아이템을 가질 경우, 이들은 동시 발생되었다고 지칭된다. 다수의 사용자들의 라 이브러리에서의 이러한 동시 발생은 2개의 미디어 아이템이 "유사하다"는 표시이다. 2개의 미디어 아이템이 프 로그램 참가자의 라이브러리에서 보다 자주 동시 발생되면, 미디어 아이템이 보다 유사한 것으로 지칭된다. 협업 필터 엔진(308)은 마스터 구매 표의 개별 미디어 아이템들 간의 유사성을 계산한다. 일 실시예에서, 협업 필터 엔진은 가장 간단하게 프로그램 참가자의 라이브러리에서 데이터베이스의 노래 쌍들이 공동 발생하는 횟수 의 총계를 내는 프로그램일 수 있다. 일부 실시예에서, 협업 필터 엔진은 각 아이템을 다차원 벡터 공간에서의 벡터로서 나타냄으로써 2개의 상이한 미디어 아이템들 간의 유사성을 계산할 수 있다. 차원의 수는 구매 행렬(306)(도 14)의 사용자의 수와 동일하 다. 아이템들 간의 상관은 벡터들 간의 거리를 계산함으로써 얻어진다. 순수 또는 수정된 삼각법 함수(예를 들어, 코사인 또는 사인 함수)는 벡터들 간의 거리를 계산하는데 사용될 수 있다. 2개의 벡터가 작은 각을 갖 는다면, 이들은 유사한 것으로 고려되고, 2개의 벡터가 큰 각을 갖는다면, 이들은 덜 유사한 것으로 고려된다. 이 프로세스는 마스터 구매 행렬의 각 노래를 마스터 구매 행렬의 나머지 각각의 노래와 비교함으로써 수행된다. 일부 실시예에서, 협업 필터 엔진은 공동 발생 데이터의 발생 정도를 더 고려할 수 있다. 예를 들어, 전체 발 생의 발생 정도가 유사성 등급의 지수가 될 수 있다. 예를 들어, 노래 A 및 B는 노래 A 및 C와 동일하게 자주 동시 발생할 수 있지만, 노래 B가 전체적으로 보다 대중적이라면, 노래 A 및 B는 노래 A 및 C보다 더 높은 유사 성 점수를 가질(즉, 보다 유사한 것으로 고려될) 수 있다. 상이한 노래들의 대중성을 결정하는 한 방법은 각 - 12 -
노래가 전체 데이터 세트에서 얼마나 자주 발생하는 지를 측정하는 것이다. 유사하게, 협업 필터 엔진에 대해서 사용 입력과 같이 유사성 점수에 영향을 미치는 다른 입력이 존재할 수 있 다. 예를 들어, 미디어 아이템에 주어지는 등급, 재생 카운트, 및 건너뛰기 카운트는 모두, 미디어 아이템들 간의 유사성을 결정하기 위한, 협업 필터 엔진에 대한 입력이 될 수 있다. 도 3a 및 3b는 벡터로서 각 노래를 나타내는 개념을 도시한다. 도 3a에서, 마스터 표의 Media ID 629에 대한 벡터는 사용자 2,899, 1,343 및 2,000의 라이브러리에서의 노래의 존재에 기초하여 매핑되었다. 유사하게, 사 용자 2, 12, 444, 1,343의 라이브러리에서의 노래의 존재에 기초하여 마스터 표의 Media ID 1,263,999에 대해 벡터가 매핑되었다. 이들 2 벡터들 간의 각은 20도로 측정되고, 약 0.939의 코사인 값으로 계산된다. 코사인 값은 Media ID 629와 Media ID 1,263,999 간의 상관값을 나타낸다. 도 3b는 Media ID 629와 Media ID 15 간의 상관을 결정하기 위한 또 다른 상관 계산을 나타낸다. 이 예에서는, 단 한 명의 사용자가 그 라이브러리에 Media ID 629와 Media ID 15를 둘 다 갖고, 이에 따라, 이들 두 벡터들 간의 코사인 값은 약 0.707이 된다. 더 낮은 점수는 Media ID 629와 Media ID 15가 서로 가깝게 상관되지 않는다는 것을 나타낸다. 다른 실시예에서, 다른 함수들이 아이템들 간의 유사성 점수를 계산하는데 사용될 수 있다. 예시로서, 유사성 점수는 특정 아이템에 의해 이루어진 아이템의 전체 공동 발생 퍼센트를 고려하는 방법으로 계산될 수 있다. 예를 들어, 아이템 A는 아이템 1-5와 공동 발생하고, 아이템 A의 전체 공동 발생은 아이템 1-5와의 모든 공동 발생의 합이다. 예시적으로, 아이템 A가 아이템 1과 2회, 아이템 2와 2회, 아이템 3과 2회, 아이템 4와 10회, 그리고 아이템 5와 2회 공동 발생한다면, 아이템 A는 전체 18회의 공동 발생을 가질 것이다. 공동 발생의 전체 수의 몇 퍼센트가 특정 쌍에 기인한 것인지를 아는 것이 중요할 수 있다. 예를 들어, 아이템 4는 아이템 A의 전체 공동 발생의 약 55%를 나타내고, 이에 따라, 아이템 4는, A의 전체 공동 발생의 약 11%만을 나타내는 다른 아이템들 중 어느 것보다 아이템 A와 더 강하게 상관된다. 이 데이터는 유사성 데이터를 결정하는데도 사용될 수 있다. 유사성 데이터를 계산하는 2개의 특정 방법이 상술되었지만, 2개의 아이템들 간의 유사성을 계산하는 다수의 다른 방법들이 사용될 수 있다는 것을 이해할 것이다. 상기 프로세스는 소정의 규칙적인 간격으로 모든 각 아이템과 모든 다른 각 아이템 간에 계산된다. 이 프로세 스는 과도한 시간을 소비하기 때문에, 일반적으로 오프라인에서 수행된다. 이는 한 달에 한번, 일주일에 한번, 하루에 한번, 또는 계산 능력이 허용하는 한에서 빈번하게 수행될 수 있다. 유사성 표 협업 필터 엔진에 의해 컴파일되는 상관 데이터는 마스터 유사성 표를 생성하는데 사용된다(도 2의 207). 도 5 는 마스터 유사성 표(502)에 저장된 데이터를 도시한다. 제시된 미디어 아이템에 대해, 자신의 프로그램 기반 식별 데이터(504)에 의해 미디어 아이템을 식별하는 마스터 유사성 표 내의 엔트리가 존재한다. 미디어 아이템 과 유사하거나 상관되는 것으로 고려되는 각각의 다른 미디어 아이템이 또한 표(508)에 열거된다. 이러한 방식 으로, 표(502)는 마스터 구매 행렬(402)에 각 미디어 아이템과 유사한 모든 미디어의 리스트를 유지한다. 아이템들은, 자신이 미디어 아이템과 유사하거나 상관되는 것으로 고려되는 충분한 점수를 갖는 경우에, 마스터 유사성 표에 포함된다. 임의의 제시된 아이템에 대해, 대부분의 다른 아이템들은 전혀 유사하지 않다. 유사성 점수가 충분히 낮으면, 이는 유사성 표에 포함되지 않는다. 유사성 점수가 충분히 낮거나 충분히 높은지를 결 정하기 위한 임계값은 동적 또는 정적일 수 있다. 예를 들어, 유사성 점수가 -1에서 1의 범위이고, -1은 완전 히 유사하지 않은 것이고, 1은 완전히 유사한 것이라면, 임계값은 정적으로 0.5로 설정될 수 있다. 임계값은, 100회 미만 발생하는 노래에 대해 0.9, 5,000회 미만 발생하는 노래에 대해 0.7, 25,000회 미만 발생하는 노래 에 대해 0.6, 25,000회 이상 발생하는 노래에 대해 0.5와 같이, 마스터 구매 표의 노래 발생 횟수에 기초해서 동적으로 설정될 수도 있다. 임계값은 또한 이용가능한 저장 장치 또는 임의의 다른 파라미터에 기초할 수도 있다. 즉, 마스터 유사성 표(502)는 유사성 점수의 전부 또는 일부를 결합시킬 수 있다. 마스터 유사성 표가 소정 저 장 사이즈를 만족하도록 제한되어야만 하는 경우, 최고의 또는 가장 강한 유사성만이 포함되고, 나머지는 배제 된다. 유사하게, 프로그램 참가자가 자신의 미디어 라이브러리에 아이템을 충분히 갖지 않는다면, 이는 배제될 수 있다. 이에 대한 일 변형은, 아이템이 마스터 유사성 표에 포함될 수 있게 되기 전에, 사용자의 라이브러리 에 최소 횟수의 발생을 요구한다. 예를 들어, 2개의 아이템이 5 이하의 공동 발생을 갖는다면, 즉, 5명 이하의 사람이 이들 아이템을 둘 다 갖는다면, 시스템은 나머지 점수를 계산하지 않을 것이다. 일부 실시예에서, 마스터 유사성 표는 또한 등가 관계를 저장할 수 있다. 예를 들어, 표 502의 미디어 ID 17은 - 13 -
1990년에 연주된 Luciano Pavarotti의 "O Sole Mio"에 대응할 수 있다. Enrico Caruso 및 Mario Lanza와 같은 아티스트에 의한 "O Sole Mio"의 다수의 연주가 온라인 판매점에서 이용가능하고, 등가 미디어(506)로 고려된다. 다른 주요한 형태의 등가 미디어는 공식 앨범 트랙, 언플러그드 어쿠스틱 트랙, 라이브 콘서트 트랙, 다른 밴드에 의한 커버 트랙, 및 동일한 노래의 외국어 트랙도 포함한다. 하나의 노래는 열거한 모든 포 맷 및 그 이상으로 존재할 수 있다. 등가의 결정은 수동으로 수행될 수 있거나, 또는 미디어 콘텐츠, 메타데이 터, 및/또는 다른 이용가능한 데이터에 기초해서 자동적으로 수행될 수 있다. 각각에 대한 등가 미디어 ID는 미디어 ID(504)와 함께 제시되어, 이들 각각이 동일한 것으로 고려되는지 및 이들이 함께 계산되는지를 식별한 다. 마스터 유사성 표의 ID는 미디어를 인덱싱하도록 구매 행렬(306)에서 사용된 것과 동일할 수 있거나, 또는 완전 히 상이한 방법에 기초할 수 있다. 이 2개가 맞지 않는다면, 번역기 함수 또는 기준 번역 표가 제공되어 하나 의 ID를 나머지 다른 것으로 변환하거나 그 반대로 변환될 수 있다. 2개에서 공유되는 공통 ID 공간은 성능에 있어서 불이익이 없도록 가장 용이하고 가장 간단한 것일 것이다. 사용자 유사성 표 마스터 유사성 표가 전반적인 유사한 미디어를 포함하지만, 개인용 미디어 라이브러리는 유사한 미디어 전반의 더 적은 서브세트를 포함하는 것이 거의 확실하다. 따라서, 제한된 세트, 또는 개별 유사성 표가 생성된다. 제한은 주어진 라이브러리의 미디어 가용성에 맞춰진다. 제한된 세트는 미디어 라이브러리에서 발견되지 않은 유사한 미디어에 대한 기준을 포함할 수 있다. 이는 제시된 미디어 구매를 사용자에게 제공하기 위해서 수행될 수 있다. 이와 같이 제공된 제시 구매는 사용자에게 보다 흥미로울 것이고, 이는 소정의 공통 미디어 취향을 갖는 다른 사람들이 자신의 라이브러리에 이미 그 제시된 구매를 가졌기 때문이다. 마스터 유사성 표(502)가 계산되고 수집되면, 개별 유사성 표(602)가 생성된다. 도 6은 개별 유사성 표를 도시 한다. 개별 유사성 표(602)는 개인의 미디어 라이브러리에 포함된 각 노래에 대한 미디어 ID(604) 및 그 미디 어 ID에 상관된 미디어를 포함한다. 상관된 미디어(606)가 도 중괄호 안에 도시된다. 개별 유사성 표의 상관 된 미디어는, 아이템의 마스터 유사성 표에 위치하는 분류된 유사 아이템(508)의 전체 리스트의 서브세트이다. 서브세트는 어떤 미디어가 개별 미디어 라이브러리에 존재하는지에 기초해서 선택된다. 즉, 개별 라이브러리의 각 노래에 대해, 개별 라이브러리에 또한 포함된 유사 미디어의 리스트가 생성된다. 아이템(608)은 선택적 실 시예를 나타내고, 여기에서 그 값은 프로그램 참가자의 라이브러리에는 없지만 구매를 위해 추천되는 노래의 미 디어 ID이다. 개별 유사성 표는 서버에서 서버에 의해 생성되고 클라이언트 장치에 의해 다운로드될 수 있거나, 또는 개별 유 사성 표는 사용자의 미디어 목록 내의 아이템에 대해 유사성 데이터만을 다운로딩함으로써 클라이언트에 의해 생성될 수 있다. 유사성 표가 어디에서 생성되는 지에 관계없이, 이 프로세스는 동일하다. 미디어 아이템은 그 아이템의 프로그램 기반 유사성 식별 데이터에 의해 마스터 유사성 표에서 검색된다. 다음으로, 시스템은 인덱스에서의 그 미디어 아이템에 대한 유사성 데이터의 위치를 검색할 수 있다. 검색 동작의 결과에 기초해서, 시스템은 유사한 아이템을 검색할 수 있다. 이들 아이템은 또한 사용자의 미디어 라이브러리에 있는 그 미디어 아이템과 비교되고, 사용자의 미디어 라이브러리에 있는 이들 아이템만이 개별 유사성 표에 저장된다. 추가 실시예에서, 일부 높은 유사성을 갖는 트랙들이 개별 유사성 표에 기록되어, 사용자에게 구매 를 제안하기 위해 사용될 수 있다. 일부 실시예에서, 라이브러리마다 적어도 하나의 개별 유사성 표가 서버에 의해 생성될 수 있다. 클라이언트는 라이브러리 데이터를 서버에 보내고, 이는, 그 라이브러리 내의 아이템에 속하는 마스터 유사성 표로부터 유사 성 데이터를 추출함으로써, 라이브러리내의 아이템을 식별하고 그 라이브러리에 대한 개별 유사성 표를 생성할 수 있다. 그 다음, 결과적 개별 유사성 표는 재생리스트를 생성하는데 사용하기 위해 클라이언트에 다운로딩될 수 있다. 동일한 개별 유사성 표는 또한 주변 장치에 대한 개별 유사성 표를 생성하기 위해 클라이언트에 의해 사용될 수 있다. 이러한 개별 유사성 표를 사용하여, 사용자는 사용자 전체에서 얻어진 데이터로부터 이익을 취할 수 있다. 사 용자는 유사성 데이터를 사용해서 재생리스트를 생성하고 새로운 미디어 구매에 대한 제안을 수신하고, 다양한 다른 가능한 것들을 사용할 수 있다. 협업 필터링에 영향을 미치는 사용자 데이터 재생리스트가 유사성 데이터에 기초해서 생성되는 실시예에서, 사용자는 그 재생리스트에서 청취를 원하지 않는 - 14 -
노래를 건너뜀으로써 피드백을 제공하거나, 시스템이 이를 요구할 수 있고, 사용자는 그 재생리스트에서 청취를 즐기는 미디어 아이템에 포지티브 순위를 제공할 수 있다. 이러한 데이터는 클라이언트 장치로부터 업로딩되고 서버에 의해 수신될 수 있다. 피드백 데이터는 마스터 구매 인덱스 또는 개별 표와 같은 다수의 상이한 모드에 저장될 수 있다. 피드백은 또한 ITUNES Store와 같은 온라인 음악 판매점에서 얻어질 수 있다. 이 실시예에서, 온라인 판매점(304)(도 14)에서의 사용자 활동은 피드백 데이터를 생성한다. 온라인 판매점에서의 사용자 활동은, 미디어 아이템의 구매, 미디어 아이템의 미리보기, 특정 미디어 아이템 타이틀에 대한 검색, 특 정 미디어 아이템 아티스트에 대한 검색, 또는 특정 미디어 아이템 장르에 대한 검색을 포함할 수 있다. 협업 필터 엔진은 피드백 데이터를 사용해서 아이템들 간의 상관 점수를 수정할 수 있다. 대중으로부터의 피드백 데이터는 잠재적으로 그 밖에 존재하는 상관을 제거할 수 있다. 예를 들어, Simon and Garfunkel의 노래 Mrs. Robinson은 Lemonheads 또는 Frank Sinatra의 동일한 노래에 대해 강한 상관을 수신할 수 있지만, Simon and Garfunkel 버전에 기초한 재생리스트를 생성하려고 하는 사용자는, 아마도 커버 곡의 장 르가 상이한 다른 버전은 좋아하지 않을 것이다. 시간이 지나면서, 노래를 건너뛰거나 재생리스트로부터 아이 템을 삭제하는 것과 같은 피드백 데이터는 상관 아이템의 리스트로부터 커버 버전들 중 하나 또는 모두를 제거 하는데 사용될 수 있다. 일부 실시예에서, 사용자 피드백은, 협업 필터 엔진에서의 사용을 위해 서버에 먼저 피드백을 보내지 않고, 클 라이언트 장치에서 바로 유사성 데이터를 수정하는데 사용될 수 있다. 이러한 실시예에서, 사용자 피드백 데이 터는, 서버에 먼저 동기화하지 않고, 클라이언트 장치의 개별 유사성 데이터에 저장된 관계에 직접 영향을 미칠 수 있다. 택일적으로, 유사성 표는 동일하게 유지될 수 있지만, 사용자 피드백 데이터에 기초해서 제한이 생성 될 수 있다. 예를 들어, 사용자가 유사한 아이템을 자주 건너뛴다면, 클라이언트는 스스로 개별 유사성 표로부 터 그 아이템을 제거하여 더이상 그 아이템을 유사한 것으로서 고려하지 않을 수 있고, 또는 재생리스트 알고리 즘에서의 제한과 같은 다른 수단에 의해 재생리스트에 포함된 것으로부터 자주 건너뛰어진 아이템의 추가를 막 을 수 있다. 유사성 표 갱신 시간이 지나면서, 아티스트가 새로운 음악을 만들고 새로운 아티스트들이 출현함에 따라, 새로운 미디어 아이템 이 온라인 판매점에, 더 나아가, 마스터 구매 표에 부가될 수 있다. 따라서, 온라인 판매점(304)의 기존 아이 템과 온라인 판매점의 새롭게 부가된 아이템 간의 상관이 생성될 것이다. 예를 들어, 사용자가 자신의 미디어 라이브러리에 노래 A를 갖고, 이어서 최근에 온라인 판매점(304)에 소개된 새로 부가된 노래 B를 구매한다면, 노래 A와 새로 부가된 노래 B 간의 새로운 상관이 형성될 것이다. 사용자가 새로 부가된 노래 B를 구매하면, 트랜잭션이 구매 행렬(306)에 기록되고, 갱신된 구매 행렬(306)이 생성된다. 택일적으로, 노래 B는 CD로부터 그 트랙을 카피함으로써 사용자의 라이브러리에 부가될 수 있다. 이러한 경우에, 그 결과는 동일할 것이다. 노래 A와 노래 B가 둘 다 사용자의 미디어 라이브러리에 있다면, 이 동시 발생은 갱신된 마스터 구매 행렬에 기 록된다. 협업 필터 엔진(308)은 갱신된 구매 행렬(306)로부터의 정보를 사용해서 상술한 바와 같이 아이템의 갱신된 마 스터 유사성 표(316)를 생성한다. 이후에, 갱신된 마스터 유사성 표(316)에서 변경된 아이템들만을 추출함으로 써 갱신된 개별 유사성 표(322)가 각 사용자에 대해 생성될 수 있다. 택일적으로, 완전히 새로운 개별 유사성 표가 새로운 데이터에 기초해서 생성될 수 있다. 클러스터 상술한 유사성 데이터는 미디어 아이템의 그룹을 식별하기 위해 클러스터링 분석에서 활용될 수 있다. 개념적 레벨에서, 클러스터링 분석은 유사성 벡터에 기초해서 아이템을 도식화하고, 그래프에서 상대적으로 가깝게 함 께 표시된 아이템들을 선택한다. 예를 들어, 도 7은, 미디어 아이템을 나타내는 유사성 벡터로서 다수의 미디 어 아이템들(420-428)과 그 아이템들과 유사한 모든 미디어 아이템의 그래프를 도시하고, 여기에서, 벡터는 함 께 그룹화되어 유사성 벡터의 3개의 클러스터를 형성한다. 클러스터 분석은 미디어 아이템 420을 자신의 클러 스터 430으로, 미디어 아이템 421-426을 클러스터 432로, 미디어 아이템 427-428을 클러스터 434로 그룹화한다. 음악 맥락에서, 클러스터(430, 432, 434)는, 다른 미디어 아이템들보다 서로 더 관련된 미디어 아이템들의 그룹, 서브 장르, 개별 장르에 속하는 미디어 아이템들을 나타낼 수 있다. 도 8은 클러스터(432)의 자식 클러스터를 도시한다. 도 8은 도 7에 도시된 바와 같이, 동일한 유사성 벡터 공 간을 도시하지만, 도 7에서 클러스터(432)로 그룹화된 미디어 아이템(421-426)은 자식 클러스터(435, 436, 43-15 -
7)로 재분할된다. 자식 클러스터(435-437)는 클러스터(432)에 포함된 아이템들의 더 작은 그룹에 클러스터 분 석을 재적용함으로써 생성될 수 있다. 도 9는 도 7-8에서 계산된 클러스터를 수형도로 도시한다. 최상위 레벨에서, CLUSTER 0은 도 7-8에 도시된 모 든 미디어 아이템들을 포함한다. 클러스터(432, 430, 434)를 갖는 제2 레벨은 도 7의 동일한 클러스터에 대응 한다. 도면의 최하위의 자식 클러스터(435, 436, 437)는 도 8의 동일한 클러스터에 대응한다. 보다 구체적으 로, CLUSTER 0에서 클러스터링 분석을 수행하는 것은 도 7에 도시된 클러스터에 이르게 하고, 도 9에서 중간 노 드로 도시된다. 유사하게, 부모 클러스터(432)에서 클러스터 분석을 수행하는 것으로 도 8 및 9에 도시된 자식 클러스터(435, 436, 437)를 얻는다. 다수의 수학적 형태의 클러스터링 분석이 공지되어 있다. 본 발명에서는 계층적 클러스터링의 메카니즘이 사용 된다. 계층적 클러스터링은 상술한 바와 같이 수형 구조로 표시될 수 있는 클러스터들의 계층을 생성한다. 이 러한 알고리즘은 응집형("상향식(bottom-up)") 또는 분산형("하향식(top-down)") 중 하나일 수 있다. 응집형 알고리즘은 개별 클러스터로서의 각 구성 요소에서 시작하고, 이들을 연속적으로 더 큰 클러스터들로 통합한다. 분산형 알고리즘은 전체 세트에서 시작해서 연속적으로 더 작은 클러스터들로 이를 나누는 것으로 진행한다. 분산형 클러스터링 분석은 도 7-9에 도시된다. 클러스터링 분석에 있어서 다수의 기술들이 존재하고 이들이 본 발명에 적용될 수 있다는 것을 이해할 것이다. 일부 실시예에서, 적용되는 클러스터링 분석의 형태는 k-평균 분석으로서의 기술이다. k-평균 알고리즘은 그 중심이 가장 가까운 클러스터에 각 포인트를 할당한다. 중심은 클러스터의 모든 포인트들의 평균이고, 즉, 그 좌표는 클러스터의 모든 포인트들에 대해 개별적인 각 차원에 대한 산술 평균이다. 예를 들어, 데이터 세트가 3개의 차원을 갖고 클러스터가 2개의 포인트를 갖는다면, X=(x1, x2, x3)이고 Y=(y1, y2, y3)이다. 그 다음, 중심 Z는 Z=(z1, z2, z3)이 되고, 여기에서 z1=(x1+y1)/2이고 z2=(x2+y2)/2이고 z3=(x3+y3)/2이다. k-평균 분석은 다음 단계들을 수행한다: (1) 클러스터의 수, k를 선택한다; (2) 임의로 k 클러스터를 생성하고 그 클러스터 중심을 결정하거나, 또는 클러스터 중심으로서 k 임의 포인트를 직접 생성한다; (3) 각 포인트를 가장 가까운 클러스터 중심에 할당한다; (4) 새로운 클러스터 중심을 재계산한다; (5) 최저 레벨 클러스터가 각 최저 레벨 클러스터 내에 정해진 수의 미디어 아이템보다 적은 수의 미디어 아이템을 가질 때까지 2개의 이전 단계를 반복한다. K-평균 분석의 예시적 구현은 도 10-12에 도시된다. 일부 실시예에서, 미디어 아이템의 데이터베이스는 임의의 적당한 기준에 기초해서 캐노피(102)로 분할된다. 매우 유사한 미디어 아이템의 클러스터를 달성할 필요는 없지만, 이 단계는 다양한 방법에서 유용할 수 있다. 우선, 대형 데이터세트의 경우에, 데이터베이스의 단순 분할은 데이터베이스의 최상위 레벨에 대한 클러스터의 계산에 요구되는 계산 자원을 줄일 수 있다. 백만 또는 십억 개의 미디어 아이템의 전체 데이터베이스에 대해 통계적 클러스터링 분석을 수행하는 대신에, 전체의 더 작은 서브세트에 대해서 통계적 클러스터링 분석이 수행 될 수 있다. 부가적으로, 데이터베이스를 캐노피들로 나누는 것은 또한 결과 클러스터의 품질을 향상시킬 수 있다. 예를 들 어, 캐노피는 편집 분할에 기초해서 생성될 수 있다. 도 13에서, 캐노피(450, 451, 453)는 음악 아이템의 전체 데이터베이스를 음악 미디어 아이템의 비유사 장르들의 비중첩 그룹들로 나누는 예이다. 이러한 경우에, 다양 한 락(450), 랩(451) 및 오페라(453) 음악 미디어 아이템이 서로 절대 유사하지 않다는 편집 결정이 이루어지고, 미디어 아이템의 데이터베이스가 이들 캐노피로 처음부터 나뉜다. 일부 실시예에서, 캐노피는 편집 결정에 기초해서 서브 캐노피들로 나뉠 수 있다. 하지만, 양호한 실시예에서, 캐노피는, 2개의 상이한 캐노피에 있는 아이템이 이후에 동일한 클러스터로 그룹화될 수 없기 때문에, 캐노피 또는 서브 캐노피들이 한번도 함께 그룹화되지 않은 아이템들을 분리하도록 나뉘어야만 한다. 다음으로, 선택된 클러스터링 알고리즘은 데이터베이스를 클러스터로 더 나누기 위해서 각 캐노피/서브 캐노피 에서 수행될 수 있다. 도 13에 도시된 바와 같이, 락 캐노피(450)는 팝/얼터너티브/클래식 락(454) 및 하드/메 탈 락(455)의 유사한 미디어 아이템의 2개의 서브 그룹으로 나뉘었다. 유사하게, 랩 캐노피(451)는 동부 랩 (459) 및 서부 랩(460) 클러스터로 더 나뉘었다. 도 13에서 장르 및 서브 장르에 의해 클러스터가 더 나뉘는 것을 도시했지만, 이는 단지 예시를 위한 것이라는 것으 주지해야 한다. 통계적 클러스터링 알고리즘은 유사성 데이터의 통계적 분석에 따라 클러스터를 더 나누고, 이는 프로그램 참가자의 라이브러리에 있는 미디어 아이템 의 발생에 기초하며, 이 알고리즘은 다양한 양립가능한 장르의 미디어 아이템을 갖는 클러스터를 생성할 것이다. - 16 -
클러스터링 분석은 다음과 같이 수행될 수 있다: 주어진 캐노피 또는 서브 캐노피의 아이템은 클러스터의 수 X(X는 1보다 큰 임의의 수)로 임의로 나뉜다(1013). 각 클러스터에 대해 중심이 계산된다. 도 12는 중심을 계산하는 일 방법을 도시한다. 1050은 주어진 클러스터의 미디어 아이템에 대한 유사성 벡터의 콜렉션이다. 유사성 벡터는 미디어 아이템에 가장 유사한 미디어 아이템을 내림차순의 유사성 순서로 나열한다. 예를 들어, 1050은 클러스터에 그룹화된 아이템 1, 2 및 25에 대한 벡터를 도시한다. 아이템 1은 그에 가장 유사한 것으로서 미디어 아이템 1을 갖고, 2번째로 유사한 것으로서 아이템 25를 갖는다. 다음으로, 클러스터의 각 아이템은 아이템이 클러스터의 다른 아이템에 대해 얼마나 유사한지에 기초해서 값이 주어진다. 이는 각 아이템에 (덜 유사한 아이템보다 더 유사한 아이템에 더 가중치를 부여한) 가중화된 값을 할당하고, 그 값을 합산함으로써 달성된다. 예를 들어, 1052는 클러스터에 존재하는 미디어 아이템의 유사성 벡터에서 발견 되는 각 아이템 및 이들의 관련된 가중화된 값을 갖는 표를 도시한다. 표의 모든 미디어 아이템이 실제로 클러 스터에 있는 것은 아니라는 것을 주지해야 한다. 아이템 1은 아이템 1과 가장 유사하고, 따라서 100의 값이 주어지고, 아이템25는 2번째로 유사해서 99의 값이 주어진다. 각 아이템에 대한 점수는 합산되어 각 아이템의 점수로 얻어진다. 이 클러스터에 대해 아이템 1은 199의 점수를 얻는다. 아이템 25는 각 리스트에서 높은 순위가 되고, 이에 따라 298의 더 높은 점수를 얻는다. 이 점수는 각 아이템에 대해 계산된다. 최종 점수는 분류되어 전체 클러스터(1054)에 대한 유사성 벡터를 생성 하는데 사용될 수 있다. 이 프로세스는 X개의 클러스터 각각에 대해 반복되어 X개의 중심이 얻어진다. 다수의 상이한 점수화 메카니즘이 가능할 수 있으며 본 발명에 포함되는 것으로 고려된다. 상술한 예시적 방법 은 주어진 클러스터에 대한 중심을 계산하는 일 방법일 뿐이다. 본 예에서, 중심은 클러스터 내의 이들 미디어 아이템의 모든 미디어 아이템의 유사성 벡터의 효과적인 평균이다. 중심이 계산되면, 임의로 생성된 클러스터는 폐기될 수 있다. 그 목표는 중심을 설정하는 것뿐이다. 다음으로, 캐노피내의 각 미디어 아이템에 대한 유사성 벡터는 각 중심(벡터)(1015)과 비교되고, 각 미디어 아 이템은 가장 가까운 중심(1016)을 포함하는 클러스터에 할당되어 X 클러스터를 생성한다. 이 프로세스는, 기존 클러스터에 대한 중심을 계산하고(1014), 그 다음 각 아이템 유사성 벡터를 각각의 새로운 중심과 비교하고(1015), 아이템을 가장 가까운 중심에 클러스터링(1016)함으로써 최고 품질의 클러스터를 생성 하도록 반복적으로 수행된다. 이 프로세스는, 최대 수의 반복이 완료되거나(1022) 또는 미디어 아이템이 일 클 러스터로부터 다른 클러스터로 더 이상 이동하지 않으면(1024) 종료한다(1026). 이러한 방식으로, 반복적 프로 세스가 중심을 개선시키고 노래를 적절한 클러스터로 이동시킴으로써 클러스터 분석을 천천히 개선시킨다. 전체 프로세스는 임의의 주어진 클러스터에서 재실행될 수 있다. 예를 들어, 프로세스는 위에서 생성된 X 클러 스터들 중 임의의 하나에서 재실행되어 도 11에 도시된 바와 같이 서브 클러스터를 생성할 수 있다. X 클러스 터들 중 임의의 하나가 임의로 X 서브 클러스터로 나뉠 수 있다(1028)(또한, X는 1 보다 큰 임의의 수일 수 있 다). 각 서브 클러스터에 대한 중심이 계산되고(1030), 각 미디어 아이템의 유사성 벡터가 각 중심에 대한 벡 터와 비교되고(1034), 클러스터로 그룹화된다(1036). 새로운 중심이 계산되고(1030), 각 미디어 아이템은 그 중심과 비교되며(1034), 클러스터로 그룹화된다(1036). 프로세스는, 최대 수의 반복이 완료될 때까지(1046) 또 는 클러스터를 변경하는 미디어 아이템이 없을 때까지(1048) 반복되고 종료한다(1050). 프로세스는, 미디어 아이템의 전체수가 원하는 크기의 클러스터 또는 원하는 수의 클러스터로 줄어들 때까지 계 속 반복될 수 있다. 상술한 클러스터링 방법의 변형에 있어서, 개별적으로 미디어 아이템을 클러스터링하는 대신에, 아이템은 아티 스트에 의해 클러스터링될 수 있다. 상술한 바와 같이, 미디어 아이템은, 동일한 아티스트에 의해 유사하지 않 은 노래가 함께 그룹화될 가능성을 제거하는 편집 결정에 기초해서 나뉠 것이다. 캐노피에 표시된 각 아티스트에 대해, 벡터는 도 12에 도시된 중심이 생성된 것과 동일한 방식으로 생성될 수 있다. 캐노피의 아티스트에 의한 각 노래는 함께 그룹화되고 아티스트 벡터가 생성된다. 벡터는 캐노피인 아 티스트로부터 각 노래를 포함한다. 각 아티스트에 대한 벡터가 계산되면, 클러스터링 알고리즘은 미디어 아이 템 대신에 아티스트 벡터를 사용하여 아티스트를 클러스터로 구성할 수 있다. 반복적 클러스터링 프로세스는, 프로세스가 선택된 횟수만큼 반복되거나, 각 클러스터에 존재하는 선택된 수의 아티스트, 예를 들어 3명의 아티 스트 만큼만 반복되면, 완료된다. 클러스터링 프로세스가 완료되면, 아티스트 벡터는 아티스트의 벡터의 각 노 래를 식별함으로써 미디어 아이템으로 돌아갈 수 있다. - 17 -
상술한 프로세스는 서버의 데이터베이스의 모든 미디어 아이템의 클러스터를 생성하는데 사용될 수 있다. 전체 데이터베이스가 서버 클러스터의 모든 트리로 분할되면, 서버 클러스터의 트리는 참가자 클러스터를 생성하는데 사용될 수 있다. 참가자 클러스터는 개별 사용자의 라이브러리에 특정하고 참가자의 미디어 라이브러리에 포함 된 미디어 아이템만을 포함한다. 프로그램 참가자의 미디어 라이브러리는, 트리의 최저 레벨에서의 서버 클러스터의 프로그램 참가자의 미디어 라이브러리에서 각 미디어 아이템을 찾고, 적어도 정해진 수의 아이템을 갖는 참가자 클러스터가 모아질 때까지 클러스터의 트리를 구성함으로써 서버 클러스터에 매핑될 수 있다. 이 방법은 도 14에 도시된다. 도 15는 계 층에 따라서 표시된 서버 클러스터의 트리에 매핑된 프로그램 참가자의 라이브러리를 도시한다. 트리는 전체 서버 클러스터 트리 구조와 동일한 관계를 나타내지만, 클러스터는, 이 서버 클러스터들 중 임의의 하나에 있는 프로그램 참가자의 미디어 아이템의 수를 나타내는 것으로 도시된다(이들 내에 어떤 수도 없는 클러스터는 프로 그램 참가자의 미디어 아이템들 중 어느 것도 포함하지 않는다). 프로그램 참가자의 미디어 아이템은 최저 레벨 서버 클러스터에 매핑된다(470). 예를 들어 도 15를 참조하면, 서버 클러스터 1.1.1.1은 프로그램 참가자의 아이템들 중 3개를 포함한다. 아래 표 1은 최저 레벨 자식 클러스 터에서의 프로그램 참가자의 미디어 아이템의 수를 식별한다. 표 1 클러스터 ID 프로그램 참가자의 미디어 아이템의 수 1.1.1.1 3 1.1.1.2 2 1.1.1.3 1 1.1.3.1 5 1.1.3.2 3 1.1.3.3 4 1.1.3.4 5 1.2.2.1 10 1.2.2.2 12 1.3.1 1 1.3.2 1 1.4.1.1.1 5 1.4.1.1.2 5 1.4.1.1.3 5 1.4.3.1 2 1.4.3.2 1 도 14를 참조하면, 프로세스는 클러스터가 정해진 수의 아이템보다 더 많은 아이템을 포함하는지를 결정한다. 일부 실시예에서, 아이템의 결정된 수는 10 이상, 20 이상, 또는 50 이상일 수 있다. 일부 실시예에서, 클러스 터의 크기는 결정된 최대값으로 제한될 수 있다. 본 발명의 예시를 위해, 아이템의 결정된 수는 20 이상이다. 따라서, 471에서 프로세스는 서버 클러스터 1.1.1.1이 20 이하의 아이템을 갖는 것으로 결정하고, 472로 진행하 여 다른 참가자 클러스터로부터의 미디어 아이템을 공통 부모에 부가한다. 클러스터 1.1.1.1이, 각각 프로그램 참가자의 미디어 아이템의 2 및 1을 포함하는 클러스터 1.1.1.2 및 1.1.1.3과 공통 부모를 공유하기 때문에, 이 들 미디어 아이템은 하나의 더 큰 참가자 클러스터로 병합된다. 프로세스는 다시 참가자 클러스터의 미디어 아 이템의 수를 확인하고, 클러스터에 6 아이템만이 존재하기 때문에, 프로세스는 472를 반복한다. 이 때, 서버 클러스터 1.1.1, 1.1.2 및 1.1.3은 모두 공통 부모를 공유하고, 이들 클러스터를 병합함으로써 28 미디어 아이 템의 참가자 클러스터가 얻어진다. 이제, 프로세스가 아이템의 정해진 수를 확인하고(473), 참가자 클러스터가 19를 초과하면 프로세스는 474에서 종료한다. 클러스터는 도 15에서 475로서 지시된다. 상술한 바와 같이, 트리에서 더 높이 있는 클러스터들을 병합함으로써 유사한 아이템들을 함께 그룹화하는 이 프로세스는 응집형으로 지칭된다. 도 15는 도 14에 도시된 프로세스의 다수의 다른 잠재적 결과들을 도시한다. 예를 들어, 참가자 클러스터 476 은 응집된 충분한 수의 아이템을 갖기 위해서 한번의 반복만을 요한다. 클러스터 477은, 모든 브랜치에 대해 수형도의 최저 레벨이 반드시 동일할 필요는 없다는 것을 도시한다. 클러스터 477은 5차 서버 클러스터에서 시 - 18 -
작하고, 모든 5차 및 4차 서버 클러스터를 동일 부모에 병합하여 참가자 클러스터 477을 얻는다. 478은 실패한 클러스터를 도시한다. 원하는 크기를 달성하기에 충분한 아이템을 모으기 위해서, 478은 최고차 서버 클러스터를 포함할 필요가 있다. 이러한 경우에, 이들 아이템이 클러스터로 결합되기에 충분한 유사성을 나타내는 것으로 결론을 얻을 수 있다. 프로그래밍 결정이 트리의 특정 레벨 이상에서는 응집을 허용하지 않도 록 만들어지기 때문에 클러스터는 실패할 수 있고, 또는 클러스터가 현재 너무 많은 아이템을 갖기 때문에 실패 할 수 있다. 시스템 개요 도 16은 상술한 실시예를 수행할 수 있는 이러한 시스템(300)의 일 예를 도시한다. 구매 행렬(306)은 각 사용 자의 라이브러리로부터의 모든 미디어 아이템에 관한 데이터를 저장한다. 협업 필터 엔진(308)은 구매 행렬 (306)의 데이터를 사용해서, 나머지 각각의 미디어 아이템에 대한 각 미디어 아이템의 공동 발생을 결정한다. 협업 필터 엔진(308)은 오브젝트(324 및 326)에 저장된 피드백 데이터를 선택적으로 사용해서 프로그램 참가자 전체에 걸친 사용자 선호에 따라서 유사성 점수를 조정한다. 협업 필터 엔진의 출력은, 주어진 미디어 아이템 (318)과 유사한 것으로 고려되는 모든 미디어 아이템(320)을 저장함으로써 마스터 유사성 표에 저장된다. 유사 한 미디어 아이템(320)은 가장 많이 상관된 아이템에서부터 가장 적게 상관된 아이템의 순서로 제시되도록 분류 될 수 있다. 유사하게, 협업 필터 엔진은 또한 서버 클러스터(332)의 트리에 데이터베이스를 나누도록 그 입력을 처리할 수 있다. 택일적으로, 서버 클러스터(332)의 트리는 협업 필터 엔진에 의해 데이터 출력으로부터 생성될 수 있다. 각 데이터 세트는 클러스터링 분석에 대해 적합하다. 온라인 관리 수단(304)은 클러스터측(302) 및 서버측(301)에 대한 인터페이스로서 기능한다. 양호한 실시예에 서, 온라인 관리 수단(304)은 온라인 판매점과 결합될 수 있다. 일 실시예에서, 온라인 판매점은, 유사성 데이 터를 생성하는데 있어서 협업 필터 엔진(308)에 의해 사용될 수도 있는 데이터(310)를 생성할 수 있다. 이와 상관없이, 클라이언트(302)는 클라이언트(302)에 저장된 미디어 아이템에 관한 정보를 업로딩하고, 서버(301)로 부터 유사성 데이터 및 클러스터링 데이터를 다운로딩하도록 기능한다. 클라이언트에 특정한 유사성 데이터는 마스터 유사성 표(316)로부터 직접 온라인 관리 수단(304)을 통해 다운로딩되어, 클라이언트 장치(302)에서 개 별 유사성 표(322)를 생성할 수 있고, 개별 유사성 표는 서버(301)에 의해 생성되어 클라이언트 장치(302)에 다 운로딩될 수 있다. 클라이언트 장치는 또한 유사성 데이터를 더 잘 생성하도록 돕기 위해 온라인 관리 수단 (304)을 통해 피드백 데이터를 협업 필터(308)에 전달할 수 있다. 유사하게, 클라이언트 장치(302)는 서버(301)로부터 클러스터링 정보를 다운로딩할 수 있다. 일부 실시예에서, 서버(301)는 프로그램 참가자에 대한 특정 클러스터를 계산하고, 참가자 클러스터를 식별하는 정보 및 참가자 클러스터(330)에 속하는 미디어 아이템을 송신한다. 일부 실시예에서, 서버는 각 서버 클러스터에서의 프로그 램 참가자의 미디어 아이템 각각의 존재를 상세하는 정보를 송신하고, 클라이언트가 참가자 클러스터들을 병합 하도록 해준다. 클라이언트 도 16에 도시된 바와 같이, 클라이언트 장치(302)는 다양한 형태들 중 임의의 하나를 취할 수 있다. 클라이언 트 장치(302)는 휴대용 디지털 오디오 플레이어, 휴대용 디지털 비디오 플레이어, 스마트폰, 데스크톱 및 랩톱 컴퓨터, 텔레비전 셋 탑 박스, 및 미디어를 재생할 수 있는 임의의 다른 장치와 같은 장치를 포함한다. 클라이 언트 장치는 데스크톱 컴퓨터 또는 다른 중간 장치를 통해 온라인 판매점(304)과 동기화되는 오프라인 휴대용 장치를 포함할 수 있고, 이 장치는 예를 들어, 데스크톱 컴퓨터와의 케이블 접속을 통해 동기화하는 IPOD 디지 털 오디오 플레이어, 무선 라우터를 통해 무선으로 동기화하는 IPOD TOUCH 디지털 오디오 플레이어, 또는 셀룰 러 접속을 통해 무선으로 동기화하는 스마트폰일 수 있다. 상술한 바로부터 명백하게, 클라이언트 장치는 다양 한 미디어 아이템의 목록을 포함한다. 클라이언트 장치의 사용자가 유사성 데이터를 사용해서 이익을 얻기를 원한다면, 사용자는 온라인 인터페이스를 통한 서비스를 액세스할 것이다. 택일적으로, 클라이언트 장치는, 인 터넷을 통해 원격 서버와 통신하는 ITUNES 데스크톱 애플리케이션과 같은 클라이언트 기반의 애플리케이션을 통 해 유사성 데이터 서비스에 액세스할 수 있다. 온라인 판매점(304)은 클라이언트 장치가 디지털 미디어를 구매할 수 있도록 하는 단일 서버 또는 서버의 클러 스터일 수 있다. 온라인 판매점은 또한 다른 부수적인 미디어 관리 특성들에 대한 액세스를 허용할 수 있다. 도 17은 클라이언트에 유사성 데이터를 다운로딩하기 위한 방법 실시예를 도시한다. 이번이 클라이언트가 협업 - 19 -
프로그램(842)을 액세싱하는 첫 번째라면, 클라이언트는 프로그램을 택함으로써 참가하도록 선택해야만 한다 (844). 클라이언트에는 단계 846에서 사설 사용자 식별 코드가 주어진다. 서버가 이 코드를 사용해서 클라이 언트의 라이브러리와 결합하겠지만, 클라이언트만이 추가의 식별 정보를 포함한다. 서버는 클라이언트 장치 또 는 사용자(프로그램 참가자) 중 하나에 관한 식별 정보 또는 비사설 정보를 인식한다. 사설 식별 코드가 일단 할당되면, 클라이언트 장치는 이 미디어 라이브러리(848)에 관한 정보를 업로딩할 수 있다. 일부 실시예에서, 사용자는 어떤 미디어 아이템을 서버와 공유할지를 선택할 수 있다. 단계 842의 출력이 사용자가 이미 협업 프로그램의 참가자라고 지시하면, 단계 850에서 클라이언트는 그 사설 식별 코드를 사용해서 서버에 로깅(log)할 수 있다. 단계 852에서, 서버는 미디어 라이브러리에 대한 변경에 관한 정보를 클라이언트로부터 요청할 수 있고, 또는 택일적으로, 클라이언트는 먼저 요청받지 않고도 이 정보 를 공유할 수 있다. 라이브러리에 대한 변경이 발생하면, 클라이언트는 변경에 관한 정보를 업로딩한다(854). 변경은 편집된 메타데이터, 새로운 아이템, 삭제된 아이템 등의 형태로 얻어질 수 있다. 클라이언트의 미디어 라이브러리에 관한 최신 정보는 서버에 보내지고, 클라이언트는 단계 856에서 새로운 유사성 및/또는 클러스터 데이터(총괄적으로 "참가자 데이터")를 서버로부터 요청한다. 택일적으로, 서버는 새로운 또는 갱신된 참가자 데이터의 송신을 개시할 수 있다. 일부 실시예에서, 클라이언트는 상기 단계들을 건너뛸 수 있고, 라이브러리를 식별할 필요없이 마스터 유사성 표로부터의 갱신된 결과를 단순히 요청할 수 있다. 예를 들어, 클라이언트는, 식별 번호로 자신을 식별하지 않 고 클라이언트의 미디어 라이브러리 목록에 대한 변경을 서버에 통지하지 않으면서, 아이템의 리스트 또는 참가 자 아이템에 대한 갱신을 요청할 수 있다. 유사성 데이터 및/또는 클러스터 데이터는 단계 858에서 다운로딩된다. 유사성 데이터는 서버에 의해 미리 생 성된 표의 형태로 다운로딩될 수 있고, 또는 정보는 다운로딩되어 실시간으로 개별 유사성 데이터 표로 포맷화 될 수 있다. 클러스터 데이터는 클러스터에 속하는 미디어 아이템 및 클러스터의 리스트로서 다운로딩될 수 있 다. 데이터는 동일 또는 개별 데이터 구조 또는 송신으로 제공될 수 있다. 재생리스트는 개별 유사성 표에 기초해서 생성된다. 재생리스트는 온라인 판매점(304)의 또는 협업 필터 엔진 (308)의 클라이언트측(302)에서 생성될 수 있다. 재생리스트는 하나의 노래 또는 다수의 노래에 대한 통계적 유사성에 기초해서 생성될 수 있다. 클라이언트 장치가 개별 유사성 표에 기초해서 재생리스트를 사용할 때, 소정의 노래는 사용자가 기대한 노래가 아닐 수 있거나, 사용자가 좋아하지 않을 수 있다. 사용자가 통계적 유 사성에 기초해서 재생리스트에 놓여진 노래를 자주 건너뛸 때, 시스템은 그 노래에 "패널티"를 주고, 그 유사성 값을 낮추고, 재생리스트에 이 노래를 덜 포함하고, 결국에는 재생리스트로부터 완전히 폐기시킬 수 있다. 이 는 사용자가 노래를 건너뛰는 것을 보고함으로써 발효된다. 이러한 동작은 클라이언트 장치에 기록되어 온라인 판매점에 피드백으로서 송신된다. 온라인 판매점은 피드백을 네거티브 상관 표(326)에 저장하는 협업 필터 엔 진에 이 피드백을 보낸다. 네거티브 상관 표는 유사성의 네거티브 지표를 저장한다. 이러한 방식으로, 각각의 사용자는 노래가 유사성 표로부터 거부되기 전에 개별적으로 노래를 다수 회 건너뛸 필요가 없다. 누적 네거티 브 피드백은 그룹 동작에 기초해서 사용자 그룹에 있어서 인기없는 노래를 필터링할 것이다. 이와 같이, 이들 재생리스트는 사용자 전체의 변화하는 미디어 기호를 맞추도록 개발된 살아있는 조직체로서 기능한다. 예를 들어, 다수의 사용자가 항상 재생리스트의 특정 노래를 건너 뛰거나, 다수의 사용자가 자신의 재생리스트 로부터 그 노래를 삭제하는 경우, 그 정보가 기록되고 가중치가 부여되어 마스터 유사성 표의 생성에 영향을 준 다. 가중치는 사용자 상호작용의 다른 양상들 또는 보고된 네거티브 상관의 수에 기초할 수 있다. 역으로, 특 정 노래에 대한 포지티브 사용자 상호작용은 포지티브 상관을 제공한다. 예를 들어, 다수의 사용자가 동일한 노래를 기존 재생리스트에 부가하거나, 다수의 사용자가 특정 노래를 들을 때 볼륨을 높이는 경우에, 온라인 인 터페이스를 통해 서버에 포지티브 상관이 보고되어 포지티브 상관 표에 저장된다. 서버와의 상호작용에 더하여, 클라이언트는 또한 다른 클라이언트 또는 주변 장치와 상호작용할 수 있다. 양호 한 일 실시예에서, 클라이언트는 IPOD 휴대용 음악 재생기와 같은 휴대용 음악 재생기와 상호작용하는 개인용 컴퓨터일 수 있다. 이러한 경우에, 클라이언트 장치는 또한 주변 장치에서의 사용을 위해 개별 유사성 표를 준 비할 수 있다. 서버가, 클라이언트의 라이브러리에 단지 클라이언트 미디어 아이템들에 대한 정보를 포함하는 클라이언트에 대한 개별 유사성 표를 준비할 수 있는 것처럼, 클라이언트는 주변 장치의 라이브러리에 단지 그 미디어 아이템들에 대한 정보를 포함하는 주변 장치에 대한 개별 유사성 표를 준비할 수 있다. 클라이언트는 임의의 다른 데이터 아이템과 마찬가지로 주변 장치에 개별 유사성 표를 로딩할 수 있다. 주변 장치 - 20 -
주변 장치는 클라이언트가 서버와 동작하는 것처럼 클라이언트와 동작하려고 할 것이다. 예를 들어, 주변 장치 는 그 콘텐츠에 대한 변경 클라이언트에게 통지하고 그 콘텐츠에 대한 유사성 데이터를 요청할 수 있다. 보다 양호한 실시예에서, 주변 장치는, ITUNES 데스크톱 애플리케이션을 실행시키는 개인용 컴퓨터가 IPOD 휴대용 미 디어 장치를 관리하는 것처럼 클라이언트에 의해 관리될 수 있다. 이 실시예에서, 클라이언트는 이미 그들 변 경들에 영향을 받은 툴에 의해 변경들을 알고 있기 때문에 클라이언트는 일반적으로 주변 장치는 변경들로 갱신 될 필요가 없다. 이 실시예에서, 클라이언트는 또한 클라이언트의 개별 유사성 표의 이용가능한 데이터에 기초 해서 주변 장치의 유사성 표를 최신으로 유지할 수 있다. 또한, 주변 장치는 서버에 이후에 송신하기 위해 클 라이언트에 피드백 데이터를 보낼 수 있다. 또한, 클러스터 데이터는 유사성 데이터가 갱신되는 방식과 유사한 방식으로 주변 장치에 송신될 수 있다. 클 라이언트는 단지 주변 장치에 존재하는 미디어 아이템과 함께 클러스터 ID를 송신할 수 있다. 일부 실시예에서, 주변 장치는 클라이언트 장치 자체로서 서버와 직접 상호작용할 수 있다. 휴대용 미디어 재 생기가 인터넷에 액세스할 수 있는 능력이 커질수록, 휴대용 장치는 가장 최신의 유사성 데이터를 다운로딩하거 나 마스터 구매 행렬을 갱신하도록 서버와 직접 상호작용할 수 있게 된다. 이러한 실시예에서, 주변 장치는 클 라이언트의 모든 능력을 가질 수 있다. 재생리스트 생성 논의된 바와 같이, 본 명세서에서 설명된 방법으로 생성된 유사성 데이터의 사용은 재생리스트를 생성하도록 유 사성 데이터를 사용하는 것이다. 재생리스트의 생성은 개별 유사성 표의 모든 유사성 아이템을 재생하는 것만 큼 간단할 수 있지만, 최적의 결과는 재생 리스트 생성 모듈을 사용함으로써 얻어질 것이다. 도 18은 재생리스 트의 생성을 위한 방법 실시예를 도시한다. 단계 802에서, 하나 이상의 시드 트랙이 선택되어 단계 804에서 재 생리스트에 부가된다. 단계 806에서, 이 시드 트랙(들)에 대한 유사성 데이터는 개별 유사성 표에서 검색되고, 단계 808에서 유사한 트랙이 후보 리스트에 부가된다. 후보는 재생리스트에 부가될 잠재 트랙의 리스트이다. 후보가 재생리스트에 부가되는 것은 일련의 제약에 대해 후보를 평가함으로써 결정된다. 제약은 노래가 재생리스트에 부가될 수 있는지에 대한 제한으로서 기능한다. 대부분의 경우에, 제약은 재생리 스트의 품질을 향상시키도록 기능할 것이다. 제약은 재생리스트의 소정 공간을 요구할 것이다. 예를 들어, Radiohead의 두 노래는, 아티스트 공간 제약이 액티브 상태라면, 연속해서 재생될 수 없다. 유사한 예에서, 제 약은 노래가 동일한 앨범에 있는 것을 방지하거나, 또는 곡목이 재생리스트의 소정 수의 노래 내에서 서로 발생 하는 것을 방지할 수 있다. 다른 제약은 양립불가 장르의 노래가 동일한 재생리스트에서 재생되는 것을 방지한 다. 또 다른 제약은 "지터(jitter)" 기능이다. 지터는 임의로, 다른 경우에 수용가능한 노래가 재생리스트에 부가되는 것을 방지할 수 있다. 지터는 재생리스트에 무질서(randomness)를 제공하여, 동일한 시드 트랙의 선 택에 기초해서 동일한 재생리스트가 매회 생성되는 것을 막는다. 또 다른 제약은 건너뛰기 계수 제약일 수 있 고, 여기에서 주어진 횟수보다 더 많이 건너 뛰어진 임의의 노래는 그 제약에 따르지 못하므로 재생리스트에 포 함되지 않을 것이다. 제약들은 쉽게 변하는 소정 파라미터 또는 변수에 따른다는 것을 이해해야 한다. 예를 들어, 동일한 앨범 또는 아티스트의 2곡의 노래 사이에 개입하는 노래의 수는 변할 수 있다. 유사하게, 양립가능 장르의 트랙 또는 멤 버를 배제하기 위해 필요한 건너뛰기 계수의 수는 변할 수 있다. 일 실시예에서, 이러한 변수 설정은 사용자에 의해 구성될 수 있다. 다른 실시예에서, 이러한 설정은 서버에 의해 선택되고 서버로부터 발행되며, 클라이언 트가 다운로딩된 갱신 유사성 데이터에 접속할 때마다 서버에 의해 조정될 수 있다. 포지티브 제약이 또한 고려될 수 있다는 것을 이해해야 한다. 높은 재생율 또는 높은 순위를 갖는 노래들은 재 생리스트에서 위로 올라갈 수 있고, 소정의 다른 네거티브 제약의 영향 또는 지터 기능에 대해서 면제될 수 있 다. 추가의 제한을 부가하고, 제약을 제거하고, 제약을 더욱 또는 덜 엄격하게 함으로써 다수의 변화들이 가능 하고, 이들 각각은 본 명세서에서 기술한 방법에서 고려된다. 단계 810에서, 고려될 다음 후보가 선택되고, 그 메타데이터가 단계 812에서 검색된다. 메타데이터는 제약을 평가하는데 필요할 후보에 대한 정보를 제공한다. 단계 814, 815, 816에서, 트랙은 제약에 의해 평가된다. 도 18에서는 3개의 제약만이 표시되었지만, 어떤 수의 제약도 가능하다는 것을 고려해야 한다. 노래가 일 제약을 통과하면, 단계 818에서 모든 제약이 통과될 때까지 이 노래는 다음 제약으로 보내지고 트랙은 재생리스트에 부 가된다. 이후에, 이 방법은 단계 820으로 진행하고, 재생리스트에 새로운 노래에 대한 유사성 데이터를 가져 온다. 이 유사성 데이터는 재생리스트에 포함하기 위해 고려되는 후보 리스트에 첨부될 수 있다. - 21 -
트랙이 제약을 통과하지 못하면, 이 방법은 단계 830으로 건너 뛰고, 리스트에 평가할 추가의 후보가 있다면 단 계 810으로 돌아간다. 하지만, 리스트에 추가의 후보가 없다면, 즉, 모든 후보가 제약을 통과하지 못했거나 또 는 모두 재생리스트에 있다면, 단계 832는 제약이 자신의 디폴트값으로 설정되었는지를 결정하도록 제약을 체크 한다. 제약이 디폴트값으로 설정되었다면, 제약은 단계 828에서 해제(relax)되고, 하나 이상의 제약을 해제하 는 것은 단계 826에서의 재고(reconsideration)에 따라 이전에 거절된 후보가 재생리스트에 부가될 수 있도록 하는 것에 따른다. 모든 후보가 다시 한번 제약을 통과하지 못하면, 단계 832에서는 제약이 이미 해제되었다고 결정하고 프로세스를 종료한다. 제약을 해제하는 것은 다양한 형태들 중 임의의 하나를 취할 수 있다. 일부 경우에, 하나의 제약만이 덜 엄격 하게 된다. 다른 경우에, 다수의 제약들이 해제된다. 예를 들어, 제1 제약이, 동일한 아티스트의 2곡의 노래 가 서로 4곡의 노래 내에서 재생되지 않을 것을 요구하는 경우, 제약이 단지 하나의 개입 노래를 요구하도록 해 제되거나, 제약 전체가 제거될 수 있다. 일부 실시예에서, 모든 제약이 해제될 필요는 없다. 일 예는 장르 제 약이다. 소정 장르는 절대 양립할 수 없고, 이에 따라 그 장르 제약은 추가의 장르를 포함하도록 해제될 수 없 을 것이다. 단계 826으로 돌아가면, 후보 트랙이 제약을 통과하지 못하고 이용가능한 추가의 후보도 없는 경우에, 제약은 해제된다. 해제된 제약으로 인해, 후보는 모든 제약을 통과하여 재생리스트에 부가되고, 제약은 단계 822 및 824에서 정상으로 돌아간다. 단계 822는 제약을 체크하여 제약이 해제되었는지 또는 자신의 디폴트 설정에 있 는지를 결정한다. 제약이 자신의 디폴트 설정에 있으면, 이 방법은 단계 810으로 돌아가서 리스트의 다음 트랙 을 고려한다. 하지만, 단계 822에서 제약이 해제되었다고 결정되면, 이 방법은 제약을 정상으로 되돌리는 단계 824로 진행한 다음, 단계 810으로 돌아가서 리스트의 다음 후보를 고려한다. 이 프로세스는 해제된 제약을 통 과하는 후보가 없을 때까지 계속되며, 이 과정은 단계 834에서 종료한다. 노래는 가장 유사한 것부터 가장 덜 유사한 것 순서로 재생리스트에 부가될 필요는 없다. 즉, 노래는 무작위화 알고리즘 또는 다른 로직을 사용해서 임의의 순서로 부가될 수 있다. 생성된 재생리스트는 정적이거나 동적일 수 있다. 동적 재생리스트는, 유사성 데이터가 진화함에 따라 그리고 새로운 아이템이 사용자의 라이브러리에 부가됨에 따라 시간이 지나면서 갱신될 수 있다. 택일적으로, 사용자 가 좋아하고 변경없이 유지하기를 원하는 재생리스트가 생성되면, 사용자는 이 재생리스트를 더 이상 유사성 데 이터에 의해 영향받지 않는 별개의 정적 재생리스트로서 저장할 수 있다. 이러한 방식으로, 사용자가 생성된 특정 재생리스트가 "완벽"하다고 느끼는 경우, 이 재생리스트는, 서버를 통해 유사성 표에 반영되는 대중의 변 화하는 취향에 따라 변경되지 않고 보존될 수 있다. 참가자 클러스터로부터의 혼합물 참가자 클러스터는 미디어 아이템의 혼합물을 생성하는데 유용하다. 양호한 실시예로서, 혼합물은 음악 미디어 아이템 혼합물일 수 있다. 상술한 바와 같이, 클라이언트 장치는 프로그램 참가자의 미디어 라이브러리 내에 포함된 클러스터에 관한 정보 를 다운로딩한다. 임의의 수의 클러스터가 존재할 수 있지만, 일부 실시예에서, 제한된 수의 클러스터, 예를 들어, 12개의 클러스터의 트랙만을 유지하도록 요구된다. 클러스터 각각이 서로 다른 클러스터와 겹치지 않는 미디어 아이템을 포함하기 때문에, 각 클러스터는 유사한 미디어 아이템의 상이한 콜렉션을 나타낼 것이다. 그 결과는 12개의 클러스터 각각이 상이한 형태의 음악을 나타낸다는 것이다. 프로그램 참가자는 자신의 클래식 미디어 아이템 또는 자신의 인기 미디어 아이템을 들으려 할 수 있고, 클러스터는 이들 콜렉션으로부터 혼합물 을 생성할 수 있다. 도 19는 혼합물을 생성하기 위한 기본 방법을 도시한다. 혼합물이 프로그램 참가자의 미디어 라이브러리 내의 유사한 미디어 아이템들의 표현이기 때문에, 클러스터에 대한 평균 유사성 또는 관련성은 865에서 계산된다. 이는 클러스터에 표현된 미디어 아이템들에 대한 모든 유사성 벡터들의 평균을 얻는 단계를 포함하는 다수의 상 이한 방법들로 수행될 수 있다. 평균 벡터는 클러스터에 대한 미디어 아이템의 평균 관련성을 나타낼 것이다. 택일적 방법은, 선택된 미디어 아이템에 대한 다른 미디어 아이템의 유사성 점수가 강하게 유사한 미디어 아이 템을 선택하고, 그 미디어 아이템을 클러스터에 대한 대표 미디어 아이템으로 사용하는 것이다. 다음으로 프로세스는 클러스터로부터 (임의의 사용자 개입 없이) 다수의 노래들을 선택할 수 있다. 이상적으로, 이들 아이템은 클러스터 평균과 거의 유사한 평균 유사성 점수를 갖고, 이에 따라 시드 노래는 클 러스터를 대표할 것이다. 일부 실시예에서는, 클러스터에 대해 가장 강하게 상관된 또는 가장 약하게 상관된 - 22 -
아이템을 선택하지 않는 것이 바람직하다. 하지만, 일부 실시예에서는, 가장 강하게 상관된 아이템이 선택될 수 있다. 또한 일부 실시예에서, 다수의 미디어 아이템의 선택은 클러스터 내로부터의 미디어 아이템의 임의 선택일 수 있다. 선택된 미디어 아이템(867)은 상술한 바와 같이 재생리스트 알고리즘에 입력된다(869). 선택된 아이템 각각은 재생리스트 알고리즘에 대한 시드 트랙을 구성한다. 재생리스트 모듈이 재생리스트 내의 모든 아이템들에 대한 유사한 아이템(808, 820)을 검색하여, 재생리스트에 포함하기 위한 후보로서 사용하기 때문에, 재생리스트는 결 국 클러스터 외부의 미디어 아이템을 포함할 것이다. 재생리스트가 생성되면, 프로그램 참가자가 재생을 중단 할 때까지 재생리스트는 재생된다(871). 도 19에 도시된 바와 같이, 재생리스트가 마지막에 도달하면, 프로세 스는 혼합물이 순환하도록 계속된다. 그 결과, 선택된 클러스터 내의 다른 아이템들과 일반적으로 유사한 미디 어 아이템이 연속해서 재생될 것이다. 동기화 장치를 위한 유사성 데이터의 사용 재생리스트가 생성될 수 있는 바와 같이, 유사성 데이터 또한 휴대용 음악 재생기와 같은 주변 장치를 사용자의 미디어 라이브러리로부터의 새로운 또는 상이한 음악으로 계속 갱신하는데 사용될 수 있다. 다수의 휴대용 미 디어 재생기는 용량이 제한되어 있고, 이에 따라 모든 사용자의 미디어 라이브러리가 IPOD 휴대용 미디어 재생 기와 같은 휴대용 장치에 저장될 수 없다. 이러한 경우에, 사용자는 종종 자신의 휴대용 장치에 저장될 자신의 미디어 아이템의 일부를 선택해야만 한다. 일부 사용자는 이 프로세스를 귀찮게 여길 수 있고, 사용자가 자신 의 휴대 장치에 현재 저장되어 있는 미디어 아이템에 질린다는 것을 알 수도 있다. 상기 문제를 해결하기 위한 일 해결법은 유사성 데이터를 사용해서 휴대용 장치가 새로운 미디어 아이템으로 계 속 갱신되게 하는 것이다. 이 실시예에서, 사용자는 자신의 휴대용 장치에 넣고 싶은 음악 형태를 나타내는 소 정 수의 시드 트랙을 선택한다. 재생리스트가 시드 트랙으로부터 생성될 수 있는 것과 마찬가지로, 휴대용 미 디어 재생기에 포함되도록 선택되는 사용자의 라이브러리로부터의 데이터 아이템들도 시드 트랙으로부터 생성될 수 있다. 유사성 데이터가 변하고, 새로운 노래가 사용자의 라이브러리에 부가되면, 유사성 데이터는 휴대용 장치를 새로운 트랙으로 계속 갱신시키는데 사용될 수 있다. 구매 추천 유사성 데이터는 또한 사용자의 구매를 위해 새로운 아이템을 추천하는데 사용될 수 있다. 마스터 유사성 표에 있지만 사용자의 라이브러리에는 있지 않은 아이템은 시스템의 구매를 위해 추천될 수 있다. 일 실시예에서, 온라인 판매점은 사용자의 라이브러리 또는 시드 트랙의 선택에 기초해서 구매 추천을 만들 수 있다. 온라인 판매점은 또한 시드 트랙으로서의 최신 구매를 사용해서 구매를 위한 아이템을 추천할 수 있다. 다른 실시예에 서, 재생리스트 모듈은, 아이템이 사용자의 라이브러리의 일부라면 사용자에게 그 노래가 재생리스트의 어디에 포함되어 있는지를 알림으로써 구매를 위한 노래를 추천할 수 있다. 구매 추천은 서버로부터 휴대용 미디어 재 생기의 클라이언트에게 시스템의 어떤 레벨에서도 일어날 수 있다. 마찬가지로, 프로그램 참가자가 갖지 않은 서버 클러스터의 아이템은 프로그램 참가자에게 구매를 위해 제안될 수 있다. 일부 실시예에서, 추천될 아이템은 그와 관련된 유사성 데이터를 아직 갖지 않는 새로운 아이템일 수 있다. 이 러한 시나리오에서, 유사성 점수는 온라인 판매점의 관리자가 제공할 수 있기 때문에 새로운 아이템이 사용자의 구매를 위해 추천될 것이다. 제공된 유사성 점수는, 동시 발생 또는 다른 실시예에 기초한 유사성 데이터가 이 용가능할 때까지 유지될 수 있다. 마찬가지로, 영화 대여 또는 구매도 추천될 수 있다. 대부분의 실시예가 노래에 관련해서 기술되었지만, 미디 어 아이템은 비디오 또는 영화를 포함하는 임의의 파일일 수 있다. 이 실시예에서, 사용자는 시드 아이템의 선 택에 기초해서 유사한 영화를 요청할 수 있다. 택일적으로, 시스템은 이전 대여에 기초해서 영화를 추천할 수 있다. 유사성 데이터가 새로운 영화를 사용자의 이후 시청을 위해 휴대용 미디어 재생기에 또는 클라이언트에 자동적으로 다운로딩하는데 사용될 수 있는 것도 고려된다. 이 실시예는 가입된 서비스의 일부일 수 있거나, 또는 사용자가 영화를 보지 않도록 선택하여 대여료를 발생시키지 않을 수 있다. 도 20은 유사성 데이터가 구매용 미디어 아이템을 추천하는데 사용될 수 있는 일 방법 실시예를 도시한다. 단 계 1002에서, 시드 트랙이 선택된다. 구매 추천은, 재생리스트가 시드 트랙에 기초해서 생성되는 것과 마찬가 지로, 시드 트랙에 기초한다. 하지만, 적어도 하나의 실시예에서, 구매 추천은 사용자의 전체 라이브러리와 가 - 23 -
장 유사한 콘텐츠에 기초할 수 있다. 시드 트랙이 선택되면, 도시된 방법은 다음으로 단계 1004에서 개별 유사성 표로부터 시드 트랙을 위한 유사성 데이터를 검색한다. 이 실시예에서, 개별 유사성 표는, 사용자의 라이브러리에 있지는 않지만 사용자의 미디어 라이브러리에 있는 아이템들에 대한 유사성 데이터와 관련된 미디어 아이템들도 포함할 수 있다는 것을 이해할 것이다. 다른 실시예에서, 구매 추천은 국부적으로 저장된 유사성 표보다 서버로부터 직접 얻을 수 있다. 마 스터 유사성 표로부터의 유사성 리스트는 유사성 데이터를 제공할 수 있고, 클라이언트는 사용자의 라이브러리 로부터 식별된 트랙을 뺄 수 있다. 이 실시예는, 구매 추천이 포함될 필요가 없고, 모든 사용자가 추천을 위한 마스터 표를 공유하기 때문에, 가장 최소의 가능한 개별 유사성 표를 생성한다는 이점을 갖는다. 이미 사용자의 라이브러리에 있는 아이템이 구매를 위해 추천되는 것을 방지하기 위해서, 단계 1006은 단계 1004에서 검색된 유사성 데이터로부터 이미 사용자의 미디어 라이브러리에 있는 아이템을 필터링한다. 일부 경 우에, 미디어 아이템은 사용자가 이미 구입하였지만, 이들 아이템은 사용자의 미디어 라이브러리에 존재하지 않 는다. 이는, 사용자가 그 노래를 좋아하지 않아서 이를 삭제하였거나, 사용자가 다른 라이브러리에 그 미디어 아이템을 저장하였거나, 사용자가 그 미디어 아이템을 구매하려고 하지만 아직 다운로딩하지 않은 것과 같은 다 양한 원인에 따를 수 있다. 적어도 이들 시나리오에서는, 미디어 아이템이 단계 1008에서 너무 많이 필터링되 었기 때문에, 이들 미디어 아이템을 구매를 위해 추천하는 것이 바람직하지 않을 수 있다. 단계 1010은 구매를 위해 추천된 아이템을 디스플레이한다. 물론, 이 방법은 사용자가 현재 선택한 매 노래마다 반복될 수 있다. 일부 실시예에서, 사용자는 구매 추천을 긍정적으로 받아들일 필요는 없다. 이러한 실시예에서, 구매 추천은 미디어 아이템이 재생을 위해 선택될 때마 다 미디어 조직자 또는 미디어 판매점 내에 디스플레이될 수 있다. 미디어 아이템이 재생되면, 그래픽 사용자 인터페이스는 구매를 위해 다른 추천된 미디어 아이템 또는 앨범과 같은 미디어 아이템의 그룹을 디스플레이할 수 있다. 양호한 실시예에서, 미디어 아이템은 입력 장치로 추천 자체를 선택함으로써 바로 구매될 수 있거나, 또는 적어도 추천은 온라인 판매점에 하이퍼링크되어 미디어 아이템이 그로부터 구매될 수 있다. 다른 실시예에서, 선택이 사용가능하지 않은 경우에 구매 추천은 이 방법을 사용해서 보여질 수 있다. 예를 들 어, 청취자들이 구입한 지정된 아티스트의 인기 노래들을 디스플레이하는 View An Artist 페이지에서, 시스템은 필터링된 추천을 디스플레이하여 이미 사용자의 라이브러리에 있는 아이템의 추천을 제거할 수 있다. 서버 > 클라이언트 > IPOD 특별히 양호한 일 실시예에서, 일 위치에서 유용한 방법들이 시스템의 각 위치에서 동일하게 적용될 수 있다. 도 21은 이 개념을 도시한다. 온라인 음악 판매점(902)은 유사성 표(908) 및 재생리스트 모듈(914)을 포함하는 것으로 도시된다. 유사성 표(908)는 서버의 미디어 목록 내의 각 아이템에 대한 모든 관계를 포함한다. 임의 의 다른 클라이언트 또는 시스템의 휴대용 미디어 재생기에서와 마찬가지로, 재생리스트 모듈(914)은 유사성 표 의 데이터에 기초해서 동작한다. 마찬가지로, 클라이언트(904)는 서버가 포함하는 것보다 더 적은 미디어 목록 을 포함하는 것으로 도시되고, 클라이언트의 미디어 목록 내의 각 아이템에 대한 유사성 데이터는 그 유사성 표 (910)에 저장된다. 재생리스트 모듈(916)은, 휴대용 미디어 재생기(906) 또는 음악 판매점(902)에서와 마찬가 지로, 로컬 유사성 표(910)에 기초해서 동작한다. 마지막으로, 휴대용 미디어 재생기(906)는 클라이언트(904) 보다 더 적은 미디어 목록을 갖는 것으로 도시된다. 유사성 표(912)는 휴대용 미디어 재생기(906)의 미디어 목 록 내의 아이템에 관한 정보를 저장하고, 재생리스트 모듈(918)은 그 데이터에 기초해서 동작한다. 도 21은, 클라이언트가 휴대용 미디어 재생기의 그룹에 대해 서버와 같이 동작할 수 있고, 더 큰 클라이언트는 더 작은 클라이언트에 대해 서버로서 동작할 수 있다는 개념을 도시하고, 이들은 모두 본 명세서에서 고려된다. 대부분의 실시예에서, 서버는 마스터 구매 행렬 및 마스터 유사성 표를 유지하는 위치에만 있을 수 있지만, 로 컬 유사성 표의 생성은 서버로부터 얻어진 데이터에 기초해서 임의의 장치에서 발생할 수 있다. 서버에 의해 수행될 수 있는 또 다른 기능은 갱신이다. 서버는 대부분의 실시예들에서 유사성 데이터 갱신의 소스일뿐만 아 니라, 서버는 시스템의 소프트웨어 구성 요소 또는 재생리스트 모듈도 갱신할 수 있다. 본 명세서에서 기술한 모든 프로세스가 실시간으로 발생해야만 하는 것은 아니라는 것을 이해할 것이다. 다수 의 경우에, 프로세싱 자원을 절약하고 소정의 업무를 오프라인으로 수행하는 것이 바람직할 것이다. 예를 들어, 협업 필터 엔진은 마스터 유사성 데이터 표를 생성하기 위해 계획된 시간에만 동작할 것이다. 또한, 오 프라인 프로세싱에 대한 필요는 기술 발전에 따라 줄어들 것이라고 생각된다. 이러한 경우에, 현재 오프라인으 로 수행되는 것이 바람직한 프로세스들은 실시간으로 수행될 수 있다. - 24 -