2010-04-27 2 views
3

저는 학습 추천 엔진입니다. Google 뉴스가 공동 필터링을 기반으로 사용자가 관심을 가질만한 뉴스 항목에 대한 권장 사항을 Google 뉴스에서 어떻게 생성하는지 정의하는 paper을 살펴 보았습니다.Google 뉴스에서 추천을 생성하는 데 사용되는 알고리즘은 무엇입니까?

흥미로운 기술 중 하나는 민해싱입니다. 나는 그 일을 겪었지만, 내가 가지고있는 것은 모호한 생각이고 내가 틀렸다는 강한 확률이 있음을 확신합니다. 다음은 내가 그것을 밖으로 만들 수있는 것입니다 : -

  1. 모든 뉴스 항목의 집합을 수집합니다.
  2. 사용자에 대한 해시 함수를 정의하십시오. 이 해시 함수는 모두 뉴스 항목 목록에서이 사용자가 본 뉴스 항목 중 첫 번째 항목의 색인을 반환합니다.
  3. "n"개의 값을 수집하고이 값 목록을 가진 사용자를 나타냅니다.
  4. 이러한 목록 간의 유사도를 기반으로 사용자 간의 유사도를 공통 항목 수로 계산할 수 있습니다. 이렇게하면 많은 비교 횟수를 줄일 수 있습니다.
  5. 이러한 유사성 측정에 따라 사용자를 다른 클러스터로 그룹화합니다.

이것은 내가 생각하는 것입니다. 2 단계에서는 상수 해시 함수를 정의하는 대신 다른 요소의 인덱스를 반환하는 방식으로 해시 함수를 변경하는 것이 가능할 수 있습니다. 따라서 한 해시 함수는 사용자의 목록에서 첫 번째 요소의 인덱스를 반환하고 다른 해시 함수는 사용자의 목록에서 두 번째 요소의 인덱스를 반환 할 수 있습니다. 따라서 minwise independent permutations 조건을 만족하는 해시 함수의 특성은 가능한 접근 방식처럼 들립니다.

내가 옳다고 생각하는 사람은 누구나 확인할 수 있습니까? 또는 Google 뉴스 추천의 일부분이 다른 방식으로 작동합니까? 나는 권고안의 내부 구현에 익숙하지 않다. 어떤 도움이라도 대단히 감사합니다.

감사합니다.

답변

2

나는 가까이 있다고 생각합니다.

먼저 해시 함수는 모든 뉴스 항목을 무작위로 순차적으로 바꾸고 모든 주어진 사람은 첫 번째 항목을 봅니다. 모든 사람이 동일한 순열을 가졌으므로 두 사람이 같은 첫 번째 항목을 가질 수있는 적절한 기회가 있습니다.

그런 다음 두 번째 요소 (첫 번째 요소에 혼란스러운 종속성이 있음)를 선택하는 대신 새로운 해시 함수를 얻으려면 완전히 새로운 순열을 선택하고 첫 번째 요소를 다시 가져옵니다.

같은 해시 값 (2-4 순열의 동일한 첫 번째 요소)이 2 ~ 4 회 발생하는 사람은 클러스터에 모아집니다. 이 알고리즘은 10-20 회 반복되므로 각 사람이 10-20 개의 클러스터에 들어갑니다. 마지막으로 권장 사항은 10-20 개 클러스터에있는 다른 사람들의 수 (소수)를 기준으로합니다. 이 모든 작업은 해시를 통해 이루어지기 때문에 사람들은 클러스터의 버킷에 직접 넣어지기 때문에 많은 비교 작업이 필요하지 않습니다.

+0

답변 해 주셔서 감사합니다. 말된다. 알고리즘을 여러 번 반복하면 해시 값 목록을 비교하여 두 사용자의 유사도를 계산할 수 있습니다. 이렇게하면 두 사용자가 한 위치에서 몇 번 동의하는지를 측정 할 수 있습니다. 내가 가지고있는 한 가지 질문은 버킷이 어떻게 정의되어 있는가입니다. 특정 인물을 양동이에 넣으려면이 사람을 다른 사람과 연관시켜야합니다. 버킷에있는 다른 모든 사용자는 대부분 비슷하기 때문에 버킷의 * 사용자 *와 사용자를 비교하나요? 다시 한 번 감사드립니다. – Siddhant

+1

버킷은 "임의 순열로 처음 2-4 개 항목에 대해 동일한 해시 값을 가진 사용자 집합"으로 정의됩니다. 그래서 물통에 사람과 사람을 비교할 필요가 없습니다. 마찬가지로 해시 테이블과 마찬가지로 각 사용자는 곧바로 하나의 버킷으로 전송됩니다. 전체 문서를 읽지는 않았지만 권장 사항을 결정하는 데 공유 된 버킷의 모든 사용자를 사용한다고 가정합니다. 버킷의 전체 목표는 "모든 사용자"를 충분히 작게 만드는 것입니다. – mathmike

관련 문제