PENERAPAN ALGORITMA APRIORI SKRIPSIrepository.usd.ac.id/32279/2/035314041_Full.pdfPENERAPAN...
Transcript of PENERAPAN ALGORITMA APRIORI SKRIPSIrepository.usd.ac.id/32279/2/035314041_Full.pdfPENERAPAN...
PENERAPAN ALGORITMA APRIORI
UNTUK PENCARIAN POLA ASOSIASI BARANG
PADA DATA TRANSAKSI PENJUALAN
(Studi Kasus Pada Toko “Kafe Swalayan”)
SKRIPSI
Diajukan Untuk Memenuhi Salah Satu Syarat
Memperoleh Gelar Sarjana Teknik
Jurusan Teknik Informatika
Disusun Oleh :
Amin Nurdiyanto
035314041
JURUSAN TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2009
APRIORI ALGORITHM IMPLEMENTATION
FOR FINDING GOODS ASSOCIATION RULES
ON TRANSACTION OF SELLING DATA
(Case Study at “Kafe Swalayan” Store)
A THESIS
Presented as Partial Fulfillment of the Requirements
To Obtain the Sarjana Teknik Degree
In Informatics Engineering
By :
Amin Nurdiyanto
035314041
DEPARTMENT OF INFORMATICS ENGINEERING
FACULTY OF SCIENCE AND TECHNOLOGY
SANATA DHARMA UNIVERSITY
YOGYAKARTA
2009
vi
MOTO
Hidup tak selamanya indah.
Kebahagiaan hidup bukan ditentukan oleh materi yang berlimpah, tapi oleh hati yang tentram.
Seperti filosofi padi, semakin dia berisi semakin dia menunduk.
Tak ada yang tak mungkin dalam hidup ini jika kita mau berusaha.
“sepi ing pamrih, rame ing gawe”
vii
HALAMAN PERSEMBAHAN
Karya ilmiKarya ilmiKarya ilmiKarya ilmiah ini saya persembahkan kepada :ah ini saya persembahkan kepada :ah ini saya persembahkan kepada :ah ini saya persembahkan kepada :
Bapak dan Ibu tercinta atas doa, semangat serta dukungan
yang tak terhingga nilainya baik secara moril maupun
materiil.
Adikku tercinta, atas doa, semangat, dan kerelaannya
untuk mengalah, berbagi kasih sayang dari bapak dan ibu.
Almamaterku Teknik Informatika
Universitas Sanata Dharma, khususnya angkatan 2003
viii
ABSTRAK
Transaksi penjualan barang pada suatu toko swalayan menghasilkan data
transaksi yang besar dan disimpan dalam database. Dalam suatu periode waktu
tertentu, data transaksi tersebut bertambah seiring dengan banyaknya transaksi
yang dilakukan oleh konsumen. Data transaksi tersebut dapat di analisa untuk
menghasilkan pengetahuan yang lebih berguna bagi pemilik toko.
Pada Tugas Akhir ini akan dibuat sebuah sistem untuk
mengimplementasikan algoritma Apriori menggunakan teknik Association Rules
Mining untuk menganalisa data transaksi penjualan. Sistem yang dibuat
mengunakan bahasa pemrograman java dan database MySQL.
Hasil akhir yang diperoleh dari implementasi algoritma Apriori untuk
analisa data transaksi adalah pola asosiasi penjualan antar barang. Pengertian
secara sederhana adalah hubungan suatu barang terjual bersamaan dengan barang
apa saja pada transaksi penjualan yang telah terjadi. Hasil analisa tersebut dapat
direkomendasikan kepada pemilik swalayan sebagai pendukung pengambilan
keputusan dalam rangka pengembangan usaha.
ix
ABSTRACT
Goods selling transaction in the department store results large transaction
data and have been saving into database. In a periodic the transaction data grow as
much as transaction has been done by customer. The transaction data can be
analyzed to results more knowledge for owner department store.
In this thesis would be made a system to implemented Apriori algorithm
using Association Rules Mining technique to analyze transaction of selling data.
The system made by using java programming language and MySQL database.
The result that will be achieved by Apriori algorithm implementation for
transaction data analyze is accompanying goods association rules. The Simple of
definition is a goods has been selling be equal to any goods relationship on the
selling transaction that occur. The analysis can be recommended to department
store owner as decision support maker on the trade developing framework.
xi
KATA PENGANTAR
Puji dan syukur saya panjatkan kehadirat Allah SWT yang telah
memberikan rahmat dan karunia-Nya, sehingga saya dapat menyelesaikan Tugas
Akhir ini dengan baik.
Dalam proses penulisan tugas akhir ini saya menyadari bahwa ada begitu
banyak pihak yang telah memberikan perhatian dan bantuan dengan caranya
masing-masing sehingga tugas akhir ini dapat diselesaikan. Oleh karena itu saya
ingin mengucapkan terima kasih antara lain kepada :
1. Bapak Yosef Agung Cahyanta, S.T., M.T. selaku Dekan Fakultas Sains dan
Teknologi Universitas Sanata Dharma Yogyakarta.
2. Ibu Ridowati Gunawan, S.Kom., M.T., selaku Dosen Pembimbing Tugas
Akhir dan Pembimbing Akademik, yang telah banyak memberikan
bimbingan, dukungan, motivasi dan waktu untuk membimbing saya
sehingga saya dapat menyelesaikan tugas akhir ini dengan baik.
3. Bapak Puspaningtyas Sanjaya Adi, S.T., M.T., selaku Ketua Jurusan Teknik
Informatika.
4. Bapak Alb. Agung Hadhiatma, S.T., M.T., dan bapak Eko Hari Parmadi
S.Si., M.Kom., selaku panitia penguji yang telah memberikan banyak kritik
dan saran demi sempurnanya tugas akhir saya.
5. Seluruh staff dosen Teknik Informatika Universitas Sanata Dharma yang
telah banyak memberikan bekal ilmu, arahan, dan pengalaman selama saya
menempuh studi.
xii
6. Seluruh staff Sekretariat Sains dan Teknologi Universitas Sanata Dharma,
yang banyak membantu saya dalam urusan administrasi akademik.
7. Staff laboran Teknik Informatika, terima kasih atas bantuannya dalam
mempersiapkan laboratorium untuk praktikum saya.
8. Ibu Novi selaku pemilik toko Kafe Swalayan yang telah memberikan data
kepada saya guna keperluan tugas akhir ini.
9. Bapak dan Ibu tercinta, terima kasih atas doa, semangat, dukungan dan
cintanya sehingga saya bisa menyelesaikan studi dengan lancar.
10. Teman-teman Teknik Informatika khususnya angkatan 2003, terima kasih
atas bantuan, ilmu, dan persahabatan yang telah kita bagi.
11. Seluruh pihak yang telah membantu dalam proses penulisan tugas akhir ini
yang tidak bisa saya sebutkan satu per satu.
Dengan rendah hati saya menyadari bahwa tugas akhir ini masih jauh dari
sempurna, oleh karena itu kritik dan saran untuk perbaikan tugas akhir ini sangat
saya harapkan. Akhir kata, semoga tugas akhir ini bermanfaat bagi semua pihak.
Terima kasih.
Yogyakarta, 27 Februari 2009
Amin Nurdiyanto
xiii
DAFTAR ISI
HALAMAN JUDUL BAHASA INDONESIA
HALAMAN JUDUL BAHASA INGGRIS
HALAMAN PERSETUJUAN ..................................................................................
HALAMAN PENGESAHAN ...................................................................................
PERNYATAAN KEASLIAN KARYA ...................................................................
MOTO .......................................................................................................................
HALAMAN PERSEMBAHAN ...............................................................................
ABSTRAK ................................................................................................................
ABSTRACT ..............................................................................................................
LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH
UNTUK KEPENTINGAN AKADEMIS .................................................................
KATA PENGANTAR ..............................................................................................
DAFTAR ISI .............................................................................................................
DAFTAR GAMBAR ................................................................................................
DAFTAR TABEL ....................................................................................................
DAFTAR RUMUS ...................................................................................................
iii
iv
v
vi
vii
viii
ix
x
xi
xiii
xx
xxiii
xxiv
BAB I. PENDAHULUAN
1.1 Latar Belakang Masalah .......................................................................
1.2 Rumusan Masalah ................................................................................
1.3 Batasan Masalah ...................................................................................
1
3
3
xiv
1.4 Tujuan Penelitian .................................................................................
1.5 Manfaat Penelitian ...............................................................................
1.6 Metodologi Penelitian ..........................................................................
1.7 Sistematika Penulisan ........................................................................
BAB II. LANDASAN TEORI
2.1 Data Mining .......................................................................................
2.2 Proses Data Mining ...........................................................................
2.3 Association Rules ..............................................................................
2.4 Algoritma Apriori ..............................................................................
BAB III. ANALISIS DAN DESAIN SISTEM
3.1 Analisis Sistem ..................................................................................
3.1.1 Gambaran Umum Sistem ......................................................
3.1.2 Use Case Diagram .................................................................
3.1.3 Class Diagram .......................................................................
3.1.4 Activity Diagram ....................................................................
3.1.4.1 Activity Diagram Sistem Kasir ...................................
3.1.4.1.1 Activity Diagram Login Kasir ........................
3.1.4.1.2 Activity Diagram Mencatat Data Transaksi ...
3.1.4.1.3 Activity Diagram Logout Kasir ......................
3.1.4.2 Activity Diagram Sistem Admin .................................
3.1.4.2.1 Activity Diagram Login Admin .....................
4
4
4
5
7
7
9
11
13
20
20
20
24
25
25
25
22
26
27
26
27
xv
3.1.4.2.2 Activity Diagram Menambah Data Barang ...
3.1.4.2.3 Activity Diagram Mengedit Data Barang ......
3.1.4.2.4 Activity Diagram Menghapus Data Barang ...
3.1.4.2.5 Activity Diagram Mencetak Data Barang ......
3.1.4.2.6 Activity Diagram Menambah Data User .......
3.1.4.2.7 Activity Diagram Mengedit Data User …......
3.1.4.2.8 Activity Diagram Menghapus Data User .......
3.1.4.2.9 Activity Diagram Mencetak Data User .........
3.1.4.2.10 Activity Diagram Melihat Data Transaksi ..
3.1.4.2.11 Activity Diagram Mencetak Data Transaksi
3.1.4.2.12 Activity Diagram Melakukan Pencarian
Pola Asosiasi Barang .................................
3.1.4.2.13 Activity Diagram Mencetak Data Asosiasi
Barang ........................................................
3.1.4.2.14 Activity Diagram Logout Kasir ...................
3.1.5 Sequence Diagram .................................................................
3.1.5.1 Sequence Diagram Sistem Kasir ................................
3.1.5.1.1 Sequence Diagram Login Kasir .....................
3.1.5.1.2 Sequence Diagram Mencatat Data Transaksi
3.1.5.1.3 Sequence Diagram Logout Kasir ...................
3.1.5.2 Sequence Diagram Sistem Admin ..............................
3.1.5.2.1 Sequence Diagram Login Admin ..................
3.1.5.2.2 Sequence Diagram Menambah Data Barang
28
29
30
30
31
32
33
33
34
34
35
36
36
37
37
37
38
39
39
39
40
xvi
3.1.5.2.3 Sequence Diagram Mengedit Data Barang ...
3.1.5.2.4 Sequence Diagram Menghapus Data Barang
3.1.5.2.5 Sequence Diagram Mencetak Data Barang ...
3.1.5.2.6 Sequence Diagram Menambah Data User ....
3.1.5.2.7 Sequence Diagram Mengedit Data User .......
3.1.5.2.8 Sequence Diagram Menghapus Data User ....
3.1.5.2.9 Sequence Diagram Mencetak Data User .......
3.1.5.2.10 Sequence Diagram Melihat Data Transaksi
3.1.5.2.11 Sequence Diagram Mencetak Data
Transaksi ....................................................
3.1.5.2.12 Sequence Diagram Melakukan Pencarian
Pola Asosiasi Barang .................................
3.1.5.2.13 Sequence Diagram Mencetak Data
Asosiasi Barang ..........................................
3.1.5.3 Sequence Diagram Logout Kasir ................................
3.2 Desain Sistem ....................................................................................
3.2.1 ER Diagram ............................................................................
3.2.2 Desain Database ....................................................................
3.2.3 Desain Antar Muka (User Interface Design) .........................
3.2.3.1 Form Login ................................................................
3.2.3.2 Form Utama Sistem Kasir ..........................................
3.2.3.3 Form Transaksi ...........................................................
3.2.3.4 Form Utama Sistem Admin .......................................
41
42
43
44
45
46
47
48
49
50
51
51
52
52
52
56
56
56
57
57
xvii
3.2.3.5 Form Daftar User .......................................................
3.2.3.6 Form Daftar Barang ...................................................
3.2.3.7 Form Daftar Transaksi ...............................................
3.2.3.8 Form Perhitungan Apriori ..........................................
3.2.3.9 Form Perhitungan Apriori - Mengambil Data
Transaksi ....................................................................
3.2.3.10 Form Perhitungan Apriori - Mengambil Data
Transaksi ....................................................................
3.2.3.11 Form Perhitungan Apriori - Cleaning Data ..............
3.2.3.12 Form Perhitungan Apriori - Pencarian Pola Asosiasi
Barang ........................................................................
3.2.3.13 Form Perhitungan Apriori - Hasil Analisa ................
BAB IV. IMPLEMENTASI SISTEM
4.1 Spesifikasi Hardware dan Software yang Digunakan .......................
4.1.1 Spesifikasi Hardware ............................................................
4.1.2 Spesifikasi Software ..............................................................
4.2 Pembuatan Database .........................................................................
4.3 Koneksi Java dan MySQL .................................................................
4.4 Pembuatan Antar Muka .....................................................................
4.4.1 Form Login User ..................................................................
4.4.2 Form Utama Sistem Kasir ....................................................
4.4.3 Form Transaksi .....................................................................
58
58
59
59
60
60
61
62
62
63
63
63
63
64
64
66
66
67
68
xviii
4.4.4 Form Utama Sistem Admin ..................................................
4.4.5 Form Daftar User ..................................................................
4.4.6 Form Daftar Barang ..............................................................
4.4.7 Form Daftar Transaksi ..........................................................
4.4.8 Form Perhitungan Apriori – Langkah-langkah Perhitungan
Apriori ............................................................................
4.4.9 Form Perhitungan Apriori – Pemilihan Data Dari Database
4.4.10 Form Perhitungan Apriori – Pemilihan Data Dari Database
Sistem dan Preprosesing/Cleaning Data ........................
4.4.11 Form Perhitungan Apriori – Pemilihan Data Dari Database
Sistem dan Preprosesing/Cleaning Data ........................
4.4.12 Form Perhitungan Apriori – Data Hasil
Preprosesing/Cleaning ...................................................
4.4.13 Form Perhitungan Apriori – Pencarian Pola Asosiasi
Barang ............................................................................
4.4.14 Form Perhitungan Apriori – Menganalisa Aturan Asosiasi ..
4.4.15 Form Perhitungan Apriori – Pembacaan Grafik Support .....
4.4.16 Form Perhitungan Apriori – Pembacaan Grafik Confidence
BAB V. ANALISIS HASIL
5.1 Analisis Pengujian Sistem .................................................................
5.2 Analisis Manfaat Sistem ....................................................................
5.3 Kelebihan dan Kekurangan Sistem ...................................................
70
71
72
73
74
75
76
77
79
80
99
100
101
102
102
106
106
xix
5.3.1 Kelebihan Sistem ...........................................................
5.3.2 Kekurangan Sistem ........................................................
BAB VI. PENUTUP
6.1 Kesimpulan ........................................................................................
6.2 Saran ..................................................................................................
DAFTAR PUSTAKA
106
107
108
108
109
xx
DAFTAR GAMBAR
Gambar Keterangan Halaman
2.1 Proses KDD 9
2.2 Proses Data Mining 12
3.1 Use Case Diagram 24
3.2 Class Diagram 24
3.3 Activity Diagram Login Kasir 25
3.4 Activity Diagram Mencatat Data Transaksi 26
3.5 Activity Diagram Logout Kasir 27
3.6 Activity Diagram Login Admin 27
3.7 Activity Diagram Menambah Data Barang 28
3.8 Activity Diagram Mengedit Data Barang 29
3.9 Activity Diagram Menghapus Data Barang 30
3.10 Activity Diagram Mencetak Data Barang 30
3.11 Activity Diagram Menambah Data User 31
3.12 Activity Diagram Mengedit Data User 32
3.13 Activity Diagram Menghapus Data User 33
3.14 Activity Diagram Mencetak Data User 33
3.15 Activity Diagram Melihat Data Transaksi 34
3.16 Activity Diagram Mencetak Data Transaksi 34
3.17 Activity Diagram Melakukan Pencarian Pola Asosiasi
Barang
35
3.18 Activity Diagram Mencetak Data Asosiasi Barang 36
3.19 Activity Diagram Logout Admin 36
3.20 SequenceDiagram Login Kasir 37
3.21 SequenceDiagram Mencatat Data Transaksi 38
3.22 Sequence Diagram Logout Kasir 39
3.23 Sequence Diagram Login Admin 39
3.24 Sequence Diagram Menambah Data Barang 40
xxi
3.25 Sequence Diagram Mengedit Data Barang 41
3.26 Sequence Diagram Menghapus Data Barang 42
3.27 Sequence Diagram Mencetak Data Barang 43
3.28 Sequence Diagram Menambah Data User 44
3.29 Sequence Diagram Mengedit Data User 45
3.30 Sequence Diagram Menghapus Data User 46
3.31 Sequence Diagram Mencetak Data User 47
3.32 Sequence Diagram Melihat Data Transaksi 48
3.33 Sequence Diagram Mencetak Data Transaksi 49
3.34 Sequence Diagram Melakukan Pencarian Pola Asosiasi
Barang
50
3.35 Sequence Diagram Mencetak Data Asosiasi Barang 51
3.36 Sequence Diagram Logout Admin 51
3.37 ER Diagram 52
3.38 Form Login 56
3.39 Form Utama Sistem Kasir 56
3.40 Form Transaksi 57
3.41 Form Utama Sistem Admin 57
3.42 Form Daftar User 58
3.43 Form Daftar Barang 58
3.44 Form Daftar Transaksi 59
3.45 Form Utama Perhitungan Apriori 59
3.46 Form Perhitungan Apriori - Mengambil Data Transaksi 60
3.47 Form Perhitungan Apriori - Mengambil Data Transaksi 61
3.48 Form Perhitungan Apriori - Cleaning Data 61
3.49 Form Perhitungan Apriori - Pencarian Asosiasi Barang 62
3.50 Form Perhitungan Apriori - Hasil Analisa 62
4.1 Form Login User 66
4.2 Form Utama Sistem Kasir 67
4.3 Form Transaksi Kasir 68
xxii
4.4 Form Utama Sistem Admin 70
4.5 Form Daftar User 71
4.6 Fom Daftar Barang 72
4.7 Form Daftar Transaksi 73
4.8 Form Perhitungan Apriori - Langkah-langkah
Perhitungan Apriori
74
4.9 Form Perhitungan Apriori - Pemilihan Data Dari
Database
75
4.10 Form Perhitungan Apriori - Pemilihan Data Dari
Database Sistem dan Preprosesing/Cleaning Data
76
4.11 Form Perhitungan Apriori - Pemilihan Data Dari
Database di Luar Sistem dan Preprosesing/Cleaning
Data
78
4.12 Form Perhitungan Apriori - Pemilihan Data Dari
Database di Luar Sistem dan Preprosesing/Cleaning
Data
79
4.13 Form Perhitungan Apriori - Pencarian Pola Asosiasi
Barang
80
4.14 Form Perhitungan Apriori - Menganalisa Aturan
Asosiasi
99
4.15 Form Perhitungan Apriori - Pembacaan Grafik Support 100
4.16 Form Perhitungan Apriori - Pembacaan Grafik
Confidence
101
xxiii
DAFTAR TABEL
Tabel Keterangan Halaman
2.1 Tabel Data Transaksi AllElectronic 15
2.2 Tabel Candidate Itemset C1 16
2.3 Tabel Large 1-itemset L1 16
2.4 Tabel Candidate Itemset C2 17
2.5 Tabel Large 2-temset L2 17
2.6 Tabel Candidate Itemset C3 18
2.7 Tabel Large 3-itemset L3 18
2.8 Tabel Hasil Aturan Asosiasi 19
3.1 Tabel Barang 52
3.2 Tabel Transaksi 53
3.3 Tabel Cleaning 53
3.4 Table Rule 53
3.5 Tabel Largeitem 54
3.6 Tabel Candidate 54
3.7 Tabel Staff 55
3.8 Tabel Login 55
5.1 Tabel Pengujian 1 102
5.2 Tabel Pengujian 2 103
5.3 Tabel Pengujian 3 104
5.4 Tabel Pengujian 4 105
xxiv
DAFTAR RUMUS
Rumus Keterangan Halaman
2.1 Nilai Support )( BA⇒ 12
2.2 Nilai Confidence )( BA⇒ 12
1
BAB I
PENDAHULUAN
1.1. Latar Belakang Masalah
Dewasa ini teknologi informasi berkembang pesat seiring dengan
peningkatan kebutuhan pengolahan data untuk memperoleh informasi yang lebih
berguna. Penelitian dari berbagai disiplin ilmu dilakukan untuk menemukan
metode dalam rangka memenuhi kebutuhan tersebut. Salah satu cabang ilmu
teknologi informasi yang dikembangkan sebagai metode adalah data mining. Data
mining merupakan ilmu yang mempelajari tentang penggalian pengetahuan baru
dari suatu data di dalam database agar lebih bermanfaat. Dalam cakupannya data
mining memiliki keterkaitan dengan berbagai disiplin ilmu yang lain, seperti
statistik, Artificial Intellegence (AI), dan pengolahan citra gambar. Sehingga dapat
diterapkan di berbagai bidang yang menggunakan peran teknologi informasi
sebagai pendukungnya. Beberapa penerapan tersebut diantaranya adalah untuk
analisa dibidang pemasaran, telekomunikasi, asuransi, keuangan, astronomi,
kedokteran, dan lain-lain.
Salah satu penerapan data mining dalam analisa pemasaran adalah untuk
analisa keranjang belanja (Market Basket Analysis) pada suatu pasar. Sebagai
contoh adalah pada sebuah toko swalayan. Dari sekian banyak transaksi penjualan
pada toko swalayan akan mengandung data penjualan barang dengan pola yang
berbeda. Di dalam database data transaksi tersebut
2
ukurannya bisa mencapai ribuan bahkan jutaan byte dan biasanya data transaksi
tersebut hanya dibiarkan menumpuk begitu saja sebagai data yang tidak berguna.
Maka dari itu perlu adanya suatu cara untuk memanfaatkan data transaksi tersebut
agar lebih berguna. Salah satu cara yang bisa digunakan untuk pemanfaatan data
transaksi tersebut adalah dengan menerapkan konsep data mining. Data mining
digunakan untuk menganalisa pola penjualan barang dari data transaksi penjualan
sehingga akan diperoleh suatu pengetahuan baru mengenai pola asosiasi penjualan
suatu barang dengan barang lain. Atau dapat dijelaskan sebagai cara untuk
mengetahui hubungan barang apa saja yang dibeli pelanggan secara bersamaan
dalam sekian banyak transaksi. Hal ini merupakan pengetahuan yang bermanfaat
bagi pemilik toko swalayan untuk mengatur strategi penjualan barang di tokonya,
yang tidak lain adalah sebagai pendukung keputusan untuk pengembangan usaha.
Pada penelitian analisa keranjang belanja yang telah dilakukan, digunakan
teknik Association Rules dengan algoritma FP Growth1. Hasil yang diperoleh
berupa pengetahuan mengenai hubungan antara penjualan suatu barang dengan
barang lain untuk rekomendasi pembeli dan penjual pada suatu situs e-commerce.
Maka pada tugas akhir ini akan dilakukan penelitian analisa keranjang belanja
menggunakan teknik Association Rules dengan algoritma Apriori yang
diaplikasikan pada sebuah sistem pencarian pola asosiasi barang. Hasil penelitian
diharapkan dapat memberikan pengetahuan kepada pemilik toko swalayan untuk
mengatur strategi penjualan.
1I Gede Sudiadiarta, Market Basket Analysis Menggunakan Algoritma Frequent Pattern Growth (FP-Growth) Untuk Situs E-Commerce: Universitas Sanata Dharma Yogyakarta, Skripsi, 2006.
3
1.2. Rumusan Masalah
Bagaimana menerapkan algoritma Apriori pada data mining untuk analisa
data transaksi penjualan sehingga dapat diketahui pola asosiasi penjualan suatu
barang terhadap barang lain?
1.3. Batasan Masalah
Batasan masalah pada tugas akhir ini adalah sebagai berikut :
1. Proses analisa data dilakukan berdasarkan data transaksi secara keseluruhan
atau periodik untuk data dari database sistem dan secara keseluruhan untuk
data dari database di luar sistem dengan menggunakan database MySQL.
2. Sistem tidak menangani data dalam bentuk file, misal file Microsoft Office
Excel (*.xls) atau file dalam format Comma Separated Values (*.csv).
3. Hasil analisa berupa pengetahuan pola asosiasi penjualan antar barang yang
disajikan dalam bentuk file cetak, grafik, dan tabel.
4. Proses pencarian kandidat itemset dibatasi sampai dengan kombinasi 10
barang.
5. Proses pencarian pola asosiasi dibatasi untuk kombinasi 2 barang yaitu
asosiasi BA⇒ dan kombiasi 3 barang yaitu asosiasi CAB⇒ .
4
1.4. Tujuan Penelitian
Penelitian dalam Tugas Akhir ini memiliki tujuan, yaitu menerapkan
algoritma Apriori sebagai metode pada data mining untuk menganalisa data
transaksi penjualan, sehingga dapat diperoleh pengetahuan mengenai hubungan
penjualan suatu barang dengan barang lain.
1.5. Manfaat Penelitian
Manfaat dari penelitian ini lebih difokuskan bagi pemilik swalayan.
Adapun manfaat tersebut adalah sebagai berikut :
1. Memperoleh pengetahuan mengenai hubungan penjualan suatu barang
terhadap barang lain dari transaksi penjualan.
2. Dari pengetahuan tersebut, pemilik swalayan dapat mengatur strategi
penjualan tentang barang-barang yang terjual bersamaan dalam beberapa
transaksi.
1.6. Metodologi Penelitian
Metodologi penelitian yang digunakan untuk membuat aplikasi ini adalah :
1. Menerapkan metodologi pemrograman berorientasi objek dalam
pengembangan sistem.
2. Menerapkan metode data mining, yaitu :
a. Menyiapkan suatu set target data transaksi penjualan yang akan dikenai
proses knowledge discovery.
5
b. Melakukan data cleaning and preprocessing, yaitu dengan cara
merestrukturisasi field yang tidak sesuai dengan target data.
c. Mengubah data menjadi bentuk yang sesuai untuk di-mining, atau disebut
juga dengan transformasi data.
d. Mengaplikasikan teknik data mining, berupa pencarian hubungan
penjualan suatu barang dengan barang lain menggunakan algoritma
Apriori.
e. Mengevaluasi pola yang ditemukan dari hasil aplikasi teknik data mining
untuk menemukan pengetahuan yang bermanfaat.
f. Melakukan presentasi pengetahuan yang didapatkan.
1.7. Sistematika Penulisan
BAB I PENDAHULUAN
Bab ini menjelaskan latar belakang masalah, rumusan masalah,
batasan masalah, tujuan penelitian, manfaat penelitian, serta
sistematika penulisan laporan dari penelitian yang akan dilakukan.
BAB II LANDASAN TEORI
Bab ini berisi penjelasan tentang teori-teori yang digunakan untuk
memecahkan masalah yang akan diteliti.
BAB III ANALISIS DAN PERANCANGAN SISTEM
Bab ini membahas mengenai analisis dan perancangan sistem yang
akan dikerjakan dalam penelitian.
6
BAB IV IMPLEMENTASI SISTEM
Bab ini berisi penjelasan mengenai implementasi sistem sesuai
dengan analisis dan rancangan sistem ke dalam bentuk program.
BAB V ANALISIS HASIL IMPLEMENTASI
Bab ini merupakan analisis dari implementasi sistem yang telah
dibuat.
BAB VI PENUTUP
Bab ini berisi kesimpulan yang diperoleh dari penelitian yang
dikerjakan, serta saran untuk pengembangan sistem lebih lanjut.
7
BAB II
LANDASAN TEORI
2.1. Data Mining
Data mining atau sering disebut sebagai Knowledge Discovery in
Database (KDD) didefinisikan sebagai suatu proses nontrivial untuk
mengidentifikasi keabsahan, potensi bermanfaat, dan pola akhir yang dapat
dimengerti dari data2. Data mining adalah proses secara otomatis untuk
menemukan informasi yang bermanfaat di dalam gudang data yang besar3.
Dari pengertian tersebut data mining mempunyai tujuan untuk
memperoleh pengetahuan baru yang lebih berarti dari proses penggalian data yang
tersimpan didalam database. Secara umum data mining mempunyai 2 tujuan,
yaitu :
1. Deskriptif
Data mining dilakukan untuk mencari pola-pola yang dapat dipahami manusia
yang menjelaskan karakteristik data. Beberapa metode yang digunakan untuk
tujuan ini adalah :
1.1. Association Rules
Metode untuk mencari pola asosiasi yang sering muncul dalam data.
Teknik yang digunakan misalnya algoritma Apriori dan FP-Growth.
2 Fayyad, U. M., G. Piatetsky-Shapiro, P. Smyth, R. Uthurusamy, editor, Advances in Knowledge Discovery and Data Mining, MIT Press, Menlo Park, CA, 1996. http://www2.cs.uregina.ca/~dbd/cs831/notes/kdd/ - akses terakhir tanggal 23 Oktober 2008, 23:35. 3 Pang-Ning Tan, Michael Steinbach, Vipin Kumar, Introduction to Data Mining. Boston : Pearson Addison Wesley, 2006.
8
1.2. Summarization
Metode untuk memetakan data ke dalam subset yang lebih ringkas dari
keseluruhan atau sebagian data.
1.3. Clustering
Proses untuk mengelompokkan data ke dalam sebuah cluster berdasarkan
kemiripannya. Prinsipnya adalah memaksimalkan kemiripan dalam sebuah
cluster, dan meminimalisasikan kemiripan antar cluster. Beberapa teknik
yang digunakan misalnya k-means, k-medoids.
2. Prediktif
Data mining dilakukan untuk membentuk sebuah model pengetahuan yang
akan digunakan untuk melakukan prediksi. Adapun metode yang digunakan
adalah sebagai berikut :
2.1. Classification
Classification adalah proses untuk menemukan model atau fungsi yang
menjelaskan atau membedakan konsep atau kelas data, dengan tujuan
untuk dapat memperkirakan kelas dari suatu objek yang labelnya tidak
diketahui. Beberapa teknik yang termasuk dalam metode ini antara lain
Decission Tree, Neural Network, Bayesian Network, dan k-nearest
Neighbour.
2.2. Regression
Merupakan proses memetakan data item menjadi sebuah angka nyata (real
value) dari nilai variabel prediksi.
9
2.2. Proses Data Mining
Data mining mengacu pada aplikasi algoritma untuk mendapatkan pola
dari data tanpa langkah-langkah tambahan dalam proses KDD. Proses KDD
diilustrasikan pada gambar 2.1 berikut4:
Gambar 2.1. Proses KDD
Proses KDD pada gambar 2.1 dapat dijelaskan sebagai berikut :
1. Mengembangkan pemahaman mengenai aplikasi yang menyangkut
pengetahuan terlebih dahulu serta tujuan dari proses KDD bagi pengguna
akhir.
2. Menciptakan suatu set target data melalui pemilihan suatu data set, atau
memusatkan pada suatu subset variabel, atau contoh data, dimana proses
penemuan dilakukan.
4 Fayyad, U. M., G. Piatetsky-Shapiro, P. Smyth, R. Uthurusamy, editor, Advances in Knowledge Discovery and Data Mining, MIT Press, Menlo Park, CA, 1996. http://www2.cs.uregina.ca/~dbd/cs831/notes/kdd/ - akses terakhir tanggal 17 Oktober 2008, 23:35.
10
3. Data cleaning and preprocessing merupakan proses untuk menghilangkan
noise, mengumpulkan informasi yang dibutuhkan untuk pemodelan atau
perhitungan bagi noise, menentukan strategi untuk menangani field data yang
hilang, dan menghitung informasi berdasarkan urutan waktu dan perubahan
yang ditemukan.
4. Data reduction and projection adalah proses menemukan corak yang
bermanfaat untuk menyajikan data yang sesuai dengan tujuan dari tugas. Serta
menggunakan pengurangan dimensi atau perubahan bentuk metode untuk
mengurangi jumlah variabel yang efektif atau untuk menemukan penyajian
yang sama dari data dalam pembahasan.
5. Menganalisa task data mining untuk memutuskan tujuan dari proses KDD,
apakah itu berupa classification, regression, clustering, atau task lainnya.
6. Memilih algoritma data mining melalui pemilihan metode untuk digunakan
dalam mencari pola dari data, memutuskan parameter dan model yang sesuai,
serta mencocokan metode khusus dari data mining dengan keseluruhan proses
KDD.
7. Melakukan data mining itu sendiri, yaitu mencari pola yang sesuai dari bentuk
representasi tertentu atau suatu set representasi tersebut, seperti association
rules, regression, clustering, dan sebagainya.
8. Menafsirkan pola yang didapatkan dari penggalian data, juga dapat melibatkan
visualisasi dari pola yang sudah digali dan pemodelan atau visualisasi dari
data yang berasal dari model-model yang sudah digali.
11
9. Penerapan dari pengetahuan yang ditemukan, baik itu dengan menggunakan
pengetahuan secara langsung, menggabungkan pengetahuan tersebut ke dalam
sistem yang lain untuk langkah lebih lanjut, atau melakukan dokumentasi
sederhana dan membuat laporan untuk pihak yang tertarik.
Meskipun demikian, proses KDD tersebut tidak selalu digunakan sepenuhnya
pada penerapannya. Hal tersebut lebih disesuaikan pada kebutuhan aplikasi dan
karakteristik data.
2.3. Association Rules
Association Rules merupakan suatu metode data mining untuk mencari
pola asosiasi yang sering muncul dalam data. Metode ini menjadi popular karena
sering digunakan untuk menganalisa keranjang belanja (Market Basket Analysis).
Aturan asosiasi yang terbentuk adalah sebuah implikasi atau “if-then-rule” yang
didukung oleh data. Bentuk dasar dari aturan asosiasi adalah Β⇒Α .
Didefinisikan jika A terjadi dalam transaksi, maka B pun terjadi dalam transaksi
yang sama.
Istilah penting dalam Association Rules yaitu :
1. Item, Itemset, dan k-Itemset
Sebuah nilai atribut disebut dengan item, sedangkan kumpulan dari beberapa
item disebut dengan itemset. k-Itemset merupakan itemset yang berisi k item.
2. Support
Merupakan persentasi dari transaksi yang mengandung seluruh itemset.
12
tuplenkeseluruhajumlah
BdanAmengandungyangtuplejumlahBASupport
__
______)( =⇒
.............. Rumus 2.1 Nilai Support )( BA⇒
3. Confidence.
Confidence merupakan persentasi banyaknya A pada transaksi yang
mengandung B.
Amengandungyangtuplejumlah
BdanAmengandungyangtuplejumlahBAConfidence
____
______)( =⇒
………. Rumus 2.2 Nilai Confidence )( BA⇒
Support dan confidence merupakan parameter yang digunakan untuk
mengukur aturan asosiasi. Sehingga aturan asosiasi dapat diperoleh dari itemset
yang mempunyai support dan confidence lebih besar dari minimum support
(disebut minsup) dan minimum confidence (disebut minconf).
Permasalahan mendasar dalam Association Rules dibagi menjadi dua,
yaitu5:
1. Menemukan seluruh itemset yang memiliki support >= minsup.
Itemset yang memilki support lebih besar atau sama dengan minsup disebut
dengan large itemset (l-itemset), sedangkan itemset yang memiliki support
lebih kecil dari minimum support disebut dengan small itemset.
2. Menggunakan large itemset untuk menghasilkan aturan asosiasi yang
diinginkan. 5 Rakesh Agrawal and Ramakrishnan Srikant, Fast Algorithms for Mining Association Rules : Article, IBM Almaden Research Center, 1996. http://rakesh.agrawal-family.com/papers/vldb94apriori.pdf - akses terakhir tanggal 17 Oktober 2008, 23:19.
13
Untuk setiap large itemset l, harus dapat ditemukan seluruh subset yang tidak
kosong dari l. Untuk setiap subset a, akan memperoleh keluaran sebuah aturan
dalam bentuk )( ala −⇒ , jika perbandingan aSupport
lSupport
_
_ paling sedikit lebih
besar dari minconf.
Algoritma yang digunakan dalam teknik Association Rules antara lain:
1. Apriori
Algoritma ini mencari frequent itemset dari database transaksi melalui
beberapa tahap iterasi.
2. Frequent Pattern Growth (FP Growth)
Berbeda dengan Apriori, algoritma FP Growth tidak perlu melakukan
pencarian kandidat. Data direpresentasikan menggunakan Frequent Patttern
Tree melalui pendekatan devide and conquer untuk memperoleh frequent
itemset.
2.4. Algoritma Apriori
Secara umum kinerja dari algoritma ini adalah mencari frequent itemset
dari database transaksi melalui beberapa tahap iterasi6. Prinsipnya adalah jika
sebuah itemset infrequent, maka itemset yang infrequent tidak perlu lagi dicari
6 Sushmita Mitra and Tinku Acharya, Data Mining : Multimedia, Soft Computing, and Bioinformatics. Hoboken, New Jersey : John Wiley and Sons, inc., 2003.
14
superset-nya sehingga jumlah kandidat yang harus diperiksa menjadi berkurang.
Berikut adalah algoritma Apriori7:
1) L1={large 1-itemset} 2) For {k=2;Lk-1≠0;k++}do begin 3) Ck = apriori-gen(Lk-1);//new candidate 4) Forall transaction t ∈D do begin 5) Ct = subset(Ck,t);//candidate contained in t 6) Forall candidates c ∈ Ct do 7) c.count ++; 8) End 9) Lk = {c ∈ Ct | c.count ≥ minsup) 10) End 11) Answer = Υ k Lk;
Langkah pertama algoritma ini adalah menghitung kejadian item untuk
menentukan large 1-itemset atau frequent itemset kemudian disimpan pada L1.
Langkah berikutnya untuk large itemset sebesar Lk-1 terdiri dari (k-1) langkah
yang digunakan untuk menghasilkan kandidat itemset Ck menggunakan fungsi
Apriori-gen8. Adapun fungsi Apriori-gen terdiri dari 2 tahap yaitu penggabungan
Lk-1 (Lk-1 p) dengan Lk-1 (Lk-1 q) dan penghapusan kandidat itemset yang tidak
terdapat pada Lk-1. Algoritma untuk melakukan penggabungan Lk-1 (Lk-1 p) dengan
Lk-1 (Lk-1 q) adalah sebagai sebagi berikut :
1) insert into Ck 2) select p.itemI, q.item1, . . . , p.itemk-1, q.itemk-1 3) from Lk-1 p, Lk-1q 4) where p.item1 = q.item1, . . . p.itemk-2 = q.itemk-2, p.itemk-1 < q.itemk-1;
7 Rakesh Agrawal and Ramakrishnan Srikant, Fast Algorithms for Mining Association Rules : Article, IBM Almaden Research Center, 1996. http://rakesh.agrawal-family.com/papers/vldb94apriori.pdf - akses terakhir tanggal 17 Oktober 2008, 23:19. 8 Rakesh Agrawal and Ramakrishnan Srikant, Fast Algorithms for Mining Association Rules : Article, IBM Almaden Research Center, 1996. http://rakesh.agrawal-family.com/papers/vldb94apriori.pdf - akses terakhir tanggal 17 Oktober 2008, 23:19.
15
Kemudian dicari semua subset (k-1) dari semua kandidat itemset pada Ck
dan menghapus beberapa (k-1)-subset dari kandidat itemset pada Ck yang tidak
termasuk dalam Lk-1. Tahap penghapusan atau disebut juga prune step
menggunakan algoritma sebagai berikut :
1) forall itemsets c ∈Ck do 2) forall (k-1)-subsets s of c do 3) if (s ∉Lk-1) then 4) delete c from Ck;
Selanjutnya dilakukan scan database untuk menghasilkan kandidat Ck yang
memenuhi syarat support dan hasilnya disimpan pada Lk. Sehingga hanya
kandidat itemset yang memenuhi support yang akan diolah pada proses
selanjutnya. Demikian langkah pencarian kandidat dilakukan melalui iterasi
hingga tidak mungkin lagi diperoleh kandidat baru. Kemudian untuk memperoleh
aturan asosiasinya digunakan syarat confidence seperti pada rumus 2.2 diatas.
Untuk lebih jelasnya berikut ini merupakan contoh penerapan algoritma
Apriori untuk pencarian Association Rules. Sebagai contoh terdapat data transaksi
AllElectronic9 seperti pada tabel 2.1 dibawah ini.
9 Han, Jiawei and Micheline Kamber, Data Mining : Concepts and Techniques. San Francisco : Morgan Kaufman Publisher, 2001. (Halaman : 232)
16
Tabel 2.1 Data Transaksi AllElectronic
TID List_Item
T100 I1, I2, I5
T200 I2, I4
T300 I2, I3
T400 I1, I2, I4
T500 I1, I3
T600 I2, I3
T700 I1, I3
T800 I1, I2, I3, I5
T900 I1, I2, I3
Dari tabel data transaksi tersebut akan dicari pola asosiasi dengan minsup 22%
(kemunculan 2 dari 9 transaksi). Maka penyelesaian dengan menggunakan
algoritma Apriori adalah sebagai berikut :
Langkah pertama menentukan C1={candidate 1-Itemset} dengan scan database.
Hasil pembentukan C1 disajikan pada tabel 2.2 berikut :
Tabel 2.2 Candidate Itemset C1
Itemset Sup.Count
{I1} 6
{I2} 7
{I3} 7
{I4} 2
{I5} 2
Kemudian membandingkan candidate support count dengan nilai minsup untuk
memperoleh large 1-itemset atau disebut L1. C1 yang memenuhi minsup
selanjutnya disimpan dalam L1 seperti pada tabel 2.3 dibawah.
17
Tabel 2.3 Large 1-itemset L1
Itemset Sup.Count
{I1} 6
{I2} 7
{I3} 7
{I4} 2
{I5} 2
Langkah selanjutnya adalah implementasi dari algoritma Apriori-gen,
yaitu menggabungkan masing-masing itemset pada L1 dengan itemset pada L1
untuk menghasilkan candidate itemset C2. Hasil dari penggabungan tersebut
disajikan pada tabel 2.4 Candidate Itemset C2 dibawah ini.
Tabel 2.4 Candidate Itemset C2
Itemset Sup.Count
{I1, I2} 4
{I1, I3} 4
{I1, I4} 1
{I1, I5} 2
{I2, I3} 4
{I2, I4} 2
{I2, I5} 2
{I3, I4} 0
{I3, I5} 1
{I4, I5} 0
Setelah C2 terbentuk, kemudian dilakukan perbandingan nilai candidate support
count dengan nilai minsup. Hasilnya berupa Large 2-itemset L2 seperti pada tabel
2.5 dibawah ini.
18
Tabel 2.5 Large 2-temset L2
Itemset Sup.Count
{I1, I2} 4
{I1, I3} 4
{I1, I5} 2
{I2, I3} 4
{I2, I4} 2
{I2, I5} 2
Pada langkah selanjutnya dilakukan penggabungan masing-masing itemset
pada L2 dengan itemset pada L2 untuk menghasilkan candidate itemset C3. Hasil
dari penggabungan tersebut disajikan pada tabel 2.6 Candidate Itemset C3
dibawah ini
Tabel 2.6 Candidate Itemset C3
Itemset Sup.Count
{I1, I2, I3} 2
{I1, I2, I5} 2
Seperti langkah sebelumnya, setelah candidate itemset C3 terbentuk, maka
dilakukan perbandingan nilai candidate support count dengan nilai minsup yang
menghasilkan Large 3-itemset L3 seperti disajikan pada tabel 2.7 dibawah ini.
Tabel 2.7 Large 3-itemset L3
Itemset Sup.Count
{I1, I2, I3} 2
{I1, I2, I5} 2
Langkah selanjutnya adalah penggabungan masing-masing itemset pada
L3 dengan itemset pada L3 untuk menghasilkan candidate itemset C4. Hasil yang
diperoleh adalah {I1, I2, I3, I5} yang mempunyai candidate support count = 1.
19
Karena nilai candidate support count lebih kecil dari 2, maka pembentukan
frequent itemset dihentikan.
Untuk mencari aturan asosiasi digunakan nilai confidence, yaitu dengan
menghitung nilai )(
)(
ASupport
BASupport ∪. Asosiasi yang akan dibentuk berasal dari
Large 3-itemset L3 atau dengan kata lain berasal dari large itemset Lk terbanyak.
Misal diberikan nilai minconf sebesar 70%, maka hasil aturan asosiasi yang
mungkin terbentuk dari large 3-itemset {I1, I2, I5} adalah seperti disajikan dalam
tabel 2.8 dibawah ini.
Tabel 2.8 Hasil Aturan Asosiasi
Aturan Assosiasi )( BA⇒ Support )( BA ∪ Support )(A Confidence
I1 ^ I2 ⇒ I5 2 4 50%
I1 ^ I5 ⇒ I2 2 2 100%
I2 ^ I5 ⇒ I1 2 2 100%
I1 ⇒ I2 ^ I5 2 6 33%
I2 ⇒ I1 ^ I5 2 7 29%
I5 ⇒ I1 ^ I2 2 2 100%
20
BAB III
ANALISIS DAN PERANCANGAN SISTEM
2.2. Analisis Sistem
Tahap analisis sistem merupakan tahap penyelesaian masalah (problem
solving) dengan cara membagi sistem ke dalam bagian dari komponennya dengan
tujuan agar bagian dari komponen tersebut dapat bekerja dan berinteraksi dengan
baik untuk melengkapi tujuan sistem.
3.1.1. Gambaran Umum Sistem
Gambaran umum sistem yang akan dibuat adalah sistem yang dapat
menangani pencatatan transaksi penjualan, manipulasi data barang, manipulasi
data user, dan menangani data transaksi penjualan, serta sistem untuk melakukan
proses data mining dari data transaksi penjualan sebagai tujuan utama sistem.
Adapun user yang terlibat dalam sistem ini terdiri dari kasir dan admin. Maka dari
itu sistem akan dibagi menjadi 2 bagian, yaitu sistem kasir yang menangani
pencatatan transaksi penjualan dan sistem admin yang menangani manipulasi
data barang, data user, data transaksi, dan pencarian pola asosiasi dengan metode
data mining.
Alur kerja sistem dapat dijelaskan sebagai berikut:
1. Sistem Kasir
Kasir login ke dalam sistem. Jika login berhasil, maka sistem akan
menampilkan form kasir. Selanjutnya kasir memilih menu transaksi untuk masuk
21
ke dalam form transaksi. Kasir dapat melakukan pencatatan transaksi penjualan
barang melalui form transaksi dan menyimpan data transaksi tersebut ke dalam
database.
2. Sistem Admin
Admin login ke dalam sistem. Jika login berhasil, maka sistem akan
menampilkan form yang berisi menu-menu yang disediakan untuk admin. Admin
dapat melakukan manipulasi data user, data barang, dan data transaksi, serta
melakukan proses pencarian asosiasi barang. Pada menu user, admin dapat
melakukan penambahan, pengubahan, dan penghapusan data user. Selanjutnya
admin dapat melakukan penambahan, pengubahan, dan penghapusan data barang.
Pada menu daftar transaksi, admin dapat menampilkan data transaksi yang
tersimpan di dalam database secara keseluruhan maupun secara periodik.
Selanjutnya dapat mencetak data transaksi yang ditampikan ke bentuk file cetak.
Admin dapat melakukan pencarian pola asosiasi barang dengan masuk ke
dalam menu pencarian asosiasi. Pada menu ini terdapat beberapa langkah yang
dikerjakan. Pertama, admin mengambil data transaksi dari tabel transaksi di dalam
database sistem atau mengambil data transaksi dari tabel di luar database sistem.
Langkah selanjutnya adalah melakukan preprosesing terhadap data, jika
diperlukan, dan melakukan proses cleaning data sehingga diperoleh data yang
sesuai untuk di proses pada pencarian pola asosiasi barang, disebut dengan data
cleaning. Dari data cleaning tersebut, maka dapat dilakukan proses pencarian pola
asosiasi barang dengan memasukkan nilai minsup dan minconf.
22
Pada BAB II Landasan Teori telah disebutkan mengenai proses KDD yang
terdiri dari beberapa tahap. Adapun analisis dari proses KDD tersebut pada
penerapan pencarian pola asosiasi barang didalam penelitian ini adalah sebagai
berikut :
10. Mempelajari kebutuhan untuk menerapkan data mining dalam penggalian
pengetahuan mengenai hubungan penjualan antar barang di swalayan.
11. Memilih data yang akan digunakan dalam proses penggalian pengetahuan
tersebut. Data yang dimaksud adalah data yang mengandung field nomor
transaksi/faktur/nota dan field nama barang, yaitu berupa data transaksi
penjualan.
12. Mengubah data transaksi penjualan menjadi bentuk data yang sesuai dengan
kebutuhan sistem.
13. Dari data transaksi penjualan tersebut digunakan algoritma Apriori dengan
teknik Association Rules untuk menemukan pola asosiasi penjualan antar
barang.
14. Selanjutnya dilakukan proses pencarian pola asosiasi penjualan antar barang
dengan menggunakan algoritma Apriori . Langkah-langkah yang dikerjakan
adalah sebagai berikut :
a. Memasukkan nilai minsup dan minconf sebagai syarat dari nilai asosiasi
barang yang akan dicari.
b. Melakukan pembentukan kandidat k-itemset (Ck) dan large k-itemset (Lk).
Tahap awal adalah pembentukan kandidat 1-itemset (C1) dan large 1-
itemset (L1) dengan melakukan kueri berdasarkan nilai support. Jika
23
diperoleh C1 >= minsup, maka kandidat tersebut dimasukkan ke dalam
tabel largeitemset. Jika tidak diperoleh hasil, maka proses pencarian
dihentikan. Pada tahap selanjutnya proses tersebut dilakukan dengan
menaikkan nilai k menjadi k+1. Sebagai contoh, jika diperoleh hasil C1 >=
minsup, maka C1 yang memenuhi syarat tersebut dimasukkan ke dalam
tabel largeitemset dan menaikkan nilai k menjadi k+1 untuk pembentukan
C2 dan L2. Demikian proses tersebut dilakukan sampai tidak ditemukan
lagi kandidat yang memenuhi syarat Ck >= minsup.
c. Setelah diperoleh large k-itemset (Lk), kemudian diambil nilai Lk tertinggi
dari tabel largeitemset. Dari Lk yang diambil tersebut, dilakukan analisa
dengan menerapkan aturan asosiasi sesuai dengan rumus confidence. Hasil
dari analisa tersebut adalah nilai support dan confidence dari asosiasi
barang yang memenuhi syarat lebih besar atau sama dengan minsup dan
minconf.
15. Setelah ditemukan pola asosiasi penjualan antar barang, maka dari
pengetahuan tersebut dapat digunakan untuk mengatur strategi penjualan
barang oleh pemilik swalayan.
24
3.1.2. Use Case Diagram
Use case diagram sistem disajikan seperti pada gambar 3.1 dibawah ini.
<<depends on>>
<<depends on>>
Mengedit data barang
Menambah data barang
Menghapus data barang
logout
Mengedit data user
Menambah data user
Menghapus data user
Admin
login
Mencatat data transaksiKasir logout
Mencetak data user Mencetak data barang
Melakukan pencarian pola asosiasi barang
Mencetak data asosiasi barang
<<depend on>>
Melihat data transaksi
Mencetak data transaksi
<<depends on>>
Gambar 3.1 Use Case Diagram
3.1.3. Class Diagram
Asosiasiid_ruleid_barangnama_barangconfidencesupport
createCandidate()createRule()
Barangid_barangnama_barangjumlah_stockharga_beliharga_jual
tambah_barang()edit_barang()hapus_barang()cetak_data_barang()
1..*1..* 1..*1..*
punya
Cleaningid_notaid_barangnama_barang
insertCleaning()
1
1..*
1
1..*
hasil
Loginid_loginnikjabatanusernamepassword
login()batal_login()
Usernikusernamepasswordjabatannamaalamatno_telepon
tambah_user()edit_user()hapus_user()cetak_data_user()
1
1
1
1
lakukan
Transaksiid_notaid_barangniknama_barangjumlahtotal_hargatanggal
tambah_transaksi()edit_transaksi()hapus_transaksi()cetak_data_transaksi()
1..*
1
1..*
1
punya
11..* 11..*
hasil
1..*1
catat
1..*1
Gambar 3.2 Class Diagram
25
3.1.4. Activity Diagram
3.1.4.1. Activity Diagram Sistem Kasir
3.1.4.1.1. Activity Diagram Login Kasir
Mulai
Verifikasi Usename dan Password
Memasukkan Username dan Password
Tampilan Form Login
Tampilan Halaman Form Kasir
Selesai
( salah )
( benar )
Gambar 3.3 Activity Diagram Login Kasir
26
3.1.4.1.2. Activity Diagram Mencatat Data Transaksi
Tampilan Pesan ID Barang Salah
Mulai
Memasukkan ID Barang
Menekan tombol OK
Tampilan perubahan tabel, jumlah pembayaran
Selesai
ID Barang Benar?
( tidak )
Memasukkan jumlah barang
Mengubah jumlah data barang
ID Barang sudah ada didalam tabel?
(tidak)
(ada)
( benar )
Menekan tombol ubah
Menekan tombol hapus
Menghapus data barang(ada)
Menekan tombol tambah
Uang yang dibayarkan lebih besar atau sama dengan jumlah uang total transaksi?
Mengubah jumlah uang yang
Menambah, mengubah atau menghapus data barang lagi? (ya)
Memasukkan nilai jumlah uang yang dibayarkan
(tidak)
Tampilan pesan jumlah uang yang dibayarkan kurang
(ya)
(tidak)
Gambar 3.4 Activity Diagram Mencatat Data Transaksi
27
3.1.4.1.3. Activity Diagram Logout Kasir
Mulai
Selesai
Menekan Tombol Logout
Keluar Dari Sistem
Konfirmasi Logout
Tampilan Halaman Sistem
Selesai
( ya )
( tidak )
Gambar 3.5 Activity Diagram Logout Kasir
3.1.4.2. Activity Diagram Sistem Admin
3.1.4.2.1. Activity Diagram Login Admin
Mulai
Memasukkan Username dan Password
Tampilan Form Login
Tampilan Halaman Menu Admin
Selesai
Verifikasi Usename dan Password
(benar)
( salah )
Gambar 3.6 Activity Diagram Login Admin
28
3.1.4.2.2. Activity Diagram Menambah Data Barang
Mulai
Selesai
Memilih Menu Daftar Barang
Menekan tombol Tambah Barang
Menyimpan Data Barang Baru
Memasukkan Data Barang Baru
ID Barang Sudah Ada?
( Belum )
Tampilan Pesan ID Barang Sudah Ada ( Ada )
Mengubah ID Barang
Konfirmasi Menambah Data Barang
( ya )
Membatalkan Menambah Data Barang( tidak )
Selesai
Gambar 3.7 Activity Diagram Menambah Data Barang
29
3.1.4.2.3. Activity Diagram Mengedit Data Barang
Mulai
Selesai
Memilih Menu Daftar Barang
Memasukkan ID Barang
Mengedit Data Barang
Menekan Tombol Edit
Tampilan Pesan Data Tidak Lengkap
Data Barang Sudah Lengkap?
( tidak )
Menambah Kelengkapan Data
Menyimpan Hasil Perubahan Data Barang
( ya )
Membatalkan Mengedit Data Barang
Konfirmasi Menyimpan Data Barang
( ya )
( tidak )
Selesai
ID Barang Ada?
Tampilan Pesan ID Barang Salah
( ya )
( tidak )
Gambar 3.8 Activity Diagram Mengedit Data Barang
30
3.1.4.2.4. Activity Diagram Menghapus Data Barang
Mulai
Selesai
Memilih Menu Daftar Barang
Konfirmasi Menghapus Data Barang
Menghapus Data Barang
Membatalkan Penghapusan Data Barang ( tidak )
Selesai
Menekan Tombol Hapus
( ya )
Memasukkan ID Barang
ID Barang Ada?
Tampilan Pesan ID Barang Salah
( ya )
( tidak )
Gambar 3.9 Activity Diagram Menghapus Data Barang
3.1.4.2.5.Activity Diagram Mencetak Data Barang
Mulai
Selesai
Menekan tombol cetak
Memilih Menu Daftar Barang
Gambar 3.10 Activity Diagram Mencetak Data Barang
31
3.1.4.2.6.Activity Diagram Menambah Data User
Mulai
Memilih menu User
Memasukkan Data User
Menekan Tombol Tambah
Selesai
Konfirmasi Menambah Data User
ID User Sudah Ada?
( tidak )
Menyimpan Data User Baru
( ya )
Tampilan Pesan ID User Sudah Ada ( ya )
Mengubah ID User
Membatalkan Menambah Data User( tidak )
Selesai
Gambar 3.11 Activity Diagram Menambah Data User
32
3.1.4.2.7. Activity Diagram Mengedit Data User
Mulai
Memilih Menu User
Memasukkan ID User
Mengedit Data User
Menekan Tombol Edit
Selesai
Tampilan Pesan ID User Salah
ID User Ada?
( tidak )( ya )
Konfirmasi Menyimpan Data User
Data User Sudah Lengkap
( ya )
Membatalkan Mengedit Data User( tidak )
Menyimpan Perubahan Data User
( ya )
Tampilan Pesan Data Tidak Lengkap ( tidak )
Menambah Kelengkapan Data
Selesai
Gambar 3.12 Activity Diagram Mengedit Data User
33
3.1.4.2.8. Activity Diagram Menghapus Data User
Mulai
Menekan Tombol Hapus
Selesai
Konfirmasi Menghapus Data User
Membatalkan Menghapus Data User
Menghapus Data User
Selesai
Memilih Menu User
Memasukkan ID User
ID User Ada?
Tampilan Pesan ID User Salah
( tidak )
( ya )
tidak
ya
Gambar 3.13 Activity Diagram Menghapus Data User
3.1.4.2.9. Activity Diagram Mencetak Data User
Mulai
Selesai
Memilih menu user
Menekan tombol cetak
Gambar 3.14 Activity Diagram Mencetak Data User
34
3.1.4.2.10. Activity Diagram Melihat Data Transaksi
Mulai
Memilih Menu Transaksi
Memasukkan Periode Transaksi yang akan Diambil Datanya
Tampilan Data Transaksi
Selesai
Menekan tombol OK
Gambar 3.15 Activity Diagram Melihat Data Transaksi
3.1.4.2.11. Activity Diagram Mencetak Data Transaksi
Mulai
Selesai
Memilih menu daftar transaksi
Memilih periode data transaksi
Menekan tombol cetak
Menekan tombol OK
Tampilan Data Transaksi
Gambar 3.16 Activity Diagram Mencetak Data Transaksi
35
3.1.4.2.12. Activity Diagram Melakukan Pencarian Pola Asosiasi Barang
Mulai
Melakukan Proses Preprosesing dan Cleaning Data
Memilih Menu Perhitungan Apriori
Mengambil Data Transaksi yang akan Diproses
Memasukkan Nilai Support dan Confidence
Melakukan Proses Pencarian Pola Asosiasi Menggunakan Algoritma Apriori
Selesai
Cek data transaksi
Ada
Memperoleh Hasil Asosiasi
Tampilan Pesan Data Tidak Ada
Tidak
Menganalisa Hasil Asosiasi
Gambar 3.17 Activity Diagram Melakukan Pencarian Pola Asosiasi Barang
36
3.1.4.2.13. Activity Diagram Mencetak Data Asosiasi Barang
Mulai
Selesai
Melakukan pencarian pola asosiasi barang
Memperoleh hasil asosiasi barang
Menekan tombol cetak
Gambar 3.18 Activity Diagram Mencetak Data Asosiasi Barang
3.1.4.2.14. Activity Diagram Logout Admin
Mulai
Selesai
Menekan Tombol Logout
Keluar Dari Sistem
Konfirmasi Logout
Tampilan Halaman Sistem
Selesai
( ya )
( tidak )
Gambar 3.19 Activity Diagram Logout Admin
37
3.1.5. Sequence Diagram
3.1.5.1. Sequence Diagram Sistem Kasir
3.1.5.1.1. Sequence Diagram Login Kasir
: halamanTransaksiKasir : Kasir : halamanLogin : kontrolLogin : dataKasir
masukkan username, password
username, password
cek username, password
status username, password
username, password benar
username, password salah
pesan username, password salah
tampilan halaman sistem kasir
Gambar 3.20 Sequence Diagram Login Kasir
38
3.1.5.1.2. Sequence Diagram Mencatat Data Transaksi
: Kasir : halamanTransaksiKasir : kontrolDataBarang : dataBarang : kontrolDataTransaksi : dataTransaksi
masukkan data barang
data barang
cek data barang
data barang ada
pesan data barang tidak ada
menekan tombol tambah
data barang
queri menambah data barang ke data transaksi
menekan tombol ubah
data barang
queri mengubah data barang di dalam data transaksi
menekan tombol hapus
data barang
queri menghapus data barang di dalam data t ransaksi
data transaksi bertambah
data transaksi berubah
data transaksi berkurang
data barang tidak ada
menampilkan data transaksi
memasukkan nilai pembay aran
menekan tombol OK
data transaksi
meny impan data transaksi
data transaksi tersimpan
tampilan f orm transaksi kosong
Gambar 3.21 Sequence Diagram Mencatat Data Transaksi
39
3.1.5.1.3. Sequence Diagram Logout Kasir
: Kasir : halamanSistemKasir : kontrolLogout
menekan tombol logout
menutup sistem
mematikan koneksi
Gambar 3.22 Sequence Diagram Logout Kasir
3.1.5.2. Sequence Diagram Sistem Admin
3.1.5.2.1. Sequence Diagram Login Admin
: Admin : halamanLogin : kontrolLogin : dataAdmin : halamanSistemAdmin
masukkan username, password
username, password
cek username, password
status username, password
username, password benar
username, password salah
pesan username, password salah
tampilan halaman sistem admin
Gambar 3.23 Sequence Diagram Login Admin
40
3.1.5.2.2. Sequence Diagram Menambah Data Barang
: Admin : halamanMenuBarang : kontrolDataBarang : dataBarang
masukkan data barang
data barang
queri menambah data barang
data barang sudah ada
pesan data barang sudah ada
data barang belum ada
data barang bertambah
tampilan data barang pada tabel
Gambar 3.24 Sequence Diagram Menambah Data Barang
41
3.1.5.2.3. Sequence Diagram Mengedit Data Barang
: Admin : halamanMenuBarang : kontrolDataBarang : dataBarang
masukkan id barang
id barang
queri data barang
data barang tidak ada
pesan data barang t idak ada
data barang ada
tampilan data barang pada f orm
masukkan perubahan data barang
data barang
queri mengubah data barang
data barang berubah
tampilan data barang pada tabel
Gambar 3.25 Sequence Diagram Mengedit Data Barang
42
3.1.5.2.4. Sequence Diagram Menghapus Data Barang
: Admin : halamanMenuBarang : kontrolDataBarang : dataBarang
masukkan id barang
id barang
queri data barang
data barang tidak ada
pesan data barang tidak ada
data barang ada
tampilan data barang pada f orm
menghapus data barang
data barang
queri menghapus data barang
data barang terhapus
tampilan data barang pada tabel
Gambar 3.26 Sequence Diagram Menghapus Data Barang
43
3.1.5.2.5. Sequence Diagram Mencetak Data Barang
: Admin : halamanMenuBarang : kontrolDataBarang : dataBarang
menekan tombol cetak
data barang
queri data barang
prev iew data barang
mencetak data barang
Gambar 3.27 Sequence Diagram Mencetak Data Barang
44
3.1.5.2.6. Sequence Diagram Menambah Data User
: Admin : halamanMenuUser : kontrolDataUser : dataUser
masukkan data user
data user
queri menambah data user
data user sudah ada
data user belum ada
pesan data user sudah ada
tampilan data user pada tabel
data user bertambah
Gambar 3.28 Sequence Diagram Menambah Data User
45
3.1.5.2.7. Sequence Diagram Mengedit Data User
: Admin : halamanMenuUser : kontrolDataUser : dataUsermasukkan id user
id user
queri data user
data user tidak ada
pesan data user tidak ada
data user ada
tampilan data user pada f orm
masukkan perubahan data user
data user
queri mengubah data user
data user berubah
tampilan data user pada tabel
Gambar 3.29 Sequence Diagram Mengedit Data User
46
3.1.5.2.8. Sequence Diagram Menghapus Data User
: Admin : halamanMenuUser : kontrolDataUser : dataUser
masukkan id user
id user
queri data user
data user tidak ada
pesan data user tidak ada
data user ada
tampilan data user pada f orm
menghapus data user
data user
queri menghapus data user
data user terhapus
tampilan data user pada tabel
Gambar 3.30 Sequence Diagram Menghapus Data User
47
3.1.5.2.9. Sequence Diagram Mencetak Data User
: dataUser : Admin : halamanMenuUser : kontrolDataUser
menekan tombol cetak
data user
queri data user
preview data user
mencetak data user
Gambar 3.31 Sequence Diagram Mencetak Data User
48
3.1.5.2.10. Sequence Diagram Melihat Data Transaksi
: Admin : halamanMenuTransaksi : kontrolDataTransaksi : dataTransaksi
masukkan periode transaksi
periode transaksi
queri data transaksi berdasarkan periode
data transaksi tidak ada
pesan data transaksi tidak ada
data transaksi ada
tampilan data transaksi
Gambar 3.32 Sequence Diagram Melihat Data Transaksi
49
3.1.5.2.11. Sequence Diagram Mencetak Data Transaksi
: Admin : halamanMenuTransaksi : kontrolDataTransaksi : dataTransaksi
masukkan periode transaksi
periode transaksi
queri data transaksi berdasarkan periode
menekan tombol cetak
data transaksi
queri data transaksi untuk dicetak
prev iew data transaksi
mencetak data transaksi
Gambar 3.33 Sequence Diagram Mencetak Data Transaksi
50
3.1.5.2.12. Sequence Diagram Melakukan Pencarian Pola Asosiasi Barang
: halamanPemil ihanDatabase : Admin : halamanLangkahPencarian : kontrolDataTransaksi : dataTransaksi : dataCleaning : halamanCleaning : halamanPencarianAsosiasi : kontrolPencarianAsosiasi : dataAsosiasiBarang : kontrolDataCleaning
menekan tombol lanjut
memilih sumber database
database data transaksi
queri data transaksi
data transaksi
tampilan data transaksi
menekan tombol cleaning
data transaksi
queri data transaksi
data transaksi hasil cleaning
data cleaning
tampilan data cleaning pada tabel
menekan tombol lanjut
data cleaning
masukkan minsup dan minconf
menekan tombol hitung
minsup dan minconf
queri pembentukan pola asosiasi
hasil pencarian asosiasi
data asosiasi
tampilan data asosiasi
Gambar 3.34 Sequence Diagram Melakukan Pencarian Pola Asosiasi
51
3.1.5.2.13. Sequence Diagram Mencetak Data Asosiasi Barang
: dataAsosiasiBarang : Admin : halamanPencarianAsosiasi : kontrolDataAsosiasi
menekan tombol cetak
data asosiasi barang
queri data asosiasi barang
prev iew data asosiasi barang
mencetak data asosiasi barang
Gambar 3.35 Sequence Diagram Mencetak Data Asosiasi Barang
3.1.5.2.14. Sequence Diagram Logout Admin
: Admin : halamanSistemAdmin : kontrolLogout
menekan tombol logout
menutup sistem
mematikan koneksi
Gambar 3.36 Sequence Diagram Logout Admin
52
3.2. Desain Sistem
3.2.1. ER Diagram
Gambar 3.37 ER Diagram
3.2.2. Desain Database
Desain database berisi tabel-tabel yang digunakan didalam sistem,yaitu :
1. Tabel Barang
Tabel barang digunakan untuk menyimpan data barang yang dijual di
swalayan tersebut. Struktur tabelnya adalah sebagai berikut :
Tabel 3.1 Tabel Barang
Nama Field Tipe Data Size Keterangan
id_barang VARCHAR 15 ID untuk barang
nama_barang VARCHAR 50 Nama barang
jumlah_stock DOUBLE Jumlah stock barang
harga_beli DOUBLE Harga beli barang
harga_jual DOUBLE Harga jual barang
53
2. Tabel Transaksi
Tabel transaksi digunakan untuk menyimpan transaksi yang terjadi.
Tabel 3.2 Tabel Transaksi
Nama Field Tipe Data Size Keterangan
id_nota VARCHAR 10 ID untuk transaksi
id_barang VARCHAR 15 ID untuk barang
nama_barang VARCHAR 50 Nama barang
jumlah DOUBLE Jumlah barang yang dibeli
harga_total DOUBLE Harga total transaksi
tanggal DATE Tanggal transaksi dilakukan
3. Tabel Cleaning
Tabel cleaning merupakan tabel untuk menyimpan data cleaning.
Tabel 3.3 Tabel Cleaning
Nama Field Tipe Data Size Keterangan
id_nota INTEGER 6 ID untuk transaksi
id_barang VARCHAR 15 ID untuk barang
nama_barang VARCHAR 50 Nama Barang
4. Tabel Rule
Tabel rule digunakan untuk menyimpan asosiasi barang hasil
pencarian pola asosiasi.
Tabel 3.4 Tabel Rule
Nama Field Tipe Data Size Keterangan
id_rule INTEGER 11 ID untuk rule yang terbentuk
subset INTEGER 11 Nilai jumlah kombinasi
support DOUBLE Nilai support Lk-1 itemset
confidence DOUBLE Nilai confidence Lk-1 itemset
nama_barang1 VARCHAR 200 Nama barang ke-1 asosiasi
nama_barang2 VARCHAR 200 Nama barang ke-2 asosiasi
54
5. Tabel Largeitem
Tabel ini digunakan untuk menyimpan data large itemset yang
diperoleh selama proses pencarian asosiasi.
Tabel 3.5 Tabel Largeitem
Nama Field Tipe Data Size Keterangan
subset INTEGER 6 Nilai jumlah kombinasi
support DOUBLE 6 Nilai support Lk-1 itemset
nama_barang1 VARCHAR 200 Nama barang ke-1 kombinasi
nama_barang2 VARCHAR 200 Nama barang ke-2 kombinasi
nama_barangN VARCHAR 200 Nama barang ke-n kombinasi
6. Tabel Candidate
Tabel ini digunakan untuk menyimpan kandidat itemset yang diperoleh
selama proses pencarian asosiasi.
Tabel 3.6 Tabel Candidate
Nama Field Tipe Data Size Keterangan
subset INTEGER 6 Nilai jumlah kombinasi
support DOUBLE 6 Nilai support Lk-1 itemset
nama_barang1 VARCHAR 200 Nama barang ke-1 kombinasi
nama_barang2 VARCHAR 200 Nama barang ke-2 kombinasi
nama_barangN VARCHAR 200 Nama barang ke-n kombinasi
55
7. Tabel Staff
Tabel staff digunakan untuk menyimpan data user.
Tabel 3.7 Tabel Staff
Nama Field Tipe Data Size Keterangan
nik VARCHAR 10 ID untuk user
username VARCHAR 20 Nama login user
password VARCHAR 20 Password login user
jabatan VARCHAR 20 Jabatan kerja user (Admin/Kasir)
nama VARCHAR 30 Nama user
alamat VARCHAR 100 Alamat user
no_telepon VARCHAR 15 Nomor telepon user
8. Tabel Login
Tabel login digunakan untuk menyimpan data user yang melakukan
login ke dalam sistem.
Tabel 3.8 Tabel Login
Nama Field Tipe Data Size Keterangan
id_login VARCHAR 10 ID login
nik VARCHAR 20 Nik user
tanggal DATE 20 Tanggal user melakukan login
jam TIME Jam user melakukan login
56
3.2.3. Desain Antar Muka (User Interface Design)
3.2.3.1. Form Login
Gambar 3.38 Form Login
3.2.3.2. Form Utama Sistem Kasir
Gambar 3.39 Form Utama Sistem Kasir
57
3.2.3.3. Form Transaksi
Gambar 3.40 Form Transaksi
3.2.3.4. Form Utama Sistem Admin
Gambar 3.41 Form Utama Sistem Admin
58
3.2.3.5. Form Daftar User
Gambar 3.42 Form Daftar User
3.2.3.6. Form Daftar Barang
Gambar 3.43 Form Daftar Barang
59
3.2.3.7. Form Daftar Transaksi
Gambar 3.44 Form Daftar Transaksi
3.2.3.8. Form Utama Perhitungan Apriori
Gambar 3.45 Form Utama Perhitungan Apriori
60
3.2.3.9. Form Perhitungan Apriori – Mengambil Data Transaksi
Gambar 3.46 Form Perhitungan Apriori – Mengambil Data Transaksi
3.2.3.10. Form Perhitungan Apriori – Mengambil Data Transaksi
61
Gambar 3.47 Form Perhitungan Apriori – Mengambil Data Transaksi
3.2.3.11. Form Perhitungan Apriori – Cleaning Data
Gambar 3.48 Form Perhitungan Apriori – Cleaning Data
62
3.2.3.12. Form Perhitungan Apriori – Pencarian Pola Asosiasi Barang
Gambar 3.49 Form Perhitungan Apriori – Pencarian Pola Asosiasi Barang
3.2.3.13. Form Perhitungan Apriori – Hasil Analisa
Gambar 3.50 Form Perhitungan Apriori – Hasil Analisa
63
BAB IV
IMPLEMENTASI SISTEM
Setelah melakukan analisis dan perancangan sistem, maka tahap
selanjutnya adalah mengimplementasikan hasil perancangan tersebut ke dalam
sebuah sistem untuk pencarian pola asosiasi penjualan antar barang. Sistem ini
dapat melakukan pencarian pola asosiasi penjualan antar barang yang berasal dari
data transaksi didalam database sistem dan data transaksi di luar database sistem.
Hasil dari pencarian tersebut berupa pengetahuan pola asosiasi penjualan antar
barang yang disajikan dalam tabel, grafik dan file cetak.
5.1.Spesifikasi hardware dan software yang Digunakan
Sistem dibuat dengan menggunakan hardware dan software sebagai
berikut :
5.3.2 Spesifikasi hardware
1. Prosesor Intel Pentium Dual Core 1,86GHz
2. Memori 1 GB
3. Hardisk 80 GB
5.3.2 Spesifikasi software
1. Sistem Operasi Microsoft Windows XP Profesional Service Pack 2
2. Kompiler IDE NetBeans 5.5
3. Basis data MySQL 5.0
4. Bahasa Pemrograman Java 2 Standar Edition (J2SE)
64
5.1.Pembuatan Database
Pada bagian ini dilakukan pembuatan database baru pada MySQL yang
berisi tabel-tabel untuk menyimpan data yang diperlukan di dalam sistem. Adapun
pembuatan database tersebut terdiri dari langkah-langkah sebagai berikut :
1. Membuat database baru dengan nama apriori.
2. Dari database apriori selanjutnya dibuat tabel-tabel, baik melalui perintah
create new table pada MySQL Query Browser, eksekusi perintah create table
dengan sintak SQL, atau create table pada SQLyog.
Tabel-tabel yang dibuat pada sistem ini adalah :
1. Tabel staff
2. Tabel barang
3. Tabel transaksi
4. Tabel cleaning
5. Tabel candidate
6. Tabel largeitemset
7. Tabel rule
8. Tabel login
5.1.Koneksi Java dan MySQL
Untuk menangani komunikasi Java dengan MySQL digunakan JDBC
(Java Databases Connectivity), sehingga sistem dapat mengakses data di dalam
database. Adapun langkah-langkah untuk membuat koneksi antara Java dengan
MySQL adalah :
65
1. Menambahkan driver (mysql-connector-java-5.0.4-bin.jar) pada library Java.
2. Membuat file untuk menangani koneksi yaitu file koneksi.java.
package tools; import java.sql.*; public class koneksi { public Connection con; public Statement st; public ResultSet rs; public static void cekDriver() { try{ Class.forName("com.mysql.jdbc.Driver"); }catch(Exception e) { e.printStackTrace(); } } public void cekKoneksi() { try{ con = DriverManager.getConnection("jdbc:mysql://localhost :3306/apriori","root","root"); st = con.createStatement(); }catch(Exception e){ e.printStackTrace(); } } }
Dalam file koneksi.java tersebut terdapat 2 buah fungsi, yaitu :
1. Fungsi cekDriver()
Fungsi cekDriver() digunakan untuk melakukan pengecekan terhadap driver
mysql.
2. Fungsi cekKoneksi()
Fungsi cekKoneksi() digunakan untuk mendefinisikan letak dari database
server. Isi dari definisi tersebut adalah letak alamat server, port mysql, nama
database, username dan password.
66
5.1.Pembuatan Antar Muka (User Interface)
Dalam pembuatan Antar Muka ini sistem dibagi menjadi 2 bagian, yaitu :
5.3.2 Form Login User
Gambar 4.1. Form Login User
Pada Gambar 4.1. Form Login User terdapat 2 field masukan, yaitu text
area untuk memasukkan nama username dan password field untuk memasukkan
password. User mengetikkan username kemudian menekan tombol ENTER pada
keyboard, jika username tersebut ada di dalam daftar user, maka field ID Check
akan menampilkan NIK dari username user tersebut. Jika username tidak terdaftar
di dalam database user, maka field ID Check tidak akan menampilkan NIK dari
username user tersebut. Kemudian user memasukkan password pada password
field, dan menekan tombol LOGIN.
Jika username dan password yang diketikkan benar, maka sistem akan
memeriksa jabatan dari user yang melakukan login tersebut. Jika user mempunyai
jabatan admin, maka sistem akan masuk ke Form Admin. Jika user mempunyai
jabatan kasir, maka sistem akan masuk ke Form Kasir. Namun jika username dan
67
password yang diketikkan user salah, maka akan muncul pesan bahwa login
gagal dan user diminta untuk mengulangi login.
5.3.2 Form Utama Sistem Kasir
Gambar 4.2. Form Utama Sistem Kasir
Gambar 4.2. diatas merupakan form yang ditampilkan sistem jika user
berhasil melakukan login sebagai kasir. Selanjutnya user dapat melakukan proses
pencatatan transaksi dengan menekan tombol transaksi. Jika user ingin keluar dari
sistem, maka user dapat menekan tombol LOGOUT, atau jika ingin melakukan
login ulang, user dapat menekan tombol LOGIN ULANG.
68
5.3.2 Form Transaksi Kasir
Gambar 4.3. Form Transaksi Kasir
Gambar 4.3. diatas merupakan Form Transaksi Kasir, yaitu form yang
digunakan untuk mencatat transaksi penjualan. Mekanisme pencatatan transaksi
adalah user mengetikkan kode barang di dalam field Kode Barang dan menekan
tombol ENTER pada keyboard. Jika kode barang tersebut terdapat didalam
database barang, maka field Harga Satuan akan menampilkan harga satuan dari
barang tersebut dan field Nama Barang akan menampilkan nama dari kode barang
tersebut. Jika kode barang yang diketikkan tidak terdapat didalam database
barang, maka sistem akan menampilkan pesan bahwa barang tidak ada.
Selanjutnya user memasukkan jumlah barang yang dibeli konsumen ke dalam
field Jumlah dan menekan tombol TAMBAH untuk memasukkan barang yang
69
dibeli konsumen tersebut ke dalam tabel transaksi, maka nilai pada field Rupiah
(Rp) akan berubah dengan menambahkan nilai yang sudah ada dengan nilai harga
baru dari jumlah harga satu barang yang di catat. Setelah semua barang yang
dibeli konsumen selesai dicatat, user memasukkan jumlah uang yang dibayarkan
konsumen pada field Tunai dan menekan tombol OK untuk memasukkan data
transaksi tersebut ke dalam database.
User dapat merubah jumlah barang yang dibeli konsumen atau menghapus
barang yang sudah dimasukkan ke dalam tabel transaksi dengan mengetikkan
kode barang field Kode Barang. Selanjutnya user menekan tombol ENTER pada
keyboard, maka field Jumlah, Harga Satuan, dan Nama Barang akan menampilkan
data dari kode barang tersebut. User dapat merubah jumlah barang dengan
mengganti nilai pada field Jumlah dan menekan tombol UBAH, maka jumlah
barang dan jumlah harga pada tabel transaksi akan berubah sesuai dengan nilai
baru yang di masukkan. User dapat menghapus barang dari tabel transaksi dengan
menekan tombol HAPUS.
70
5.3.2 Form Utama Sistem Admin
Gambar 4.4. Form Utama Sistem Admin
Gambar 4.4. merupakan tampilan Form Admin, yaitu form utama jika user
yang melakukan login mempunyai jabatan sebagai admin. Pada form tersebut,
user dapat memilih untuk masuk ke menu-menu sistem dengan menekan masing-
masing tombol. Sebagai contoh jika user akan masuk ke menu perhitungan
apriori, maka user menekan tombol PERHITUNGAN APRIORI dan sistem akan
masuk ke bagian perhitungan apriori.
71
5.3.2 Form Daftar User
Gambar 4.5. Form Daftar User
Gambar 4.5. merupakan tampilan Form Daftar User, yaitu form yang
disediakan sistem untuk menambah, mengubah, dan menghapus user yang diberi
wewenang untuk masuk ke dalam sistem. Sistem juga menyediakan fasilitas untuk
mencetak daftar user tersebut ke media kertas atau disebut print.
72
5.3.2 Form Daftar Barang
Gambar 4.6. Form Daftar Barang
Gambar 4.6. merupakan tampilan Form Daftar Barang, yaitu form yang
disediakan sistem untuk menambah barang baru, dan mengubah atau menghapus
barang yang sudah tersimpan di dalam database. Sistem juga menyediakan
fasilitas untuk mencetak daftar barang tersebut ke media kertas atau disebut print.
73
5.3.2 Form Daftar Transaksi
Gambar 4.7. Form Daftar Transaksi
Gambar 4.7. merupakan tampilan Form Daftar Transaksi, yaitu form yang
disediakan sistem untuk menampilkan transaksi-transaksi yang telah dicatat kasir
ke dalam database. User dapat memilih data transaksi yang akan ditampilkan
secara keseluruhan atau secara periodik. Sistem juga menyediakan fasilitas untuk
mencetak daftar user tersebut ke media kertas atau disebut print.
74
5.3.2 Form Perhitungan Apriori – Langkah-langkah Perhitungan Apriori
Gambar 4.8. Form Perhitungan Apriori – Langkah-langkah Perhitungan Apriori
Gambar 4.8. merupakan tampilan awal jika user masuk ke dalam menu
perhitungan apriori. Form ini berisi langkah-langkah untuk mencari pola asosiasi
menggunakan algoritma apriori. Untuk memulai melakukan pencarian pola
asosiasi, user dapat menekan tombol lanjut. Maka sistem akan menampilkan form
pengambilan data seperti disajikan pada Gambar 4.9 dibawah ini.
75
5.3.2 Form Perhitungan Apriori – Pemilihan Data Dari Database
Gambar 4.9. Form Perhitungan Apriori – Pemilihan Data Dari Database
Langkah pertama dalam pencarian pola asosiasi adalah mengambil data
transaksi yang akan diproses. Pada Form Perhitungan Apriori – Pemilihan Data
Dari Database, user dapat memilih sumber data transaksi yang akan diproses.
Sistem menyediakan 2 buah pilihan, yaitu data transaksi diambil dari database
sistem atau data transaksi diambil dari database lain (di luar database sistem).
Kemudian user menekan tombol lanjut untuk mengambil data transaksi yang akan
diambil berdasarkan sumber database.
76
5.3.2 Form Perhitungan Apriori – Pemilihan Data Dari Database Sistem dan
Preprosesing/Cleaning Data
Jika user memilih untuk mengambil data transaksi dari database sistem,
maka akan ditampilkan Form Perhitungan Apriori – Pemilihan Data Dari
Database Sistem dan Preprosesing/Cleaning Data seperti Gambar 4.10 dibawah
ini.
Gambar 4.10. Form Perhitungan Apriori – Pemilihan Data Dari Database Sistem
dan Preprosesing/Cleaning Data
Sistem menyediakan 2 pilihan sumber data transaksi, yaitu data dari tabel
backup dan data dari tabel transaksi. Jika user memilih data dari tabel backup,
user mengetikkan nama tabel yang akan diambil datanya didalam field tabel
77
backup dan menekan tombol OK. Maka tabel data akan menampilkan isi dari
tabel yang diketikkan user tersebut dan secara bersamaan field preprosesing akan
di aktifkan. Dalam hal ini user terlebih dahulu harus melakukan preprosesing
terhadap data dari tabel backup sebelum melakukan proses cleaning. User
mengetikkan nama kolom yang menyatakan id transaksi/nota/faktur dan nama
barang pada field yang disediakan. Selanjutnya user dapat melanjutkan untuk
melakukan proses cleaning dengan menekan tombol CLEANING.
Jika user memilih mengambil data dari tabel transaksi, sistem
menyediakan 2 buah pilihan untuk pengambilan data. Data dapat diambil secara
keseluruhan atau secara periodik berdasarkan periode waktu yang dipilih user
pada kalender waktu yang disediakan. Selanjutnya user menekan tombol OK dan
sistem akan menampilkan data ke dalam tabel data.
Berbeda dengan pilihan data backup, dalam hal ini user tidak perlu melakukan
proses preprosesing terlebih dahulu sebelum melakukan proses cleaning. Field
preprosesing akan tetap di non-aktifkan dan user dapat menekan tombol cleaning
untuk melanjutkan proses.
78
5.3.2 Form Perhitungan Apriori – Pemilihan Data Dari Database di Luar
Sistem dan Preprosesing/Cleaning Data
Jika user memilih untuk mengambil data transaksi dari database di luar
sistem, maka akan ditampilkan Form Perhitungan Apriori – Pemilihan Data Dari
Database di Luar Sistem dan Preprosesing/Cleaning Data seperti Gambar 4.11
dibawah ini.
Gambar 4.11. Form Perhitungan Apriori – Pemilihan Data Dari Database Sistem
dan Preprosesing/Cleaning Data
Pada form ini user mengetikkan letak URL dan port. Kemudian user
menekan tombol ENTER pada keyboard, maka system akan menampilkan nama-
nama database pada mysql. Selanjutnya user mengetikkan username dan
password, maka field tabel akan menampilkan nama-nama tabel yang terdapat
79
pada database yang dipilih. User memilih data yang akan di proses dari tabel-
tabel tersebut dan menekan tombol OK. Kemudian sistem akan menampilkan data
transaksi melalui tabel data.
Langkah selanjutnya adalah user melakukan proses preprosesing dengan
mengetikkan indeks kolom yang menyatakan id transaksi/nota/faktur dan nama
barang dari tabel data. Setelah itu dilanjutkan dengan melakukan proses cleaning
dengan menekan tombol cleaning.
5.3.2 Form Perhitungan Apriori – Data Hasil Preprosesing/Cleaning
Gambar 4.12. Form Perhitungan Apriori – Data Hasil Preprosesing/Cleaning
Setelah proses cleaning selesai, maka akan sistem akan menampilkan data
hasil cleaning tersebut melalui tabel cleaning pada Form Perhitungan Apriori –
80
Data Hasil Preprosesing dan Cleaning seperti disajikan pada Gambar 4.12. Untuk
melanjutkan ke proses pencarian pola asosiasi, user menekan tombol lanjut.
Maka sistem akan menampilkan Form Perhitungan Apriori – Pencarian Asosiasi
seperti disajikan pada Gambar 4.13. dibawah.
5.3.2 Form Perhitungan Apriori – Pencarian Pola Asosiasi Barang
Gambar 4.13. Form Perhitungan Apriori – Pencarian Pola Asosiasi Barang
Setelah diperoleh data cleaning, maka langkah selanjutnya adalah
pencarian pola asosiasi barang. Gambar 4.13. diatas merupakan tampilan pada
proses pencarian pola asosiasi barang. Dalam form ini terdapat beberapa langkah
yang harus dilakukan oleh user.
81
Langkah pertama adalah memasukkan nilai minimum support (minsup)
dan minimum confidence (minconf). Setelah ditentukan nilai minsup dan minconf
langkah kedua adalah mencari asosiasi barang. Pada langkah ini terdapat 2 proses,
yaitu :
1. Membentuk kandidat itemset
Pembentukan kandidat itemset dilakukan dengan membuat kombinasi-
kombinasi barang yang terdapat didalam data cleaning dan menghitung nilai
supportnya melalui query database secara bertahap dengan menaikan jumlah
kombinasi dan seleksi berdasarkan nilai support. Pada tahap pertama, kandidat
1-itemset (kombinasi 1 barang) dibentuk, dihitung nilai supportnya, dan
disimpan ke dalam tabel C . Kemudian dilakukan proses pengecekan terhadap
kandidat tersebut. Jika diantara kandidat tersebut terdapat kandidat yang
mempunyai nilai support lebih besar dari minsup, maka proses pembentukan
kandidat dilanjutkan ke tahap selanjutnya dan kandidat yang mempunyai nilai
lebih besar atau sama dengan nilai minsup tersebut dimasukan ke dalam tabel
L. Jika diantara kandidat 1-itemset tersebut tidak terdapat kandidat yang
mempunyai nilai support lebih besar atau sama dengan nilai minsup, maka
proses pencarian akan dihentikan.
Adapun penerapan rumus nilai support yang telah di jelaskan pada BAB
II Landasan Teori, Rumus 2.1. Nilai Support BA⇒ adalah dengan membagi
jumlah kemunculan kombinasi barang dengan total transaksi. Sedangkan
implementasi pada kode program adalah sebagai berikut.
82
public void createCandidate(){ koneksi.cekDriver(); koneksi conect = new koneksi(); try{ conect.cekKoneksi(); conect.con.createStatement(); CariRule cari = new CariRule(); PreparedStatement statCL = conect.con.prepareStatement(cari.callCL); statCL.executeUpdate(); Double supp = Double.parseDouble(sama.getText()); PreparedStatement cariC = conect.con.prepareStatement(cari.QueryC1); cariC.setInt(1, Integer.parseInt(field_total.getTex t())); cariC.executeUpdate(); String SyaratL1 ="select subset,round(support,2), b arang1 from candidate where support >='"+supp+"' and subset=1"; ResultSet r1 = conect.st.executeQuery(SyaratL1); r1.last(); int b1 = r1.getRow(); r1.beforeFirst(); if(b1!=0){ PreparedStatement cariL = conect.con.prepareStatement(cari.QueryL1); cariL.setDouble(1, Double.parseDouble(sama.getText( ))); cariL.executeUpdate(); PreparedStatement crC = conect.con.prepareStatement (cari.AlterC1); crC.executeUpdate(); PreparedStatement cariC1 = conect.con.prepareStatement(cari.QueryC2); cariC1.setInt(1, Integer.parseInt(field_total.getTe xt())); cariC1.executeUpdate(); String SyaratL2 = "select subset,round(support,2), barang1,barang2 from candidate where support >='"+supp+"' and subse t=2"; ResultSet r2 = conect.st.executeQuery(SyaratL2); r2.last(); int b2 = r2.getRow(); r2.beforeFirst(); if(b2!=0){ PreparedStatement crL = conect.con.prepareStatement (cari.AlterL1); crL.executeUpdate(); PreparedStatement cariL1 = conect.con.prepareStatement(cari.QueryL2); cariL1.setDouble(1, Double.parseDouble(sama.getText ())); cariL1.executeUpdate(); PreparedStatement crC1 = conect.con.prepareStatement(cari.AlterC2); crC1.executeUpdate(); PreparedStatement cariC2 = conect.con.prepareStatement(cari.QueryC3); cariC2.setInt(1, Integer.parseInt(field_total.getTe xt())); cariC2.executeUpdate(); String SyaratL3 = "select subset,round(support,2), barang1,
83
barang2, barang3 from candidate where support >='"+supp+"' a nd subset=3"; ResultSet r3 = conect.st.executeQuery(SyaratL3); r3.last(); int b3 = r3.getRow(); r3.beforeFirst(); if(b3!=0){ PreparedStatement crL1 = conect.con.prepareStatement(cari.AlterL2); crL1.executeUpdate(); PreparedStatement cariL2 = conect.con.prepareStatement(cari.QueryL3); cariL2.setDouble(1, Double.parseDouble(sama.getText ())); cariL2.executeUpdate(); PreparedStatement crC2 = conect.con.prepareStatement(cari.AlterC3); crC2.executeUpdate(); PreparedStatement cariC3 = conect.con.prepareStatement(cari.QueryC4); cariC3.setInt(1, Integer.parseInt(field_total.getTe xt())); cariC3.executeUpdate(); String SyaratL4 = "select subset,round(support,2), barang1,barang2,barang3,barang4 from candidate wher e support >='"+supp+"' and subset=4"; ResultSet r4 = conect.st.executeQuery(SyaratL4); r4.last(); int b4 = r4.getRow(); r4.beforeFirst(); if(b4!=0){ PreparedStatement crL2 = conect.con.prepareStatement(cari.AlterL3); crL2.executeUpdate(); PreparedStatement cariL3 = conect.con.prepareStatement(cari.QueryL4); cariL3.setDouble(1, Double.parseDouble(sama.getText ())); cariL3.executeUpdate(); PreparedStatement crC3 = conect.con.prepareStatement(cari.AlterC4); crC3.executeUpdate(); PreparedStatement cariC4 = conect.con.prepareStatement(cari.QueryC5); cariC4.setInt(1, Integer.parseInt(field_total.getTe xt())); cariC4.executeUpdate(); String SyaratL5 = "select subset,round(support,2), barang1, barang2, barang3, barang4, barang5 from candidate where support >='"+supp+"' and subset=5"; ResultSet r5 = conect.st.executeQuery(SyaratL5); r5.last(); int b5 = r5.getRow(); r5.beforeFirst(); if(b5!=0){ PreparedStatement crL3 = conect.con.prepareStatement(cari.AlterL4);
84
crL3.executeUpdate(); PreparedStatement cariL4 = conect.con.prepareStatement(cari.QueryL5); cariL4.setDouble(1, Double.parseDouble(sama.getText ())); cariL4.executeUpdate(); PreparedStatement crC4 = conect.con.prepareStatement(cari.AlterC5); crC4.executeUpdate(); PreparedStatement cariC5 = conect.con.prepareStatement(cari.QueryC6); cariC5.setInt(1, Integer.parseInt(field_total.getTe xt())); cariC5.executeUpdate(); String SyaratL6 = "select subset,round(support,2), barang1,barang2,barang3,barang4,barang5,barang6 fro m candidate where support >='"+supp+"' and subset=6"; ResultSet r6 = conect.st.executeQuery(SyaratL6); r6.last(); int b6 = r6.getRow(); r6.beforeFirst(); if(b6!=0){ PreparedStatement crL4 = conect.con.prepareStatement(cari.AlterL5); crL4.executeUpdate(); PreparedStatement cariL5 = conect.con.prepareStatement(cari.QueryL6); cariL5.setDouble(1, Double.parseDouble(sama.getText ())); cariL5.executeUpdate(); PreparedStatement crC5 = conect.con.prepareStatement(cari.AlterC6); crC5.executeUpdate(); PreparedStatement cariC6 = conect.con.prepareStatement(cari.QueryC7); cariC5.setInt(1, Integer.parseInt(field_total.getTe xt())); cariC5.executeUpdate(); String SyaratL7 = "select subset,round(support,2), barang1,barang2,barang3,barang4,barang5,barang6,bar ang7 from candidate where support >='"+supp+"' and subset=7"; ResultSet r7 = conect.st.executeQuery(SyaratL7); r7.last(); int b7 = r7.getRow(); r7.beforeFirst(); if(b7!=0){ PreparedStatement crL5 = conect.con.prepareStatement(cari.AlterL6); crL5.executeUpdate(); PreparedStatement cariL6 = conect.con.prepareStatement(cari.QueryL7); cariL6.setDouble(1, Double.parseDouble(sama.getText ())); cariL6.executeUpdate(); PreparedStatement crL6 = conect.con.prepareStatement(cari.AlterL7); crL6.executeUpdate(); PreparedStatement cariC7 = conect.con.prepareStatement(cari.QueryC8);
85
cariC7.setInt(1, Integer.parseInt(field_total.getTe xt())); cariC7.executeUpdate(); String SyaratL8 = "select subset,round(support,2), barang1,barang2,barang3,barang4,barang5,barang6,bar ang7,barang8 from candidate where support >='"+supp+"' and subse t=8"; ResultSet r8 = conect.st.executeQuery(SyaratL8); r8.last(); int b8 = r8.getRow(); r8.beforeFirst(); if(b8!=0){ PreparedStatement crC6 = conect.con.prepareStatement(cari.AlterC7); crC6.executeUpdate(); PreparedStat ement cariL7 = conect.con.prepareStatement(cari.QueryL8); cariL7.setDouble(1, Double.parseDouble(sama.getText ())); cariL7.executeUpdate(); PreparedStatement crC7 = conect.con.prepareStatement(cari.AlterC8); crC7.executeUpdate(); PreparedStatement cariC8 = conect.con.prepareStatement(cari.QueryC9); cariC8.setInt(1, Integer.parseInt(field_total.getTe xt())); cariC8.executeUpdate(); String SyaratL9 = "select subset,round(support,2), barang1,barang2,barang3,barang4,barang5,barang6,bar ang7,barang8,barang9 from candidate where support >='"+supp+"' and subset=9"; ResultSet r9 = conect.st.executeQuery(SyaratL9); r9.last(); int b9 = r9.getRow(); r9.beforeFirst(); if(b9!=0){ PreparedStatement crL7 = conect.con.prepareStatement(cari.AlterL8); crL7.executeUpdate(); PreparedStatement cariL8 = conect.con.prepareStatement(cari.QueryL9); cariL8.setDouble(1, Double.parseDouble(sama.getText ())); cariL8.executeUpdate(); PreparedStatement crC8 = conect.con.prepareStatement(cari.AlterC9); crC8.executeUpdate(); PreparedStatement cariC9 = conect.con.prepareStatement(cari.QueryC10); cariC9.setInt(1, Integer.parseInt(field_total.getTe xt())); cariC9.executeUpdate(); String SyaratL10 = "select subset,round(support,2), barang1,barang2,barang3,barang4,barang5,barang6,bar ang7,barang8,barang9,barang10 from candidate where support >='"+su pp+"' and subset=10"; ResultSet r10 = conect.st.executeQuery(SyaratL10); r10.last(); int b10 = r10.getRow(); r10.beforeFirst();
86
if(b10!=0){ PreparedStatement crL8 = conect.con.prepareStatement(cari.AlterL9); crL8.executeUpdate(); PreparedStatement cariL9 = conect.con.prepareStatement(cari.QueryL10); cariL9.setDouble(1, Double.parseDouble(sama.getText ())); cariL9.executeUpdate(); }else{ cariRule1(); }//untuk b10 }else{ cariRule1(); }//untuk b9 }el se{ cariRule1(); }// untuk b8 }else{ car iRule1(); }//unut k b7 }else{ cariRul e1(); }//untuk b6 }else{ cariRule1(); }//untuk b5 }else{ cariRule1(); }//untuk b4 }else{ cariRule1(); }//untuk b3 }else{ cariRule1(); }//untuk b2 }else{ internalframe.setVisible(false); String editWaktu = "call waktueksek usiakhir()"; PreparedStatement stt = conect.con.prepareStatement(editWaktu); stt.executeUpdate(); String hitungTotal = "select TIMEDIFF(ts2,ts1) as totaltime from t1"; ResultSet rst = conect.st.executeQuery(hitungTotal); if(rst.next()){ String total = rst.getString(" totaltime"); lbltime.setText(total); System.out.print(total); } JOptionPane.showMessageDialog(this, "Proses pencarian selesai","Pesan!",JOptionPane.INFORMATION _MESSAGE); JOptionPane.showMessageDialog(this, "Tabel
87
LargeItem(L) Kosong!\ nTidak Diperoleh Hasil","Pesan!",JOptionPane.ERROR_MESSAGE); setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT _CURSOR)); pembanding.setText(""); minsup.setText(""); field_total.setText(""); field_banding.setText(""); sama.setText(""); minconf.setText(""); jmlrule.setText(""); Kosong(); this.minsup.grabFocus(); minsup.setEnabled(true); field_banding.setEnabled(true); hitung.setEnabled(true); btn_clear.setEnabled(true); btn_back.setEnabled(true); btn_logout2.setEnabled(true); btn_menu2.setEnabled(true); rule.setEnabled(false); this.rekomendasi.setEnabled(false); this.cetak.setEnabled(false); this.jchart.setEnabled(false); this.jchart1.setEnabled(false); } conect.st.close(); conect.con.close(); }catch(SQLException e){ } }
Kode program diatas merupakan method createCandidate() yang berfungsi
membentuk candidate itemset Ck sampai dengan 10 kombinasi barang atau C10.
Mekanismenya adalah query database yang menghasilkan nilai support dan
kombinasi barang yang disimpan ke dalam tabel candidate. Adapun querynya
terletak pada kelas cariRule seperti pada listing program dibawah ini.
public String callCL = "call dropcreateCL()"; public String deleteL = "delete from largeitems et"; public String QueryC1 = "insert into candidate (select 1,round(count(*)/?,2) as support,nama_barang from c leaning group by nama_barang)"; public String QueryC2 = "insert into candidate (select 2,round(count(*)/?,2) as support,b1.nama_barang as
88
barang1,b2.nama_barang as barang2 " + "from cleaning b1, cleaning b2 where b1.nama_barang<b2.nama_barang " + "and b1.id_nota=b2.id_nota group by b1.nama_barang,b2.nama_barang)"; public String QueryC3 = "insert into candidate (select 3,round(count(*)/?,2) as support,b1.nama_barang as barang1,b2.nama_barang as barang2, b3.nama_barang a s barang3 " + "from cleaning b1, cleaning b2, cleaning b 3 where b1.nama_barang < b2.nama_barang and b2.nama_barang < b3.nama_barang " + "and b1.id_nota=b2.id_nota and b1.id_no ta=b3.id_nota " + "and b2.id_nota=b3.id_nota group by b1.nama_barang,b2.nama_barang,b3.nama_barang)"; public String QueryC4 = "insert into candidate (select 4,round(count(*)/?,2) as support,b1.nama_barang as barang1,b2.nama_barang as barang2, b3.nama_barang a s barang3, b4.nama_barang as barang4 " + "f rom cleaning b1, cleaning b2, cleaning b3, cleaning b4 where b1.nama_barang < b2.nama_barang and b2.nam a_barang < b3.nama_barang and b3.nama_barang < b4.nama_barang " + "and b1.id_nota=b2.id_nota and b1.id_no ta=b3.id_nota and b1.id_nota=b4.id_nota " + "and b2.id_nota=b3.id_nota and b2.id_no ta=b4.id_nota " + "and b3.id_nota=b4.id_nota group by b1.nama_barang,b2.nama_barang,b3.nama_barang,b4.nam a_barang)"; public String QueryC5 = "insert into candidate (select 5,round( count(*)/?,2) as support,b1.nama_barang as barang1,b2.nama_barang as barang2, b3.nama_barang a s barang3, b4.nama_barang as barang4, b5.nama_barang as barang 5 " + "from cleaning b1, cleaning b2, cleanin g b3, cleaning b4, cleaning b5 where b1.nam a_barang < b2.nama_barang and b2.nama_barang < b3.nama_barang and b3.nama_barang < b4.nama_barang and b4.nama_barang < b5.nama_barang " + "and b1.id_nota=b2.id_nota and b1.id_no ta=b3.id_nota and b1.id_nota=b4.id_nota and b1.id_nota=b5.id_nota " + "and b2.id_nota=b3.id_nota and b2.id_no ta=b4.id_nota and b2.id_nota=b5.id_nota " + "and b3.id_nota=b4.id_nota and b3.id_no ta=b5.id_nota " + "and b4.id_nota=b5.id_nota group by b1.nama_barang,b2.nama_barang,b3.nama_barang,b4.nam a_barang,b5.nama_barang)"; public String QueryC6 = "insert into candidate (select 6,round(count(*)/?,2) as support,b1.nama_barang as barang1,b2.nama_barang as barang2, b3.nama_barang a s barang3, b4.nama_barang as barang4, b5.nama_bar ang as barang5, b6.nama_barang as barang6 " + "from cleaning b1, cleaning b2, cleanin g b3, cleaning b4, cleaning b5, cleaning b6 where b1.nama_barang < b2.nama_barang
89
and b2.nama_barang < b3.nama_barang and b3.nama_bar ang < b4.nama_barang and b4.nama_barang < b5.nama_barang and b5.nama_barang < b6.nama_barang " + "and b1.id_nota=b2.id_nota and b1.id_no ta=b3.id_nota and b1.id_nota=b4.id_nota and b1.id_nota=b5.id_nota and b1.id_nota=b6.id_nota " + "and b2.id_nota=b3.id_not a and b2.id_nota=b4.id_nota and b2.id_nota=b5.id_nota and b2.id_nota=b6.id_nota " + "and b3.id_nota=b4.id_nota and b3.id_no ta=b5.id_nota and b3.id_nota=b6.id_nota " + "and b4.id_nota=b5.id_nota and b4.id_no ta=b6.id_nota " + "and b5.id_nota=b6.id_nota group by b1.nama_barang,b2.nama_barang,b3.nama_barang,b4.nam a_barang,b5.nama_barang,b6.nama_barang)"; public String QueryC7 = "insert into candidate (select 7,round(count(*)/?,2) as support,b1.nama_barang as barang1,b2.n ama_barang as barang2, b3.nama_barang as barang3, b4.nama_barang as barang4, b5.nama_barang as barang 5, b6.nama_barang as barang6, b7.nama_barang as barang 7 " + "from cleaning b1, cleaning b2, cleanin g b3, cleaning b4, cleaning b5, cleaning b6, cleaning b7 where b1.nama_barang < b2.nama_barang and b2.nama_barang < b3.nama_barang and b3.nama_barang < b4.nama_barang and b4.nama_barang < b5.nama_barang and b5.nama_barang < b6.nama_barang and b6.nama_barang < b7.nama_barang " + "and b1. id_nota=b2.id_nota and b1.id_nota=b3.id_nota and b1.id_nota=b4.id_nota and b1.id_nota=b5.id_nota and b1.id_nota=b6.id_nota and b1.id_nota=b7.id_nota " + "and b2.id_nota=b3.id_nota and b2.id_no ta=b4.id_nota and b2.id_nota=b5.id_nota and b2.id_no ta=b6.id_nota and b2.id_nota=b7.id_nota " + "and b3.id_nota=b4.id_nota and b3.id_no ta=b5.id_nota and b3.id_nota=b6.id_nota and b3.id_nota=b7.id_nota " + "and b4.id_nota=b5.id_nota and b4.id_no ta=b6.id_nota and b4.id_nota=b7.id_nota " + "and b5.id_nota=b6.id_nota and b5.id_no ta=b7.id_nota " + "and b6.id_nota=b7.id_nota " + "group by b1.nama_barang,b2.nama_barang,b3.nama_barang,b4.nam a_barang,b5.nama_barang,b6.nama_barang,b7.nama_barang)"; public String QueryC8 = "insert into candidate (select 8,round(count(*)/?,2) as support,b1.nama_barang as barang1,b2.nama_barang as barang2, b3.nama_barang a s barang3, b4.nama_barang as barang4, b5.nama_barang as barang 5, b6.nama_barang as barang6, b7.nama_bara ng as barang7, b8.nama_barang " + "from cleaning b1, cleaning b2, cleanin g b3, cleaning b4, cleaning b5, cleaning b6, cleaning b7, cleaning b8 where b1.nama_barang < b2.nama_barang and b2.nama_barang < b3.nama_barang and b3.nama_barang < b4.nam a_barang and b4.nama_barang < b5.nama_barang and b5.nama_barang < b6.nama_barang and b6.nama_barang < b7.nama_barang and
90
b7.nama_barang < b8.nama_barang " + "and b1.id_nota=b2.id_nota and b1.id_no ta=b3.id_nota and b1.id_nota=b4.id_nota and b1.i d_nota=b5.id_nota and b1.id_nota=b6.id_nota and b1.id_nota=b7.id_nota and b1.id_nota=b8.id_nota " + "and b2.id_nota=b3.id_nota and b2.id_no ta=b4.id_nota and b2.id_nota=b5.id_nota and b2.id_nota=b6.id_nota and b2.id_nota=b7.id_nota and b2.id_nota=b8.id_nota " + "and b3.id_nota=b4.id_nota and b3.id_no ta=b5.id_nota and b3.id_nota=b6.id_nota and b3.id_nota=b7.id_nota and b3.id_nota=b8.id_nota " + "and b4.id_nota=b5.id_nota and b4.id_no ta=b6.id_nota and b4.id_nota=b7.id_nota and b4.id_nota=b8.id_nota " + "and b5.id_nota=b6.id_nota and b5.id_no ta=b7.id_nota and b5.id_nota=b8.id_nota " + "and b6.id_nota=b7.id_nota and b6.id_no ta=b8.id_nota " + "and b7.id_nota=b8.id_nota " + "group by b1.nama_barang,b2.nama_barang,b3.nama_barang,b4.nam a_barang,b5.nama_barang,b6.nama_barang,b7.nama_barang,b8.nama_bara ng)"; public String QueryC9 = "insert into candidate (select 9,round(count(*)/?,2) as support,b1.nama_barang as barang1,b2.nama_bara ng as barang2, b3.nama_barang as barang3, b4.nama_barang as barang4, b5.nama_barang as barang 5, b6.nama_barang as barang6, b7.nama_barang as barang 7, b8.nama_barang, b9.nama_barang " + "from cleaning b1, cleaning b2, cleanin g b3, cleaning b4, c leaning b5, cleaning b6, cleaning b7, cleaning b8, cleaning b9 where b1.nama_barang < b2.nama_barang and b2.nam a_barang < b3.nama_barang and b3.nama_barang < b4.nama_barang and b4.nama_barang < b5.nama_barang and b5.nama_barang < b6.nama_barang and b6.nama _barang < b7.nama_barang and b7.nama_barang < b8.nama_barang and b8.nama_barang < b9.nama_barang " + "and b1.id_nota=b2.id_nota and b1.id_no ta=b3.id_nota and b1.id_nota=b4.id_nota and b1.id_nota=b5.id_nota and b1.id_nota=b6.id_nota and b1.id_no ta=b7.id_nota and b1.id_nota=b8.id_nota and b1.id_nota=b9.id_nota " + "and b2.id_nota=b3.id_nota and b2.id_no ta=b4.id_nota and b2.id_nota=b5.id_nota and b2.id_nota=b6.id_nota and b2.id_nota=b7.id_nota and b2.id_nota=b8.id_nota and b2.id_nota=b9.id_nota " + "and b3.id_nota=b4.id_nota and b3.id_no ta=b5.id_nota and b3.id_nota=b6.id_nota and b3.id_nota=b7.id_nota and b3.id_nota=b8.id_nota and b3.id_nota=b9.id_nota " + "and b4.id_nota=b5.id_nota and b4.id_no ta=b6.id_nota and b 4.id_nota=b7.id_nota and b4.id_nota=b8.id_nota and b4.id_nota=b9.id_nota " + "and b5.id_nota=b6.id_nota and b5.id_no ta=b7.id_nota and b5.id_nota=b8.id_nota and b5.id_nota=b9.id_nota " + "and b6.id_nota=b7.id_nota and b6.id_no ta=b8.i d_nota and b6.id_nota=b9.id_nota " + "and b7.id_nota=b8.id_nota and b7.id_no ta=b9.id_nota " +
91
"and b8.id_nota=b9.id_nota " + "group by b1.nama_barang,b2.nama_barang,b3.nama_barang,b4.nam a_barang,b5.nama_barang,b6.nama_barang,b7.nama_barang,b8.nama_bara ng,b9.nama_barang)"; public String QueryC10 = "insert into candidate (select 10,round(count(*)/?,2) as support,b1.nama_barang as barang1,b2.nama_barang as barang2, b3.nama_barang a s barang3, b4.nama_barang as barang4, b 5.nama_barang as barang5, b6.nama_barang as barang6, b7.nama_barang as barang 7, b8.nama_barang, b9.nama_barang, b10.nama_barang " + "from cleaning b1, cleaning b2, cleanin g b3, cleaning b4, cleaning b5, cleaning b6, cleaning b7, cleaning b8, cl eaning b9, cleaning b10 where b1.nama_barang < b2.nama_bar ang and b2.nama_barang < b3.nama_barang and b3.nama_barang < b4.nama_barang and b4.nama_barang < b5.nama_barang and b5.nama_barang < b6.nama_barang and b6.nama_barang < b7.nama_barang and b7.nama_ba rang < b8.nama_barang and b8.nama_barang < b9.nama_barang and b9.nama_barang < b10.nama_barang " + "and b1.id_nota=b2.id_nota and b1.id_no ta=b3.id_nota and b1.id_nota=b4.id_nota and b1.id_nota=b5.id_nota and b1.id_nota=b6.id_nota and b1.id_nota =b7.id_nota and b1.id_nota=b8.id_nota and b1.id_nota=b9.id_nota and b1.id_nota=b10.id_nota " + "and b2.id_nota=b3.id_nota and b2.id_no ta=b4.id_nota and b2.id_nota=b5.id_nota and b2.id_nota=b6.id_nota and b2.id_nota=b7.id_nota and b2.id_nota=b8. id_nota and b2.id_nota=b9.id_nota and b2.id_nota=b10.id_nota " + "and b3.id_nota=b4.id_nota and b3.id_no ta=b5.id_nota and b3.id_nota=b6.id_nota and b3.id_nota=b7.id_nota and b3.id_nota=b8.id_nota and b3.id_nota=b9.id_nota and b3.id_nota=b10.id_nota " + "and b4.id_nota=b5.id_nota and b4.id_no ta=b6.id_nota and b4.id_nota=b7.id_nota and b4.id_nota=b8.id_nota and b4.id_nota=b9.id_nota and b4.id_nota=b10.id_nota " + "and b5.id_nota=b6.id_nota and b5.id_no ta=b7.id_nota and b5.i d_nota=b8.id_nota and b5.id_nota=b9.id_nota and b5.id_nota=b10.id_nota " + "and b6.id_nota=b7.id_nota and b6.id_no ta=b8.id_nota and b6.id_nota=b9.id_nota and b6.id_nota=b10.id_not a " + "and b7.id_nota=b8.id_nota and b7.id_no ta=b9.id _nota and b7.id_nota=b10.id_nota " + "and b8.id_nota=b9.id_nota and b8.id_no ta=b10.id_nota " + "and b9.id_nota=b10.id_nota " + "group by b1.nama_barang,b2.nama_barang,b3.nama_barang,b4.nam a_barang,b5.nama_barang,b6.nama_barang,b7.nama_barang,b8.nama_bara ng,b9.nama_barang,b10.nama_barang)"; public String QueryL1 = "insert into largeitemset (select subset,round(support,2), barang1 from candidate whe re support >=? and subset=1)"; public String QueryL2 = "insert into largeitemset (select
92
subset,round(support,2), barang1,barang2 from candi date where support >=? and subset=2)"; public String QueryL3 = "insert into largeitemset (select subset,round(support,2), barang1,barang2,barang3 fr om candidate where support >=? and subset=3)"; public String QueryL4 = "insert into largeitemset (select subset,round(support,2), barang1,barang2,barang3,ba rang4 from candidate where support >=? and subset=4)"; public String QueryL5 = "insert into largeitemset (select subset ,round(support,2), barang1,barang2,barang3,barang4, barang5 from candidate where support >=? and subset=5)"; public String QueryL6 = "insert into largeitemset (select subset,round(support,2), barang1,barang2,barang3,barang4,barang5,barang6 fro m candidat e where support >=? and subset=6)"; public String QueryL7 = "insert into largeitemset (select subset,round(support,2), barang1,barang2,barang3,barang4,barang5,barang6,bar ang7 from candidate where support >=? and subset=7)"; public String QueryL8 = "insert into largeitemset (select subset,round(support,2), barang1,barang2,barang3,barang4,barang5,barang6,bar ang7,barang8 from candidate where support >=? and subset=8)"; public String QueryL9 = "insert into largeitemset (select subset,round(support,2), barang1,barang2,barang3,barang4,barang5,barang6,bar ang7,barang8,barang9 from candidate where support >=? and subset=9 )"; public String QueryL10 = "insert into largeitemset (select subset,round(support,2), barang1,barang2,barang3,barang4,barang5,barang6,bar ang7,barang8,barang9,barang10 from candidate where support >=? and subset=10)"; public String AlterC1 = "alter table candidate add(barang2 varchar(100))"; public String AlterL1 = "alter table largeitemset add(barang2 varchar(100))"; public String AlterC2 = "alter table candidate add(barang3 varchar(100))"; public String AlterL2 = "alter table largeitemset add(barang3 varchar(100))"; public String AlterC3 = "alter table candidate add(barang4 varchar(100))"; public String AlterL3 = "alter table largeitemset add(barang4 varchar(100))"; public String AlterC4 = "alter table candidate add(barang5 varchar(100))"; public String AlterL4 = "alter table largeitemset add(barang5 varchar(100))"; public String AlterC5 = "alt er table candidate add(barang6 varchar(100))"; public String AlterL5 = "alter table largeitemset add(barang6 varchar(100))"; public String AlterC6 = "alter table candidate add(barang7 varchar(100))"; public String AlterL6 = "alter table largeit emset add(barang7 varchar(100))";
93
public String AlterC7 = "alter table candidate add(barang8 varchar(100))"; public String AlterL7 = "alter table largeitemset add(barang8 varchar(100))"; public String AlterC8 = "alter table candidate add(barang 9 varchar(100))"; public String AlterL8 = "alter table largeitemset add(barang9 varchar(100))"; public String AlterC9 = "alter table candidate add(barang10 varchar(100))"; public String AlterL9 = "alter table largeitemset add(barang10 varchar(100))";
2. Membentuk asosiasi barang yang diperoleh dari kandidat itemset yang
mempunyai subset tertinggi. Penerapan Rumus 2.2 Nilai Confidence )( BA⇒
adalah membagi nilai support dari kombinasi A dan B dengan nilai support
dari A. Maka akan diperoleh nilai confidence dari asosiasi BA⇒ .
Implementasi pada kode program adalah sebagai berikut.
public void cariRule1(){ double mins = Double.parseDouble(minconf.ge tText()); koneksi.cekDriver(); koneksi conect = new koneksi(); try{ conect.cekKoneksi(); conect.con.createStatement(); String carirule = "call pencarianru le()"; PreparedStatement stat = conect.con.prepareStatement(carirule); stat.executeUpdate(); String MaxColumn = "select * from c arirule"; ResultSet rs = conect.st.executeQue ry(MaxColumn); ResultSetMetaData rsmd = rs.getMeta Data(); int k = rsmd.getColumnCount(); //penentuan pemanggilan procedure b erdasarkan nilai k : jumlah kolom pd carirule int c = k-4; rs.last(); int b = rs.getRow(); rs.beforeFirst(); if(b!=0){ if(rs.next()){ for(int i=0;i<=c;i++){ if (i==1){ String cari = "call cariasosias i1()"; PreparedStatement st = conect.con.prepareStatement(cari);
94
st.executeUpdate(); System.out.print(k); }else if(i==2){ String cari = "call cariasosias i2()"; PreparedStatement st = conect.con.prepareStatement(cari); st.executeUpdate(); System.out.print(k); }else if(i==3){ String cari = "call cariasosias i3()"; PreparedStatement st = conect.con.prepareStatement(cari); st.executeUpdate(); System.out.print(k); }else if(i==4){ String cari = "call cariasosias i4()"; PreparedStatement st = conect.con.prepareStatement(cari); st.executeUpdate(); System.out.print(k); }else if(i==5){ String cari = "call cariasosias i5()"; PreparedStatement st = conect.con.prepareStatement(cari); st.executeUpdate(); System.out.print(k); }else if(i==6){ String cari = "call cariasosias i6()"; PreparedStatement st = conect.con.prepareStatement(cari); st.executeUpdate(); System.out.print(k); }else if(i==7){ String cari = "call cariasosias i7()"; PreparedStatement st = conect.con.prepareStatement(cari); st.executeUpdate(); System.out.print(k); }else if(i==8){ String cari = "call cariasosias i8()"; PreparedStatement st = conect.con.prepareStatement(cari); st.executeUpdate(); System.out.print(k); }else if(i==9){ String cari = "call cariasosias i9()"; PreparedStatement st = conect.con.prepareStatement(cari); st.executeUpdate(); System.out.print(k); } }} String editWaktu = "call waktueksek usiakhir()"; PreparedStatement stt = conect.con.prepareStatement(editWaktu); stt.executeUpdate();
95
String hitungTotal = "select TIMEDI FF(ts2,ts1) as totaltime from t1"; ResultSet rst = conect.st.executeQuery(hitungTotal); if(rst.next()){ String total = rst.getString(" totaltime"); lbltime.setText(total); System.out.print(total); } internalframe.setVisible(false); JOptionPane.showMessageDialog(this, "Proses pencarian selesai","Pesan!",JOptionPane.INFORMATION _MESSAGE); tabel(); minsup.setEnabled(true); field_banding.setEnabled(true); hitung.setEnabled(true); btn_clear.setEnabled(true); btn_back.setEnabled(true); btn_logout2.setEnabled(true); btn_menu2.setEnabled(true); }else{ Kosong(); } conect.st.close(); conect.con.close(); }catch(SQLException ex){ //ex.printStackTrace(); //JOptionPane.showMessageDialog(this,"err or karena "+ex); } }
Listing program diatas merupakan method cariRule1() yang berfungsi
untuk membentuk asosiasi barang. Adapun mekanismenya adalah mengambil
large itemset yang memiliki kombinasi tertinggi. Kemudian dari large itemset
tersebut dilakukan pengecekan berapa banyak kombinasi dari large itemset
tersebut dan dibentuk asosiasi barang dengan pemanggilan melalui store
procedure berdasarkan nilai jumlah kombinasi pengecekan large itemset. Listing
program berikut merupakan store procedure untuk kombinasi 4 barang dari large
itemset. Untuk kombinasi lain digunakan store procedure yang sesuai dengan
nilai jumlah kombinasi large itemset yang diperoleh.
96
DELIMITER $$; DROP PROCEDURE IF EXISTS `apriori`.`cariasosiasi3`$ $ CREATE DEFINER=`root`@`localhost` PROCEDURE `carias osiasi3`() BEGIN declare c int; declare i int; declare ct int; select count(id) into c from carirule; set ct = c; set i=1; loop1: while i<=ct do insert into rule(select ‘’ ,subset,(select support from largeitemset where subset=2 and barang1=(select bar ang1 from carirule where id=i) and barang2=(select barang4 fr om carirule where id=i)) as support,round((select supp ort from largeitemset where subset=2 and barang1=(select barang1 from car irule where id=i) and barang2=(select barang4 from carirule whe re id=i))/(select support from largeitemset where subs et=1 and barang1=(select barang1 from carirule where id=i)), 2) as confidence,barang1,barang4 from carirule where id=i ); insert into rule(select ‘’ ,subset,(select support from largeitemset where subset=2 and barang1=(select bar ang2 from carirule where id=i) and barang2=(select barang4 fr om carirule where id=i)) as suppor t,round((select support from largeitemset where subset=2 and barang1=(select barang2 from car irule where id=i) and barang2=(select barang4 from carirule whe re id=i))/(select support from largeitemset where subs et=1 and barang1=(select barang2 from carirule where id=i)),2) as confidence,barang2,barang4 from carirule where id=i ); insert into rule(select ‘’ ,subset,(select support from largeitemset where subset=2 and barang1=(select bar ang3 from carirule where id=i) and barang2=(select barang4 fr om carirule where id=i)) as support,round((select support from la rgeitemset where subset=2 and barang1=(select barang3 from car irule where id=i) and barang2=(select barang4 from carirule whe re id=i))/(select support from largeitemset where subs et=1 and barang1=(select b arang3 from carirule where id=i)),2) as confidence,barang3,barang4 from carirule where id=i ); insert into rule(select ‘’ ,subset,(select support from largeitemset where subset=3 and barang1=(select bar ang1 from carirule where id=i) and barang2=(select bara ng2 from carirule where id=i) and barang3=(select barang4 from cariru le where id=i)) as support,round((select support from largeitemset where subset=3 and barang1=(select barang1 from carirule where id= i) and barang2=(select barang2 from carirule where id= i) and barang3=(select barang4 from carirule where id=i))/ (select support from largeitemset where subset=2 an d barang1=(select barang1 from carirule where id=i) a nd barang2=(select barang2 from carirule where id=i)), 2) as confidence,concat(barang1,”, “,ba rang2),barang4 from carirule
97
where id=i); insert into rule(select ‘’ ,subset,(select support from largeitemset where subset=3 and barang1=(select bar ang1 from carirule where id=i) and barang2=(select barang3 fr om carirule where id=i) and barang3=(select ba rang4 from carirule where id=i)) as support,round((select support from largeitemset where subset=3 and barang1=(select barang1 from carirule where id= i) and barang2=(select barang3 from carirule where id=i) a nd barang3=(select barang4 from carirule where id=i))/ (select support from largeitemset where subset=2 an d barang1=(select barang1 from carirule where id=i) a nd barang2=(select barang3 from carirule where id=i)), 2) as confidence,concat(barang1,”, “ ,barang3),barang4 from carirule where id=i); insert into rule(select ‘’ ,subset,(select support from largeitemset where subset=3 and barang1=(select bar ang2 from carirule where id=i) and barang2=(select barang3 fr om carirule where id=i) and barang3=(select barang4 from cariru le where id=i)) as support,round((s elect support from largeitemset where subset=3 and barang1=(select barang2 from carirule where id= i) and barang2=(select barang3 from carirule where id=i) a nd barang3=(select barang4 from carirule where id=i))/ (select support from largeitemset where subse t=2 and barang1=(select barang2 from carirule where id=i) a nd barang2=(select barang3 from carirule where id=i)), 2) as confidence,concat(barang2,”, “ ,barang3),barang4 from carirule where id=i); insert into rule(select ‘’ ,subset,(select support from largei temset where subset=3 and barang1=(select barang1 f rom carirule where id=i) and barang2=(select barang2 fr om carirule where id=i) and barang3=(select barang4 from cariru le where id=i)) as support,round((select support from largeitemset where subset=3 and b arang1=(select barang1 from carirule where id=i) an d barang2=(select barang2 from carirule where id=i) a nd barang3=(select barang4 from carirule where id=i))/ (select support from largeitemset where subset=2 an d barang1=(select barang2 from carirule where id=i) and barang2=(select barang4 from carirule where id=i)), 2) as confidence,concat(barang2,”, “ ,barang4),barang1 from carirule where id=i); insert into rule(select ‘’ ,subset,(select support from largeitemset where subset=3 and barang1=(select bar ang1 fr om carirule where id=i) and barang2=(select barang3 fr om carirule where id=i) and barang3=(select barang4 from cariru le where id=i)) as support,round((select support from largeitemset where subset=3 and barang1=(select barang1 from carirule where id= i) and barang2=(select barang3 from carirule where id=i) a nd barang3=(select barang4 from carirule where id=i))/ (select support from largeitemset where subset=2 an d barang1=(select barang3 from carirule where id=i) a nd barang2=(select barang4 from carirule wher e id=i)),2) as confidence,concat(barang3,”, “ ,barang4),barang1 from carirule
98
where id=i); insert into rule(select ‘’ ,subset,(select support from largeitemset where subset=3 and barang1=(select bar ang2 from carirule where id=i) and barang2=(select barang3 from carirule where id=i) and barang3=(select barang4 from cariru le where id=i)) as support,round((select support from largeitemset where subset=3 and barang1=(select barang2 from carirule where id= i) and barang2=(select barang3 from carirule where id=i) a nd barang3=(select barang4 from carirule where id=i))/ (select support from largeitemset where subset=2 an d barang1=(select barang2 from carirule where id=i) a nd barang2=(select barang4 from carirule where id=i)), 2) as confidence,concat(barang2,”, “,barang 4),barang3 from carirule where id=i); insert into rule(select ‘’ ,subset,(select support from largeitemset where subset=3 and barang1=(select bar ang2 from carirule where id=i) and barang2=(select barang3 fr om carirule where id=i) and barang3=(select barang 4 from carirule where id=i)) as support,round((select support from largeitemset where subset=3 and barang1=(select barang2 from carirule where id= i) and barang2=(select barang3 from carirule where id=i) a nd barang3=(select barang4 from carirule where id=i))/ (select support from largeitemset where subset=2 an d barang1=(select barang3 from carirule where id=i) a nd barang2=(select barang4 from carirule where id=i)), 2) as confidence,concat(barang3,”, “ ,barang4),barang2 from carirule where id=i); insert into rule(select ‘’ ,subset,(select support from largeitemset where subset=3 and barang1=(select bar ang1 from carirule where id=i) and barang2=(select barang2 fr om carirule where id=i) and barang3=(select barang4 from cariru le where id=i)) as support,round((selec t support from largeitemset where subset=3 and barang1=(select barang1 from carirule where id= i) and barang2=(select barang2 from carirule where id=i) a nd barang3=(select barang4 from carirule where id=i))/ (select support from largeitemset where subset=2 and barang1=(select barang1 from carirule where id=i) a nd barang2=(select barang4 from carirule where id=i)), 2) as confidence,concat(barang1,” , ",barang4),barang2 from carirule where id=i); insert into rule(select '',subset,(select support f rom largeitems et where subset=3 and barang1=(select barang1 from carirule where id=i) and barang2=(select barang3 fr om carirule where id=i) and barang3=(select barang4 from cariru le where id=i)) as support,round((select support from largeitemset where subset=3 and baran g1=(select barang1 from carirule where id=i) and barang2=(select barang3 from carirule where id=i) a nd barang3=(select barang4 from carirule where id=i))/ (select support from largeitemset where subset=2 an d barang1=(select barang1 from carirule where id=i ) and barang2=(select barang4 from carirule where id=i)), 2) as confidence,concat(barang1,", ",barang4),barang3 fro m carirule
99
where id=i); SET i = i + 1; END while loop1; END$$ DELIMITER ;$$
Hasil asosiasi barang disajikan dalam tabel asosiasi pada form. Pada
langkah ketiga dilakukan pembacaan aturan asosiasi yang terbentuk dengan
mengklik baris pada tabel asosiasi dan text area dibawah tabel asosiasi yang akan
menampilkan aturan asosiasinya.
5.3.2 Form Perhitungan Apriori – Menganalisa Aturan Asosiasi
Gambar 4.14. Form Perhitungan Apriori – Menganalisa Aturan Asosiasi
Pada gambar 4.14. diatas merupakan tampilan internal frame yang berisi
tabel-tabel pembentukan asosiasi barang dan contoh rekomendasi dari penerapan
100
asosiasi yang terbentuk. Admin dapat melihat intenal frame tersebut dengan
menekan tombol DETAIL pada Form Perhitungan Apriori – Pencarian Pola
Asosiasi seperti pada gambar 4.13.
5.3.2 Form Perhitungan Apriori – Pembacaan Grafik Support
Gambar 4.15. Form Perhitungan Apriori – Pembacaan grafik support
Gambar 4.15. diatas merupakan tampilan grafik dari hasil pencarian
asosiasi barang berdasarkan nilai support. Koordinat X mewakili asosiasi barang
dan koordinat Y menjelaskan nilai support dari asosiasi barang pada koordinat X.
Sedangkan chart berwarna merah menunjukkan besarnya nilai support asosiasi
barang.
101
5.3.2 Form Perhitungan Apriori – Pembacaan Grafik Confidence
Gambar 4.16. Form Perhitungan Apriori – Pembacaan grafik confidence
Gambar 4.16. diatas merupakan tampilan grafik dari hasil pencarian
asosiasi barang berdasarkan nilai confidence. Koordinat X mewakili asosiasi
barang dan koordinat Y menjelaskan nilai confidence dari asosiasi barang pada
koordinat X. Sedangkan chart berwarna merah menunjukkan besarnya nilai
confidence asosiasi barang.
102
BAB V
ANALISIS HASIL IMPLEMENTASI
5.1 Analisis Pengujian Sistem
Pengujian sistem dilakukan dengan melakukan pencarian pola asosiasi
barang terhadap beberapa data transaksi. Dalam hal ini data transaksi yang diuji
memiliki ukuran yang besar. Maka dari itu diperlukan spesifikasi mesin yang
sesuai dengan kebutuhan sistem.
Pengujian 1
Sumber Data : tabel datatoko
Jumlah Baris : 13494
Jumlah Transaksi : 2623
Jumlah Jenis Barang : 31
Tabel 5.1 Tabel Pengujian 1
Minimum Support 40% 50% 60%
Minimum Confidence 50% 50% 50%
Candidate Itemset 11125 11125 2597
Large Itemset 8 7 4
Asosiasi barang 6 6 1
Waktu 13 menit 1 detik 12 menit 55 detik 3 menit 6 detik
Minimum Support 40% 50% 60%
Minimum Confidence 90% 90% 90%
Candidate Itemset 11125 11125 2597
Large Itemset 8 7 4
Asosiasi barang 5 5 1
Waktu 12 menit 50 detik 12 menit 54 detik 3 menit 4 detik
103
Pengujian 2
Sumber Data : tabel sistem
Jumlah Baris : 4172
Jumlah Transaksi : 862
Jumlah Jenis Barang : 115
Tabel 5.2 Tabel Pengujian 2
Minimum Support 3% 4% 5%
Minimum Confidence 50% 50% 50%
Candidate Itemset 15203 10151 10151
Large Itemset 103 59 39
Asosiasi barang 18 2 1
Waktu 32 detik 14 detik 13 detik
Minimum Support 3% 4% 5%
Minimum Confidence 90% 90% 90%
Candidate Itemset 15203 tidak diketahui tidak diketahui
Large Itemset 103 tidak diketahui tidak diketahui
Asosiasi barang 7 kosong kosong
Waktu 32 detik 13 detik 13 detik
104
Pengujian 3
Sumber Data : tabel datatokox
Jumlah Baris : 12227
Jumlah Transaksi : 2613
Jumlah Jenis Barang : 31
Tabel 5.3 Tabel Pengujian 3
Minimum Support 30% 35% 40%
Minimum Confidence 50% 50% 50%
Candidate Itemset 76749 10830 10830
Large Itemset 48 17 8
Asosiasi barang 22 18 6
Waktu 1 jam 38 menit 57
detik 11 menit 14 detik 11 menit 17 detik
Minimum Support 30% 35% 40%
Minimum Confidence 90% 90% 90%
Candidate Itemset 76749 10830 10830
Large Itemset 48 17 8
Asosiasi barang 9 9 3
Waktu 1 jam 39 menit 0
detik 11 menit 16 detik 11 menit 14 detik
105
Pengujian 4
Sumber Data : tabel datakafe2
Jumlah Baris : 7361
Jumlah Transaksi : 1483
Jumlah Jenis Barang : 115
Tabel 5.4 Tabel Pengujian 4
Minimum Support 20% 30% 40%
Minimum Confidence 50% 50% 50%
Candidate Itemset 17502 10867 10867
Large Itemset 7 4 3
Asosiasi barang 5 1 1
Waktu 1 menit 45 detik 40 detik 39 detik
Minimum Support 20% 30% 40%
Minimum Confidence 90% 90% 90%
Candidate Itemset 17502 tidak diketahui tidak diketahui
Large Itemset 7 tidak diketahui tidak diketahui
Asosiasi barang 2 kosong kosong
Waktu 1 menit 44 detik 40 detik 40 detik
106
5.2 Analisis Manfaat Sistem
Manfaat yang diperoleh dengan adanya sistem ini adalah sebagai berikut :
1. Admin dapat melakukan pencarian pola asosiasi barang yang terjual
sehingga dapat memperoleh pengetahuan mengenai barang apa saja yang
dibeli konsumen secara bersamaan.
2. Dari pengetahuan tersebut admin dapat melakukan analisa tentang
penjualan barang yang terjadi di swalayan yang hasilnya dapat
direkomendasikan kepada pemilik swalayan untuk pengembangan usaha.
5.3 Kelebihan dan Kekurangan Sistem
5.3.1 Kelebihan Sistem
1. Sistem dapat melakukan pencarian pola asosiasi barang dari data yang
berasal dari database sistem maupun data yang berasal dari luar database
sistem.
2. Sistem menyediakan panduan langkah pencarian pola asosiasi yang
memudahkan user dalam mencari asosiasi penjualan antar barang.
3. Sistem menyediakan informasi tentang pembentukan asosiasi barang
berupa kandidat itemset, large itemset dan asosiasi yang diperoleh dalam
pencarian pola asosiasi barang.
107
5.3.2 Kekurangan Sistem
1. Sistem sangat sederhana, hanya disesuaikan dengan kebutuhan untuk
menerapkan algoritma Apriori untuk pencarian pola asosiasi penjualan
barang.
2. Pada pengambilan data yang berasal dari luar database sistem masih
terdapat beberapa paket data yang hilang.
108
BAB VI
PENUTUP
6.1 Kesimpulan
Berdasarkan implementasi dan pengujian sistem yang telah dilakukan, maka
diperoleh beberapa kesimpulan antara lain :
1. Algoritma Apriori dapat diimplementasikan untuk menemukan pola asosiasi
penjualan barang pada data transaksi penjualan.
2. Nilai minimum support (minsup) menjadi parameter yang mempengaruhi
jumlah kandidat yang diperoleh. Semakin kecil nilai minsup maka semakin
banyak kandidat itemset yang diperoleh, sedangkan semakin besar nilai
minsup maka semakin sedikit kandidat itemset yang diperoleh.
3. Nilai minimum confidence (minconf) menjadi parameter yang
mempengaruhi jumlah asosiasi barang yang terbentuk. Semakin kecil nilai
minconf maka semakin banyak asosiasi barang yang diperoleh, sedangkan
semakin besar nilai minconf maka semakin sedikit asosiasi barang yang
diperoleh.
4. Besarnya ukuran data transaksi yang dianalisa, spesifikasi mesin yang
digunakan, nilai minsup dan minconf mempengaruhi waktu pencarian pola
asosiasi barang.
109
6.2 Saran
Dari sistem yang telah dibuat masih dibutuhkan beberapa saran guna
pengembangan sistem ke arah lebih baik, diantaranya adalah sebagai berikut :
1. Sistem lebih dikembangkan untuk dapat menangani sistem penjualan yang
lebih besar, seperti untuk sistem point of sales yang berbasis client server.
2. Teknik pemrograman yang digunakan lebih diefektifkan. Sebagai contoh
dengan menggunakan store procedure.
DAFTAR PUSTAKA Fayyad, U. M., G. Piatetsky-Shapiro, P. Smyth, R. Uthurusamy, Advances in
Knowledge Discovery and Data Mining. Menlo Park, CA : MIT Press, 1996. http://www2.cs.uregina.ca/~dbd/cs831/notes/kdd/ - akses terakhir tanggal 23 Oktober 2008, 20:35.
Tan, Pang-Ning, Michael Steinbach, Vipin Kumar, Introduction to Data Mining.
Boston : Pearson Addison Wesley, 2006. Han, Jiawei., and Micheline. Kamber, Data Mining : Concepts and Technique.
San Francisco : Morgan Kaufman Publisher, 2001. Witten, Ian H. and Eibe Frank, Data Mining : Practical Machine Learning Tools
and Techniques, 2nd Edition. San Francisco : Morgan Kaufman Publisher, 2005.
Mitra, Sushmita and Tinku Acharya, Data Mining : Multimedia, Soft Computing,
and Bioinformatics. Hoboken, New Jersey : John Wiley and Sons, inc., 2003.
Agrawal, Rakesh and Ramakrishnan Srikant, Fast Algorithms for Mining
Association Rules : Article, IBM Almaden Research Center, 1996. http://rakesh.agrawal-family.com/papers/vldb94apriori.pdf - akses terakhir tanggal 17 Oktober 2008, 23:19.
Sudiadiarta, I Gede, Market Basket Analysis Menggunakan Algoritma Frequent
Pattern Growth (FP-Growth) Untuk Situs E-Commerce. Universitas Sanata Dharma Yogyakarta : Skripsi, 2006.
Hartati, G. S., B. Herry. Suharto, M. Susilo Wijono, Pemrograman GUI Swing
Java dengan NetBeans 5. Yogyakarta : Penerbit Andi, 2007. Hermawan, Benny, Menguasai Java 2 dan Object Oriented Programming,
Yogyakarta : Penerbit Andi, 2004.
Daftar alamat website yang dijadikan sumber penulisan : http://infolab.stanford.edu/~ullman/mining/assocrules.pdf. Akses terakhir tanggal 17 Oktober 2008, 23:27. http://fportfolio.petra.ac.id/user_files/00-016/Data Mining Andreas Handojo.pdf. Akses terakhir tanggal 18 Oktober 2008, 23:35. http://dosen.amikom.ac.id/downloads/artikel/Publikasi Apriori-Kusrini Feb-07.pdf Akses terakhir tanggal 20 Oktober 2008, 00:35 http://www2.cs.uregina.ca/~hamilton/courses/831/ Akses terakhir tanggal 5 Mei 2008, 19:20 http://www.koders.com/ Akses terakhir tanggal 28 Agustus 2008, 01:20 http://www.java2s.com/Open-
Source/JavaDocument/Science/weka/weka/associations/ Akses terakhir tanggal 28 Agustus 2008, 01:52 http://www.google.com/