1. CÁCH TÍNH PAGERANK
PageRank là thuật toán cổ xưa và quan trọng nhất của Google.
PageRank được viết ra bởi chính Larry Page và Sergey Brin, cha đẻ của Google.
Nhờ sự ưu việt của PageRank, Google đã vượt mặt những đối thủ sừng sỏ như Yahoo và Bing, để trở thành search engine tốt nhất thế giới tính tới thời điểm hiện nay.
Sau này, Google đưa thêm yếu tố nội dung (Content) và trí tuệ nhân tạo (RankBrain), cùng với PageRank, để biến chúng trở thành bộ ba thuật toán xếp hạng lõi của Google.
Vậy trong ba yếu tố trên, yếu tố nào quan trọng nhất?
………………………
Qua bài viết này, Quang sẽ giúp bạn biết được cách tính PageRank bằng tay, và tính bằng Excel.
Nhờ vào hiểu được PageRank, bạn sẽ trả lời được những câu hỏi sau:
- SILO là cấu trúc tốt. Nhưng nếu không thích SILO, bạn chọn cấu trúc khác được không?
- Tại sao anh em lại đi spam link, đi tìm backlink chất lượng, và luôn hạn chế link out ở các trang quan trọng?
- Nếu bạn bắn backlink về trang chủ / thư mục , thì trang chủ / thư mục đó sẽ trở thành trang mạnh nhất chứ?
- Nếu muốn tối ưu trang chủ / thư mục / bài viết nào đó, thì bạn sẽ tạo liên kết nội bộ như thế nào?
- Tại sao trên thanh Menu Header / Sitebar / Footer, lại hay là thư mục / bài viết chứa từ khóa chính xác?
- Trước giờ các mô hình liên kết đều được tạo ra dựa trên sự suy luận định tính. Vậy có tính toán ra được thành số, để so sánh các mô hình liên kết với nhau được không?
Xin mời bạn đọc bài viết….
2. TÍNH PAGERANK TAY
Công thức PageRank, nếu viết đúng chuẩn, có dạng như sau:
Tuy nhiên, công thức này nhìn hơi khó hiểu.
Do đó, Quang sẽ viết lại dưới định dạng khác dễ hiểu hơn, kiểu như thời học Toán cấp 3, thì PageRank tính như sau:
PR(A) = (1-d) / N + d*PR(B)/C(B) + d*PR(C) / C(C) + d*PR(D) /C(D)+…
Trong đó:
- d: hằng số Google quy định. Thông thường, d=0.85
- PR(A), PR(B), PR(C), PR(D): PageRank lần lượt của A, B, C, D
- C(A), C(B), C(C), C(D): số link out lần lượt của A, B, C, D
Ví dụ như hình vẽ:
Mô hình ban đầu
Khi tính PageRank bằng tay, bạn cần nhập giá trị khởi tạo, rồi tính lần lượt theo vòng lặp.
Bước 1: Khởi tạo
Ban đầu, bạn cho PageRank của hệ thống bằng bao nhiêu cũng được.
Vì qua quá trình lặp, kết quả sẽ tiến dần tới giá trị chính xác, và không phụ thuộc vào giá trị khởi tạo ban đầu.
Để cho dễ tính, Quang cho PageRank ban đầu của chúng bằng nhau, và đều bằng 1, tức là:
PR(A) = PR(B) = PR(C) = PR(D)=1
Giá trị PageRank sau bước khởi tạo
Bước 2: Vòng lặp đầu tiên
Quay lại với công thức tính PageRank:
PR(A) = (1-d)/N + d*PR(B)/C(B) + d*PR(C) / C(C) + d*PR(D) /C(D)
Trong đó, các giá trị vòng lặp 1 là:
- d = 0.85
- N = 4, vì hệ thống có 4 Page (A, B, C, D)
- PR(A) = PR(B) = PR(C) = PR(D) = 1 (lấy từ bước khởi tạo đem xuống)
- Page A có 2 link out (sang Page B và Page C), do đó C(A) = 2
- Page B có 2 link out (sang Page A và Page C), do đó C(B) = 2
- Page C có 1 link out (sang Page D), do đó C(C) = 1
- Page D không có link out, do đó C(D) = 0
Khi đó, ta sẽ có:
- PR(A). Page A chỉ được Page B trỏ tới. Khi đó:
- PR(A) = (1 – d) / 4 + d*PR(B)/C(B) = (1 – 0.85) / 4 + 0.85 * 1 / 2 = 0.4625
- PR(B). Page B chỉ được Page A trỏ tới. Khi đó:
- PR(B) = (1 – d) / 4+ d*PR(A)/C(A) = (1 – 0.85) / 4 + 0.85 * 1 / 2 = 0.4625
- PR(C). Page C được cả Page A và Page B trỏ tới. Khi đó:
- PR (C) = (1 – d) /4 + d*PR(A)/C(A) + d*PR(B)/C(B) = (1 – 0.85) / 4 + 0.85 * 1 / 2 + 0.85 * 1 / 2= 0.8875
- PR(D). Page D chỉ được Page C trỏ tới. Khi đó:
- PR(B) = (1 – d) /4 + d*PR(C)/C(C) = (1 -0.85) / 4 + 0.85 * 1 / 1 = 0.8875
Như vậy, sau vòng lặp đầu tiên, giá trị PageRank của các trang như sau:
- PR (A) = 0.4625
- PR (B) = 0.4625
- PR (C) = 0.8875
- PR (D) = 0.8875
Bạn cứ tiếp tục tính như vậy.
Sau khoảng 20 – 40 vòng lặp, bạn sẽ có kết quả tương đối chính xác.
Dưới đây đây là kết quả sau 20 vòng lặp.
Kết quả PageRank sau 20 vòng lặp
Bạn nào trâu bò thì tính bằng tay cũng được.
Tuy nhiên, sẽ không ai vĩ đại thế.
Khi khối lượng tính toán quá lớn, bạn cần viết chương trình để tính tự động.
Bạn viết một lần thôi.
Sau đó muốn tính cái gì, bạn chỉ cần nhập số liệu đầu vào là chương trình sẽ chạy ra kết quả.
Nếu biết lập trình, bạn có thể viết mã C / C++ / Java để tính.
Nếu không, bạn có thể dùng Excel để tính.
Để đơn giản, Quang sẽ dùng Excel, vì nó phổ thông hơn.
3. TÍNH PAGERANK BẰNG EXCEL
PageRank được tính dựa trên các ma trận.
Để tính được kết quả cuối cùng, bạn cần tạo 3 ma trận, đó là:
- Ma trận cạnh
- Ma trận chuẩn hóa
- Ma trận Google
Kết quả cuối cùng, bạn sẽ có một file Excel như sau:
File Excel cuối cùng sẽ như thế này
Bước 1: Tạo ma trận cạnh
Ma trận cạnh (hyperlink matrix) là ma trận thể hiện liên kết nội bộ giữa các Page.
Bạn nhìn vào mô hình bên dưới.
Mô hình ban đầu
Sơ đồ có 4 Page. Như vậy, bạn sẽ có một ma trận vuông 4 cạnh như sau:
Ma trận vuông 4 cạnh
Giá trị các ô trong ma trận là 0 hoặc 1, tùy vào có liên kết nội bộ hay không.
Nếu Page A có liên kết trỏ tới Page B, thì giá trị ô đó là 1, nếu không có liên kết thì giá trị bằng 0.
Ví dụ như giá trị hàng ngang của Page A sẽ như sau:
Các giá trị 0, 1 của ma trận cạnh
Vì Page A, có liên kết trỏ tới Page B và Page C.
Do đó, giá trị các ô tương ứng tại cột B và C sẽ là 1, còn cột A và D sẽ là 0.
Bạn làm tương tự cho hàng ngang của các Page còn lại. Kết quả sẽ được như hình trên.
Cột C(X) để tính số link out tương ứng của mỗi Page. Chúng bằng tổng giá trị các ô hàng ngang.
Bạn dùng hàm SUM để cộng chúng lại nhé.
Bước 2: Tạo ma trận chuẩn hóa
Ma trận chuẩn hóa cũng là một ma trận vuông 4 cạnh.
Tên tiếng Anh của nó là stochastic matrix, nhưng Quang không biết dịch sang tiếng Việt nó nghĩa là gì, nên gọi lụi là ma trận chuẩn hóa.
Giá trị của từng ô, sẽ bằng chỉ số của ma trận cạnh (tính ở bước 1) chia cho cột C(X).
Cách tính giá trị các ô trong ma trận chuẩn hóa
Ví dụ như hàng ngang Page A.
Giá trị các ô tương ứng của cột Page A, B, C , D sẽ là:
- 0 : 2 = 0
- 1 : 2 = 0.5
- 1 : 2 = 0.5
- 0 : 2 = 0
Riêng hàng ngang Page D, vì C (D) = 0, nên phép chia vô nghiệm.
Khi đó, giá trị các ô của sẽ bằng 1: số cạnh ma trận.
Vì ma trận có 4 cạnh, nên giá trị tương ứng sẽ bằng 1 : 4 = 0.25.
Bước 3: Tạo tham số d
Tham số d thường là hằng số. Thông thường, Google lấy chỉ số này bằng 0.85.
Tham số d của Google, d = 0.85
Tại sao lại là 0.85 chứ không phải số khác?
Vì Larry Page và Sergey Brin đã tính, và được như thế.
Còn tính thế nào thì bạn hỏi mấy ổng nha, Quang tất nhiên là không biết rồi.
Hi mấy cu…
Bước 4: Ma trận Google
Ở bước này, công thức tính PageRank sẽ được nhồi vào từng ô.
Quay lại công thức PageRank:
PR(A) = (1-d) + d*PR(B)/C(B) + d*PR(C) / C(C) + d*PR(D) /C(D)
Giá trị của mỗi ô, khi đó sẽ bằng (1 – d) / số cạnh ma trận + d * giá trị của ô tương ứng trong ma trận chuẩn hóa.
Trong Excel, giá trị tại ô D17 sẽ là:
D17=(1-$C$14)/$F$14+$C$14*D9
Trong đó:
- ô C14 là tham số d
- F14 là số cạnh ma trận (bằng 4)
- D9 là giá trị lấy từ ma trận chuẩn hóa của Page A
Nhập ma trận Google
Bước 5: Tính PageRank
Vì PageRank là phép tính lặp (iterations method) nên lặp càng nhiều, kết quả càng chính xác.
Theo kinh nghiệm của Quang, bạn có thể lặp 20 vòng là có kết quả tương đối chính xác.
Vòng lặp 0:
Đây chính là giá trị PageRank khởi tạo. Bạn nhập cho chúng đều bằng 1 nhé (như bước tính Excel bằng tay).
Nhập giá trị PageRank khởi tạo. PR(A)=PR(B)=PR(C)=PR(D) = 1
Vòng lặp 1:
Bạn cần nhân ma trận vòng lặp với ma trận Google lại nhau.
Giá trị PageRank của Page A, vòng lặp số 1 (ô số K4) sẽ như sau:
K4=MMULT(K3:N3,$D$17:$G$20)
Nhân hai ma trận với nhau. Sẽ có tới 90% các bạn sẽ phải xem video để biết cách nhân ma trận trong Excel cho đúng
Để biết cách nhân hai ma trận với nhau trong Excel, bạn xem qua video này nhé.
Bạn nên xem qua, vì thao tác nó hơi lạ. Bạn không tưởng tượng nổi đâu.
Sau đó, bạn kéo bảng Excel xuống tới vòng lặp 20, bạn sẽ có được kết quả như hình vẽ.
Kết quả PageRank ở vòng lặp số 20
Và đây là kết quả tính PageRank, sau khi loop 20 vòng:
Giá trị PageRank sau 20 vòng lặp
Như vậy, Page D sẽ có PageRank cao nhất, mặc dù Page C có nhiều liên kết trỏ tới hơn.
Lí do là vì Page D, không có link out, sức mạnh được hội tụ lại, nên PageRank của nó đạt giá trị cao nhất.
Bước 6: Testing
Sau khi tính xong, bạn cần testing để xem kết quả mình tính đúng hay sai.
Có 2 lỗi thường gặp:
- Lỗi số 1, do bạn nhập sai ma trận cạnh. Mọi bước còn lại đều do Excel tính, riêng bước nhập ma trận cạnh ban đầu là bạn cần nhập tay. Quy tắc rất đơn giản. Có liên kết thì nhập 1, không có thì nhập 0 bạn nhé. Bước này bạn tự nhập, chứ máy móc không làm giùm được.
- Lỗi số 2, do bạn xây dựng công thức bị sai. Nó có thể xảy ra nhiều nhất ở bước tạo ma trận chuẩn hóa và ma trận Google. Lí do vì bạn không quen thao tác trên Excel mà thôi.
Để kiểm soát được lỗi thường gặp số 2, bạn cần testing.
Vì ma trận chuẩn hóa và ma trận Google đều là một loại ma trận đặc biệt (Nó tên gì, Quang cũng chả nhớ nữa, trả thầy hết rồi).
Nó có tính chất là tổng các giá trị hàng ngang, LUÔN BẰNG 1.
Do đó, Quang tạo thêm một cột tên là Testing ở cuối mỗi ma trận trên.
Quang viết hàm SUM để cộng các giá trị hàng ngang lại.
Nếu tổng bằng 1 là đúng, khác 1 là sai.
Trong quá trình làm, Quang phải vẽ khá nhiều mô hình, tính đi tính lại, và tính sai là chuyện bình thường.
Rất may mắn là nhờ bước Testing này, mà Quang đã phát hiện được lỗi, và sửa được chúng.
Rất hữu ích.
Testing. Nếu giá trị ô Testing = 1 là đúng
File tính PageRank của ví dụ trên, bạn xem tại đây.
4. TÍNH PAGERANK CHO CÁC SƠ ĐỒ LIÊN KẾT
Dưới đây là một số mô hình liên kết thường gặp.
Màu xanh là Page có PageRank thấp nhất, màu đỏ là Page có PageRank cao nhất.
Nguyên tắc là bạn cứ vẽ mô hình liên kết mà bạn định xây dựng ra trước.
Sau đó, bạn dùng file Excel để tính PageRank cho toàn bộ hệ thống.
Bạn liên kết nội bộ sao cho, Page bạn muốn lên TOP, sẽ có PageRank cao nhất là được.
Quang có đính kèm file Excel tính PageRank cho mỗi mô hình.
Bạn chỉ cần vẽ lại sơ đồ, rồi nhập lại giá trị vào ma trận cạnh (nhập 0 hoặc 1).
File Excel sẽ tự động xuất ra kết quả chính xác cho bạn.
Mô hình 1: Tối ưu bài viết
Mô hình 1
Mô hình này, thư mục cha sẽ trỏ liên kết tới toàn bộ các bài viết con nằm trong nó.
Khi đó, các bài viết, sẽ là những trang mạnh nhất.
Vì chúng nằm dưới tầng dưới cùng, nên nhận được sức mạnh nhiều tầng trỏ về. Hơn nữa, chúng không có link out.
Mô hình 2: SILO 1
SILO 1
Mô hình này, các bài viết chỉ trỏ về nhau trong cùng một thư mục.
Bài viết cuối cùng trong thư mục này, sẽ trỏ liên kết nội bộ về bài viết trong thư mục khác.
Các trang thư mục sẽ mạnh nhất, vì nó nhận được nhiều liên kết nhất.
Mô hình 3: SILO 2
SILO 2.1
Mô hình này có giá trị thực tế hơn SILO 1.
Trang thư mục cha sẽ trỏ liên kết nội bộ tới toàn bộ các bài viết con. Và các bài viết, chỉ trỏ liên kết nội bộ tới các bài viết khác trong cùng thư mục.
Các trang mạnh nhất là các bài viết. Và các trang thư mục cha sẽ trở nên vô cùng yếu (PageRank = 0.19).
Một biến thể của nó sẽ như kết này. Và kết quả cũng tương tự.
SILO 2.2. Giá trị cũng không thay đổi gì so với SILO 2.1
Mô hình 4: SEO thư mục
Dưới đây là hai biến thể của chúng:
SEO thư mục 1
SEO thư mục 2
Nguyên tắc rất đơn giản.
Bạn muốn SEO cái gì, thì cứ trỏ liên kết nội bộ nhiều nhất tới nó, và hạn chế link out.
Hai hình trên, bạn sẽ thấy Quang dẫn liên kết nội bộ từ các bài viết và trang chủ về trang thư mục.
Trang thư mục vẫn link out về các bài viết (để người dùng dễ tìm đọc bài viết), nhưng sẽ không có link out về trang chủ.
Trang thư mục trong mô hình số 2 sẽ mạnh hơn mô hình số 1, vì nó nhận được nhiều liên kết nội bộ hơn.
Mô hình 5: SEO trang chủ
SEO trang chủ
Nguyên tắc cũng như trên. Bạn cứ nhồi liên kết nội bộ về trang chủ là được.
Trang chủ trong mô hình trên, nhận được liên kết từ cả trang thư mục, và cả một số bài viết.
Trên đây là các mô hình thường gặp.
Số mô hình là rất nhiều, Quang không thể làm hết, và cũng không thể test hết được xem cách liên kết nào là tốt nhất cho bạn.
Bạn tự vận động nhé.
Bạn thích liên kết kiểu gì, cứ vẽ ra, rồi dùng Excel để tính thử coi có ổn không, rồi sửa lại.
Toàn bộ các file Excel tính toán, bạn xem tại đây.
5. PAGERANK KHI CÓ BACKLINK
PageRank còn được dùng để tính toán khi có backlink bắn về.
Nếu bạn muốn SEO trang chủ, thì bạn chỉ cần bắn link về trang chủ.
Nếu bạn muốn SEO thư mục, bạn chỉ cần bắn link về thư mục.
Liệu điều đó có đúng không?
Quang cũng thắc mắc điều đó, và làm thử một bộ test.
Quang bắn một backlink A vào trang chủ của mô hình.
Đây là một backlink rất mạnh.
PageRank(A) = 20, còn cao hơn cả tổng PageRank của toàn bộ hệ thống hiện tại (PR = 13).
Và đây là kết quả:
Mô hình 1
SILO 1
SILO 2
SEO thư mục
SEO trang chủ
File Excel tính toán tại đây.
Như vậy, trong cả 5 trường hợp bắn backlink trực tiếp về trang chủ, chỉ có 2 trường hợp sẽ làm trang chủ trở thành trang có PageRank cao nhất.
Trong 2 trường hợp đó, có một cấu trúc (mô hình SEO trang chủ) đã được liên kết nội bộ để tối ưu trang chủ từ trước đó.
Nghĩa là, không phải bạn backlink về trang nào, thì trang đó sẽ có PageRank cao nhất.
Mà chính xác hơn, bạn cần tối ưu liên kết nội bộ TRƯỚC KHI bắn backlink về.
Nếu liên kết không tốt, bạn bắn backlink về trang A, sức mạnh sẽ được truyền qua trang B do tác dụng của liên kết nội bộ.
Thế là, bạn lên nhầm TOP.
6. TRÊN THỰC TẾ
Trên thực tế, việc điều phối liên kết nội bộ phức tạp hơn, vì còn yếu tố trải nghiệm người dùng, anchor text, và cả cấu trúc trang web. Việc lên mô hình dự đoán, đo lường để tối ưu, cũng khó hơn nhiều.
Tuy nhiên, nếu là người mới bắt đầu, Quang có một kinh nghiệm nhỏ có thể giúp bạn.
Đó là khi bạn muốn SEO cho bài viết / sản phẩm / danh mục / từ khóa nào, bạn hãy đưa chúng lên thanh Menu Header / Footer / Sitebar.
Những trang web bình thường không bao giờ đưa bài viết “ Nâng mũi S Line giá bao nhiêu” lên thanh menu. Trừ khi, họ đang SEO chính xác từ khóa đó
Vì đây là vị trí nhận được liên kết nội bộ nhiều nhất, một cách tự động.
Nghĩa là, bạn không cần phải chèn thêm liên kết nội bộ trong những bài viết khác để trỏ về nó nữa.
Bạn xem source code, là sẽ hiểu được điều này. Nếu dùng Chrome, bạn nhấn Ctrl + U là sẽ thấy được source.
Chúc bạn thành công!
Tham khảo:
- Hướng dẫn Trình khởi động Tối ưu hóa Công cụ Tìm kiếm của Google, Google Inc (nên đọc). Xem tại đây.
- The Anatomy of a Large-Scale Hypertextual Web Search Engine của Larry Page và Sergey Brin, đồng sáng lập Google. Xem tại đây.
- Search Quality Evaluator Guidelines, Google Inc. Xem tại đây.
- History of Google Algorithm Updates của Search Engine Journal. Xem tại đây.
- Relevance vs. authority: Which link has more value? của Andrew Dennis. Xem tại đây.
- Combating Web Spam with TrustRank của Zoltan Gyongyi, Hector Garcia-Molina và Jan Pedersenm, Stanford University and Yahoo! Inc. Xem tại đây.
- Topic-Sensitive PageRank: A Context-Sensitive Ranking Algorithm for Web Search của Taher H. Haveliwala, Stanford University. Xem tại đây.