2012-07-19 3 views
0

레일즈에서 돌아가고 MySQL에 저장된 데이터를 가지고있는 웹 애플리케이션을 지원하는 추천 엔진을 만들고 싶습니다. 사용자가 사물을 클릭하고 그 피드백에 따라 데이터베이스가 업데이트되는 라인을 따라 무언가 실시간으로 변하는 방식으로 처리됩니다. 규모의 순서 나는 모든 사용자에게 10 초의 상호 작용을 초당 1 초라고 생각하고 있습니다. 하루에 1M 데이터 포인트.webapp (레일스 + MySQL +?)에 대한 추천 엔진 구축하기

제 질문은 어떻게하면 신속하게 처리 할 수 ​​있도록 분석하고 구조화 할 수 있습니까? 이미 알고있는 것을 이용하면 Ruby와 R (RServe, RSRuby)을 사용하여 기존 데이터 세트에서 SVD/클러스터링/앙상블/모델을 실행하고 모든 샘플링을 통해 모델/수식을 업데이트 할 수 있습니다. 사물을하기에 정말로 까다로운 방법. 이 일을하는 더 좋은 방법은 무엇입니까? MySQL에서 수학을 직접 실행 하시겠습니까? 훌륭한 수학 함수를 가진 멋진 루비 라이브러리를 사용하고 있습니까? 기성품 추천 엔진 패키지를 사용하십니까?

는 (I 링크 제안 모든 "비슷한 질문에"보고에도 불구하고, 거기에 무엇에 대한 인식의 별개의 부족이 달콤한 아이러니 :(..)

PS : 내 배경 : 몇 년 번호 사람 R의,하지만 완전히 등 파이썬, 레일에 신참 프로그래머. 정적/오프라인 데이터에 대한,하지만 난 그 전면에 작업 할 수 있습니다.

답변

2

을 당신이 정말로 실시간가 필요하십니까?

내가 발견 "이들 중 대부분이 실시간 "사례는 일반적으로 실제 실시간을 필요로하지 않지만 백그라운드에서 수행 할 수 있습니다. 개미는 현재 선택한 항목 (다른 사람이이 항목으로 구입 한 관련 항목)에 대한 그의 과거 판매에 대한 고객의 권장 사항을 제공하기 위해 설정된 간격으로 해당 데이터를 간단히 사전 계산할 수 있습니다.

위에서 설명한 것과 같은 경우에는 무거운 짐을 들기 위해 Rake 작업을 사용하는 것이 좋습니다 (과거 판매에 대한 권장 사항은 세션 중에 실제로 바뀌는 것이 아니며 관련 항목에 대한 권장 사항 또한 상당히 정적 임) .

그래서 Cron 작업 동안 또는 결과 (사전 계산 된) 데이터를 활성 사용자에게 제공하는 동안 웹 응용 프로그램과 비동기적인 다른 반복 작업 중에 계산할 것입니다. 그런 식으로 웹 요청이 최대로 취해야하는 것보다 오래 실행될 수 있으므로 계산의 복잡성에 대한 유연성이 조금 더 높아집니다.

샘플 레이크 작업은 다음과 같을 것이다 :

task :calculate_recommendations => :environment do 
    // do your calculation 
    // you have full access to ActiveRecord here 
end 

합니다 (:environment 그렇지 않으면 당신을위한 데이터베이스 연결을로드 할 수 없습니다 레이크 포함해야합니다

을 어떻게해야합니까 계산이 다. 그렇다면 나는 보석을 Recommendify과 같이 추천하여 추천을 계산하는 데 사용하는 라이브러리를 확인하십시오. 아마도 도움이 될 것입니다.

RubyToolbox에는 Recommender-Engine category이 있으며 비슷한 보석들이 있으며 올바른 방향으로 포인터를 줄 수 있습니다.

+0

그래, 나는 다른 서버에서 너무 자주 cron 작업과 비교하여 실시간으로/트레이드 오프 (시간에 가중치가있는 샘플링 방법을 통해)를 생각 해왔다. 레일스에 대해 알아 내야합니다. recommender-engine stuff에 관해서는 ...나는 성능이 무시 무시할 때 R의 Ruby shell의 맛을 찾을 것이다. rec-engine 주옥은 나가하고 싶는 모든 것을 커버하지 않는 것처럼 보이지만, 나는 모든 것을 면밀히 관찰 할 필요가있다. – binarysolo

+0

답변을 수락했습니다. 내가 찾은 Ruby 추천 라이브러리는 (R의 유사한 오퍼링과 비교하여) 꽤 끔찍하다. 아마도 RRuby를 지금 사용하고 더 나은 것이 있는지 살펴볼 것입니다. – binarysolo

+0

죄송합니다. 더 이상 도움이 될 수 없습니다 .. – Tigraine