2012-02-24 1 views
2

개체가 많은 기존 데이터베이스가 있습니다 (책을 예제로 사용합니다). 사용자가 웹 사이트에 로그인 할 때 책을 권하고 싶습니다.기계를 적용하여 기존 데이터베이스의 항목을 추천하는 방법

내가 따라하는 다른 사람을 기반으로 한 서적을 추천 할 수는 있지만 더 정확한 정보를 원합니다. 그래서 각 사용자에 대한 일련의 교육 데이터를 수집했습니다.

데이터는 각 사용자에게 책을 반복적으로 제시하고 모양을 좋아하는지 묻습니다.

교육 데이터는 mongodb에 저장되며 책은 postgres 데이터베이스에 저장됩니다.

가 나는 주어진 사용자가 자신의 훈련 데이터를 기반으로 주어진 책을 좋아합니다 거세한 숫양 여부를 예측하는 코드를 작성했지만, 내 질문은 이것이다 :에

나는 데이터를 적용하는 방법/확률은 쿼리 책 포스트 그레스 데이터베이스?

사용자가 모든 사용자와 모든 책에 대해 책을 좋아할 확률을 절약하면 비효율적입니다.

모든 책을로드하는 것은 데이터베이스를 형성하고 각 책을로드하는 것이 비효율적 일 확률을 계산합니다.

+0

"집단 집단 지성 프로그래밍"에서 설명한대로 알고리즘이 순진한 베이지안 분류자를 기반으로합니다. 그 책에서 가장 관련성이 높은 페이지를 지정할 수 있습니까? – justis

+0

6 장 - 문서 필터링. 특히 '블로그 피드 필터링'섹션 –

답변

0

나는 거세한 숫양을 예측하는 코드를 작성했습니다 또는 특정 사용자가 자신의 훈련 데이터

에 따라 주어진 책 같은 것하지 무엇과 같은 코드 모양을합니까? 이상적으로는 장르, 길이 등과 같은 책의 속성을 기반으로하는 의사 결정 트리의 일종이며 기술적으로는 classifier이라고합니다. 간단한 예 : 확률 저장

if (user.genres.contains(book.genre)) { 
    if (user.maxLength < book.length) { 
     print "10% off, today only!" 
    } 
} 
print "how about some garden tools?" 

은 사용자가 모든 사용자에 대해 책을 좋아하는 모든 책은 비효율적이다.

True. 위의 의사 결정 트리가 데이터베이스 쿼리로 공식화 할 수 있다는 점에 유의하라 : 당신에게 훈련 데이터와 관련하여, 사용자가 좋아하고 가장 높은 확률을 가지고있는 모든 책을 줄 것이다

SELECT * FROM Books WHERE Genre IN [user.genres] AND Length < [user.maxLength] 

합니다.

+0

답변 해 주셔서 감사합니다. 코드는 순진한 베이지안 분류자를 사용하고 있습니다.이 책의 많은 부분은 "Programming Collective Intelligence"책에서 가져온 것입니다. 교육 데이터는 장르보다 복잡합니다. 책 '기능'과 사용자가 특정 기능을 좋아하거나 싫어하는 횟수로 구성됩니다. 데이터베이스의 책 행에는 교육 데이터에 대한 정보가 없습니다. 분류기는 사용자 훈련 데이터 및 주어진 책에 기초하여 확률을 계산하며, 데이터는 '저장되지'않습니다. –

+0

'Books' 테이블에는 훈련에 사용 된 기능에 해당하는 열이 있다고 가정합니다 :'[user.genres]'와'[user.maxLength]'는 가능한 트레이닝 기능의 예입니다. 데이터베이스는 그들에 대해 '알지 못한다'. 쿼리를 작성할 때 _ 할 수 있습니다. 귀하의 메모에 대한 제안을 게시하겠습니다. – paislee

+0

대부분의 지형지 물은 표의 열이 아닙니다. 기능은 제목과 설명, 카테고리, 저자 및 기타 비트와 조각에서 가져온 단어를 기반으로합니다. 내가 사용할 수있는 유일한 실제 열은 카테고리입니다. –