Implementasi Metode FP Growth dengan apl

Eferoni Ndruru , S.Kom

BAB I
PENDAHULUAN
1.1 Algoritma FP-Growth
Algoritma FP-Growth merupakan pengembangan dari algoritma Apriori.
Sehingga kekurangan yang dimiliki oleh algoritma Apriori diperbaiki oleh
algoritma FP-Growth. Frequent Pattern Growth (FP-Growth) adalah salah satu
alternatif algoritma yang dapat digunakan untuk menentukan himpunan data yang
paling sering muncul (frequent itemset) dalam sebuah kumpulan data. Pada
algoritma Apriori diperlukan generate candidate untuk mendapatkan frequent
itemset, tetapi algoritma FP-Growth generate candidate tidak dilakukan kerena
FP-Growth menggunakan konsep pembangunan tree dalam pencarian frequent
itemset. Hal inilah yang menyebabkan algoritma FP-Growth lebih cepat jika
dibandingkan dengan algoritma Apriori. Algoritma Apriori harus melakukan
pattern matching berulang-ulang sedangkan dalam algoritma FP-Growth terdapat
banyak kelebihan yang terbukti efisien karena hanya melakukan pemetaan data
atau scan database sebanyak 2 kali untuk membangun struktur tree. Dengan
menggunakan struktur tree algoritma FP-Growth dapat langsung mengekstrak
frequent itemset dari susunan FP-Tree yang telah terbentuk.
Penggalian frequent itemset menggunakan algoritma FP-Growth akan

dilakukan dengan cara membangkitkan struktur data tree atau disebut dengan FPTree. Algoritma FP-Growth dapat dibagi menjadi tiga tahapan utama yaitu :
1. Tahapan pembangkitan conditional pattern base
2. Tahapan pembangkitan conditional FP-Tree
3. Tahapan pencarian frequent itemset
1.2 Perbandingan Algoritma FP-Growth dan Algoritma Apriori
1. Algoritma FP-Growth lebih cepat karena hanya melakukan scan database
dua kali sedangkan algoritma Apriori melakukan scan database berulangulang
2. Algoritma FP-Growth menggunakan kode barang pada prosesnya
sedangkan algoritma Apriori menggunakan nama barang.
3. Algroritma FP-Growth memliliki akurasi rules yang lumayan sedangkan
algoritma Apriori memiliki akurasi rules yang lebih tinggi.
1

Eferoni Ndruru , S.Kom

BAB II
PEMBAHASAN
2.1 Data
Misalnya data yang digunakan adalah data transaksi penjualan sebuah
supermarket dalam satu periode waktu, datanya sebagai berikut :

Tabel 2.1 Data Transaksi
No.
Transaksi
1401

1402
1403

14701

14702

14703
1501
1502
1503
3001

Kode
Barang

20015838
20009722
10006861
20045099
10006861
10000316
10023789
10006861
20009722
10023789
10006861
20037766
10000316
20015838
10006861
20009722
20037766
20009722
10006861
20009722

10000316
20037766

