Thay đổi trong PageRank
Công thức PageRank \(\vec{PR}=\alpha \cdot A \cdot \vec{PR} + (1-\alpha)\cdot \vec{e}\) có thể được giải lặp cho \(\vec{PR}\). Ở mỗi vòng lặp, giá trị hiện tại của \(\vec{PR}\) được dùng để tính ra một giá trị mới gần hơn với giá trị thực. Điều này có nghĩa là độ chênh lệch giữa các \(\vec{PR}\) của hai vòng lặp liên tiếp sẽ nhỏ dần cho đến khi \(\vec{PR}\) hội tụ về giá trị thực và chênh lệch trở nên (gần như) bằng không. Trong bài tập này, bạn sẽ quan sát thuật toán PageRank và cách nó hội tụ.
Bài tập này là một phần của khóa học
Phân tích dự đoán với dữ liệu mạng trong R
Hướng dẫn bài tập
- Thực hiện một vòng lặp của thuật toán PageRank bằng
page.rank()vớinetworkvà chỉ địnhniter=1. Trích xuất thuộc tính vector và gán kết quả choiter1. - Lặp lại bước vừa rồi với
niter=2. Gán kết quả choiter2. - Tính tổng chênh lệch tuyệt đối giữa hai vector
iter1vàiter2. - Chúng tôi đã tính
iter9vàiter10theo cách tương tự nhưiter1vàiter2. Liệu chênh lệch giữa hai vòng lặp này có nhỏ hơn so với giữa vòng lặp 1 và 2 không?
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# Compute one iteration of PageRank
iter1 <- page.rank(___, algo = 'power', options = list(niter = ___))$vector
# Compute two iterations of PageRank
iter2 <- ___(___, algo = 'power', options = list(niter = ___))$vector
# Inspect the change between one and two iterations
sum(abs(___ - ___))
# Inspect the change between nine and ten iterations
sum(___(___ - ___))