Thuật toán khai phá quy trình Heuristic

Một phần của tài liệu GHIÊN CỨU KỸ THUẬT KHAI PHÁ QUY TRÌNH VÀ ỨNG DỤNG XÂY DỰNG QUY TRÌNH KIỂM ĐỊNH CHẤT LƯỢNG GIÁO DỤC TRƯỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG (Trang 47 - 57)

CHƯƠNG 2 MỘT SỐ THUẬT TOÁN KHAI PHÁ QUY TRÌNH

2.2.2.Thuật toán khai phá quy trình Heuristic

2.2. Thuật toán khai phá quy trình Heuristic (HM)

2.2.2.Thuật toán khai phá quy trình Heuristic

Để xây dựng một mô hình quy trình cơ bản của một bản ghi sự kiện, bản ghi sẽ được phân tích phụ thuộc vào quan hệ nhân quả, ví dụ nếu một hoạt động luôn được theo sau bởi một hoạt động khác thì có khả năng tồn tại một mối quan hệ phụ thuộc giữa hai hoạt động. Để phân tích các mối quan hệ này, trước hết chúng ta xây dựng một đồ thị phụ thuộc (DG). Đồ thị phụ thuộc được xây dựng dựa trên các mối quan hệ cơ bản sau [1]:

Định nghĩa 2.5 (Các mối quan hệ cơ bản). Cho T là tập các hoạt động,

𝜎 ∊ T* là một vết quy trình, W: T* → 𝒩là một bản ghi sự kiện và A, B ∊ T: 1. A> W B nếu và chỉ nếu có một vết sự kiện 𝜎 = t1t2t3..tn và i ∈{1,…,n-1} tức là σ ∈ W, ti = a và ti+1 = b,

2. A >> WB nếu và chỉ nếu có một vết σ = t1t2t3…tn và i ∈{1,…,n-2} sao cho σ ∈ W và ti = ti+2 = a và ti+1 = b,

3. A >>> WB nếu và chỉ nếu có một vết σ = t1t2t3…tn và i < j và i, j ∈ {1,…,n} sao cho σ ∈ W và ti = a và tj = b.

Việc đầu tiên của HM là xây dựng đồ thị phụ thuộc. Một tần suất dựa trên số đo được sử dụng để chỉ ra làm thế nào chúng ta chắc chắn có một mối quan hệ phụ thuộc đúng đắn giữa hai sự kiện A và B (Ký hiệu: A⟹W B). Tính toán các giá trị ⟹W giữa các hoạt động của bản ghi sự kiện được sử dụng trong HM để tìm kiếm các mối quan hệ phụ thuộc chính xác.

Định nghĩa 2.6 (Đo độ phụ thuộc). Cho W là một bản ghi sự kiện trên T; a, b ∊

T, |a > Wb| là số lần a > Wb xuất hiện trong W và |a >> Wb| là số lần a >>W b xuất hiện trong W.

a w b =

nếu ( a≠b ) a w a =

nếu ( a≠b )

a 2 w b =

Chúng ta có thể sử dụng các phương pháp đo lường sự phụ thuộc trong định nghĩa 2.6 theo hai cách khác nhau:

(i) Trực tiếp, không sử dụng điều kiện All - tasks - connected (tất cả các hoạt động đều được kết nối): ta tính toán độ đo phụ thuộc giữa các hoạt động và so sánh với 3 ngưỡng tham số được sử dụng trong HM là: ngưỡng phụ thuộc, ngưỡng vòng lặp có độ dài 1, ngưỡng vòng lặp có độ dài 2. Ta chỉ chấp nhận các quan hệ phụ thuộc giữa các hoạt động có độ đo phụ thuộc lớn hơn giá trị của các ngưỡng phụ thuộc. Kết quả trong mô hình luồng điều khiển chỉ có những hoạt động và vết sự kiện xuất hiện thường xuyên nhất. Tuy nhiên, giá trị của các tham số được sử dụng trong HM có thể thay đổi, từ đó chúng ta có thể tác động đến mô hình điều khiển luồng cuối cùng.

