4.2.1. Lọc dữ liệu
Một trang web thường bao gồm nhiều thành phần khác nhau. Khi một trang web được tải về thì trình duyệt cũng tự động gửi những yêu cầu tải về các thành phần có liên quan, đặc biệt là các tập tin đồ họa (.gif, .jpg, .bmp…) tương ứng với banner hay menu của trang. Để làm rõ hơn vấn đề này, hãy xét một trang web đơn giản là một tập tin html với cấu trúc như sau:
<html> <body> <table> <tr> <td><img src= imges/Up.gif </td> </tr> <tr> <td><img src= images/Right.gif </td> </tr> </table> </body> </html> Tách các
trường dữ liệu Lọc dữ liệu
Gán nhãn thời gian Phân định các phiên truy cập D liệu đã được tiền xử lý D liệu thô
Giả sử tập tin html có tên là index.htm và được lưu tại thư mục gốc của site với tên miền tương ứng là ABC.com. Các tập tin đồ họa Up.gif và Right.gif nằm trong thư mục images là thư mục con của thư mục gốc. Khi người dùng gõ địa chỉ http://ABC.com/index.htm vào thanh địa chỉ của trình duyệt, trình duyệt sẽ gửi yêu cầu cho máy chủ web để tải về trang index.htm. Khi đọc cấu trúc trang index.htm để hiển thị, trình duyệt thấy cần phải có hai tập tin đồ họa là Left.gif và Right.gif cần được hiển thị kèm. Nó sẽ tự động gửi các yêu cầu để tải về hai tập tin này. Nếu máy chủ được cấu hình ghi lại các bản ghi log theo định dạng CL thì các bản ghi sau đây sẽ được ghi lại:
203.162.246.103 - - [26/May/2011:10:49:49 +0800] "GET /index.htm HTTP/1.0" 200 167 203.162.246.103 - - [26/May/2011:10:49:50 +0800] "GET images/Left.gif HTTP/1.0" 200 340 203.162.246.103 - - [26/May/2011:10:49:50 +0800] "GET images/Right.gif HTTP/1.0" 200 420
Trong đó, 203.162.246.103 là địa chỉ IP của máy khách. Ta thấy trong 3 yêu cầu truy cập kể trên thì chỉ có yêu cầu đầu tiên là phát sinh bởi người dùng, còn hai yêu cầu tiếp theo được phát sinh một cách tự động bởi trình duyệt.
Như đã trình bày trong chương 2, những yêu cầu tự động phát sinh từ phía trình duyệt không phản ánh hành vi của người dùng và do đó việc lọc bỏ chúng là vô cùng quan trọng. Thường thì các yêu cầu truy cập liên quan tới các tập tin hình ảnh mà chủ yếu là các định dạng phổ biến như: .ico, .gif, .jpg, jpeg, .png, .bmp, .xmb,… sẽ bị loại bỏ trừ phi trang web của chúng ta là trang chuyên cung cấp nội dung hình ảnh. Ngoài ra, những yêu cầu truy cập ứng với các tập tin có định dạng như .js, .css, .htc cũng sẽ bị loại bỏ vì những tập tin này hỗ trợ cho việc hiển thị trang và cũng được tự động tải về bởi trình duyệt. Thông thường, ta sẽ giữ lại các yêu cầu ứng với các tập tin có định dạng: .htm, .html, .asp, .aspx, .php, .jsp, .txt, .doc, .pdf, .zip, .zar, .exe.
Qua nghiên cứu khảo sát thống kê số lượng các loại yêu cầu truy cập ứng với mỗi loại định dạng trong tập tin log thì chỉ riêng các yêu cầu truy cập các tập tin đồ họa đính kèm theo trang web đã chiếm quá nửa số lượng (khoảng 55% đến 60%). Việc loại bỏ các yêu cầu này sẽ giúp làm giảm rất lớn khối lượng tính toán không cần thiết.
Khi cài đặt bộ lọc dữ liệu để lọc bớt các bản ghi không cần thiết, tác giả đề xuất loại bỏ các tập tin đính kèm theo trang web với 11 định dạng phổ biến nhất sau đây: .gif, .png, .jpg, .jpeg, .bmp, .xmb, .js, .css, .htc, .flv, .swf. Bộ lọc các bản ghi truy cập sẽ được thực thi một cách rất đơn giản. Lần lượt duyệt các bản ghi trong tập dữ liệu thô (RawData) được đọc vào từ tập tin log. Nếu bản ghi nào ứng với tập
tin có định dạng nằm trong danh sách cấm sẽ không được đưa vào tập dữ liệu gồm các bản ghi sẽ được xử lý ở bước tiếp theo ( ilterredData). Phương thức lọc dữ liệu được minh họa qua thủ tục iltering như sau:
Input: Dữ liệu thô được đọc vào từ tập tin log (RawData).
Output: Dữ liệu đã được loại bỏ các bản ghi không cần thiết ( ilterred Data).
procedure Filtering()
{
//Thiết lập bộ lọc
string[ Invalid ormat ={ .gif , .png , .jpg , .jpeg ,
.bmp , .xmb , .js , .css ,
.htc , .flv , .swf };
for each r in RawData
{
//Nếu ph n mở rộng của tập tin trong r không nằm trong danh sách bị cấm.
if Extension(r) not in InvalidFormat
FilterredData.Add(r);
} }
4.2.2. Gán nhãn thời gian
Sau khi phân tách được các trường dữ liệu và trích chọn các tham số, bước quan trọng là phải tạo ra một nhãn thời gian (time stamp). Mục đích của việc tạo ra nhãn thời gian là nhằm tạo thuận lợi trong việc so sánh thứ tự trước sau của các thời điểm truy cập. Nguyên tắc của việc tạo nhãn thời gian là chọn một thời điểm nào đó làm mốc. Sau đó tất cả các giá trị thời điểm truy cập sẽ được so sánh với giá trị mốc này để tính ra khoảng thời gian (đơn vị giây).
Các bước tạo nhãn thời gian như sau:
1. ác định xem bao nhiêu ngày đã trôi qua, tính từ một thời điểm gốc nào đó được chọn làm mốc cho đến thời điểm truy cập lưu trong bản ghi.
2. Nhân giá trị số ngày này với 84600. Con số 84600 ở đây là số giây tương ứng với 24 giờ.
3. ác định khoảng thời gian bằng giây tính từ lúc 0h cùng ngày cho tới thời điểm được lưu bản ghi.
Mục tiêu của các bước từ (1) tới (4) là nhằm tạo ra một nhãn thời gian, đó là một giá trị nguyên biểu diễn số giây đã trôi qua tính từ lúc 0 giờ của ngày được chọn làm mốc. Nhãn thời gian thuận lợi cho việc tính toán khoảng thời gian mà người dùng viếng thăm website cũng như quá trình thực hiện chuỗi các yêu cầu truy cập qua từng ngày.
Trong hệ thống, tác giả cài đặt cơ chế để gán nhãn thời gian cho mỗi bản ghi. ét một bản ghi truy cập web Ri nào đó. Gọi D(Ri) là giá trị ngày tháng năm tương ứng với Ri còn H(Ri), M(Ri), S(Ri) tương ứng là các giá trị giờ, phút, giây. Gọi Do là một giá trị ngày tháng năm nào đó được chọn làm mốc. Chú ý là Do là thời điểm nằm trước mọi thời điểm truy cập đang xét tức là Do ≤ D(Ro) với Ro là yêu cầu truy cập đầu tiên trong đoạn web log đang xét.
Kí hiệu D(Ri) - Do là phép toán tính số ngày nằm giữa hai thời điểm D(Ri) và Do. Khi đó, nhãn thời gian gắn cho bản ghi Ri ký hiệu là ST(Ri) sẽ được xác định bởi công thức:
ST(Ri) = 84600*[D(Ri) - Do] + 3600*H(Ri) + 60*M(Ri) + S(Ri)
Nhãn thời gian rất hữu dụng trong việc phân định các phiên truy cập. ét hai bản ghi liên tiếp là Ri và Ri+1 thuộc về cùng một người dùng và δ là một ngưỡng thời gian được chọn. Nếu ST(Ri+1) - ST(Ri) ≥ δ thì Ri và Ri+1 thuộc về hai phiên truy cập khác nhau và liên tiếp nhau là Sj, Sj+1 (Ri∈ Sj và Ri+1∈ Sj+1).
4.2.3. Phân định các phiên truy cập
Phiên truy cập của người dùng (user session) có thể được định nghĩa một cách "thô thiển" là tập hợp các trang web được duyệt bởi một người dùng cụ thể, cho một mục đích cụ thể. Một số chuyên gia đưa ra cách tiếp cận dựa trên "độ dài tham chiếu" (reference length) với giả thiết rằng khoảng thời gian người dùng tương tác với một trang web phụ thuộc vào mối quan tâm của người đó đến nội dung trang. Cách tiếp cận dựa trên độ dài tham chiếu cho phép chúng ta phân biệt các trang điều hướng (navigational pages), chỉ chứa các liên kết với các trang có nội dung (content pages), chứa các thông tin mà người dùng quan tâm.
Gọi thời gian trễ dA→B là khoảng thời gian giữa yêu cầu truy cập trang A và yêu cầu truy cập trang B. Bằng cách sử dụng một ngưỡng thời gian t, ta có thể tạm thời phân loại trang A vào nhóm các trang có nội dung nếu dA→B > t và xếp trang A vào nhóm các trang điều hướng nếu dA→B ≤ t. Baglioni và các cộng sự đưa ra định nghĩa rằng một phiên truy cập có thể coi là một dãy các địa chỉ URL của các trang điều hướng theo sau bởi một địa chỉ URL của trang nội dung. Tuy nhiên định nghĩa
này bị xem là quá cứng nhắc so với mục đích của chúng ta khi mà một người dùng có thể di chuyển từ một trang nội dung đến một trang điều hướng rồi lại quay về một trang nội dung trong cùng một phiên truy cập.
Khái niệm về phiên truy cập của người dùng là vô cùng quan trọng vì nó giúp ta hình dung được thế nào là một lần viếng thăm (visit) một site. Khi việc đoán nhận mục đích viếng thăm site của người dùng không phải là dễ dàng, ta có thể nghĩ tới việc sử dụng các phương pháp heuristics đã được chuẩn hóa.
Ví dụ, giả sử một người dùng viếng thăm một website cụ thể nào đó 02 lần trong khoảng thời gian 24 giờ. Khoảng thời gian giữa các lần viếng thăm là 06 giờ. Giả thiết rằng các thao tác định danh người dùng đã được thực hiện trên dữ liệu web log ứng với khoảng thời gian 24 giờ này. Dữ liệu ứng với 02 lần viếng thăm website sẽ được nhóm lại với nhau và được xác định tương ứng với người dùng đó. Tuy cùng thuộc về một người dùng, nhưng những dữ liệu này cần phải được phân tách để xác định ra 02 lần truy cập riêng rẽ. Thao tác này được gọi là xác định phiên truy cập của người dùng (sessionizing hay session identification).
ác định phiên truy cập của người dùng có thể coi là một tiến trình mà ở đó, các yêu cầu truy cập xuất phát từ một người dùng cụ thể trong một khoảng thời gian đủ dài được phân đoạn thành các phiên truy cập riêng rẽ.
Hầu hết các phương pháp xác định phiên truy cập chỉ đơn giản là áp dụng một ngưỡng thời gian timeout sau khi một khoảng thời gian nhất định đã trôi qua tính từ yêu cầu truy cập được thực hiện trước đó. Nhiều hệ thống khai phá sử dụng web áp đặt ngưỡng thời gian timeout là 30 phút. Một giải thuật xác định phiên truy cập có thể áp dụng ngưỡng thời gian timeout này đối với dữ liệu web log. Một phiên truy cập mới được xem là bắt đầu nếu như khoảng thời gian giữa hai yêu cầu truy cập của người dùng lớn hơn giá trị ngưỡng đã quy định.
Về mặt bản chất, như đã nói, việc định danh phiên truy cập là tiến trình phân tách các bản ghi hoạt động của mỗi người dùng thành các phiên truy cập, mỗi phiên phản ánh thông tin về một lần viếng thăm site. Đối với những website không có cơ chế xác thực người dùng và cũng không có cơ chế nhúng các mã phiên để dấu phiên truy cập, chúng ta sẽ phải hoàn toàn dựa trên các các phương pháp heuristics để định danh phiên truy cập. Mục đích của thao tác định danh phiên dựa trên heuristics là nhằm tái cấu trúc dữ liệu clickstream, chuỗi các thao tác thực tế được thực hiện bởi người dùng trong mỗi lần viếng thăm một site.
Gọi R là tập hợp các phiên truy cập thức sự, phản ánh các hoạt động của người dùng khi truy cập website. Một nghiệm heuristic h là sự ánh xạ tập R tương ứng
với một tập các phiên đã được xây dựng, ký hiệu là Ch. Trong trường hợp nghiệm lý tưởng, ký hiệu là h* thì Ch* = R. Nói cách khác trong trường hợp nghiệm lý
tưởng, ta có thể xây dựng lại một cách chính xác chuỗi các thao tác điều hướng của người dùng trong suốt phiên truy cập. Các phương pháp heuristics để định danh phiên truy cập có thể chia thành hai loại: các phương pháp hướng thời gian và các phương pháp hướng cấu trúc. Các phương pháp heuristics hướng thời gian sẽ sử dụng một ngưỡng thời gian timeout để phân biệt ra các phiên truy cập liên tiếp nhau. Trong khi đó, các phương pháp heuristic hướng cấu trúc sẽ sử dụng thông tin vể cấu trúc tĩnh của website hoặc cấu trúc liên kết ngầm định thu được từ trường đối tượng tham chiếu trong web log.
Sau khi thao tác định danh người dùng đã được thực thi, dữ liệu web log sẽ được phân thành các nhóm bản ghi tương ứng với mỗi người dùng. Mỗi phương pháp heuristic h được áp dụng sẽ duyệt các bản ghi hoạt động của từng người dùng và đưa ra tập hợp các phiên truy cập được xây dựng. Có thể kể ra ở đây ba phương pháp heuristic thường được sử dụng:
1. Phương pháp h uristic hư ng thời gi n h1 dựa trên ý tưởng: độ dài thời gian của một phiên truy cập không được vượt quá ngưỡng thời gian θ cho trước. Gọi Ro là yêu cầu truy cập đầu tiên trong phiên truy cập Sj được xây dựng và TS(Ro) là nhãn thời gian ứng. Yêu cầu truy cập Ri với nhãn thời gian TS(Ri) sẽ được coi là thuộc phiên truy cập Sj nếu khoảng cách thời gian không vượt quá ngưỡng θ, tức là TS(Ri) - TS(Ro) ≤ θ (hình 4.2).
Hình 4.2: Y u c u truy cập Ri∈ Sj nếu khoảng cách TS(Ri) - TS(Ro) ≤ θ
2. Phương pháp h uristic hư ng thời gi n h2 dựa trên ý tưởng: độ dài thời gian khi duyệt một trang không bao giờ vượt quá ngưỡng thời gian δ cho trước. Gọi Ri là một yêu cầu truy cập được cho là thuộc về phiên truy cập Sj và
Rn Ro TS(Ri) – TS(Ro) Ngưỡng θ Phiên Sj Phiên Sj+1 Ri
TS(Ri) là nhãn thời gian tương ứng. Yêu cầu truy cập tiếp theo Ri+1 với nhãn thời gian tương ứng TS(Ri+1) sẽ được xem là thuộc Sj nếu khoảng cách thời gian không vượt quá ngưỡng δ, tức là TS(Ri+1) - TS(Ri) ≤ δ (hình 4.3).
Hình 4.3: Ri∈ Sj và Ri+1∈ Sj+1 nếu ST(Ri+1) - ST(Ri) ≥ δ
3. Phương pháp h uristic hư ng cấu trúc h-ref dựa trên ý tưởng: một yêu cầu truy cập Ri sẽ được coi là thuộc phiên truy cập Sj nếu đối tượng tham chiếu đến Ri đã được truy cập trước đó trong phiên Sj. Ngược lại, Ri được coi là bắt đầu của một phiên truy cập mới. Với phương pháp này, có thể xảy ra trường hợp một yêu cầu truy cập Ri thuộc về hai hay nhiều phiên làm việc đang mở do trước đó nó được truy cập trong nhiều phiên khác nhau. Trong trường hợp này các thông tin bổ sung có thể được sử dụng để làm rõ vấn đề. Ví dụ, Ri có thể được xem là thuộc về phiên đang mở gần nhất thỏa mãn điều kiện nêu trên (hình 4.4).
Hình 4.4: Nếu Rk∈ Sj và Rk tham chiếu đến Ri thì Ri∈ Sj
Hình 4.5 minh họa việc áp dụng phương pháp heuristic h1 vào tập dữ liệu web
log ứng với người dùng 1, có địa chỉ IP là 1.2.3.4. Ngưỡng thời gian sử dụng ở đây là θ = 30 phút. Các bản ghi được phân thành hai tập hợp ứng với hai phiên truy cập kế tiếp nhau. Rk Ro Phiên Sj Ri+1 Phiên Sj+1 Ri Ro TS(Ri+1) – TS(Ri) Ngưỡng δ Phiên Sj Ri+1 Phiên Sj+1
Hình 4.5: Áp dụng phương pháp heuristic hư ng thời gian
Nếu ta áp dụng phương pháp heuristic h2 với ngưỡng thời gian δ = 10 phút cho
dữ liệu trên hình 4.5 thì tập các bản ghi có thể được phân tách ứng với 3 phiên truy cập:
Phiên 1: A B C E Phiên 2: A
Phiên 3: F B D
Hình 4.6: Áp dụng phương pháp heuristic hư ng cấu trúc
Hình 4.6 minh họa việc áp dụng phương pháp heuristic hướng cấu trúc h-ref
vào tập dữ liệu web log. Khi yêu cầu truy cập ứng với trang được ghi nhận (nhãn thời gian 01:26) thì có hai phiên truy cập đang mở:
Phiên 1: A B C E Phiên 2: A
Tuy nhiên, yêu cầu truy cập trang được xem là thuộc về phiên 1 vì trang tham chiếu đến trang là trang C đã được truy cập trước đó trong phiên 1. Yêu cầu truy cập trang B (nhãn thời gian 01:30) thuộc về cả hai phiên truy cập đang mở vì trang tham chiếu đến B là trang A đã được truy cập trước đó trong cả hai phiên.
Trong trường hợp này, yêu cầu truy cập trang B được xem là thuộc về phiên 2 do đây là phiên đang mở gần nhất.
Khi cài đặt, tác giả lựa chọn tiếp cận dựa trên phương pháp heuristic hướng thời gian h2. Ý tưởng cài đặt được minh họa qua phương thức SessionIdentification. Các bản ghi sẽ lần lượt được duyệt qua. Chúng sẽ được kiểm tra xem có thuộc về cùng một người dùng hay không? Nếu có, khoảng cách thời gian giữa hai bản ghi