การเปลี่ยนแปลงของ PageRank
สมการ PageRank \(\vec{PR}=\alpha \cdot A \cdot \vec{PR} + (1-\alpha)\cdot \vec{e}\) สามารถแก้หาค่า \(\vec{PR}\) ได้แบบวนซ้ำ (iteratively) ในแต่ละรอบ ค่า \(\vec{PR}\) ปัจจุบันจะถูกนำไปคำนวณค่าใหม่ที่ใกล้เคียงค่าจริงมากขึ้น ซึ่งหมายความว่าผลต่างระหว่าง \(\vec{PR}\) ของสองรอบที่ต่อเนื่องกันจะลดลงเรื่อย ๆ จนกว่า \(\vec{PR}\) จะ converge เข้าสู่ค่าจริงและผลต่างจะเข้าใกล้ศูนย์ ในแบบฝึกหัดนี้ จะได้ศึกษาอัลกอริทึม PageRank และการ converge ของมัน
แบบฝึกหัดนี้เป็นส่วนหนึ่งของหลักสูตร
การวิเคราะห์เชิงพยากรณ์โดยใช้ข้อมูลเครือข่ายใน R
คำแนะนำการฝึกหัด
- คำนวณ PageRank หนึ่งรอบโดยใช้
page.rank()กับnetworkและระบุniter=1จากนั้นดึง vector attribute และกำหนดผลลัพธ์ให้กับiter1 - ทำซ้ำขั้นตอนเดิมโดยใช้
niter=2แล้วกำหนดผลลัพธ์ให้กับiter2 - คำนวณผลรวมของค่าความต่างสัมบูรณ์ระหว่างเวกเตอร์
iter1และiter2 - เราได้คำนวณ
iter9และiter10ในลักษณะเดียวกับiter1และiter2ผลต่างระหว่างรอบที่ 9 และ 10 นั้นน้อยกว่าผลต่างระหว่างรอบที่ 1 และ 2 หรือไม่
แบบฝึกหัดเชิงโต้ตอบแบบลงมือทำ
ลองทำแบบฝึกหัดนี้โดยเติมโค้ดตัวอย่างนี้ให้สมบูรณ์
# 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(___(___ - ___))