2.1. Bài toán tìm dãy phổ biến trong nhiều chuỗi
Bài toán tìm dãy phổ biến trong tập các chuỗi nhằm khám phá các quan hệ theo thời gian giữa những sự kiện trong CSDL. Trong CSDL giao tác, một dãy phổ biến tiêu biểu như sau:
“Có 95% khách hàng mua mặt hàng A, thì sau đó sẽ mua mặt hàng B và sau là mặt hàng C”.
Gọi DB là tập các giao tác của khách hàng, mỗi giao tác T bao gồm mã khách hàng, thời gian thực hiện giao tác và tập các mặt hàng có trong giao tác.
Gọi I = {i1, i2, …, im} là tập hợp các mặt hàng. Tập mặt hàng là một tập con khác rỗng của I.
Dãy s là tập các mặt hàng được sắp theo thứ tự thời gian. Ký hiệu <s1s2…sn> với sj, j = 1 .. n là tập các mặt hàng.
Dãy _k là dãy chứa k mặt hàng hay dãy có độ dài là k.
Ví dụ: Một khách hàng mua các mặt hàng 1, 2, 3, 4, 5 theo thứ tự thời gian như sau s = <(1) (2,3) (4) (5)> trong đó mặt hàng 2 và 3 được mua cùng một lúc
Trong ví dụ này, s là một dãy_5 vì có chứa 5 mặt hàng.
Dãy <s1 s2 … sn> là một dãy con của dãy khác <s’1 s’2 … s’n> nếu tồn tại số nguyên i1 < i2 < … < in sao cho s1 ⊆ s’i1, s2 ⊆ s’i2, … , sn ⊆ s’in.
Ví dụ: Dãy s’ = <(2) (5)> là dãy con của s vì (2) ⊆ (2,3) và (5) ⊆ (5). Tuy nhiên, <(2) (3)> không phải là dãy con của s vì mặt hàng 2 và mặt hàng 3 không được mua trong cùng một giao tác.
Tất cả những giao tác do cùng một khách hàng thực hiện được gom lại với nhau và được sắp xếp theo thứ tự tăng được gọi là một dãy dữ liệu.
Độ hỗ trợ support(s) của một dãy là số lần xuất hiện của nó trong CSDL DB.
Độ hỗ trợ của dãy là tỷ số giữa các dãy dữ liệu có chứa s và số lượng các dãy dữ liệu. Một dãy dữ liệu chứa dãy s nếu s là dãy con của dãy dữ liệu đó.
Dãy phổ biến là dãy thỏa điều kiện support(s) ≥ minsupp với minsupp là ngưỡng do người dùng chỉ định.
Với CSDL của các giao tác khách hàng, bài toán tìm dãy phổ biến là tìm tất cả những dãy mà độ hỗ trợ lớn hơn hoặc bằng ngưỡng minsupp. Với m thuộc tính, bài toán có độ phức tạp là O(mk) với k là chiều dài của dãy phổ biến.
2.2. Thuật toán AprioriAll
AprioriAll là một thuật toán dựa trên nguyên lý Apriori để tìm tất cả các dãy phổ biến trong tập nhiều chuỗi. Thuật toán AprioriAll duyệt nhiều lần CSDL.
Đầu tiên là để tính độ hỗ trợ cho từng mặt hàng trong CSDL. Sau khi tìm được những mặt hàng phổ biến, chúng được gọi là các “dãy phổ biến có 1 mặt hàng” hay gọi tắt là DPB_1.
Tập các DPB_2 ứng viên được xây dựng theo giả thiết những DPB_2 ứng viên khả dĩ là một cặp những mặt hàng phổ biến trong cùng một giao tác. Những DPB_2 phổ biến được xét bằng cách tính độ hỗ trợ. Các DPB_k ứng viên được tạo ra từ DPB_(k-1) phổ biến có được trong bước thứ (k-1).
Ý tưởng chính của việc tạo ứng viên là loại bỏ khỏi DPB_(k-1) các cặp dãy (s,s’) sao cho loại bỏ phần tử đầu của dãy trước và phần tử cuối của dãy sau thì phần còn lại là như nhau. Khi thỏa điều kiện đó, thì ghép cặp (s,s’) để tạo dãy ứng viên mới bằng cách thêm vào mục sau cùng của s’ vào s. Sau đó tính độ hỗ trợ cho những ứng viên này và chúng trở thành những dãy phổ biến nếu có độ hỗ trợ lớn hơn hay hoặc bằng minsupp. Tiến trình này được lăp lại cho tới khi không tạo được dãy ứng viên nào khác thì thuật toán kết thúc.
Thuật toán:
(1) S1 = {DPB_1} (2) k = 2
(3) while (Sk-1 khác rỗng)
(4) { Ck = Sequential_AprioriAll_generate(Sk-1) ; (5) For each dãy dữ liệu o có trong CSDL
(6) { Count(Ck,o) ;
(7) }
(8) Sk = {s ∈ Ck | s.count ≥ minsupp}
(9) }
(10) Answer = hợp của tất cả các tập Sk ;
Hàm Sequential_AprioriAll_generate() để tạo các ứng viên.
(1) Sequential_AprioriAll_generate(Sk-1) { (2) Kết Sk-1 với Sk-1 sao cho
(3) Kết c1 và c2 nếu các chuỗi con được tạo bằng cách bỏ sự kiện đầu tiên của c1 và sự kiện cuối cùng của c2 là giống nhau. Tạo ứng viên mới c có dạng c = (c1)(e) hay (c1 e), nếu e - sự kiện cuối cùng của c2 - là sự kiện duy nhất trong tập sự kiện cuối cùng của c2 hay ngược lại. (4) Đưa c vào cấu trúc cây băm (hash tree)
(5)}
Ví dụ về phép kết:
(2,3) (4,6) (7) kết với (3) (4 6) (7) (8) và tạo ra (2 3) (4 6) (7) (8) (1 2) kết với (2 3) tạo (1 2 3)
Trường hợp đặc biệt (k=2):
(1) kết với (2) tạo (1)(2) và (1,2)
Ví dụ: Cho CSDL được sắp theo mã khách hàng và mã giao tác (được đánh số theo
thứ tự thời gian) như sau:
Makh Magiaotac Mahang
1 1 30 1 2 90 2 1 10, 20 2 2 30 2 3 40, 60, 70 3 1 30, 50, 70 4 1 30 4 2 40, 70 4 3 90 5 1 90
Dãy dữ liệu ứng với từng khách hàng:
Makh Dãy dữ liệu của khách hàng
1 (30) (90)
2 (10 20) (30) (40 60 70)
3 (30 50 70)
4 (30) (40 70) (90)
5 (90)
Với ngưỡng minsupp = 0.4, (ứng với 2 khách hàng) Các mặt hàng phổ biến:
Ứng viên của DPB_1 Độ phổ biến
{10} 1
{20} 1
{30} 4
{40} 2
{50} 1
{60} 1
{70} 3
{90} 3
Các mặt hàng thỏa ngưỡng phổ biến minsupp là {30}, {40}, {70}, {90}. Chúng cũng là các DPB_1.
Các ứng viên của DPB_2 được xây dựng bằng cách ghép cặp các DPB_1, ta được: <(30) (40)>, <(30) (70)>, <(30) (90)>, <(40) (70)>, <(40) (90)>, <(70) (90)>, <(30 40)>, <(30 70)>, <(30 90)>, <(40 70)>, <(40 90)>, <(70 90)>.
Kết lại với nhau, ta có:
Ứng viên của DPB_2 Độ phổ biến
<(30) (40)> 2 <(30) (70)> 2 <(30) (90)> 2 <(40) (70)> 0 <(40) (90)> 1 <(70) (90)> 1 <(30 40)> 0 <(30 70)> 1 <(30 90)> 0 <(40 70)> 2 <(40 90)> 0 <(70 90)> 0 Các dãy DPB_2 là: <(30) (40)> , <(30) (70)> , <(30) (90)> , <(40 70)>
Tiếp tục với các ứng viên của DPB_3, ta có: Kết <(30) (40)> với <(40 70)> ta được các ứng viên DPB_3 là <(30) (40 70)> hay <(30) (40) (70)>.
Ứng viên của DPB_3 Độ phổ biến
<(30) (40 70)> 2 <(30) (40) (70)> 0 Dãy tập phổ biến DPB_3 là: <(30) (40 70)>.
* Bài tập:
a. Có bao nhiêu cửa sổ có bề rộng là 4 được xử lý để tìm các episodes phổ biến theo tiếp cận WINEPI ?
b. Giả sử ngưỡng min_fr là 0.3. Tìm các episode phổ biến tuần tự và song song trong chuỗi trên ?
c. Tìm các episode tối đại ?
CHƯƠNG IV. PHÂN LỚP DỮ LIỆU
Nội dung chương này gồm:
• Phân lớp dữ liệu trên cây quyết định.
• Phân lớp theo phương pháp Bayes.
Phân lớp dữ liệu (data classification) là xếp đối tượng dữ liệu vào một trong các lớp đã được xác định trước. Phân lớp dữ liệu gồm hai bước là xây dựng mô hình và vận hành mô hình.
* Xây dựng mô hình:
Nhằm mục tiêu mô tả một tập những lớp đã được định nghĩa trước trong đó mỗi bộ hoặc mẫu sẽ được gán về một lớp đã xác định trước bởi thuộc tính phân lớp. Tập hợp những bộ được dùng để xây dựng mô hình được gọi là tập dữ liệu học (tập học). Mô hình được biểu diễn dưới dạng luật phân lớp, cây quyết định hoặc công thức toán học, …
* Vận hành mô hình:
Nhằm mục đích xác định lớp của dữ liệu trong tương lai hoặc phân lớp những đối tượng chưa biết. Trước khi vận hành mô hình cần đánh giá độ chính xác của mô hình trong đó các mẫu kiểm tra (đã biết được lớp) được đem so sánh với kết quả phân lớp của mô hình. Độ chính xác là phần trăm của số mẫu kiểm tra được phân lớp đúng. Lưu ý, tập kiểm tra và tập học là hai tập độc lập với nhau.