Trong đó các kí hiệu A, B, C, D, E, F là đại diện cho tập các mặt hàng
theo Bảng 3.3 nhƣ sau:
Theo Bảng 3.1 và Bảng 3.2, CSDL HD có sáu giao dịch {t1, t2, t3, t4, t5, t6} và sáu mục {A, B, C, D, E, F}, trọng số của các mục tƣơng ứng là {0,3,
0,2, 0,5, 0,6, 0,9, 0,1}. Giao dịch t1 = {1, 1, 0, 2, 1, 0} có nghĩa là trong giao
dịch t1 có một mục A(Desktop), một mục B(Ink-jet Printer), hai mục D(Notebook), một mục E(Scanner) và khơng có mục C với F nào.
Tập J = {G, K, H} là tập các mục cha của cây phân cấp không xuất hiện trong các giao dịch của CSDL HD. Tuy nhiên chúng có vai trị nhất định, thể hiện mối quan hệ của các mục trong CSDL HD. Do đó, khi khai thác FI trên CSDL phân cấp đòi hỏi phải khai thác cả tập các mục trên cây phân cấp bao gồm (I J). Bảng 3.3. Tên mặt hàng của các mục ID mục mục A Desktop B Ink-jet Printer C Laser Printer D Notebook E Scanner F Dot-matrix Printer G Non-impact H PC K Printer B E C G F K A D H
HQDB có kế thừa hoàn toàn các định nghĩa, tính chất của CSDL số lƣợng có sự phân cấp nhƣ đã trình bày trong chƣơng 1. Ngồi ra, khai thác FWUI trên HQDB cần phải tính tốn xác định trọng số của các mục cha, đồng thời phải xác định số lƣợng các mục cha trong từng giao dịch dựa trên các mục con của chúng trong mỗi giao dịch. Thơng thƣờng có thể xác định các đại lƣợng này thông qua các hàm MAX, MIN, SUM hay AVERAGE đối với các giá trị số lƣợng và trọng số của các mục con của nó. Tuy nhiên, nếu sử dụng cơng thức MIN hoặc AVERAGE thì số lƣợng và trọng số của mục cha sẽ nhỏ hơn của mục con của nó trong nhiều trƣờng hợp. Điều này là không thực tế, do mục cha là mức khái quát của mục con nên số lƣợng và trọng số của nó khơng thể nhỏ hơn của mục con của nó. Do đó trong phạm vi luận án, tác giả đề xuất sử dụng hai hàm là MAX và SUM trong xác định trọng số và số lƣợng của các mục cha trên cây phân cấp trong mỗi giao dịch dựa trên trọng số và số lƣợng của các mục con của nó trên cây phân cấp có sẵn trong các giao dịch (là các mục ở nút lá).
Trong các CSDL thực tế, nếu trọng số hay số lƣợng của các mục cha nhƣ là tổng trọng số hay số lƣợng của trọng số hay số lƣợng của các mục con (lợi nhuận, giá trị, v.v…) thì sẽ sử dụng hàm SUM để xác định trọng số, số lƣợng cho mục cha. Còn trong trƣờng hợp trọng số, số lƣợng của các mục cha nhƣ đại diện cho trọng số và số lƣợng cho mục con (mức độ u thích, sự phản hồi,…) thì sẽ sử dụng hàm MAX để xác định trọng số, số lƣợng của mục cha. Trên cơ sở đó, luận án đề xuất hai định nghĩa sau:
Định nghĩa 3.2. Trọng số của mục cha trên cây phân cấp bằng hàm
Fun_weight của trọng số các mục con của nó ở nút lá nhƣ sau:
weight(A) Fun_weight(weight(A1); weight(A2 weight(Ak)) Trong đó A là mục cha trên cây phân cấp, A1, A2, ...,Ak là các nút lá của A. Fun_weight có thể là hàm SUM hoặc MAX tùy vào CSDL thực tế.
Ví dụ 3.2: Với Fun_weight là hàm MAX: weight(K) =
MAX(weight(C), weight(B), weight(F)) = MAX(0,5; 0,2;0,1) = 0,5.
Định nghĩa 3.3. Số lƣợng của mục cha trên cây phân cấp ở trong giao
dịch nào đƣợc xác định bằng hàm Fun_quatity của số lƣợng các mục con của nó ở trong giao dịch đó nhƣ sau:
quantity(A) tk = Fun_quantity(quantity(A1); quantity(A2 quantity(Ak))
Trong đó: A, A1, A2, ...,Ak tk và A1, A2, ..., Ak là con của A trên cây phân cấp. Fun_quantity có thể là hàm MAX hoặc hàm SUM tùy thuộc vào CSDL thực tế.
Ví dụ 3.3: Với Fun_quantity là hàm SUM, ta có quantity(K) t5 =
SUM(quantity(B); quantity(C); quantity(F))(do B, C, F t5) = SUM(2; 2; 1) = 5
Định nghĩa 3.4. Tập mục X I J) với I là tập các mục trong CSDL
(tập nút lá trên cây phân cấp) và J là tập các mục cha trên cây phân cấp đƣợc gọi là phổ biến nếu wus(X) minwus, với minwus do ngƣời dùng xác định
trƣớc.
3.2. Thuật toán khai thác FWUI trên HQDB
Để khai thác FWUI trên HQDB bao gồm cả các mục cha trên cây phân cấp, cần xác định weight cho các mục cha (theo Định nghĩa 3.2), đồng thời cần xác định số lƣợng cho các mục cha (theo Định nghĩa 3.3) trong mỗi giao dịch khi thêm các mục cha này vào trong các giao dịch [19].
3.2.1. Thuật toán xác định weight cho các mục cha
Thuật toán xác định weight cho các mục cha trên cây phân cấp theo Định nghĩa 3.2 đƣợc trình bày nhƣ sau:
Thuật toán3.1: CALCULATION_WEGHTED
Input: R là gốc cây phân cấp Tr.
- Method name: CALCULATION_WEGHTED() 1 2 3 4 5 6 CALCULATION_WEGHTED(R)
for all r children of R do if (weight(r) = 0)then
CALCULATION_WEGHTED(r);
else
weight(R) = Fun_weight (weight(R), weight(r));
ChènR.weight vào WeightTable;