2011-11-21 2 views
4

Mahout을 협업 필터링 추천 엔진으로 평가하는 중입니다. 지금까지 그것은 좋아 보인다. 우리는 12M 다른 사용자로부터 약 20M 부울 추천을 받았습니다. Mahout's wiki과 약간의 스레드 Sean Owen에 따르면,이 경우에는 하나의 기계로 충분합니다. 따라서 데이터 모델로 MySql을 사용하고 Hadoop을 사용하는 오버 헤드를 건너 뛰기로 결정했습니다.Mahout을 사용한 지속적인 협업 필터링

처음부터 전체 데이터를 읽지 않고 권장 사항을 지속적으로 업데이트하는 가장 좋은 방법은 무엇입니까? 매일 수만 가지의 새로운 추천을 받고 있습니다. 실시간으로 처리 할 것으로 예상하지는 않지만 15 분마다 처리하도록하고 싶습니다.

MySQL 기반 및 Hadoop 기반 배포 방법에 대해 자세히 설명하십시오. 감사합니다.

답변

3

모든 데이터베이스는 실시간으로 쿼리하기에는 너무 느리기 때문에 어떤 접근 방식이라도 데이터 세트를 메모리에 캐싱해야합니다. 이는 내가 이미 ReloadFromJDBCDataModel으로하고 있다고 가정합니다. refresh()을 사용하여 원하는 간격으로 다시로드하십시오. 그것은 백그라운드에서 그렇게해야합니다. 새로운 모델을로드하는 데 이전 모델에서 제공하는 동안 많은 메모리가 필요하다는 것이 잡힌 것입니다. 한 번에 사용자를 다시로드하는 등 자신의 솔루션을 시작할 수도 있습니다.

Hadoop에는 실시간 업데이트가 없습니다. 일반적으로 최선의 방법은 Hadoop을 사용하여 결과의 ​​전체 및 적절한 일괄 처리 계산을 수행 한 다음 권장 사항을 보유하고 제공하는 앱의 새로운 데이터를 기반으로 실행 시간 (불완전하게)을 조정하는 것입니다.

+0

감사합니다. Sean. Hadoop이 전반적인 그림에 어떻게 어울리는 지 조금 혼란 스럽습니다. 내가 아는 한, 유사점을 사전 계산하여 응용 프로그램 자체가 선택된 추천자에 따라 일치를 수행하는 데 사용됩니다. 그게 사실인가요? –

+0

하둡은 반드시이 부분 일 필요는 없습니다. 나는 당신이 규모 문제로 강요받지 않으면 Hadoop을 사용하지 않을 것입니다. 예, 프로세스의 일부로이를 사용하여 유사성을 오프라인에서 계산할 수 있습니다. –

+0

Sean, "한 번에 사용자 새로 고침"이란 무엇을 의미합니까? ReloadFromJDBCDataModel을 사용하고 있지만 reload()를 호출하면 전체 데이터 세트가 다시로드됩니다. 권장 사항을 묻는 사용자 만 다시로드하면 이해할 수있을 것입니다. 어떻게 달성 할 수 있습니까? – arielcamus