Việc xây dựng một cây FP tối giản sẽ đảm bảo rằng các khai phá tiếp theo sẽ được thực hiện trên những cấu trúc dữ liệu tối giản. Tuy nhiên, nó không đảm bảo rằng sẽ có hiệu qủa cao do vẫn có thể gặp trường hợp tổ hợp của các ứng cử được tạo ra nếu như ta chỉ dùng cây FP để tạo và kiểm tra tất cả các mẫu ứng cử. Ta sẽ tìm hiểu cách khai thác các thông tin tối giản được lưu trữ trong cây FP và tìm hiểu một phương pháp hiệu quả để khai phá toàn bộ tập các mẫu thường xuyên cũng như toàn bộ tập mẫu. Dưới đây là một vài đặc trưng quan trọng của cấu trúc cây FP có lợi cho việc khai phá mẫu thường xuyên.
Nguyễn Tiến Thành – Công nghệ phần mềm K44 60
Kỹ thuật khai phá dữ liệu và ứng dụng xây dựng cơ sở tri thức Đặc tính 1 (đặc tính liên kết nút)
Với mỗi phần tử thường xuyên ai, tất cả các mẫu thường xuyên có chứa ai có thể thu thập được bằng cách đi theo các liên kết nút của ai, bắt đầu từ head của ai trong header của cây FP. Đặc điểm này dựa vào quá trình xây dựng cây FP. Nó sẽ tạo thuận lợi cho việc truy xuất toàn bộ thông tin của các mẫu có liên hệ với ai bằng cách đi trên cây FP theo các liên kết nút của ai.
Ví dụ 2
Xem xét một quá trình khai phá dựa trên cây FP cho trong hình 4.1. Theo đặc tính 1, ta thu thập toàn bộ các mẫu có ai bằng cách bắt đầu từ head của ai trong bảng header và đi theo toàn bộ liên kết nút của ai. Ta sẽ xem xét quá trình khai phá bắt đầu từ dưới lên trên.
Với nút p được hợp thành từ một mẫu thường xuyên (p:3) và 2 đường đi trong cây FP: {f:4, c:3, a:3, m:2, p:2} và {c:1,b:1,p:1}. Đường đi đầu tiên cho biết chuỗi “(f,c,a,m,p)” xuất hiện 2 lần trong cơ sở dữ liệu. Chú ý rằng cho dù chuỗi (f,c,a) xuất hiện 3 lần và (f) xuất hiện 4 lần nhưng chỉ xuất hiện đồng thời với p 2 lần. Do đó để xem xét xem chuỗi nào xuất hiện đồng thời với p, chỉ xét đường đi p-tiền tố (f:2, c:2, a:2, m:2). Tương tự, đường đi thứ 2 cho biết chuỗi “(c,b,p)” xuất hiện 1 lần trong tập các giao dịch trong DB, hoặc đường đi p-tiền tố là {c:1, b:1}. Hai đường đi tiền tố của p: ”{f:2, c:2, a:2, m:2}, {c:1, b:1}” từ cơ sở mẫu con của p, còn gọi là cơ sở mẫu phụ thuộc của p (ví dụ như mẫu con phụ thuộc vào điều kiện tồn tại của p). Xây dựng cây FP dựa vào cơ sở mẫu phụ thuộc (được gọi là cây FP phụ thuộc của p) dẫn đến chỉ một cành (c:3). Do đó chỉ thu được một mẫu thường xuyên (cp:3). Chú ý rằng một mẫu là một tập phần tử và được biểu thị bằng một xâu. Đến đây việc tìm kiếm các mẫu thường xuyên tương ứng với p kết thúc.
Với nút m biểu thị một mẫu thường xuyên (m:3) và 2 đường đi {f:4, c:3, a:3, m:2}và {f:4, c:3, a:3, b:1, m:1}. Chú ý rằng p cùng xuất hiện với m,
tuy nhiên không cần p trong phân tích này vì mọi mẫu thường xuyên có p đều được xét đến trong khi phân tích nút p. Tương tự như phân tích trên, cơ sở mẫu phụ thuộc m là {f:2, c:2, a:2}, (f:1, c:1, a:1, b:1}. Xây dựng cây FP dựa vào trên ta thu được cây FP phụ thuộc m, {f:3, c:3, a:3}, một đường đi mẫu thường xuyên. Sau đó có thể gọi đệ quy thủ tục khai phá dựa vào cây FP, ví dụ như gọi mine({f:3, c:3, a:3}|m).
Hình 4.2 cho thấy “mine({f:3, c:3, a:3}|m)” bao gồm việc khai phá 3 phần tử (a), (c), (f) theo thứ tự. Lần thứ nhất thu được một mẫu thường xuyên (am:3) và gọi “mine({f:3, c:3}|am)”, lần thứ 2 thu được mẫu thường xuyên (cm:3) và gọi “mine({f:3}|cm)”, lần thứ 3 chỉ thu được một mẫu thường xuyên (fm:3). Lần gọi đệ quy tiếp theo của “mine({f:3, c:3}|am)” thu được (cam:3), (fam:3), và gọi “mine({f:3, c:3}|am}” thu được mẫu dài nhất (fcam:3). Tương tự, gọi thủ tục “mine({f:3}|cm)” thu được một mẫu (fcm:3). Do đó, toàn bộ các mẫu thường xuyên có m là {(m:3), (am:3), (cm:3), (fm:3), (cam:3), (fam:3), (fcam:3), (fcm:3)}. Điều này cho thấy một cây FP chỉ có 1 đường đi có thể khai phá bằng cách đưa ra toàn bộ các tổ hợp của các phần tử trong đường đi.
Hình 4.2. Cây FP phụ thuộc được xây dựng từ m
Nguyễn Tiến Thành – Công nghệ phần mềm K44 62 gố c f : 3 c: 3 a: 3
Kỹ thuật khai phá dữ liệu và ứng dụng xây dựng cơ sở tri thức
Tương tự, từ nút b thu được (b:3) và 3 đường đi {f:4, c:3, a:3, b:1}, {f:4, b:1} và {c:1, b:1}. Vì cơ sở mẫu phụ thuộc b: {(f:1, c:1, a:1), (f:1), (c:1)} không tạo ra phần tử thường xuyên nào, quá trình khai phá kết thúc. Từ nút a thu được một mẫu thường xuyên {(a:3)} và một cơ sở mẫu con {(f:3, c:3)}, một cây FP đơn đường phụ thuộc. Do đó, tập mẫu thường xuyên có thể được tạo lập bằng cách tổ hợp chúng với nhau. Nối chúng với (a:3) ta có {(fa:3), (ca:3), (fca:3)}. Từ nút c thu được (c:4) và một cơ sở mẫu con {(f:3)}, và tập các mẫu thường xuyên tương ứng với (c:3) là {(fc:3)}. Nút f chỉ thu được (f:4) nhưng không có cơ sở mẫu thường xuyên nào. Bảng 4.5 cho thấy những kết quả trên.
Phần tử Cơ sở mẫu phụ thuộc Cây FP phụ thuộc p {(f:2, c:2, a:2, m:2}, (c:1,b:1)} {(c:3)}|p m {(f:4, c:3, a:3, m:2), (f:4, c:3, a:3, b:1, m:1)} {(f:3, c:3, a:3)}|m b {(f:4, c:3, a:3, b:1), (f:4, b:1), (c:1, b:1)} φ a {(f:3, c:3)} {(f:3, c:3)}|a c {(f:3)} {(f:3)}|c f φ φ
Bảng 4.5 : Khai phá tất cả các mẫu bằng cách tạo các cơ sở mẫu con phụ thuộc
Cơ sở mẫu phụ thuộc và cây FP phụ thuộc tạo ra được tổng kết trong Bảng 4.5. Tính chính xác và toàn diện của quá trình trong ví dụ 2 được chứng minh.Sau đây là một số đặc tính quan trọng khác liên quan đến quá trình khai phá.
Đặc tính 2 ( Đặc tính đường đi tiền tố)
Để tính toán các mẫu thường xuyên cho 1 nút ai trong đường đi P, chỉ cần lưu trữ đường đi tiền tố của nút ai trong P, và số đếm tần suất của mọi nút trong đường đi tiền tố cũng bằng với số đếm của nút ai.
Phân tích. Gán nhãn các nút dọc theo đường đi P là a1, ... , an theo thứ tự : a1
là gốc của cây con tiền tố, an là lá của cây con trong P và ai (1≤ k ≤ i) là nút đang được tham chiếu đến. Theo quá trình xây dựng cây FP như ở thuật toán 1, với mỗi nút ak (1≤ k < i), đường đi tiền tố của nút ai trong P cùng có mặt đồng thời với ak đúng ai.count lần. Do vậy mọi nút tiền tố cũng có số đếm giống như nút ai. Chú ý rằng một nút hậu tố am (với i < m ≤ n) cùng nằm trên đường đi cùng có mặt với nút ai. Tuy nhiên, các mẫu có am sẽ được tạo ra trong khi xem xét nút hậu tố am, giới hạn ở đây sẽ làm giảm số lần tạo các mẫu phải tạo cho am. Do đó ta chỉ cần xem xét đường đi tiền tố của ai trong P.
Như trong ví dụ 2, nút m nằm trong đường đi {f:4, c:3, a:3, m:2, p:2}, để tính toán số mẫu thường xuyên của nút m trong đường đi này thì chỉ cần lấy ra đường đi tiền tố của nút m là {f:4, c:3, a:3}, và số đếm tần suất của mọi nút trong đường đi tiền tố bằng với số đếm của nút m. Như vậy, số đếm nút trong đường đi tiền tố cần điều chỉnh thành {f:2, c:2, a:2}.
Theo đặc tính này, cây con tiền tố của nút ai trong đường đi P có thể được sao chép và chuyển thành một cây con tiền tố có số đếm hiệu chỉnh bằng cách điều chỉnh số đếm tần suất của mọi nút trong cây con tiền tố cho giống với số đếm của nút ai. Đường đi tiền tố đã chuyển được gọi là đường đi tiền tổ đã chuyển của ai với đường đi P.
Chú ý rằng tập các đường đi tiền tố đã chuyển đổi của ai tạo thành một cơ sở dữ liệu của các mẫu cùng xuất hiện với ai. Cơ sở dữ liệu này được gọi là cơ sở mẫu phụ thuộc của ai và được biểu thị là “pattern_base | ai”. Tiếp theo ta có thể tính được tất cấcc mẫu thường xuyên ứng với ai trong cơ sở Nguyễn Tiến Thành – Công nghệ phần mềm K44
Kỹ thuật khai phá dữ liệu và ứng dụng xây dựng cơ sở tri thức
mẫu phụ thuộc ai bằng cách tạo một cây FP gọi là cây FP phụ thuộc ai, biểu thị là “FP-tree |ai”. Các khai phá tiếp theo có thể thực hiện trên cây FP này. Quá trình tạo các cơ sở mẫu phụ thuộc và cây FP phụ thuộc được thể hiện trong ví dụ 2.
Quá trình này được thực hiện theo kiểu đệ quy và các mẫu thường xuyên thu được bởi một phương thức mẫu tăng trưởng dựa vào các bổ đề và hệ quả sau.
Bổ đề 3 (Tăng trưởng gián đoạn)
Gọi α là một tập phần tử trong DB, B là cơ sở mẫu phụ thuộc α và β là một tập phần tử trong B. Độ hỗ trợ của α ∪ β bằng độ hỗ trợ của β trong DB.
Phân tích. Theo định nghĩa về cơ sở mẫu phụ thuộc, mỗi giao dịch trong B xuất hiện theo điều kiện có mặt của α trong cơ sở dữ liệu DB. Nếu tập phần tử β xuất hiện trong B ψ lần, thì nó cũng xuất hiện với α trong DB ψ lần. Hơn nữa, vì toàn bộ các phần tử được thu thập trong cơ sở mẫu phụ thuộc của α, α ∪β cũng sẽ xuất hiện đúng ψ lần trong DB. Như vậy ta có bổ đề trên.
Từ bổ đề này ta có thể thu được một hệ quả quan trọng sau.
Hệ quả 3.1 (Tăng trưởng mẫu)
Lấy một tập phần tử thường xuyên α trong DB, B là cơ sở mẫu phụ thuộc của α và β là một tập phần tử trong B. Suy ra α ∪ β là tập thường xuyên trong DB khi và chỉ khi β là tập thường xuyên trong B
Phân tích. Bổ đề này là trường hợp khi α là một tập phần tử thường xuyên trong DB và khi độ hỗ trợ của β trong cơ sở mẫu phụ thuộc B của α không nhỏ hơn ξ, là ngưỡng hỗ trợ tối thiểu.
Từ hệ quả 3.1, việc khai phá có thể thực hiện bằng cách trước hết nhận diện các tập 1-phần tử thường xuyên α, xây dựng các cơ sở mẫu phụ thuộc và khai phá tập 1-phần tử β trong cơ sở mẫu phụ thuộc này, tiếp tục cho đến kết thúc. Điều này cho thấy quá trình khai phá mẫu thường xuyên có thể coi là khai phá các tập 1-phần tử thường xuyên, sau đó tăng dần từng tập phần tử bằng cách khai phá cơ sở mẫu phụ thuộc của nó theo cách tương tự. Do đó ta sẽ chuyển đổi việc khai phá một tập k-phần tử thường xuyên thành khai phá k tập 1-phần tử thường xuyên thông qua các cơ sở mẫu phụ thuộc của nó. Như vậy, không cần thiết phải tạo ra tổ hợp của các tập ứng cử trong quá trình khai phá.
Bổ đề 4 ( Tạo cây mẫu FP đơn)
Giả sử một cây FP, T, có đường đơn P. Tập đầy đủ các mẫu thường xuyên của T có thể thu được bằng cách liệt kê tất cả các tổ hợp của các đường con của P có độ hỗ trợ là độ hỗ trợ thấp nhất của các phần tử trong đường con.
Phân tích. Lấy trong cây FP một đường P {a1:s1 → a2:s2 → … ak:sk}. Tần suất hỗ trợ si của mỗi phần tử ai (với 1 ≤ i ≤ k) là tấn suất xuất hiện đồng thời ai và xâu tiền tố của nó. Do đó mọi tổ hợp các phần tử trong đường, như {ai, …, aj} với 1 ≤ i, i ≤ k, là một mẫu thường xuyên với tần suất xuất hiện đồng thời là độ hỗ trợ nhỏ nhất của các phần tử. Vì mọi phần tử trong mỗi đường P là duy nhất nên sẽ không có mẫu dư thừa nào được tạo ra. Hơn nữa, không mẫu thường xuyên nào có thể thu được ở ngoài cây FP.
Thuật toán để khai phá các mẫu thường xuyên sử dụng cây FP sau đây dựa vào các bổ đề và tính chất trên.
Thuật toán 2 (Thuật toán FP-growth để khai phá các mẫu thường xuyên với cây FP)
Nguyễn Tiến Thành – Công nghệ phần mềm K44 66
Kỹ thuật khai phá dữ liệu và ứng dụng xây dựng cơ sở tri thức
Đầu vào: Cây FP được xây dựng theo thuật toán 1, sử dụng DB và một ngưỡng hỗ trợ nhỏ nhất ξ
Đầu ra: Tập toàn bộ các mẫu thường xuyên
Phương pháp : Dùng thủ tục FP-growth(FP-tree, null) Procedure FP-growth(Tree, α)
{
if Tree chứa 1 đường đơn P
then for each tổ hợp (biểu thị bằng β) của các nút trong đường P do Tạo mẫu β ∪ α với support = giá trị support nhỏ nhất của các nút trong β;
else for each ai trong header của Tree do { Tạo mẫu β = ai∪α với support = ai.support;
Xây dựng cơ sở mẫu phụ thuộc β và cây FP phụ thuộc β: Treeβ; if Treeβ≠∅
then gọi FP-growth(Treeβ,β); }
Phân tích. Với các tính chất và bổ đề ở trên, ta thấy rằng thuật toán tìm được toàn bộ tập các phần tử thường xuyên trong dữ liệu giao dịch DB.
Như trong bổ đề 1, cây FP của DB chứa toàn bộ thông tin của DB để khai phá mẫu thường xuyên theo ngưỡng hỗ trợ ξ.
Nếu cây FP chứa một đường đơn, theo bổ đề 4, các mẫu thu được là tổ hợp của các nút trong đường, với độ hỗ trợ là độ hỗ trợ nhỏ nhất của các nút trong đường con. Mặt khác, ta xây dựng cơ sở mẫu phụ thuộc và khai phá cây FP phụ thuộc của nó với mỗi tập phần tử thường xuyên ai. Tính chính xác và đầy đủ của quá trình chuyền đổi đường đi tiền tố được thể hiện trong tính chất 3.2, do đó các cơ sở mẫu phụ thuộc lưu trữ toàn bộ các thông tin cho khai phá mẫu thường xuyên. Theo bổ đề 3 và hệ quả của nó, các mẫu được tăng trưởng từ cây FP phụ thuộc là một tập chính xác và đầy
đủ của các mẫu thường xuyên. Theo tính chất tăng trưởng gián đoạn, độ hỗ trợ của tập hợp các phần sẽ có độ hỗ trợ bằng độ hỗ trợ của các phần tử thường xuyên được tạo ra từ cơ sở mẫu phụ thuộc.
Ta sẽ xem xét độ hiệu quả của thuật toán. Thuật toán FP-growth quét cây FP và tạo ra một cơ sở mẫu Bai với mỗi phần tử thường xuyên ai. Cơ sở này bao gồm tập các đường đi tiền tố của ai đã được chuyển đổi. Việc khai phá các mẫu thường xuyên sau đó được thực hiện một cách đệ quy với việc xây dựng một cây FP phụ thuộc của Bai. Như trong phân tích thuật toán 1, một cây FP thường nhỏ hơn nhiều kích thước của DB. Tương tự, vì cây FP phụ thuộc, “FP-tree | ai”, được xây dựng dựa vào cơ sở mẫu Bai, sẽ không lớn hứon hơn Bai. Ngoài ra, một cơ sở mẫu Bai thường nhỏ hơn nhiều cây FP nguyên thủy của nó, vì nó bao gồm các đường đi tiền tố đã được chuyển đổi chỉ có quan hệ với một phần tử thường xuyên ai. Do đó, mọi quá trình khai phá tiếp theo đều làm việc với một tâp các cơ sở mẫu và cây FP phụ thuộc nhỏ hơn. Hơn nữa, quá trình khai phá bao gồm nhiều phép hiệu chỉnh số đếm tiền tố, đếm và ghép nối các phần của mẫu. Các hoạt động này có chi phí thấp hơn nhiều so với tạo và kiểm tra một tập lớn các mẫu ứng cử.
Như vậy, quá trình khai phá sử dụng thuật toán FP-growth là một quá trình chia nhỏ để xử lý, và mức độ rút gọn là khá lớn. Nếu hệ số thu gọn từ 20-100 cho việc xây dựng cây FP từ cơ sở dữ liệu sẽ làm tăng hiệu quả một cách đáng kể.
Độ phức tạp của thuật toán là O(m3) với m là số phần tử trong cơ sở dữ liệu.
Chú ý rằng ngay cả trong trường hợp một cơ sở dữ liệu có thể tạo ra một số lượng lớn các mẫu thường xuyên thì kích thước của cây FP vẫn là khá nhỏ. Ví dụ với một mẫu thường xuyên có độ dài 100, {a1, …, a100), việc xây dựng cây FP sẽ cho kết qủa là chỉ duy nhất một đường đi có độ dài 100, ví dụ {a1→ …→ a100}. Tuy nhiên, cây FP chỉ chứa một đường đi có 100 nút,
Nguyễn Tiến Thành – Công nghệ phần mềm K44 68
Kỹ thuật khai phá dữ liệu và ứng dụng xây dựng cơ sở tri thức