(ii) Kết hợp với điều kiện All - tasks - connected: ưu điểm của việc kết hợp này là tất cả các mối quan hệ phụ thuộc đều được lưu vết mà không chịu sự tác động của bất kỳ một tham số điều chỉnh nào. Kết quả là có một mô hình điều khiển luồng tương đối đầy đủ và dễ hiểu ngay cả khi có một số dữ liệu lỗi trong bản ghi. Một tham số mở rộng có giá trị trong việc kết hợp với điều kiện All tasks connected được gọi là relative to best threshold (so với ngưỡng tốt nhất). Với ngưỡng này chúng ta có thể chấp nhận mối quan hệ phụ thuộc giữa các hoạt động có (i) độ phụ thuộc cao hơn giá trị ngưỡng phụ thuộc và (ii) giá trị đó “gần” với giá trị phụ thuộc đã được chấp nhận trước đó (tức là sự khác biệt với độ phụ thuộc “tốt nhất” là thấp hơn giá trị so với ngưỡng tốt nhất). Tuy nhiên, nếu chúng ta sử dụng Heuristic này trong phạm vi của quy trình có cấu trúc

thấp thì kết quả tạo ra một mô hình phức tạp với tất cả các hoạt động với số lượng kết nối lớn.

Vì các lý do thực tế cần thêm hai hoạt động giả để xác định duy nhất sự bắt đầu và kết thúc của quy trình. Đặc biệt nếu thực tế không có hoạt động bắt đầu và kết thúc rõ ràng (ví dụ nếu có sự kiện lỗi trong bản ghi sự kiện)

Định nghĩa 2.7 (Mở rộng bắt đầu/kết thúc). Cho W là một bản ghi sự kiện trên T. Khi đó W+ là một bản ghi mở rộng thêm hai hoạt động bắt đầu/kết thúc (giả tạo) trên T+ với:

1.T+ = T ∪ {start, end}

2.W+ = {start σ end| σ ∊ W}

Định nghĩa 2.8: (Thuật toán đồ thị phụ thuộc). Cho W là một bản ghi sự kiện trên T, W+ là một bản ghi sự kiện trên T+, σa (giá trị tuyệt đối) ngưỡng phụ thuộc (mặt định 0.9), σL1L ngưỡng vòng lặp độ dài 1 (mặc định 0.9), σL2L ngưỡng các vòng lặp có độ dài 2 (mặt định 0.9) và so với ngưỡng tốt nhất (mặt định 0.05). DG(W+) được định nghĩa như dưới đây [1]:

1.T = {t | ∃σ∊W+ [t ∊ σ]} (tập các hoạt động xuất hiện trong bản ghi), 2.C1 = {(a, a) ∊ T x T | a ⟹ Wa ≥ σL1L} (các vòng lặp độ dài 1), 3. C2 = {(a, b) ∊ T x T| (a, a) ∉ C1 ∧ (b, b) ∉ C1 ∧ a ⟹2 wb ≥ σL2L}

