2

실제 사용자 데이터가있는 영화 추천 시스템을 구현 중입니다. 협업 필터링 방법을 사용할 계획이었습니다. 그러나 이런 종류의 방법은 일반적으로 사용자가 등급이 매겨진 영화를 저장하는 거대한 매트릭스를 필요로합니다. 나는 1 만 개 이상의 영화와 10 만 명의 사용자를 갖고 있기 때문에. 이렇게 거대한 행렬을 만드는 것은 불가능합니다. 어떻게 모든 사람들이 이렇게 많은 양의 데이터로 협업 필터링을 구현하는지 궁금합니다. 감사!많은 양의 데이터가있는 추천 시스템

+0

거대한 * 스파 스 * 매트릭스의 문제점은 무엇입니까? 그게 괜찮을거야. –

+0

매트릭스가 너무 커서 내 MATLAB에서 만들 수 없습니다. 다른 언어를 사용하여 해결할 수 있습니까? –

답변

3

분산 컴퓨팅 프레임 워크를 사용하는 것이 좋습니다.하지만 한 대의 컴퓨터에서 쉽게 처리 할 수있는 규모라고 생각합니다.

Apache Mahout에는 Taste 협업 필터링 라이브러리가 포함되어 있습니다.이 라이브러리는 한 대의 컴퓨터에서 확장 가능하도록 설계되었습니다. 10M 데이터 포인트는 무엇입니까? - 건강한 힙 크기로 메모리에 적합해야합니다. GenericItemBasedRecommenderFileDataModel과 같은 것을보세요.

(두싯도 배포했다 구현 하둡 기반으로하지만, 나는 아직이 필요하다고 생각하지 않습니다.)

내가 그의 저자 해요,하지만 같은 대규모 추천인 상용화에 이동하기 때문에이 Myrrix. 또한 무료이며 독립형 단일 시스템 버전 인 open source도 포함되어 있습니다. 또한 한 시스템에서이 양의 데이터를 쉽게 처리 할 수 ​​있습니다. 예를 들어, 이것은 this example에서 사용 된 것보다 작은 데이터 세트입니다. Myrrix에는 분산 구현도 있습니다.

다른 GraphLab과 같이 개 이상의 구현이 배포되어 있습니다. MyMediaLite처럼 다른 비 분산 프레임 워크도 충분히 빠를 것입니다.

나는 이것들 중 하나를 사용하는 것이 좋을지 모르며, 실제로 "어떻게"되는지 궁금해하는 경우에는 소스 코드를 확인하고 데이터 표현을 살펴보십시오.

0

데이터를 저장하기 위해 매트릭스 폼을 사용하지 않았습니다. 대신 C++을 사용하고 필요한 변수 및 배열이 들어있는 User, Rating, Item과 같은 구조체를 만듭니다. 이것은 알고리즘의 복잡성을 증가시킬 수 있지만 메모리를 효율적으로 절약 할 수 있습니다.