Jump to content

Alpha Miner

From Haidhi Wiki

Alpha Miner adalah algoritma Process Mining pertama yang diciptakan Mr. Wil van der Aalst. Jarang ada orang Indonesia yang bahas algoritma Process Mining so I'll keep it simple. Algoritma jadul tapi ok buat starter pack.

4 Tipe Relationships

  1. Directly Follows
    A > B: event A langsung diikuti oleh event B
  2. Sequence
    A → B: event A langsung diikuti oleh event B, tapi B tidak diikuti oleh A
  3. Parallel
    A || B: jika A diikuti B dan B diikuti A (A > B && B > A)
  4. No Relation
    A # B: kalau A tidak diikuti B dan sebaliknya

Contoh

Misal kita punya event log
e1 = <a, b, c, d, e, g>
e2 = <a, b, c, d, f, g>
e3 = <a, c, d, b, f, g>
e4 = <a, b, d, c, e, g>
e5 = <a, d, c, b, f, g>

lalu event-event ini kita petakan dalam bentuk Footprint Matrix. Dalam Alpha Miner, footprint matrix adalah matrix yang memetakan relasi antar aktivitas dalam event log. Sebenarnya tidak wajib, tapi akan memudahkan ketika kita akan membuat Petri Net.

Footprit Matrix dari Event di atas.

a b c d e f g
a # → → → # # #
b ← # || || # → #
c ← || # || → # #
d ← || || # → → #
e # # ← ← # # →
f # ← # ← # # →
g # # # # ← ← #

Contoh baca:
misal kita lihat semua relasi event a di baris pertama. Artinya:

  • relasi sequence a → b ada di event 1 (e1)
  • relasi sequence a → c ada di event 3 (e3)
  • relasi sequence a → d ada di event 5 (e5)
  • dst

Lalu bagaimana dengan relasi parallel ( || ) ?
contoh lihat relasi antara b dan c. Kedua event ini parallel karena b → c di e1,e2 dan c → b di e5

Petri-Net

Pattern penting petri-net buat Alpha-Miner

Petri-net untuk sequence event (A → B)

Petri-net untuk sequence bercabang misal A → B dan A → C. Tapi B # C (bukan parallel)

Petri-net untuk parallel misal A → B dan A → C. Lalu B || C


sekarang kita mulai dari a. Berdasarkan footmatrix , a punya sequence relation ke b, c, dan d. Lalu b, c, dan d mereka punya relation parallel. Maka kira-kira gini graphnya.


Lalu karena semua event setelah b, c, dan d punya relasi sequence dengan event setelah yaitu f dan e. Maka graphnya:


Lalu dari f dan e ke event terakhir yaitu g. Yang perlu diingat bahwa f dan e tidak punya relasi (#). Maka dari dua event itu panahnya akan menuju ke satu place yang sama (place yang lingkaran itu) alih-alih ke dua place yang berbeda seperi case relasi parallel. Maka Graph finalnya gini:

Contoh di PM4PY

 
import pandas as pd
import pm4py

df = pm4py.format_dataframe(
    pd.read_csv('data/sample_eventlog.csv'), 
    case_id='case_id',
    activity_key='activity',
    timestamp_key='timestamp'
) 

# Alpha Miner
net3, im3, fm3 = pm4py.discover_petri_net_alpha(df)
pm4py.view_petri_net(net3, im3, fm3)

Limitasi Alpha Miner

  • Gak bisa handle loop
  • Kurang efektif buat struktur proses yang kompleks

Reference

https://www.futurelearn.com/info/courses/process-mining/0/steps/15636