Nama Barang
POCARI SWEAT,MINUMAN ISOTONIK 350mL BTL
POCARI SWEAT,MINUMAN ISOTONIK 500mL BTL
UBM,BISCUIT ARROW BRAND SQUAREPUFF 400g PCK
DIPLOMAT,ROKOK PREMIUM MILD FILTER 16'S BKS
UBM,BISCUIT ARROW BRAND SQUAREPUFF 400g PCK
BENG-BENG,WAFER CHOCOLATE 20g PCK
SEDAAP MIE,MIE INSTANT GORENG 90g PCK
UBM,BISCUIT ARROW BRAND SQUAREPUFF 400g PCK
POCARI SWEAT,MINUMAN ISOTONIK 500mL BTL
SEDAAP MIE,MIE INSTANT GORENG 90g PCK
UBM,BISCUIT ARROW BRAND SQUAREPUFF 400g PCK
HANSAPLAST,PLESTER PLASTIK (10'S) MICKEY
BENG-BENG,WAFER CHOCOLATE 20g PCK
POCARI SWEAT,MINUMAN ISOTONIK 350mL BTL
UBM,BISCUIT ARROW BRAND SQUAREPUFF 400g PCK
POCARI SWEAT,MINUMAN ISOTONIK 500mL BTL

HANSAPLAST,PLESTER PLASTIK (10'S) MICKEY
POCARI SWEAT,MINUMAN ISOTONIK 500mL BTL
UBM,BISCUIT ARROW BRAND SQUAREPUFF 400g PCK
POCARI SWEAT,MINUMAN ISOTONIK 500mL BTL
BENG-BENG,WAFER CHOCOLATE 20g PCK
HANSAPLAST,PLESTER PLASTIK (10'S) MICKEY

2.2 Langkah-Langkah membangun FP-Tree
1. Generate Frequent Itemset
Tabel 2.2 Generate Frequent Itemset
Item
10006861
20045099
10000316
20015838
20009722
10023789
20037766

Frekuensi Kemunculan

6
1
3
2
5
2
3
2

Eferoni Ndruru , S.Kom

Misalnya telah ditentukan minimum supportnya 20% atau minimal 2 transaksi
maka kode barang 22045009 harus dieliminasi. Selanjutnya data yang memiliki
minimum support di urutkan berdasarkan frekuensinya. Hasilnya akan terlihat
seperti tabel di bawah ini :
Tabel 2.2 FP-List
Item
10006861
20009722
20037766

10000316
20015838
10023789

Frekuensi Kemunculan
6
5
3
3
2
2

2. Tambahkan Transaksi ID (TID) pada dataset yang telah diseleksi dengan
minimum support. Fungsi dari TID adalah untuk memberikan nomor urut pada
transaksi setelah membuat FP-List. Urutkan item pada setiap transaksi
berdasarkan frekuensi paling tinggi ke frekuensi yang paling rendah. Kemudian
mulailah membuat tree secara urut berdasarkan TID nya.
Tabel 2.3 TID
TID
1


No. Transaksi
1401

2
3

1402
1403

4

14701

5

14702

6


14703

7

1501

8

1502

9
10

1503
3001

Kode Barang
10006861
20009722
20015838

10006861
10006861
10000316
10023789
10006861
20009722
10023789
20037766
10000316
20015838
10006861
20009722
20009722
20037766
10006861
20009722
10000316
20037766

3


Frekuensi
6
5
2
6
6
3
2
6
5
2
3
3
2
6
5
5
3
6
5
3
3

Eferoni Ndruru , S.Kom

3. Membentuk Frequent Pattern Tree (FP-Tree). FP-Tree merupakan struktur
penyimpanan data yang dimampatkan. FP-Tree dibangun dengan memetakan
setiap data transaksi ke setiap lintasan tertentu dalam FP-Tree. Karena dalam
setiap transaksi yang dipetakan, mungkin ada transaksi yang memiliki item
yang sama, maka lintasannya memungkinkan untuk saling menimpa. Semakin
banyak data transaksi yang memiliki item yang sama, maka proses
pemampatan dengan struktur FP-Tree semakin efektif. Kelebihan dari FP-Tree
adalah hanya memerlukan dua kali pemindaian data transaksi yang terbukti
sangat efisien. FP-Tree dibentuk oleh sebuah akar yang diberi label null,
sekumpulan pohon yang beranggotakan item-item tertentu dari sebuah tabel
frequent header. Setiap simpul dalam FP-Tree mengandung tiga informasi
penting

yaitu

label

item

yang menginformasikan

jenis

item

yang

direpresentasikan item tersebut. Support count, merepresentasikan jumlah
lintasan transaksi yang melalui simpul tersebut. Dan pointer penghubung yang
menghubungkan simpul-simpul dengan label item yang sama antar lintasan
ditandai dengan garis panah putus-putus. Langkah-langkah membangun FPTree adalah sebagai berikut :
a. Pembacaan TID 1
Pada TID 1 terdapat nilai {10006861, 20009722, 20015838} yang kemudian
membentuk lintasan null → 10006861 → 20009722 → 20015838 dengan
support count awal bernilai 1. Untuk lebih lengkapnya dapat dilihat pada
gambar dibawah ini :
Null

10006861:1

20009722:1

20015838:1
Gambar 2.1 FP-Tree TID 1

4

Eferoni Ndruru , S.Kom

b. Pembacaan TID 2
Setelah pembacaan TID 1, maka selanjutnya membaca TID 2 yaitu
{10006861} sehingga nilai dari 10006861 akan bertambah satu sehingga
menjadi 2, tetapi nilai yang lainnya tetap karena tidak ada transaksi dengan
kode barang yang sama dengan pembacaan TID pertama.
Null

10006861:2

20009722:1

20015838:1
Gambar 2.2 FP-Tree TID 2
c. Pembacaan TID 3
Setelah pembacaan TID 2, maka selanjutnya membaca TID 3 yaitu
{10006861, 10000316, 10023789} sehingga nilai 10006861 akan
bertambah satu, sehingga menjadi 3 dan akan membentuk cabang baru
untuk kode transaksi 10000316 dan 10023789 nilai awalnya adalah 1,
seperti gambar di bawah ini.
Null

10006861:3

20009722:1

10000316:1

20015838:1

10023789:1

Gambar 2.3 FP-Tree TID 3

5

Eferoni Ndruru , S.Kom

d. Pembacaan TID 4
Setelah pembacaan TID 3, maka selanjutnya membaca TID 4 yaitu
{10006861, 20009722, 10023789}. Nilai 10006861 akan bertambah 1 lagi
sehingga menjadi 4, dan nilai 20009722 akan bertambah 1 menjadi 2, dan
akan membentuk akar baru atau cabang baru untuk kode barang 10023789
dan nilai awalnya adalah 1. Untuk lebih jelasnya dapat dilihat pada gambar
Null

10006861:4

20015838:1

20009722:2

10000316:1

10023789:1

10023789:1

Gambar 2.4 FP-Tree TID 4
e. Pembacaan TID 5
Setelah pembacaan TID 4, maka selanjutnya membaca TID 5 yaitu
{20037766, 10000316, 20015838}. Disini harus membuat lintasan baru
lagi dengan nilai awal 1, karena kode barang 20037766 belum pernah
terlewati sama sekali. Lebih jelasnya dapat di lihat pada gambar
Null

10006861:4

20015838:1

20009722:2

10000316:1

10023789:1

10023789:1

Gambar 2.5 FP-Tree TID 5

6

20037766:1

20000316:1

20015838:1

Eferoni Ndruru , S.Kom

f. Pembacaan TID 6
Setelah pembacaan TID 5, maka selanjutnya membaca TID 6 yaitu
{10006861, 20009722}, nomer transaksi ini pernah di lewati dan sudah
mempunyai nilai sehingga tinggal di tambahkan saja, nilainya menjadi
10006861 : 5 dan 20009722: 3. Lebih jelasnya langsung lihat gambar
Null

10006861:5

20015838:1

20037766:1

20009722:3

10000316:1

10023789:1

10023789:1

20000316:1

20015838:1

Gambar 2.6 FP-Tree TID 6
g. Pembacaan TID 7
Setelah pembacaan TID 6, maka selanjutnya membaca TID 7 yaitu
{20009722, 20037766}. Kode barang 20009722, 20037766 sama sekali
belum terlewati, maka harus membuat cabang baru dengan nilai awal 1.
Lebih jelasnya langsung lihat pada gambar

20037766:1

20009722:1

Null

10006861:5

20009722:3

20015838:1

10000316:1

10023789:1

10023789:1

Gambar 2.7 FP-Tree TID 7

7

20037766:1

20000316:1

20015838:1

Eferoni Ndruru , S.Kom

h. Pembacaan TID 8
Setelah pembacaan TID 7, maka selanjutnya membaca TID 8 yaitu
{10006861, 20009722}. Kode barang 10006861 telah terlewati sebanyak
5x, dan kode barang 20009722 telah terlewati sebanyak 3x, maka langkah
selanjutnya tinggal menambahkan saja nilainya, sehingga menjadi
10006861 : 6 dan 20009722 : 4. Lebih jelasnya dapat langsung di lihat
pada gambar
Null

20009722:1

20037766:1

10006861:6

20009722:4

20015838:1

20037766:1

10000316:1

10023789:1

10023789:1

20000316:1

20015838:1

Gambar 2.8 FP-Tree TID 8
i. Pembacaan TID 9
Setelah pembacaan TID 8, maka selanjutnya membaca TID 9 yaitu
{1000316}. Kode barang 1000316 belom pernah terlewati, sehingga harus
membuat lintasan baru lagi dengan nilai awal 1. Selengkapnya dapat di
lihat dalam gambar

20037766:1

Null

20009722:1

10006861:6

20015838:1

20009722:4

10000316:1

10023789:1

10023789:1

Gambar 2.9 FP-Tree TID 9

8

1000316:1

20037766:1

20000316:1

20015838:1

Eferoni Ndruru , S.Kom

j. Pembacaan TID 10
Setelah pembacaan TID 9, maka selanjutnya membaca TID 10 yaitu
{20037766}. Sebelumnya kode barang ini telah di lewati sebanyak 1x,
maka langkah selanjutnya tinggal menambahkan saja nilai nya, sehingga
menjadi 2. Selengkapnya dapat di lihat pada gambar

20037766:1

Null

20009722:1

10006861:6

20015838:1

20009722:4

10000316:1

10023789:1

10023789:1

1000316:1

20037766:2

20000316:1

20015838:1

Gambar 2.10 FP-Tree TID 10
Pembacaan TID 10 merupakan proses pembacaan tree yang terakhir dan
didapatkan hasil akhir FP-Tree.
2.3 Menentukan Frequent Itemset
Algoritma FP-Growth menemukan frequent itemset yang berakhiran suffix
tertentu dengan menggunakan metode divide and conquer untuk memecah
problem menjadi subproblem yang lebih kecil. Untuk lebih jelas dapat dilihat
contoh menemukan frequent itemset yang berakhiran 10023789 sebagai berikut.
Setelah mengetahui bahwa item 10023789 adalah item yang frequent, maka
subproblem selanjutnya adalah menemukan frequent itemset dengan akhiran
{10006861,10023789},{20009722,10023789},{20037766,10023789},{10000316
,10023789},{20015838,10023789} dengan cara membangun FP-Tree yang
menyertakan lintasan 10023789 yang disebut dengan Conditional Tree.
Conditional Tree dimaksudkan untuk mencari frequent itemset yang berakhiran
item tertentu. Untuk lebih jelasnya dapat dilihat pada gambar Conditional Tree
berikut ini :

9

Eferoni Ndruru , S.Kom

Null

10006861:6

20009722:4

10000316:1

10023789:1

10023789:1

Gambar 2.11 Conditional Tree
Setelah Conditional Tree terbentuk maka langkah selanjutnya adalah mencari
frequent itemset yang berakhiran 10023789 dengan cara menggabungkannya
dengan item yang lain yang masih dalam satu lintasan baik digabung menjadi 2
itemset maupun menjadi tiga itemset. Sehingga didapatkan hasil frequent itemset
untuk item 10023789 adalah {10023789}, {20009722, 10023789}, {10006861,
20009722,10023789}, {10000316,10023789}, {20037766, 10000316, 10023789}
Seperti itulah langkah yang harus dilakukan untuk menemukan frequent itemset
dari item-item yang lainnya. Setelah didapatkan semua frequent itemset dari setiap
item maka dapat dilihat dalam tabel dibawah ini :
Tabel 2.4 Frequent Itemset
Item
10006861
20009722
20037766
10000316

Frequent Itemset
{10006861}
{20009722},{10006861, 20009722}
{20037766},{20009722, 20037766}
{10000316},{20037766, 10000316},{10006861, 10000316}
{20015838},{20009722,
20015838},{10006861,20009722,20015838},{10000316,20015838}
20015838 ,{20037766,10000316,20015838}
{10023789},{20009722,10023789},{10006861,20009722,10023789
10023789 },{10000316,10023789},{10006861,10000316,10023789}
Dengan metode divide and conquer ini, maka pada setiap langkah rekursif,
algoritma FP-Growth akan membangun sebuah Conditional Tree yang baru dan
membuang item-item yang tidak frequent lagi.

10

Eferoni Ndruru , S.Kom

BAB III
HASIL PEMBAHASAN
3.1 Implementasi Algoritma FP-Growth Manggunakan Software Weka 3.7.4
Data transaksi penjualan ini diolah dengan software weka 3.7.4, untuk bisa
menggunakan software ini, data yang digunakan sebagai masukkan harus dalam
format *.arff ataupun *.csv. untuk mengganti format data dapat digunakan
pengolah data microsoft excel untuk mengganti menjadi format *.csv dan dengan
menggunakan software weka 3.7.4 itu sendiri untuk mengganti menjadi format
*arff.

Gambar 3.1 Tamilan utama weka 3.7.4
Sebelum melakukan proses mining terlebih dahulu dilakukan tahapan
preprocessing yaitu merubah format data agar dapat digunakan dalam software.
Berikut tampilan langkah-langkah yang diperoleh.

11

Eferoni Ndruru , S.Kom

Gambar 3.2 Preprocessing

Gambar 3.3 Hasil Algoritma FP-Growth
Dari hasil yang didapatkan menggunakan software WEKA 3.7.4 dihasilkan 10
rules dan ditampilkan 10 rules yang paling kuat. Berikut rules yang ditemukan :
1.

[10023789=true]: 2 ==> [10006861=true]: 2 lift:(1.67) lev:(0.08)
conv:(0.8)

2.

[20045099=true]: 1 ==> [10006861=true]: 1 lift:(1.67) lev:(0.04)
conv:(0.4)

3.

[10006861=true, 20015838=true]: 1 ==> [20009722=true]: 1



lift:(2) lev:(0.05) conv:(0.5)
4.

[20009722=true, 20015838=true]: 1 ==> [10006861=true]: 1



lift:(1.67) lev:(0.04) conv:(0.4)
5.

[20009722=true, 10023789=true]: 1 ==> [10006861=true]: 1



lift:(1.67) lev:(0.04) conv:(0.4)
6.

[10006861=true, 10000316=true]: 1 ==> [10023789=true]: 1



lift:(5) lev:(0.08) conv:(0.8)
7.

[10000316=true, 10023789=true]: 1 ==> [10006861=true]: 1



lift:(1.67) lev:(0.04) conv:(0.4)
8.

[20037766=true, 10000316=true]: 1 ==> [20015838=true]: 1
lift:(5) lev:(0.08) conv:(0.8)

12



Eferoni Ndruru , S.Kom

9.

[20037766=true, 20015838=true]: 1 ==> [10000316=true]: 1



lift:(3.33) lev:(0.07) conv:(0.7)
10. [10000316=true, 20015838=true]: 1 ==> [20037766=true]: 1



lift:(3.33) lev:(0.07) conv:(0.7)

3.2 Kesimpulan
Berdasarkan penelitian yang telah dilakukan, maka dapat ditarik beberapa
kesimpulan sebagai berikut :
1.

FP-Tree yang terbentuk dapat memampatkan data transaksi yang memiliki
itemset yang sama, sehingga penggunaan memory komputer lebih sedikit dan
proses pencarian frequent itemset menjadi lebih cepat.

2.

Dengan menggunakan algoritma FP-Growth maka pemindaian kumpulan
data transaksi hanya dilakukan dua kali, jauh lebih efisien dibandingkan
algoritma dengan paradigma Apriori.

3.

FP-Growth

merupakan

salah

satu

algoritma

yang

menjadi

dasar

perkembangan beberapa algoritma baru yang lebih efektif, karena
kelebihannya yaitu tidak melakukan pemindaian data transaksi secara
berulang-ulang.

13