Việc cải tiến thuật toán cây PLWAP cụ thể là mô hình hóa chuỗi phổ biến khai thác từ thuật toán cây PLWAP dưới dạng mô hình chuỗi Markov nén [13] để cho thời gian đề xuất nhanh hơn và độ chính xác cao hơn.
Sau khi khai thác cây PLWAP, ta được danh sách các chuỗi phổ biến. Từ đây, ta dựa vào các chuỗi này để xây dựng đồ thị liên kết cho các trang. Đồ thị liên kết này được sử dụng để xây dựng mô hình chuỗi Markov cho trang web. Phương pháp lập chỉ mục web được sử dụng để xây dựng chỉ số bởi theo các siêu liên kết liên tục từ trang web này tới trang web khác. Trọng số được chỉ định dựa trên sự giao nhau của người sử dụng web.
Chúng ta có một bộ đơn giản WLr = {(r,u)}, trong đó r và u là các URI của trang tham chiếu và trang yêu cầu tương ứng. Vì người dùng khác nhau có thể đã đi theo cùng liên kết trong chuyến thăm của họ, các giao nhau của những liên kết này được tổng hợp để có được một bộ WLs = {(r,u,w)}, trong đó w là số giao nhau từ r tới u. Mỗi phần tử (r,u,w) trong tập là một cặp liên kết.
Hai cặp liên kết li = (ri, ui, wi) và lj = (rj, uj, wj) được cho là kết nối khi và chỉ khi ri=rj , ri=uj, ui=rj, hoặc ui=uj. Một tập hợp liên kết đôi LSm = {(ri, ui, wi)} là kết nối
với một cặp liên kết trong tập hợp LSn = {(rj, uj, wj)} nếu và chỉ nếu với mọi liên kết đôi lj∈ LSn, có tồn tại một cặp liên kết li∈ LSm , do đó li và lj được kết nối.
Hình 3.2 - Xây dựng đồ thị liên kết cho các trang
Sau khi đã có đồ thị liên kết, ta tiếp tục xây dựng mô hình chuỗi Markov. Mỗi nút trong đồ thị liên kết có thể được xem như là một trạng thái trong một mô hình chuỗi Markov hữu hạn rời rạc, có thể được xác định bởi một bộ <S, Q, L>, trong đó S là không gian trạng thái có chứa tất cả các nút trong đồ thị liên kết, Q là ma trận truyền có xác suất chuyển đổi một bước giữa các nút, và L là phân bố xác suất ban đầu trên các trạng thái trong S. Chuyển hướng của người sử dụng trong các trang web có thể được xem như là một quá trình ngẫu nhiên {Xn}, trong đó có S là không gian trạng thái. Nếu xác suất có điều kiện truy cập vào trang j trong bước tiếp theo, Pi,j(m) là chỉ phụ thuộc vào các trang m mới truy cập của người sử dụng, {Xn} được gọi là một chuỗi Markov bậc m . Người dùng hiện đang ở trang i và đã viếng thăm các trang in-1,…,i0, Pi,j(m) chỉ là phụ thuộc vào các trang i, in-1,…,in-m-1 ,
Pi,j(m) = P(Xn+1 = j | Xn = i, Xn-1 = in-1 ,…, X0 = i0) = P(Xn+1 = j | Xn = i, Xn-1 = in-1 ,…, Xn-m+1 = in-m+1) 2 1 2 1 3 2 1 4 2 3 5 2 3 4 2 4 3 1 5 3 2 1 1 1 1
nơi mà xác suất có điều kiện Xn+1 cho các trạng thái của tất cả các sự kiện đã qua bằng xác suất có điều kiện của Xn+1 cho các trạng thái trong những sự kiện m đã qua. Khi m = 1, Xn+1 là chỉ phụ thuộc vào trạng thái hiện tại Xn. Pi,j= Pi,j(m) = P(Xn+1= j | Xn = i) là một chuỗi Markov bậc một, Pi,j là xác suất là một quá trình chuyển đổi được thực hiện từ trạng thái i tới j trong một bước.
Dựa vào đồ thị liên kết, ta tính toán xác suất truyền trong một bước từ trang i đến trang j, Pi,j có thể được xem như là phần của giao nhau từ i tới j trong tổng số các giao nhau từ i đến các trang khác.
Pi,j= P(Xn+1 = j | Xn = i , Xn-1 = in-1 ,…, X0 = i0) = P(Xn+1 = j | Xn = i) = 𝑤𝑖,𝑗
∑ 𝑤𝑘 𝑖,𝑘
Trong đó, wi,j là trọng số trong liên kết từ i tới j, wi,k là trọng số trong liên kết từ i tới k.
Hình 3.3 - Xác suất từ trang i đến trang j
Lúc này ma trận truyền được hình thành.
2 4 3 1 5 3 1 1 1 1 2->3 : 2/5= 0.4 2->1 : 3/5=0.6 1->3 : 1/2=0.5 1->4 : 1/2=0.5 3->5 : 1/2=0.5 3->4 : 1/2=0.5 2
Hình 3.4 - Ma trận truyền
Do dữ liệu đầu vào càng lớn thì ma trận truyền càng lớn, dẫn đến việc hao tốn bộ nhớ vì vậy để tránh được điều này, một thuật toán nén ma trận truyền (transition matrix compression) Spears được áp dụng. Thuật toán Spears [14] được sử dụng để nén ma trận Q ban đầu vào một ma trận Qc nhỏ hơn nhiều mà không có lỗi đáng kể. Để nén ma trận Q, ta dựa vào ma trận tương tự, ta tính Simi,j tức sự giống nhau trong quá trình chuyển đổi của hai trang i và j, là sản phẩm của liên kết trong tương tự và liên kết ngoài tương tự của chúng, nếu Simi,j càng thấy thì chứng tỏ hai trang i và trang j gần nhau. Mặt khác, liên kết trong tương tự là tổng trọng số của khoảng cách giữa cột i và cột j tại mỗi dòng, còn liên kết ngoài tương tự là tổng trọng số của khoảng cách giữa dòng i và dòng j tại mỗi cột.
Simi,j = Simi,j(out-link)*Simi,j(in-link) Trong đó:
Simi,j(out-link) = ∑ ∝𝑦 𝑖,𝑗 (𝑦)=∑ | 𝑃𝑖, 𝑦 – 𝑃𝑗, 𝑦 |𝑦
Simi,j(in-link) = ∑ 𝛽𝑥 𝑖,𝑗(𝑥) =∑ | 𝑚𝑖∗𝑃𝑥,𝑗− 𝑃𝑥,𝑖∗𝑚𝑗
𝑚𝑖 + 𝑚𝑗 |
𝑥 Với mi =∑ 𝑃𝑙 𝑙,𝑖 , mj =∑ 𝑃𝑙 𝑙,𝑗 Chú thích:
mi : tổng xác suất trong các liên kết liên kết trong của trang i tương ứng.
mj : tổng xác suất trong các liên kết liên kết ngoài của trang j tương ứng.
1 2 3 4 5 1 0 0 0.5 0.5 0 2 0.6 0 0.4 0 0 3 0 0 0 0.5 0.5 4 0 0 0 0 0 5 0 0 0 0 0
Simi,j(out-link) : tổng xác suất liên kết ngoài khác nhau giữa i và j. Simi,j(in-link) : tổng xác suất liên kết trong khác nhau giữa i và j.
Từ đây, chúng ta thiết lập một ngưỡng 𝜀, so sánh nó với Simi,j nếu Simi,j < 𝜀 thì trạng thái i và j được sáp nhập lại. Bằng cách gia tăng 𝜀 càng cao, thì nén nhiều trạng thái hơn. Sau khi chọn được các trạng thái được sáp nhập lại với nhau, ta cần chỉ định xác suất truyền giữa trạng thái mới i V j với trạng thái k còn lại trong ma trận truyền bằng cách tính toán trọng số trung bình của dòng thứ i và thứ j và đặt kết quả trong dòng của trạng thái i V j, và tổng của cột thứ i và thứ j và đặt kết quả trong cột của trạng thái i V j. Sau đó, tiếp tục tính xác suất giữa trạng thái i V j và k.
Pk,iVj = Pk,i + Pk,j
PiVj,k = 𝑚𝑖∗𝑃𝑖,𝑘+ 𝑚𝑗∗𝑃𝑗,𝑘
𝑚𝑖 + 𝑚𝑗
Việc nén ma trận truyền được sử dụng hiệu quả cho liên kết dự đoán. Khi người sử dụng đến thăm một website, chúng ta sử dụng ma trận nén xác suất truyền để tính xác suất của các trang viếng thăm khác của người sử dụng trong tương lai.
Sau khi ma trận nén truyền hình thành, ta bắt đầu đề xuất, cụ thể ta thiết lặp hỗ trợ cực tiểu, những cặp liên kết trang nào có xác suất lớn hơn hỗ trợ cực tiểu là những những trang đề xuất cho người dùng, tức là những trang này được người dùng quan tâm nhiều nhất, còn lại những cặp liên kết trang có xác suất thấp hơn hỗ trợ cực tiểu thì không được đề xuất cho người dùng vì những trang này người dùng ít quan tâm.
Ngoài ra, Sarukkai đã đề xuất sử dụng “liên kết lịch sử” [15] của người sử dụng để tạo ra dự đoán liên kết. Giả sử người sử dụng hiện tại đang ở trang i, lịch sử viếng thăm của người đó như một chuỗi m các trang { i-m+1, i-m+2, …, i0 }. Đối với trang hiện tại, chúng ta sử dụng vector L0 = { lj }, lj = 1 khi j = i và lj = 0 cho trường
hợp ngược lại. Đối với những trang trước, chúng ta sử dụng vector Lk = { 𝑙𝑗𝑘 } (k = - 1,…, -m+1), 𝑙𝑗𝑘=1 khi jk = ik và 𝑙𝑗𝑘= 0 cho trường hợp ngược lại. Vector lịch sử này được sử dụng cùng với ma trận truyền để tính vector Rec1 cho xác suất của mỗi trang để viếng thăm trang kế tiếp như sau:
Rec1 = a1*L0 *Q + a2*L-1*Q2 + … + am*L-m+1*Qm
Trong đó:
- a1, a2, am là trọng số chỉ định cho vector lịch sử, giá trị này chỉ cấp độ ảnh hưởng của vector lịch sử trong tương lai. Chúng ta để trọng số sao cho đảm bảo 1>a1>a2>…>am>0, a1 gần trang xem xét nên nó có trọng số cao vì nó có tính quyết định cao để dự đoán trang kế tiếp trong tương lai.
- L0, L-1, …, L-m+1 là các vector lịch sử, chẳng hạn như L = (0, 0, 1, 0), chỉ trang lịch sử thứ 3 tính từ trang i hiện tại.
- Q là ma trận truyền (bậc 1) xem xét cho trang lịch sử i0. Khi xét các trang lịch sử xa hơn thì xem xét ma trận truyền cao hơn tương ứng.
- Rec1 là vector mô tả xác suất 1 trang được dự đoán sẽ được viếng thăm sau trang hiện tại. Việc dự đoán này phụ thuộc vào trang trước đó. Nhưng ta khó mà có thể xem xét nhiều trang lịch sử vì độ phức tạp rất cao.
Sau khi ứng dụng mô hình chuỗi Markov lên cây PLWAP, tức là xây dựng ma trận truyền dựa trên liên kết giao nhau giữa các liên kết của các trang từ kết quả khai thác của cây PLWAP, sau đó tiếp tục sử dụng một thuật toán để nén ma trận truyền để nhóm các trang web với hành vi chuyển đổi tương tự và nén các ma trận chuyển tiếp đến một kích thước tối ưu cho hiệu quả tính toán xác suất, cuối cùng ta sử dụng thuật toán đề xuất để dự đoán thông tin cho người dùng. Lúc này cây PLWAP đã được
cải tiến, gọi là PLWAP-Markov, cũng là phương pháp đề xuất thông tin cho người dùng.