4. Cout = {{(a, b) ∊ T x T | b ≠ End ∧ a ≠ b ∧∀y∊T [a ⟹Wb ≥ a ⟹Wy]} (các hoạt động theo sau mạnh nhất),

5. Cin = {{(a,b) ∊ T x T | a ≠ Start ∧ a ≠ b ∧∀x∊T [a ⟹Wb ≥ x ⟹Wb]} (các hoạt động là nguyên nhân mạnh nhất),

6. C’out = {(a, x) ∊ Cout | (a ⟹Wx) < σa ∧∃(b,y)∊Cout [(a, b) ∊ C2 ∧ ((b ⟹

Wy) - (a ⟹ Wx)) > σr]} (các kết nối đi ra yếu cho vòng lặp có độ dài 2), 7. Cout = Cout – C’out (loại bỏ những kết nối ra yếu),

8. C’in = {( x, a) ∊ Cin | (x ⟹Wa) < σa ∧∃( y, b) ∊ Cin [(a, b) ∊ C2 ∧ ((y ⟹

Wb) - (x ⟹ Wa)) > σr]} (các kết nối đi vào yếu cho vòng lặp có độ dài 2), 9. Cin = Cin – C’in (loại bỏ những kết nối vào yếu),

10. C’’out = {(a, b) ∊ T x T | a ⟹ Wb ≥ σa ∨ | ∃(a, c)∊Cout [((a ⟹ Wc) -(a ⟹ b))< σr]}, 11.C’’in = {(b, a) ∊ T x T | b ⟹ Wa ≥ σa ∨ | ∃(b, c)∊ Cin [((b ⟹ Wc) -(b ⟹ Wa)) < σr]}, 12. DG = C1 ∪ C2 ∪ C’’out ∪ C’’in

Để minh họa ta áp dụng thuật toán DG vào bản ghi sự kiện được tạo thành với mô hình quy trình được đưa ra trong hình 2.7. Các thông tin cơ bản sẽ sử dụng được cho trong các bảng 2.3: đếm các phần tử trực tiếp theo sau (tức là a > wb), bảng 2.4: đếm các vòng lặp có độ dài 2 và bảng 2.5 cho biết độ phụ thuộc giữa các hoạt động.

Bảng 2.3. Đếm tần suất xuất hiện của các mối quan hệ nhân quả giữa các hoạt động (adsbygoogle = window.adsbygoogle || []).push({});

Start A B C D E F G H I J K L End Start 0 1000 0 0 0 0 0 0 0 0 0 0 0 0 A 0 0 520 480 0 0 0 0 0 0 0 0 0 0 B 0 0 0 360 182 198 0 0 0 233 27 0 0 0 C 0 0 338 0 125 128 40 48 8 349 0 0 0 0 D 0 0 0 63 0 0 586 0 0 193 68 5 6 0 E 0 0 0 73 0 0 0 619 0 236 67 0 3 0 F 0 0 0 16 124 134 0 0 327 212 88 0 7 0 G 0 0 0 16 143 145 0 0 359 220 105 0 10 0 H 0 0 0 11 0 0 0 0 0 252 105 614 5 0 I 0 0 119 0 209 236 179 210 166 315 576 0 0 0 J 0 0 23 0 135 155 102 117 118 0 0 381 5 0 K 0 0 0 0 0 0 0 0 0 0 0 0 0 100 L 0 0 0 17 3 2 1 4 9 0 0 0 0 0 End 0 0 0 0 0 0 0 0 0 0 0 0 0 0 # 1000 1000 1000 1036 921 998 908 998 987 2010 1036 1000 36 1000 Bảng 2.4: Đếm số vòng lặp có độ dài 2 (tức là đếm a >>w b).

Giá trị 89 tại vị trí D,F cho biết có 89 mẫu DF trong bản ghi sự kiện

Start A B C D E F G H I J K L End Start 0 0 0 0 0 0 0 0 0 0 0 0 0 0 A 0 0 0 0 0 0 0 0 0 0 0 0 0 0 B 0 0 0 0 0 0 0 0 0 0 0 0 0 0 C 0 0 0 0 0 0 0 0 0 0 0 0 0 0 D 0 0 0 0 0 0 89 0 0 0 0 0 0 0 E 0 0 0 0 0 0 0 104 0 0 0 0 0 0 F 0 0 0 0 110 0 0 0 0 0 0 0 0 0 G 0 0 0 0 0 133 0 0 0 0 0 0 0 0 H 0 0 0 0 0 0 0 0 0 0 0 0 0 0 I 0 0 19 0 40 63 59 97 116 0 0 0 0 0 J 0 0 0 0 0 0 0 0 0 0 0 0 0 0 K 0 0 0 0 0 0 0 0 0 0 0 0 0 0 L 0 0 0 0 0 0 0 0 0 0 0 0 0 0 End 0 0 0 0 0 0 0 0 0 0 0 0 0 0

1. Bước đầu tiên của thuật toán là xây dựng tập A (tập của tất cả các hoạt động xuất hiện trong bản ghi sự kiện),

2. Nhìn vào đường chéo trong bảng 2.3 chỉ có một ứng cử viên cho C1: hoạt động I được theo sau bởi chính nó 315 lần. Giá trị của I ⟹W I = 315/(315+1) = 0.997 ≥ σL1L. Kết quả trong C1 = {(I, I)},

3. Đối với bước này của thuật toán chúng ta sử dụng giá trị trong bảng 2.4. Bảng này chỉ ra rằng mẫu DFD xuất hiện 89 lần trong bản ghi và mẫu FDF xuất hiện 110 lần. Do đó, D ⟹2 WF = (89 + 110)/ (89 + 110 + 1) = 0.995. Bởi vì F ∉ C1 và D ∉ C1 và 0.995 ≥

𝜎L2L, cả (F, D) ∊ C2 và (D, F) ∊ C2.. Lập luận tương tự các tính toán cho mẫu EG ta có

kết quả trong C2 = {(F, D), (D, F), (E, G), (G, E)},

4. Dựa vào bảng 2.5 kiểm tra mỗi hàng ngoại trừ hàng kết thúc cho giá trị cao nhất (hoạt động theo sau mạnh nhất). Cho ví dụ, hoạt động C có giá trị cao nhất (chỗ in đậm) là 0.997 do đó (C, I) nằm trong tập Cout,

5. Dựa vào bảng 2.5 kiểm tra mỗi cột ngoại trừ cột đầu tiên cho giá trị cao nhất (nguyên nhân mạnh nhất). Ví dụ, vì hoạt động K có giá trị cao nhất (chỗ in đậm) là 0.998, do đó (H, K) nằm trong tập Cin,

6,7. Để minh họa, chúng ta lấy 2 hoạt động D và F. Chúng nằm trong một vòng lặp trực tiếp (tức là (D, F) ∊ C2). Kết nối đầu ra mạnh nhất của D bên cạnh F là K (0,833) và từ F là H (0.997). Vì lý do đó (D, K) ∊ C’out (không thực sự cần thiết) và sẽ bị loại bỏ khỏi Cout (trong bước 7). Trong bảng 2.5 các kết nối bị loại bỏ được đánh dấu bằng dấu gạch dưới 8, 9. Tương tự như bước 6 và 7, nhưng thực hiện cho các kết nối đến 10, 11. Phụ thuộc vào giá trị của các tham số thiết lập, các kết nối mở rộng được chấp nhận nếu ngưỡng phụ thuộc tuyệt đối σa (mặc định 0.9) hoặc so với ngưỡng tốt nhất σr (mặc định 0.05) được đáp ứng. Lưu ý rằng các tham số mặc định thiết lập mối quan hệ phụ thuộc giữa D và K là không được chấp nhận bởi vì D ⟹ WK = 0.833 < 0.9 (bảng 2.5). Tuy nhiên, kết nối từ J đến L được chấp nhận bởi vì kết hợp với điều kiện All tasks connected. Trong bảng 2.5 các giá trị phụ thuộc được bổ sung thêm nhờ All tasks connected hiển thị bằng chữ in nghiêng đậm,12. Cuối cùng chúng ta có thể kết hợp thông tin trong các bảng khác để thực hiện bước cuối cùng của thuật toán.

Bảng 2.5: Hiển thị độ phụ thuộc giữa các hoạt động.

Start A B C D E F G H I J K L End Start 0 .999 0 0 0 0 0 0 0 0 0 0 0 0 A 0 0 .998 .998 0 0 0 0 0 0 0 0 0 0 B 0 0 0 .031 .995 .995 0 0 0 .323 .084 0 0 0 C 0 0 0 0 .328 .272 .421 .492 0 .997 0 0 0 0 D 0 0 0 0 0 0 .650 0 0 0 0 .833 .300 0 E 0 0 0 0 0 0 0 .620 0 0 0 0 .167 0 F 0 0 0 0 0 .993 0 0 .997 .0842 0 0 .667 0

A start 1000 G 0 0 0 0 .993 0 0 0 .997 .0232 0 0 .400 0 H 0 0 0 .15 0 0 0 0 0 .205 0 .998 0 0 I 0 0 0 0 .040 0 0 0 0 0 .998 0 0 0 J 0 0 0 0 .328 .395 .073 .054 .058 0 0 .997 .833 0 K 0 0 0 0 0 0 0 0 0 0 0 0 0 .999 L 0 0 0 .944 0 0 0 0 .267 0 0 0 0 0 End 0 0 0 0 0 0 0 0 0 0 0 0 0 0

Bảng 2.6: Đồ thị phụ thuộc kết quả được suy ra từ bảng 2.5.

•X Hoạt động X• {} A {B, C} {A} B {D, E} {A, L} C {I} {B, F, G} D {F} {B, F, G} E {G} {D} F {D, E, H} {E} G {D, E, H} {F, G} H {K} {C, I} I {I, J} {I} J {K, L} {J, H} K {} {J} L {C}

Nếu chúng ta so sánh bảng 2.6 với kết quả của việc áp dụng định nghĩa 2.4 trên C-net được đưa ra trong bảng 2.2 chỉ khác nhau là mất kết nối tần suất thấp từ D đến K. Đồ thị biểu diễn kết quả trên được đưa ra trong hình 2.8 để dễ hình dung hơn, đồ thị này được tăng cường thêm các thông tin bổ sung như: số trong các hộp hoạt động chỉ tần suất xuất hiện của các hoạt động; số trên các cung chỉ độ tin cậy của mối quan hệ phụ thuộc.

Hình 2.8: Đồ thị phụ thuộc kết quả khi sử dụng các tham số mặc định (Kết nối tần suất thấp giữa hoạt động D và K không có trong mô hình).

B start 1000 E start 998 G start 998 D start 921 F start 921 H start 987 K start 1000 C start 1000 I start 1000 J start 1000 L start 36

A start 1000

Như đã nói ở trên, kết nối tần suất thấp từ D đến K bị mất trong đồ thị phụ thuộc DG. Tuy nhiên, nếu sử dụng tham số thiết lập σa = 0.8 và σr = 0.2 thì kết nối tần suất thấp từ D đến K cũng được chấp nhận. Đồ thị kết quả đầy đủ, có kết hợp với tần suất thông tin cho các cung ngưỡng đưa ra trong h ì n h 2 . 9 l ưu ý rằng nếu chúng ta sử dụng điều kiện All task connected, thì tất cả các hoạt động (kể cả các hoạt động tần suất thấp như hoạt động L) sẽ là một phần của mô hình được khai phá. Nếu chúng ta không muốn có các hoạt động có tần suất thấp trong mô hình của chúng ta thì có thể sử dụng thuật toán HM mà không dùng all tasks connected hoặc sử dụng một bộ lọc của ProM để loại bỏ các hoạt động có tần suất thấp ra khỏi bản ghi sự kiện.

Hình 2.9: Đồ thị phụ thuộc kết quả khi thiết lập tham số σa = 0.80 và σr = 0.2 (Kết nối tần suất thấp giữa hoạt động D và K cũng được chấp nhận).

Như vậy, đồ thị phụ thuộc DG đã cung cấp cho chúng ta thông tin về sự phụ thuộc giữa các hoạt động, nhưng các loại tách/nhập chưa khai phá được. Vấn đề này sẽ được khai phá trong bước 2 của thuật toán.

Bước 2: Khai phá của điểm tách/nhập

Bước tiếp theo trong HM là xác định các mối quan hệ tách/nhập tại các nút (tương ứng với tập các hoạt động) của DG. Giả sử ta xét hoạt động A của DG trong bảng 2.6, tập đầu ra của A là {B, C}. Tuy nhiên, điều chúng ta cần biết là hoạt động A luôn được nối tiếp theo sau bởi hoạt động B và C (tức là AND-split) hay chỉ bởi B hoặc C (XOR-split) hoặc hầu hết thời gian với B hoặc C và thỉnh thoảng bởi cả hai (OR-split). Chúng ta sẽ sử dụng một mở rộng đơn giản của C-net (trong định nghĩa 2.3) để mô tả trạng thái của tách và nhập. C-net được mở rộng là một C-net chứa các túi thay vì các tập sao cho nó có thể chỉ ra số lần xuất hiện cụ thể của cặp tách và nhập trong bản ghi sự kiện. Thông tin này là thông tin cơ bản trong việc tính toán thống kê sự đúng đắn của tách/nhập. Việc khai phá tách/nhập của các hoạt động chủ yếu dựa vào: (i) đồ thị phụ thuộc DG và (ii) bản ghi sự kiện chứa thông tin về thứ tự của các

B start 1000 D start 921 F start 998 E start 921 G start 921 H start 987 K start 1000 C start 1000 I start 1000 J start 1000 L start 36

hoạt động.

Định nghĩa 2.9: C-net mở rộng là một bộ (T, I, O) trong đó: - T là tập các hoạt động

- I : T→(𝒫(T)→𝒩) là hàm tần số đầu vào - O: T→(𝒫(T)→𝒩) là hàm tần số đầu ra

Dựa trên thông tin trong bản ghi sự kiện nó chỉ ra rằng hoạt động A (có tần suất xuất hiện là 1000) luôn được theo sau bởi cả hai hoạt động B và C. Trong C-net mở rộng (Bảng 2.7) điều này được biểu diễn trong Output-bag của hoạt động A (tức là O(A) = {{B,C}1000}. Output-bag của hoạt động B (tứa là O(B)={{D467} {E}533} là một ví dụ điển hình của phép chia XOR. (adsbygoogle = window.adsbygoogle || []).push({});

Bảng 2.7: Một C-net mở rộng đối với đồ thị phụ thuộc của Bảng 2.6 với sự liên kết các bản ghi sự kiện với 1000 vết.

I Hoạt động O [] A [{B, C}1000] [{A}1000] B [{D}467, {E}533] [{A}1000, {L}36] C [{I}1036] [{B}467, {F}222, {G}232] D [{F}908, {K}13] [{B}533, {F}215, {G}250] E [{G}998] [{D}908] F [{D}222, {E}215, {H}471] [{E}998] G [{D}232, {E}250, {H}516] [{F}471, {G}516] H [{K}987] [{C}1036, {I}974] I [{I}974, {J}1036] [{I}1036] J [{K}1000, {L}36] [{J, H}987, {J}13] K {} [{J}36] L [{C}36]

Ý tưởng cơ bản đằng sau việc xây dựng C-net mở rộng là khá đơn giản. Chẳng hạn, ta lấy hoạt động A, đồ thị phụ thuộc DG ở bảng 2.6 và vết ABDCIFIJEGHK làm ví dụ. Đầu tiên, chúng ta hãy xét thông tin tách đối với hoạt động A. Bởi vì A● = {B, C}, ●B = {A} và ●C = {A, L} nên chúng ta biết rằng có 2 hoạt động tiềm năng có thể được kích hoạt bởi hoạt động A. Bởi vì cả 2 hoạt động B và C xuất hiện trong vết sự kiện và A là ứng viên gần nhất xuất hiện trước B và C, ta chọn vị trí mà ở đó cả B và C được kích hoạt bởi hoạt động A và tần suất thông tin tách của A được cập nhật với cặp {B, C} (tức là O(A) = O(A) ⨄ [{B, C}]).

của hoạt động B ta thấy B● = {D, E} và ●D = ●E = {B, F, G}. Nghĩa là có 3 hoạt

Một phần của tài liệu GHIÊN CỨU KỸ THUẬT KHAI PHÁ QUY TRÌNH VÀ ỨNG DỤNG XÂY DỰNG QUY TRÌNH KIỂM ĐỊNH CHẤT LƯỢNG GIÁO DỤC TRƯỜNG ĐẠI HỌC PHẠM VĂN ĐỒNG (Trang 47 - 57)