2015-01-29 1 views
3

겸손한 데이터 세트의 페이지 순위를 계산하기 위해 작은 코드 (순차적)를 쓰고 있습니다 (완전히 사소한 것은 아니지만).페이지 순위 수렴을 확인하는 방법?

너 한테은 다음과 같이 진행됩니다

while (not converged) { 
    // Do a bunch of things to calculate PR 
} 

나는 떨어져 '융합'기준에서 알고리즘에 분명입니다. 알고리즘이 수렴했는지 확인하는 가장 좋은 방법은 무엇입니까? 해야합니까 :

확인 모든 개별 노드의 PR 복사본을 반복으로 유지하고 다음 반복에서 모든 노드의 PR이 동일한 값으로되어 있는지 확인하십시오.

이것은 매우 비효율적 인 것 같습니다. 이것이 올바른 방법일까요?

+2

왜 비효율적입니까? 이것은 실제로 꼭지점 당 또 다른 '플로트 (float)'일뿐입니다. 이것은 그래프의 구조와 비교되는 것이 아닙니다. 계산을 위해서는 두 개의 'float'의 차이를 계산하면됩니다. 따라서 나머지 수학 연산과 비교할 필요는 없습니다. –

+0

반복에 대해 두 개의 개별 HashMap에서 각 노드를 반복합니다 (PR 비교)는 내가 최적화 할 수있는 것처럼 보였다. –

+1

페이지 순위를 계산하는 동안 차이를 계산할 수 있습니다 (이미 하나의 반복이 필요함) –

답변

4

각 노드에 대해이 오류가 그래프가 수렴 된 특정 임계 값 아래로 떨어지면 현재 반복과 마지막 반복 사이의 점수 차이를 가져옵니다.

TextRank의 용지가 매우 잘 설명 그래프의 각 노드에 할당 된 임의의 값에서 시작

, 연산을 반복 소정의 임계치 이하의 수렴이 달성 될 때까지.

그래프의 모든 정점에 대한 오류율이 주어진 임계 값 아래로 떨어지면 수렴됩니다. 버텍스의 오류율은 버텍스 S (Vi)의 "실제"점수와 반복 k, S^K (Vi)에서 계산 된 점수 사이의 차이로 정의됩니다. 실제 스코어가 선점되지 않기 때문에,이 에러율은 2 개의 연속적인 반복에서 계산 된 스코어들 사이의 차이로 근사화된다 : S^(k + 1) (Vi) + S^(k) (Vi).