PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI PENERAPAN DATA MINING PADA PERUSAHAAN RITAIL PAKAIAN UNTUK MEMPREDIKSI KETERSEDIAAN JENIS BARANG DENGAN MENGGUNAKAN ALGORITMA FP-GROWTH HALAMAN JUDUL SKRIPSI Diajukan untuk Memenuhi Salah Satu Syarat Memperoleh Gelar Sarjana Komputer Program Studi Teknik Informatika Disusun Oleh : Elisabet Septyana Eka Enykawati 115314011 PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK INFORMATIKA FAKULTAS SAINS DAN TEKNOLOGI UNIVERSITAS SANATA DHARMA YOGYAKARTA 2015 i PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI APPLICATION OF DATA MINING IN CLOTHING RETAIL COMPANY TO PREDICT THE AVAILABILITY OF GOODS USING FP-GROWTH ALGORITHM JUDUL A Final Project Presented as Partial Fullfillment of the Requirements To Obtain the Sarjana Komputer Degree In Informatics Engineering Study Program By : Elisabet Septyana Eka Enykawati 115314011 INFORMATICS ENGINEERING STUDY PROGRAM DEPARTMENT OF INFORMATICS ENGINEERING FACULTY OF SCIENCE AND TECHNOLOGY SANATA DHARMA UNIVERSITY YOGYAKARTA 2015 ii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI HALAMAN PERSETUJUAN iii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI HALAMAN PENGESAHAN iv PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI HALAMAN PERSEMBAHAN Tuhan Yesus Kristus Bapak dan Ibu tercinta yang seantiasa memberikan doa, dukungan semangat dan motivasi Semua keluarga dan teman – teman tercinta Almamaterku Universitas Sanata Dharma Yogyakarta v PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI HALAMAN PERNYATAAN KEASLIAN KARYA Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini tidak memuat karya atau bagian karya orang lain, kecuali yang telah saya sebutkan dalam kutipan dan daftar pustaka, sebagaimana layaknya karya ilmiah Yogyakarta, 30 Juli 2015 Penulis Elisabet Septyana Eka Enykawati vi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ABSTRAK Saat ini teknologi informasi berkembang sangat pesat. Hal tersebut memberikan dampak yang besar bagi perkembangan dunia bisnis. Salah satunya adalah perkembangan bisnis di bidang industri perdagangan. Perusahaan – perusahaaan bersaing untuk menarik perhatian dari masyarakat dengan memberikan inovasi – inovasi baru. Perusahaan membutuhkan strategi – strategi khusus untuk dapat menciptakan inovasi baru. Kepuasan konsumen adalah aset utama bagi perusahaan untuk dapat mengembangkan bisnis terebut. Salah satu kepuasan konsumen di dapatkan dengan ketersediaan barang yang dicari oleh konsumen. Prediksi ketersediaan jenis barangdalam perusahaan tersebut dapat dilakukan dengan memanfaatkan data transaksi penjualan. Pengolahan data transaksi yang tepat dapat digunakan sebagai acuan dalam menentukan strategi untuk meningkatkan pelayanan konsumen. Dengan menggunakan teknik pengolahan data mining, data transaksi penjualan akan diolah sehingga menghasikan informasi yang bermanfaat untuk perusahaan. Teknik pengolahan data mining terdapat bermacam – macam jenis tergantung dengan kegunaannya. Pada kasus ini, digunakan pengolahan data mining secara asosiasi. Asosiasi adalah teknik data mining yang bertujuan untuk menemukan hubungan antara satu item dengan item yang lain. Hubungan antar item melalui data transaksi dapat dijadikan sebagai prediksi untuk menentukan jenis barang yang tersedia. Pada Tugas Akhir ini dibuat sebuah sistem untuk mengimplementasikan salah satu algoritma yang dapat digunakan untuk mencari hubungan antara item yang ada yaitu algoritma FP-Growth. Data yang digunakan adalah data transaksi penjualan. Hasil akhir dari proses pengolahan data penjualan adalah pola asosiasi. Pola asosiasi yang dimaksud adalah hubungan suatu barang terjual bersamaan dengan barang apa dalam transaksi penjualan. Hasil analisa dari pola tersebut dapat direkomendasikan kepada pemilik perusahaan sebagai acuan dalam pengambilan keputusan dalam penyediaan jenis barang untuk meningkatkan penjualan. Kata kunci :data mining, algoritma asosiasi, FP-Growth. vii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ABSTRACT Today information technology is developing very rapidly. It is a big impact for the development of the business world. One is the development of business in the field of trade industry. Companies - firms compete to attract the attention of the public by providing innovations - new innovations. Companies need a strategy - specific strategies to be able to create new innovations. Consumer satisfaction is a major asset for the company to able to develop the business. Consumer satisfaction with the availability of goods obtained in the search by consumers. Prediction availability of goods can be done by utilizing the company's sales transaction data. The proper processing of transaction data can be used as a reference in determining a strategy to improve customer service. By using the processing techniques of data mining, sales transaction data will be processed so generate useful information for the company. Processing techniques there are a variety of data mining - maca types depending on its usefulness. In this case, the processing of data mining used in the association. Association data mining is a technique that aims to find the relationship between one item to another. Relations between mealui item transaction data can be used as predictorsavailability of goods. In this final project created a system to implement one algorithm that can be used to find the relationship between existing items that FP-Growth algorithm. The data used is the sales transaction data. The final result of the processing of sales data is a pattern association. Patterns of association in question is the relationship of goods sold in conjunction with any item in the sales transaction. Results of analysis of the pattern can be recommended to the owner of the company as a reference in the decision making in the provision of inventory to increase sales. Key words : data mining, association algorithm, FP-Growth. viii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI HALAMAN PERSETUJUAN PUBLIKASI KARYA ILMIAH LEMBAR PERNYATAAN PERSETUJUAN PUBLIKASI KARYA ILMIAH UNTUK KEPENTINGAN AKADEMIS Yang bertanda tangan dibawah ini, saya mahasiswa Universitas Sanata Dharma Nama :Elisabet Septyana Eka Enykawati Nomor Mahasiswa :115314011 Demi pengembangan ilmu pengetahuan, saya memberikan kepada Perpustakaan Universitas Sanata Dharma karya ilmiah saya yang berjudul: PENERAPAN DATA MINING PADA PERUSAHAAN RITAIL PAKAIAN UNTUK MEMPREDIKSI KETERSEDIAAN JENIS BARANG DENGAN MENGGUNAKAN ALGORITMA FP-GROWTH Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan kepada Perpustakan Sanata Dharma hak untuk menyimpan, mengalihkan dalam bentuk media lain, mengelolanya di internet atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya maupun memberikan royalty kepada saya selama tetap mencantumkan nama saya sebagai penulis. Demikian pernyataan ini saya buat dengan sebenarnya Dibuat di Yogyakarta Pada tanggal : 30 Juli 2015 Elisabet Septyana Eka Enykawati ix PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI KATA PENGANTAR Puji syukur penulis haturkan kehadirat Tuhan Yang Maha Esa atas rahmat yang telah dilimpahkan-Nya, atas terselesaikannya Tugas Akhir ini yang berjudul “ PENERAPAN DATA MINING PADA PERUSAHAAN RITAIL PAKAIAN UNTUK MEMPREDIKSI KETERSEDIAAN JENIS BARANG DENGAN MENGGUNAKAN ALGORITMA FPGROWTH “. Dalam penyelesaian Tugas Akhir ini, penulis telah mendapatkan bimbingan, bantuan serta pengarahan-pengarahan dari berbagai pihak sehingga penulis dapat menyelesaikan karya ilmiah ini dengan baik dan lancar. Atas terselesainya Tugas Akhir ini penulis mengucapkan terimakasih kepada : 1. Ibu P.H. Prima Rosa, S.Si., M.Sc. selaku Dekan Fakultas Sains dan Teknoogi Universitas Sanata Dharma Yogyakarta. 2. Ibu Ridowati Gunawan, S.Kom.,M.T. selaku Ketua Program Studi Teknik Informatika dan dosen pembimbing akademik yang telah memberikan kesabaran, waktu dan kebaikan. 3. Bapak Henricus Agung Hernawan S.T.,M.Kom. selaku dosen pembimbing akademik, yang telah memberikan bimbingan dan saran selama penulis menempuh studi 4. Bapak Eko Hari Parmadi, S.Si.,M.Kom. selaku dosen penguji, yang telah memberikan kritik dan saran kepada penulis. 5. Seluruh dosen yang telah mendidik dan memberikan ilmu pengetahuan berharga selama penulis belajar di Universitas Sanata Dharma Yogyakarta. x PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 6. Bapak dan Ibu tercinta yang telah memberikan kasih sayang, perhatian, doa dan dukungan sehingga penulis dapat menyelesaikan tugas akhir. 7. Kedua adikku Destya dan Lian yang telah memberikan dukungan kepada penulis dalam menyelesaikan tugas akhir. 8. Nanda yang senantiasa memberikan perhatian, semangat dan motivasi kepada penulis sehingga dapat menyelesaikan tugas akhir ini. 9. Teman – teman Teknik Informatika khususnya angkatan 2011 atas kebersamaannya selama 4 tahun ini. 10. Seluruh staff Sekretariat Fakultas Sains dan Teknologi Universitas Sanata Dharma yang banyak membantu dalam urusan administrasi akademik 11. Seluruh pihak yang telah membantu dalam proses penyelesaian tugas akhir ini. Penelitian tugas akhir ini masih memiliki banyak kekurangan. Untuk itu, penulis sangat membutuhkan saran dan kritik untuk perbaikan di masa yang akan datang. Semoga penelitian tugas akhir ini dapat membawa manfaat bagi semua pihak. Yogyakarta, 30 Juli 2015 Penulis Elisabet Septyana Eka Enykawati xi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR ISI HALAMAN JUDUL ..................................................................................................................................... i HALAMAN PERSETUJUAN..................................................................................................................... iii HALAMAN PENGESAHAN...................................................................................................................... iv HALAMAN PERNYATAAN KEASLIAN KARYA ................................................................................. vi ABSTRAK .................................................................................................................................................. vii ABSTRACT............................................................................................................................................... viii HALAMAN PERSETUJUAN PUBLIKASI KARYA ILMIAH ................................................................ ix KATA PENGANTAR .................................................................................................................................. x DAFTAR ISI............................................................................................................................................... xii DAFTAR GAMBAR .................................................................................................................................. xv DAFTAR TABEL.......................................................................................................................................xvi BAB I ............................................................................................................................................................ 1 PENDAHULUAN ........................................................................................................................................ 1 1.1 Latar Belakang .............................................................................................................................. 1 1.2 Rumusan Masalah ......................................................................................................................... 2 1.3 Tujuan Penelitian .......................................................................................................................... 3 1.4 Batasan Masalah ........................................................................................................................... 3 1.5 Metodologi Penelitian ................................................................................................................... 3 1.6 Sistematika Penulisan ................................................................................................................... 5 BAB II........................................................................................................................................................... 7 TINJAUAN PUSTAKA ............................................................................................................................... 7 2.1 Pengertian Data Mining ................................................................................................................ 7 2.2 Proses Data Mining ....................................................................................................................... 7 2.3 Teknik – Teknik Data Mining ...................................................................................................... 9 2.3.1 Association Rule Mining ....................................................................................................... 9 2.3.2 Classification ........................................................................................................................ 9 2.3.3 Clustering ............................................................................................................................ 10 2.3.4 Outlier Analysis................................................................................................................... 10 2.4 Algoritma Frequent Pattern Growth .......................................................................................... 10 BAB III ....................................................................................................................................................... 20 xii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ANALISIS DAN PERANCANGAN SISTEM .......................................................................................... 20 Analisis Sistem............................................................................................................................ 20 3.1 3.1.1 Analisis Data Awal ............................................................................................................. 21 3.1.2 Tahap – Tahap KDD ........................................................................................................... 22 3.2 Identifikasi Sistem ............................................................................................................................ 32 3.2.1 Diagram Use Case .............................................................................................................. 32 3.2.2 Narasi Use Case .................................................................................................................. 34 Perancangan Umum Sistem ........................................................................................................ 38 3.3 3.3.1 Masukan Sistem .................................................................................................................. 38 3.3.2 Proses Sistem ...................................................................................................................... 38 3.3.3 Keluaran Sistem .................................................................................................................. 39 3.3.4 Perancangan Struktur Data.................................................................................................. 39 Perancangan Sistem .................................................................................................................... 40 3.2 3.4.1 Diagram Aktivitas ............................................................................................................... 40 3.4.2 Diagram Kelas Analisis ...................................................................................................... 44 3.4.3 Diagram Sequence............................................................................................................... 45 3.4.4 Diagram Kelas Desain ........................................................................................................ 48 3.4.5 Rincian Algoritma Per Method ........................................................................................... 49 3.5 Perancangan Antar Muka Pengguna ........................................................................................... 64 3.5.1 Perancangan Antar Muka Halaman Home .......................................................................... 64 3.5.2 Perancangan Antar Muka Halaman Open ........................................................................... 65 3.5.3 Perancangan Antar Muka Halaman Prepocessing .............................................................. 66 3.5.4 Perancangan Antar Muka Halaman Hasil Proses................................................................ 67 3.5.5 Perancangan Antar Muka Halaman Bantuan ...................................................................... 68 BAB IV ....................................................................................................................................................... 69 IMPLEMENTASI SISTEM........................................................................................................................ 69 4.1 Implementasi Antar Muka Pengguna .......................................................................................... 69 4.1.1 Implementasi Antar Muka Halaman_Open ........................................................................ 69 4.1.2 Implementasi Antar Muka Halaman_Prepocessing............................................................ 74 4.1.3 Implementasi Antar Muka Halaman_HasilProses .............................................................. 77 4.1.4 Implementasi Antar Muka Halaman_Home ....................................................................... 80 4.1.5 Implementasi Antar Muka Halaman_Bantuan .................................................................... 82 xiii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.2 Implementasi Kelas ..................................................................................................................... 83 4.2.1 Implementasi Kelas Model ................................................................................................. 83 4.2.2 Implementasi Kelas Controller ........................................................................................... 83 4.2.3 Implementasi Kelas View .................................................................................................... 83 BAB V ........................................................................................................................................................ 85 UJICOBA DAN EVALUASI ..................................................................................................................... 85 BAB VI ..................................................................................................................................................... 105 PENUTUP ................................................................................................................................................ 105 6.1 Kesimpulan ............................................................................................................................... 105 6.2 Saran ......................................................................................................................................... 105 DAFTAR PUSTAKA ............................................................................................................................... 106 LAMPIRAN 1 ........................................................................................................................................... 107 xiv PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR GAMBAR No Keterangan Gambar Hal 2.1 Proses Data Mining 10 2.2 Header table 18 3.1 Hasil scanning data transaksi 26 3.2 Scanning ke-2 ( pembentukan FP –tree) 29 3.3 Diagram Use Case 34 3.4 Diagram Konteks 40 3.5 Diagram AktivitasCari database dan data transaksi penjualan 43 3.6 Diagram AktivitasCari pola asosiasi barang 44 3.7 Diagram AktivitasSimpan hasil pola asosiasi barang 45 3.8 Diagram Kelas Analisis 46 3.9 Diagram Sequence cari data transaksi 47 3.10 Diagram Sequence cari pola asosiasi 48 3.11 Diagram Sequence Cetak hasil asosiasi 49 3.12 Diagram Kelas Desain 50 3.12 Perancangan Antar Muka Home 66 3.13 Perancangan Antar Muka Halaman Open 67 3.14 Perancangan Antar Muka Halaman Prepocessing 68 3.15 Perancangan Antar Muka Halaman Hasil Proses 69 3.16 Perancangan Antar Muka Halaman Bantuan 70 4.1 Implementasi Antar Muka Halaman Open 72 4.2 Implementasi Antar Muka Halaman Prepocessing 76 4.3 Implementasi Antar Muka Halaman Hasil Proses 79 4.4 Implementasi Antar Muka Halaman Home 82 4.5 Implementasi Antar Muka Halaman Bantuan 84 xv PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI DAFTAR TABEL No Tabel Keterangan Hal 2.1 Transaksi dalam database 14 2.2 Hasil scanning dan sorting dari database 15 2.3 Hasil item yang memenuhi minimum support 16 2.4 Transaksi database yang berisi item yang memenuhi minimum support 16 2.5 Hasil Akhir 20 3.1 Atribut dalam table transaksi detail 23 3.2 Atribut yang digunakan dalam transaksi 25 3.3 Item sesuai min_supp 27 3.4 Hasil Penyetaraan 1 30 3.5 Hasil Penyetaraan 2 31 3.6 Hasil Penyetaraan 3 32 3.7 Hasil Penyetaraan 4 32 3.8 Hasil Rule 33 3.9 Deskripsi Use Case 35 3.10 Narasi Use Case Cari database dan data transaksi penjualan 36 3.11 Narasi Use Case Cari pola asosiasi barang 37 3.12 Narasi Use Case Cetak hasil pola asosiasi barang 39 3.13 Struktur Data 41 3.14 Algoritma Kelas Control_Database 51 3.15 Algoritma Kelas Control_Algorithm 54 3.16 Algoritma Kelas LihatHasilAlgoTabelModel 62 3.17 Algoritma Kelas Konn 64 xvi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.1 Keterangan Halaman_Open 72 4.2 Keterangan Halaman_Prepocessing 76 4.3 Keterangan Halaman_HasilProses 79 4.4 Keterangan Halaman_Home 82 4.5 Keterangan Halaman_Bantuan 84 4.6 Implementasi dari kelas model 85 4.7 Implementasi dari kelas Controller 85 4.8 Implementasi dari kelas View 86 5.1 Percobaan tanggal 1 April 2015 dengan minimum support 3% 88 5.2 Percobaan tanggal 1 April 2015 dengan minimum support 2.5% 88 5.3 Percobaan tanggal 1 April 2015 dengan minimum support 2% 89 5.4 Percobaan tanggal 1 April 2015 dengan minimum support 1.5% 90 5.5 Percobaan tanggal 2 April 2015 dengan minimum support 3% 91 5.6 Percobaan tanggal 2 April 2015 dengan minimum support 2.5% 91 5.7 Percobaan tanggal 2 April 2015 dengan minimum support 2% 92 5.8 Percobaan tanggal 2 April 2015 dengan minimum support 1.5% 92 5.9 Percobaan tanggal 2 April 2015 dengan minimum support 1.4% 93 5.10 Percobaan tanggal 3 April 2015 dengan minimum support 3% 95 5.11 Percobaan tanggal 3 April 2015 dengan minimum support 2.5% 95 5.12 Percobaan tanggal 3 April 2015 dengan minimum support 2% 96 xvii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5.13 Percobaan tanggal 3 April 2015 dengan minimum support 1.5% 97 5.14 Percobaan tanggal 1,2 April 2015 dengan minimum support 3% 98 5.15 Percobaan tanggal 1,2 April 2015 dengan minimum support 2.5% 99 5.16 Percobaan tanggal 1,2 April 2015 dengan minimum support 2% 100 5.17 Percobaan tanggal 1,2 April 2015 dengan minimum support 1.5% 100 5.18 Percobaan tanggal 1,2,3 April 2015 dengan minimum support 3% 102 5.19 Percobaan tanggal 1,2,3 April 2015 dengan minimum support 2.5% 102 5.20 Percobaan tanggal 1,2,3 April 2015 dengan minimum support 2% 103 5.21 Percobaan tanggal 1,2,3 April 2015 dengan minimum support 1.5% 103 5.22 Tabel rule dengan akurasi tertinggi 105 xviii PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB I PENDAHULUAN 1.1 Latar Belakang Perkembangan teknologi informasi kini berkembang dengan pesat. Hal tersebut berpengaruh besar terhadap pertumbuhan bisnis baik di bidang industri maupun jasa. Pengaruh tersebut sangat terlihat di dalam persaingan yang terjadi di antara perusahaan yang ada. Mereka berlomba – lomba untuk menciptakan inovasi – inovasi baru untuk menarik masyarakat. Oleh karena itu, para pelaku bisnis dalam sebuah perusahaan membuat strategi – strategi bisnis yang baru agar perusahaan yang mereka kelola dapat tetap berjalan dengan baik. Salah satu perusahaan tersebut adalah sebuah perusahaan XYZ yang menjalankan bisnis di bidang ritail. Aset utama dari sebuah perusahaan tersebut adalah kepuasan konsumen terhadap ketersediaan produk yang ada. Tidak tersedianya barang yang di cari oleh konsumen berpengaruh pula pada pelayanan maupun kepuasan konsumen serta pendapatan perusahaan. Oleh karena itu dibutuhkan suatu prediksi untuk mengetahui jenis barang yang harus tersedia dalam perusahaan tersebut. Prediksi jenis barang yang harus tersedia sangat penting bagi perusahaan untuk menentukan strategi yang tepat yang akan dijalankan dalam perusahaan tersebut untuk dapat mengoptimalkan penjualan. Prediksi jenis barang yang harus tersedia dapat diketahui dengan mengamati data transaksi penjualan. Data penjualan akan diolah yang menghasilkan laporan laba dan rugi dari perusahaan tersebut. Melalui teknologi data miningyang ada dapat dijadikan sebagai solusi bagi para pelaku perusahaan dalam pengambilan keputusan dalam menentukan strategi perusahaan dalam meningkatkan pelayanan kepada konsumen. Di dalam data mining terdapat beberapa teknik dimana penggunaannya disesuaikan pada masalah yang ada. Pada permasalahan prediksi jenis barang yang harus tersediadalam perusahaan, digunakan teknik association rule.Teknik association rule dapat memberikan gambaran / pola – pola tertentu yang sering muncul bersamaan dalam sekumpulan data yang ada. Dalam teknik association rule terdapat sebuah algoritma FP– 1 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 2 Growth yang dapat digunakan sebagai salah satu alternative algoritma dalam menentukan prediksi jenis barang yang harus tersedia dalam perusahaan. Algoritma FP–Growth merupakan pengembangan dari algoritma apriori. Pada algoritma apriori dibutuhkan scanning data berulang – ulang untuk menentukan frequent Itemset. Berbeda dengan algoritma FP–Growth yang hanya membutuhkan sebanyak dua kali scanning data untuk menentukan frequent Itemset. Dalam menentukan frequent Itemset pada algoritma FP–Growth digunakan pohon prefix yang biasa disebut FP–tree. Penggunaan FP–treeakan membercepat dalam proses penentuan frequent Itemset. Apabila frequent Itemset tersebut memiliki nilai kurang dari minimum support yang ada, maka frequent Itemset tersebut akan dibuang dan tidak akan digunakan. Selanjutnya untuk frequent Itemset yang berada di atas minimum support maupun sama dengan minimum support akan digunakan untuk memprediksi. Penerapan dari algoritma FP–Growth dapat membantu perusahaan dalam memprediksi jenis barang yang harus tersediadengan mengolah data transaksi penjualan barang yang ada.Hasil akhir dari proses tersebut berupagambaran / pola produk yang sering dibeli oleh konsumen. Hasil tersebut dapat digunakan oleh perusahaan dalam menentukan ketersediaan barang di perusahaan. 1.2 Rumusan Masalah Berdasarkan pada latar belakang di atas, maka dapat dirumuskan menjadi dua masalah utama yaitu : a. Bagaimana menerapkan algoritma FP- Growth dalam memprediksi jenis barang yang harus tersedia pada perusahaan XYZ? b. Apakah penerapan dari algoritma FP-Growth dapat memberikan hasil yang akurat dalam memprediksi jenis barang yang harus tersedia dalam perusahaan XYZ tersebut ? PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3 1.3 Tujuan Penelitian Tujuan dari penelitian ini adalah a. Membantu perusahaan XYZ dalam memprediksi jenis barang yang harus tersedia dengan menggunakan algoritma FP- Growth b. Menguji keakuratan algoritma FP-Growth dalam memprediksijenis barang yang harus tersedia dalam perusahaan XYZ. 1.4 Batasan Masalah Batasan masalah dari penelitian ini adalah a. Data yang digunakan dalam penelitian ini adalah data transaksi penjualan perusahaan XYZ yang bergerak di bidang retail meliputi no faktur penjualan, kode barang beserta nama barang dari item yang dibeli dalam satu kali transaksi penjualan. b. Data diambil dalam kurun waktu satu tahun yaitu tahun 2013. c. Data stok masing – masing barang disumsikan dengan jumlah 200. d. Teknik Asosiasi yang digunakan untuk melakukan analisis data yaitu menggunakan algoritma FP – Growth 1.5 Metodologi Penelitian Dalam penelitian ini digunakan beberapa metodologi penelitian yaitu : a. Metode Pengumpulan Data Metode pengumpulan data yang digunakan dalam penelitian ini adalah dengan melakukan pengambilan data yang dibutuhkan secara langsung pada objek penelitian dan studi pustaka dengan mengumpulkan data dan mempelajari masalah yang berhubungan dengan objek penelitian yang bersumber dari buku – buku pedoman untuk melengkapi data yang diperlukan dalam penelitian ini. b. Metode Analisis Data Metode analisis data yang digunakan dalam penelitian ini adalah menggunakan tahapan Knowledge Discovery in Databases (KDD) yang terdiri PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI dari beberapa tahap diantaranya adalah selection, 4 preprocessing, transformation, data mining dan evaluation. (Jiawei Han, 2011) a. Data Selection Data Selection merupakan tahap dimana menciptakan himpunan data target, pemilihan himpunan data, atau memfokuskan pada subset variabel atau sampel data, dimana penemuan (discovery) akan dilakukan. Pemilihan (seleksi) data dari sekumpulan data operasional perlu dilakukan sebelum tahap penggalian informasi dalam KDD dimulai. Data hasil seleksi yang akan digunakan untuk proses data mining, disimpan dalam suatu berkas, terpisah dari basis data operasional. b. Preprocessing Tahap Preprocessing merupakan tahap pemprosesan pendahuluan dan pembersihan data merupakan operasi dasar seperti penghapusan noise dilakukan. Sebelum proses data mining dapat dilaksanakan, perlu dilakukan proses cleaning pada data yang menjadi fokus KDD. Proses cleaning mencakup antara lain membuang duplikasi data, memeriksa data yang inkonsisten, dan memperbaiki kesalahan pada data, seperti kesalahan cetak (tipografi). Dilakukan proses enrichment, yaitu proses “memperkaya” data yang sudah ada dengan data atau informasi lain yang relevan dan diperlukan untuk KDD, seperti data atau informasi eksternal. c. Transformation Tahap transformation merupakan tahap pencarian fitur-fitur yang berguna untuk mempresentasikan data yang bergantung kepada tujuan yang ingin dicapai. Tahap ini juga merupakan proses transformasi pada data yang telah dipilih, sehingga data tersebut sesuai untuk proses data mining. Proses ini merupakan proses PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5 kreatif dan sangat tergantung pada jenis atau pola informasi yang akan dicari dalam basis data d. Data mining Proses data mining yaitu proses mencari pola atau informasi menarik dalam data terpilih dengan menggunakan teknik atau metode tertentu. Teknik, metode, atau algoritma dalam data mining sangat bervariasi. Pemilihan metode atau algoritma yang tepat sangat bergantung pada tujuan dan proses KDD secara keseluruhan. Pemilihan algoritma data mining untuk pencarian (searching). e. Evaluation Tahap evaluation merupakan tahap penerjemahan pola-pola yang dihasilkan dari data mining. Pola informasi yang dihasilkan dari proses data mining perlu ditampilkan dalam bentuk yang mudah dimengerti oleh pihak yang berkepentingan. Tahap ini merupakan bagian dari proses KDD yang mencakup pemeriksaan apakah pola atau informasi yang ditemukan bertentangan dengan fakta atau hipotesa yang ada sebelumnya. 1.6 Sistematika Penulisan Sistematika ini secara garis besar memberikan isi yang berupa susunan bab dari penelitian. BAB I PENDAHULUAN Bab ini berisikan tentang latar belakang, rumusan masalah, tujuan penelitian, batasan masalah, metodologi penelitian serta sistematika penulisan tugas akhir ini. BAB II TINJAUAN PUSTAKA PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 6 Bab ini berisikan teori – teori yang mendasari penulis dalam melakukan pemecahan masalah yang ada guna sebagai acuan untuk penyelesaian tugas akhir ini. Di antaranya adalah penjelasan mengenai definisi data mining, pengelompokan data mining ,fungsi data mining, langkah – langkah data mining , algoritma asosiasi , algoritma FP – Growth. BAB III ANALISIS DAN PERANCANGAN Bab ini menjelaskan tentang analisa dan perancangan sistem yang akan dibuat diantaranya mengumpulkan data dan menganalisis data dengan menjalankan proses KDD. BAB IV IMPLEMENTASI SISTEM Bab ini menjelaskan mengenai implementasi dari analisa yang telah dibuat pada tahap sebelumnya. BAB V UJI COBA DAN EVALUASI Bab ini berisi mengenai pengujian terhadap sistem yang telah dibuat dan evaluasi terhadap sistem tersebut. BAB VI PENUTUP Bab ini berisi mengenai kesimpulan dan saran dari penulis terhadap sistem yang telah dibuat untuk pengembangan selanjutnya. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB II TINJAUAN PUSTAKA 2.1 Pengertian Data Mining Data mining sangatlah penting bagi kita di jaman sekarang ini sebab pertumbuhan data dari hari ke hari semakin meningkat, dari terabytes hingga pentabytes. Semakin tingginya persaingan yang ada sekarang ini membuat kita perlu untuk mencari sesuatu atau pengetahuan yang ada dalam data. Menurut Jiawei , secara sederhana kata data mining merujuk pada ekstraksi atau “menambang” pengetahuan dari sejumlah data yang besar. Dari penjelasan tersebut, data mining dapat diartikan sebagai sebuah proses dari sekumpulan data yang memiliki jumlah besar untuk mendapatkan data yang hasilnya tidak hanya sekedar informasi melainkan merupakan sebuah pengetahuan atau knowledge yang tersembunyi dari data tersebut. Pengetahuan atau knowledge yang diperoleh dari hasil mining terhadap sekumpulan kata tersebut dapat membantu dalam pengambilan sebuah keputusan. Proses data mining ini adalah mengolah data, dimana data sebagai input atau masukan yang melalui sebuah proses akan menghasilkan output yang tidak hanya berisikan informasi namun ada sebuah pengetahuan yang dapat di ambil dari data tersebut. Dari pengetahuan yang didapatkan akan diolah menjadi wisdom yang sangat bermanfaat. 2.2 Proses Data Mining Proses data mining dibagi menjadi beberapa proses yang dapat diilustrasikan seperti pada gambar 2.1 di bawah ini : 7 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 8 Gambar 2. 1 Proses Data Mining (Jiawei Han,2011) Gambar 2.1 dapat dijelaskan seperti berikut : a. Data Cleaning yaitu proses untuk menghilangkan noise dan data yang tidak konsisten. b. Data Integration yaitu proses dimana data dari berbagai sumber digabungkan. c. Data Selection yaitu proses penyeleksian data yang akan digunakan untuk proes data mining. d. Data Transformation yaitu proses data ditransformasikan dan digabungkan ke dalam sebuah bentuk yang sesuai dengan data mining. e. Data mining yaitu proses mencari pola atau informasi menarik dalam data terpilih dengan menggunakan teknik atau metode tertentu. f. Evaluation yaitu penerjemahan pola-pola yang dihasilkan dari data mining. Pola informasi yang dihasilkan dari proses data mining perlu ditampilkan dalam bentuk yang mudah dimengerti oleh pihak yang berkepentingan. g. Knowledge Presentation yaitu proses representasi pengetahuan yang digunakan gambaran pada pihak yang terkait. visualisasi untuk dan teknik memberikan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 9 2.3 Teknik – Teknik Data Mining Dalam data mining terdapat beberapa teknik yang digunakan untuk melakukan analisa terhadap sekumpulan data. Teknik data mining yang akan digunakan dalam melakukan analisa data disesuaikan dengan kebutuhan dan masalah yang ada. Berikut adalah beberapa teknik yang digunakan dalam data mining. 2.3.1 Association Rule Mining Association rule mining merupakan salah satu teknik dalam data mining yang digunakan untuk menemukan sebuah aturan assosiatif antara suatu kombinasi item. Aturan yang digunakan dalam teknik ini adalah menggunakan aturan “ Jika – Maka “. Seperti contohnya yang terjadi dari sebuah transaksi pembelian adalah jika konsumen membeli barang A maka ia akan membeli juga barang B. Beberapa algoritma yang menggunakan teknik association rule mining adalah algoritma apriori yang menggunakan iterasi secara berulang – ulang untuk menentukan frequent itemset dan algoritma FP-Growth yang menggunakan Frequent Pattern Tree dalam menentukan frequent itemset. 2.3.2 Classification Teknik Classification merupakan teknik yang digunakan untuk menemukan sebuah model atau sebuah fungsi yang mendiskripsikan dan membedakan kelas atau konsep data, dengan tujuan menggunakan model tersebut untuk memprediksi kelompok dari object yang belum diketahui labelnya. Model dapat direpresentasikan dalam bentuk classification rules, decision tress, mathematical formulae, atau neural networks. Beberapa method yang digunakan untuk membangun sebuah model classification yaitu naïve Bayesian classification, support vector machines, dan knearest-neighbor classification. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 10 2.3.3 Clustering Berbeda dengan teknik classification dan association rule, teknik clustering merupakan teknik yang digunakan untuk melakukan pengelompokan data dan memberikan label pada sekelompok data yang sebelumnya tidak diketahui. Object yang dikelompokkan atau di cluster berdasarkan pada prinsip memaksimalkan kesamaan antar anggota di dalam suatu kelas dan meminimalkan kesamaan antar kelas. Dengan hal tersebut object dalam kelas terbentuk, jadi object di dalam sebuah cluster memiliki kesamaan yang tinggi apabila dibandingkan antara anggota satu dengan anggota yang lain dalam cluster tersebut. Tetapi akan memiliki perbedaan yang tinggi apabila dibandingkan dengan object yang terletak dalam cluster yang berbeda. 2.3.4 Outlier Analysis Dalam sekumpulan data mungkin terdapat object yang tidak sesuai dengan model dari data, itulah yang disebut dengan outlier. Banyak method dari data mining yang membuang outlier yang biasa disebut dengan noise atau exception. Outlier mendeteksi dengan menggunakan tes statistic yang mengasumsikan kemungkinan model dalam data atau menggunakan ukuran jarak dimana object dikendalikan dengan mempertimpangkan outlier dalam cluster yang lain. 2.4 Algoritma Frequent Pattern Growth Algoritma FP-Growth merupakan salah satu algoritma data mining yang menggunakan teknik association rule. Algoritma FP-Growth sangat efisien dan scalable untuk menentukan frequent pattern baik dalam data besar maupun kecil. Algoritma ini juga lebih cepat daripada algoritma apriori dimana pada algoritma apriori harus dilakukan iterasi secara berulang kali sehingga membutuhkan waktu yang cukup lama untuk menyelesaikan. Algoritma apriori juga tidak dapat menangani data yang besar, sehingga algoritma FP-Growth ini dapat dijadikan sebagai solusi bagi permasalahan yang terjadi pada algoritma apriori yaitu masalah pada candidate set generation and test. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 11 Beberapa istilah yang ada dalam algoritma FP-Growth diantaranya dapat dijelaskan dengan pemisalan berikut ini : a. * +merupakan kumpulan dari item – item yang ada dalam transaksi database ( b. database dimana )merupakan transaksi yang ada dalam ( , -)merupakan sebuah transaksi yang mengandung item yang berada pada I. c. Support( frekuensi kemunculan ) dari pattern A adalah angka dari transaksi yang mengandung item A di dalam DB. d. A merupakan sebuah frequent pattern jika nilai dari supportA tidak kurang dari minimum support yang telah ditentukan sebelumnya. Dalam algoritma FP-Growth dikenal pula istilah frequent pattern tree( FP-tree) yaitu sebuah struktur seperti pohon prefix yang digunakan untuk mendesain struktur frequent pattern mining secara efisien. Setiap node pada pohon diisi dengan 1 item dan di setiap anak dari node tersebut merepresentasikan item yang berbeda dengan item yang ada pada induk. Setiap node juga menyimpan informasi pendukung dari isi item di dalam path dari root hingga ke node. Sebuah root dalam pohon diinisialisasikan dengan nilai null. Dengan menggunakan FP-Tree, algoritma FP-growth dapat langsung mengekstrak frequent Itemset. Langkah – langkah yang dijalankan dalam algoritma FP-growth adalah sebagai berikut : a. Menentukan minimum support yang akan digunakan untuk menentukan rule dalam mencari frequent pattern. b. Melakukan scanning pada database untuk mendapatkan frekuensi kemunculan suatu item. c. Melakukan seleksi / pembuangan terhadap item yang memiliki count kurang dari minimum support yang telah ditentukan. Untuk item yang memenuhi minimum support disimpan dalam list L, dan lakukan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 12 sorting secara descending berdasarkan jumlah frekuensi terbesar hingga terkecil. d. Membentuk root FP-Tree yang diberi nilai dengan “null”. e. Melakukan scan yang kedua kalinya untuk cabang dari FP-Tree sesuai dengan urutan transaksi pada list L. Apabila item yang ada pada transaksi berikutnya sudah ada pada transaksi sebelumnya maka nilai indeks dari item tersebut akan bertambah 1, sedangkan jika item belum ada pada transaksi sebelumnya akan membentuk cabang baru. f. Berdasarkan list L pisahkan tiap frequent itemsets tanpa pengulangan g. Melakukan analisa FP-Tree yang telah terbentuk dengan cara mencari frequent itemsets yang mengandung nilai ai lalu setarakan nilai frequent itemsets tersebut dengan nilai ai. Setelah disetarakan, jumlahkan kedua nilai support frequent itemsets yang sama. Untuk nilai yang diatas maupun sama dengan minimum support lah yang menjadi rule. Langkah analisa diatas dilakukan berulang untuk semua subset yang ada pada FP-Tree. h. Hasil analisa FP-Tree yang sesuai dengan minimum support itulah yang digunakan sebagai rule Berikut adalah contoh dari penerapan algoritma pada sebuah data transaksi : Tabel 2. 1 Transaksi dalam database TID Items Bought 100 f,a,c,d,g,i,m,p 200 a,b,c,f,l,m,o 300 b,f,h,j,o 400 b,c,k,s,p 500 a,f,c,e,l,p,m,n PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 13 Tabel 2.1 menjelaskan lima buah transaksi yang ada dalam database yaitu * yang +. ada Sedangkan items bought menunjukkan item pada transaksi * tersebut adalah +. Untuk mulai melakukan mining menggunakan algoritma FP-Growth, sebelumnya ditentukan dahulu minimum support nya. Dalam contoh ini saya tentukan minimum support nyayaitu 3. Tabel 2. 2 Hasil scanning dan sorting dari database Item Count f 4 c 4 a 3 b 3 m 3 p 3 l 2 o 2 d 1 g 1 i 1 h 1 j 1 k 1 s 1 e 1 n 1 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 14 Tabel 2.2 menjelaskan langkah pertama yang dijalankan yaitu melakukan scan pada database untuk mendapatkan frekuensi kemunculan item dalam database. Lalu sorting berdasarkan jumlah frekuensi terbesar hingga terkecil. Urutan tersebut penting yang nantinya akan digunakan dalam membuat FP-Tree Tabel 2. 3 Hasil item yang memenuhi minimum support Item Count f 4 c 4 a 3 b 3 m 3 p 3 Tabel 2.3 menjelaskan langkah selanjutnya yaitu melakukan seleksi terhadap item yang memiliki count kurang dari minimum support yang telah ditentukan sehingga menyisakan item f, c,a,m,p dan b. Sehingga transaksi dalam database yang berisi item yang memenuhi minimum support dapat di lihat pada table 2.4 Tabel 2. 4 Transaksi database yang berisi item yang memenuhi minimum support Items ( Ordered) TID Bought Items 100 f,a,c,d,g,i,m,p f,c,a,m,p 200 a,b,c,f,l,m,o f,c,a,b,m 300 b,f,h,j,o f,b 400 b,c,k,s,p c,b,p 500 a,f,c,e,l,p,m,n f,c,a,m,p Frequent PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 15 Langkah selanjutnya adalah membuat root dari sebuah pohon yang di beri label “null”. Pada tahap ini dilakukan proses scanning untuk yang kedua kalinya. Proses scan ini diawali pada transaksi pertama yaitu transaksi yang berisi item (f,c,a,m,p). Transaksi tersebut menjadi cabang pertama dari pohon, setiap item baru diberi nilai 1 sehingga menjadi 〈( )( )( )( )( )〉. Pada transaksi kedua yaitu transaksi yang berisi item (f,c,a,b,m) membentuk cabang baru ketika sampai pada item (b dan m) karena item (f,c,a) sudah terbentuk pada transaksi pertama sehingga menggunakan transaksi pertama. Hanya saja nilai dari item dalam node yang telah ada pada transaksi pertama dan dilewati juga dalam transaksi kedua bertambah 1 sehingga nilainya menjadi 2. Sedangkan pada node yang sedang terbentuk pertama kali pada transaksi kedua bernilai 1 sehingga hasilnya adalah 〈( )( )( )( )( )〉. Pada transaksi ketiga yaitu transaksi yang berisi item (f,b) membentuk cabang baru ketika pada item (b) karena item (f) menggunakan cabang yang sudah terbentuk pada transaksi sebelumnya. Sehingga nilai dari item-item tersebut adalah 〈( )( )〉. Pada transaksi ke empat yaitu transaksi yang berisi item (c,b,p) membentuk cabang baru dari awal karena pada transaksi sebelumnya tidak ada yang melakukan scan dengan diawali item ( c ). Sehingga nilai dari masing – masing item tersebut adalah 1 Sedangkan pada transaksi terakhir yaitu transaksi yang berisi item (f,c,a,m,p ) tidak membentuk cabang baru hanya saja nilai dari masing – masing item tersebut bertambah 1. Hasil scan kedua yang dilakukan dalam database yang berupa pohon dapat dilihat pada gambar 2.2 di bawah ini. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 16 Gambar 2. 2Header table ( Jiawei Han) Dengan pohon yang telah terbentuk, selanjutnya akan dilakukan mining frequent patterns. Proses ini dilakukan dengan mengoleksi patterns dari node yang dimulai dari head( kepala) dari node dan diikuti dengan item yang ada pada node-links tersebut. Proses mining dimulai dari item yang terletak paling bawah pada Header table yaitu p. Untuk node p, mendapatkan nilai frequent pattern (p:3) dan dua path dalam FP-tree yaitu 〈 〉 dan 〈 〉. Dari path yang dilalui bersama dengan p hanya ada 2 kali sehingga disamakan dengan nilai dari p tersebut yaitu 〈 〉. Begitu juga dengan path yang kedua disamakan dengan jumlah p yang dilalui bersama yaitu 〈 〉. Kemudian dari dua path tersebut dijumlahkan nilai dari masing – masing item yang ada di kedua path sehingga menghasilkan satu frequent pattern yaitu (c,p) karena hanya c dan p itu sendiri yang memenuhi minimum support yang telah ditentukan. Untuk node m, mendapatkan nilai frequent pattern (m:3) dan dua path 〈 dalam FP-tree yaitu 〈 〉 dan 〉. Dari path yang dilalui bersama dengan m hanya ada 2 kali sehingga disamakan dengan nilai dari m tersebut yaitu 〈 〉. Begitu juga dengan path yang kedua disamakan dengan jumlah m yang dilalui bersama yaitu 〈 〉. Kemudian dari PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 17 dua path tersebut dijumlahkan nilai dari masing – masing item yang ada di kedua path sehingga menghasilkan satu frequent pattern yaitu (f,c,a,m) . Untuk node b, mendapatkan nilai frequent pattern (b:3) dan tiga path dalam FP-tree yaitu 〈 〉 , 〈 〉, 〈 〉. Dari path yang dilalui bersama dengan b hanya ada 2 kali path pertama sehingga disamakan dengan nilai dari b tersebut yaitu 〈 〉. Begitu juga dengan path yang kedua disamakan dengan jumlah b yang dilalui bersama yaitu〈 〉. Selanjutnya berlaku juga dengan path yang ketiga disamakan dengan jumlah b yang dilalui bersama yaitu〈 〉. Kemudian dari dua path tersebut dijumlahkan nilai dari masing – masing item yang ada di ketiga path. Dari node b ternyata tidak terdapat frequent pattern karena tidak ada yang memenuhi minimum support. Untuk node a, mendapatkan nilai frequent pattern (a:3) dan sebuah path dalam FP-tree yaitu 〈 〉. Dari path yang dilalui bersama dengan a ada 3 kali sehingga disamakan dengan nilai dari m tersebut yaitu 〈 〉.Dari path tersebut menghasilkan satu frequent pattern yaitu (f,c,a). Untuk node c, mendapatkan nilai frequent pattern (c:4) dan dua path dalam FP-tree yaitu 〈 〉 dan 〈 〉. Dari path yang dilalui bersama dengan c hanya ada 3 kali sehingga disamakan dengan nilai dari c tersebut yaitu 〈 〉. Dari path tersebut menghasilkan satu frequent pattern yaitu (f,c). Untuk node f yang merupakan kepala dari node tidak dilakukan mining frequent parent karena hanya terdiri dari satu item saja. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 18 Tabel 2. 5Hasil Akhir Dari proses tersebut dapat beberapa rule yang merupakan hasil akhir dari proses mining dengan menggunakan algoritma FP-Growth yaitu { (c,p), (f,c,a,m,p), (f,c,a), (f,c)} seperti yang terlihat pada table 2.5 di atas. 2.5 Lift Ratio Lift Ratio merupakan sebuah ukuran yang digunakan dalam teknik asosiasi untuk mengukur seberapa besar tingkat keakuratan sebuah rule yang dihasilkan dari proses asosiasi. Beberapa istilah yang digunakan dalam Lift Ratio adalah sebagai berikut : a. Antecedent merupakan sebab. Antecedent adalah item yang menjadikan item consequent. b. Consequent merupakan sebuah akibat. Secara sederhana dapat dijelaskan sebagai item barang yang dibeli karena suatu barang telah dibeli. Sehingga rumus dari Lift Ratio dapat dituliskan seperti di bawah ini : PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 19 ……………………..(2.1) Dimanaconfidence: ∑ ….…….(2.2) ∑ Antecedent disimbolkan dengan A sedangkan consequent disimbolkan dengan C Sedangkan expected confidence : ∑ ∑ ……………(2.3) Nilai dari Lift Ratio dapat dibaca sebagai berikut : a. Apabila nilai dari Lift Ratio > 1 maka menyatakan bahwa A dan C muncul lebih sering dari yang diharapkan b. Apabila nilai dari Lift Ratio = 1 maka menyatakan bahwa A dan C muncul hampir selalu bersamaan seperti yang diharapkan c. Apabila nilai dari Lift Ratio< 1 maka menyatakan bahwa A dan C muncul lebih jarang dari yang diharapkan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB III ANALISIS DAN PERANCANGAN SISTEM 3.1 Analisis Sistem Tahap analisis sistem merupakan tahap dimana sebuah solusi diberikan untuk menyelesaikan masalah yang telah dirumuskan dalam BAB I. Penyelesaian tersebut dibagi ke dalam beberapa komponen yang nantinya akan saling berinteraksi untuk mencapai tujuan. Dalam bab ini, analisis sistem digambarkan dengan bentuk pemodelan fungsi – fungsi yang ada di sistem dan alur dari sistem tersebut. Sistem yang akan dibuat adalah sistem yang dapat mengelola data transaksi penjualan perusahaan retail yang digunakan untuk melakukan proses data mining, melakukan analisa terhadap rule hasil dari proses mining dan mencetak hasil analisa proses mining. Seperti yang telah disebutkan pada BAB I dalam Tujun Penelitian, maka sistem ini akan melakukan proses data mining dengan menggunakan algoritma FP-Growthuntuk memprediksi ketersediaan jenis barang pada perusahaan tersebut. 20 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.1.1 21 Analisis Data Awal Data yang digunakan dalam penelitian ini adalah data transaksi detail dari perusahaan retail ABC selama 1 hari. Data tersebut terdiri dari 3556 record. Tabel 3. 1 Atribut dalam table transaksi detail No Nama Atribut Keterangan 1 noFaktur Nomor nota transaksi penjualan 2 kodeBarang Kode dari masing masing barang 3 namaBarang Nama dari item barang yang di beli 4 satuan Jenis satuan barang yang di beli 5 size Ukuran dari suatu item 6 hargaJual Harga dari brang yang di beli 7 quantity Jumlah pembelian barang dalam satu kali transaksi 8 discount 9 discountReal 10 discount2 11 total Total harga setelah discount 12 urut No urut barang dari setiap nota transaksi 13 hpp 14 hppdpp 15 hargasatuan 16 sisapesan 17 statusReturOrder Berisi status dari retur order 18 statusNotaKredit Berisi status dari nota kredit 19 nourut Potongan harga dari suatu barang No urut transaksi penjualan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 22 Tahap – Tahap KDD 3.1.2 Sebelum data tersebut dimasukkan ke dalam sistem untuk dilakukan penambangan data, maka dilakukan terlebih dahulu tahap – tahap dalam KDD ( Knowledge Discovery In Database). Tahap – tahap tersebut akan dijelaskan lebih detail pada penjelasan berikut ini : 3.1.2.1 Pembersihan Data (Data Cleaning) Proses pembesihan data ini merupakan tahap pertama dalam KDD. Proses ini merupakan proses dimana record yang mengandung data – data yang tidak relevan, tidak konsisten akan dibuang. Pada penelitian ini data transaksi sudah relevan dan konsisten sehingga tidak perlu dilakukan pembersihan data. 3.1.2.2 Integrasi Data (Data Integration) Integrasi data merupakan penggabungan data dari beberapa sumber. Dalam penelitian ini, peneliti hanya menggunakan satu sumber saja yaitu data transaksi detail dari perusahaan retail XYZ dalam kurun waktu satu tahun sehingga tidak dilakukan proses intergrasi data. 3.1.2.3 Pemilihan Data (Data Selection) Pada tahap ini akan dilakukan penyeleksian data – data yang akan digunakan dalam penelitian. Pada data transaksi penjualan detail terdapat 19 atribut yaitu noFaktur, kodeBarang, namaBarang, satuan, size, hargaJual, quantity, discount, discountReal, discount2, total, urut, hpp, hppdpp, hargasatuan, sisapesan, statusReturOrder, statusNotaKredit, nourut. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 23 Beberapa atribut data yang diseleksi adalah satuan, size, hargaJual, quantity, discount, discountReal, discount2, total, urut, hpp, hppdpp, hargasatuan, sisapesan, statusReturOrder, statusNotaKredit, nourut. Sehingga setelah dilakukan seleksi data, hanya ada tiga record yang digunakan yaitu noFaktur, kodeBarang dan namaBarang. Tabel 3. 2 Atribut yang digunakan dalam transaksi 3.1.2.4 No Nama Atribut Keterangan 1 noFaktur Nomor nota transaksi penjualan 2 kodeBarang Kode dari masing masing barang 3 namaBarang Nama dari item barang yang di beli Transformasi Data (Data Transformation) Tahap transformasi data merupakan tahap dimana data diolah setelah selesai dilakukan pembersihan dan seleksi. Tahap ini akan melakukan pengubahan format data asli ke dalam format data yang sesuai untuk dilakukan proses penambangan data. Pada penelitian ini, peneliti melakukan transformasi data pada table transaksi detail penjualan. Tabel transaksi detail penjualan di ubah menjadi dua kolom yaitu no faktur dan transaksi. Kolom pada noFaktur menyimpan no faktur dari transaksi yang ada, sedangkan kolom transaksi menyimpan data transaksi penjualan berupa nama barang dank ode barang yang dibeli. Sehingga dengan bentuk table yang telah ditransformasikan dapat dengan mudah dilakukan proses data mining. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.1.2.5 24 Penambangan data (Data Mining) a. Menentukan minimum support yang akan digunakan untuk menentukan rule dalam mencari frequent pattern. Dalam penelitian ini, peneliti menentukan min_supportyaitu : 11 b. Melakukan scanning pada database untuk mendapatkan frekuensi kemunculan suatu item. Di bawah ini merupakan gambar dari proses scanning data transaksi untuk menentukan frequent itemset. Proses scanning ini dilakukan terhadap 1818 transaksi penjualan dari 18 kasir yang ada. Dari hasil scanning tersebut ditemukan 646 jenis item barang yang ada. Gambar 3. 1 Hasil scanning data transaksi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 25 c. Melakukan seleksi / pembuangan terhadap item yang memiliki count kurang dari minimum support yang telah ditentukan. Untuk item yang memenuhi minimum support disimpan dalam list L, dan lakukan sorting secara descending berdasarkan jumlah frekuensi terbesar hingga terkecil.Setelah dilakukan scanning dan dilakukan sorting , terdapat sebanyak 71 item barang yng supportnya memenuhi min_supp yang telah ditentukan seperti yang terdapat pada gambar di bawah ini : Tabel 3. 3 Item sesuai min_supp No 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 Nama Barang Kode Barang TAS 034010450 SINGLET/KAOS CE 032010145 SINGLET/KAOS 032010135 KAOS CE 017010250 SINGLET/KAOS CE 032010185 KAOS CE 017010210 CD PAKET/3 PCS 035060100 SINGLET 032010105 SINGLET 032010115 TALI RAMBUT 31020013 BLAZER 005010420 KAOS CO 018010250 KAOS CE 017010300 TALI RAMBUT 31020011 BLAZER 005010430 BLAZER 005010410 JAM TANGAN 015010200 BAJU CE 1 001010400 BAJU CE 001010450 CARDIGAN 007010320 CELANA/BAJU CE 008020500 JAM TANGAN 015010230 JILBAB 016010160 CELANA CE PJG 008020400 JAKET 013010580 KAOS CO 018010300 JAM TANGAN 015010170 Frekuensi 243 190 99 80 77 59 52 49 43 42 39 37 32 31 31 29 27 27 26 25 25 25 24 24 23 23 22 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 CELANA CE 008020430 BAJU CE 001010430 BAJU CE 001010480 BAJU CE 001010440 JILBAB 016010270 BLAZER 005010450 HANDUK S 012020289 JILBAB 016010210 SPT X109 030010440 BLAZER 005010490 BLAZER 005010460 SHALL 040010082 BAJU CE 001010415 JAKET CE 013010620 CARDIGAN 007010350 CARDIGAN 007010330 KEMEJA CO 021030750 TP MAKE UP 31270073 BAJU CE 001010350 KAOS CE 017010240 BAJU ANAK 038010300 BAJU CE 001010420 BAJU CE 001010410 JILBAB 016010220 TALI RAMBUT 31020024 KAOS CO 018010259 HANDUK B 012010465 TP MAKE UP 31270098 JAM TANGAN 015010240 BLAZER 005010470 SISIR 31380048 SPT ASB 030010260 ROMPI/BALERO 025010380 BAJU CE 001010470 BAJU CE 001010500 BAJU CE SDL RMT JAKET CE/BALERO JEANS 001010390 029010270 013010520 TP MAKE UP 31270110 TP MAKE UP KAOS CE PJG 31270085 017030250 21 20 19 19 18 17 17 16 16 15 15 15 15 15 15 15 14 14 14 14 14 14 14 13 13 13 13 13 12 12 12 12 12 12 12 12 12 11 11 11 11 26 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 69 70 71 SPT D09 030010290 SEPRAI DBL 031021023 ROMPI/BALERO 025010330 27 11 11 11 d. Membentuk root FP-Tree yang diberi nilai dengan “null”. Selanjutnya melakukan scan yang kedua kalinya untuk cabang dari FP-Tree sesuai dengan urutan transaksi pada list L. Apabila item yang ada pada transaksi berikutnya sudah ada pada transaksi sebelumnya maka nilai indeks dari item tersebut akan bertambah 1, sedangkan jika item belum ada pada transaksi sebelumnya akan membentuk cabang baru. Gambar 3. 2 Scanning ke-2 ( pembentukan FP –tree) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 28 e. Melakukan analisa FP-Tree yang telah terbentuk dengan cara mencari frequent itemsets yang mengandung nilai ai lalu setarakan nilai frequent itemsets tersebut dengan nilai ai. Setelah disetarakan, jumlahkan kedua nilai support frequent itemsets yang sama. Untuk nilai yang diatas maupun sama dengan minimum support lah yang menjadi rule. Langkah analisa diatas dilakukan berulang untuk semua subset yang ada pada FP-Tree. Setelah dilakukan penyetaraan, dari 73 item barang yang memiliki min_supp lebih dari maupun sama dengan 11, hanya ada 4 rule yang di hasilkan seprti yang terlihat pada gambar di bawah ini : Tabel 3. 4 Hasil Penyetaraan 1 NODE : Frequent: SINGLET / KAOS CE(032010185) 77 Path Item Hasil Setelah di Setarakan TAS(450) : 243, SINGLET/ KAOS CE(145) : 13, SINGLET/ KAOS CE(185) 1 :1 TAS(450) : 1, SINGLET/ KAOS CE(145) : = TAS(450) : 243, SINGLET/ KAOS 2 CE(185) : 1 TAS(450) : 4, SINGLET/ KAOS CE(185) : = SINGLET/ KAOS CE(145) : 177, 3 4 SINGLET/ KAOS CE(185) : 14 4 SINGLET/ KAOS CE(145) : 15, SINGLET/ = KAOS CE(185) : 14 SINGLET/ KAOS CE(145) : 177, SINGLET/ KAOS CE(145) : 1, SINGLET / SINGLET / KAOS CE(135) : 17 , KAOS CE(135) : 1 , SINGLET/ KAOS SINGLET/ KAOS CE(185) : 1 = SINGLET / KAOS CE(135) : 71, 5 1, SINGLET/ KAOS CE(185) : 1 SINGLET/ KAOS CE(185) : 2 CE(185) : 1 SINGLET / KAOS CE(135) : 2 , SINGLET/ = KAOS CE(250) : 61 , SINGLET/ KAOS KAOS CE(185) : 2 KAOS CE(250) : 1 , SINGLET/ KAOS 6 CE(185) : 1 = CE(185) : 1 7 SINGLET/ KAOS CE(185) : 56 = SINGLET/ KAOS CE(185) : 56 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 29 KESIMPULAN : TAS(450) : 5, SINGLET/ KAOS CE(145) : 16, SINGLET / KAOS CE(135) : 3, KAOS CE(250) : 1, SINGLET/ KAOS CE(185) : 77 Tabel 3. 5 Hasil Penyetaraan 2 NODE : Frequent : Path 1 2 3 4 5 6 7 8 9 10 11 12 13 BLAZER (005010420) 39 Item SINGLET/ KAOS CE(145) : 177 , KAOS CE(250) : 5 , KAOS CE(210) : 2 , SINGLET(115) : 1 , BLAZER(420) : 1 SINGLET/ KAOS CE(145) : 177 , SINGLET/ KAOS(135) : 1, BLAZER(420) : 1 SINGLET/ KAOS CE(145) : 177 , BLAZER(420) : 7 SINGLET/ KAOS CE(185) : 56, CD PAKET / 3 PCS (100) : 2 , BLAZER(420) : 1 SINGLET/ KAOS CE(185) : 56, BLAZER(420) :1 SINGLET/ KAOS CE(145) : 177 , SINGLET/ KAOS CE(185) : 1, BLAZER(420) : 1 SINGLET/ KAOS (135) : 71 , BLAZER(420) : 4 KAOS CE(250) : 61, SINGLET( 115) : 2 , BLAZER( 420) : 2 KAOS CE(250) : 61 , BLAZER(420) : 2 SINGLET/ KAOS CE(145) : 177 , CD PAKET / 3 PCS (100) : 2 , SINGLET(115) : 1, BLAZER(420) : 1 CD PAKET / 3 PCS(100) : 30 , BLAZER( 420) :1 SINGLET(115) : 23, BLAZER( 420) : 1 BLAZER(420) : 17 KESIMPULAN : SINGLET/ KAOS CE(145) : 11 , KAOS Hasil Setelah di Setarakan SINGLET/ KAOS CE(145) : 1 , KAOS CE(250) : 1 , KAOS CE(210) : 1 , SINGLET(115) : 1 , = BLAZER(420) : 1 SINGLET/ KAOS CE(145) : 1 , SINGLET/ = KAOS(135) : 1, BLAZER(420) : 1 = SINGLET/ KAOS CE(145) : 7, BLAZER(420) : 7 SINGLET/ KAOS CE(185) : 1, CD PAKET / 3 PCS = (100) : 1 , BLAZER(420) : 1 = SINGLET/ KAOS CE(185) : 1, BLAZER(420) : 1 SINGLET/ KAOS CE(145) : 1 , SINGLET/ KAOS = CE(185) : 1, BLAZER(420) : 1 = SINGLET/ KAOS (135) : 4 , BLAZER(420) : 4 KAOS CE(250) : 2, SINGLET( 115) : 2 , BLAZER( = 420) : 2 = KAOS CE(250) : 2 , BLAZER(420) : 2 SINGLET/ KAOS CE(145) : 1 , CD PAKET / 3 PCS = (100) : 1 , SINGLET(115) : 1, BLAZER(420) : 1 = CD PAKET / 3 PCS(100) : 1 , BLAZER( 420) : 1 = SINGLET(115) : 1 , BLAZER( 420) : 1 = BLAZER(420) : 17 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 30 CE(250) : 5 , KAOS CE(210) : 1 , SINGLET(115) : 4, SINGLET/ KAOS(135) : 5, SINGLET/ KAOS CE(185) : 4, CD PAKET / 3 PCS (100) : 2, SINGLET(105) : 1, BLAZER(420) : 39 Tabel 3. 6 Hasil Penyetaraan 3 NODE : SINGLET/KAOS (032010135) Frequent: 99 Path Item Hasil Setelah di Setarakan TAS(450) : 243, SINGLET/ KAOS 1 (135) : 11 TAS(450) : 11, SINGLET/ KAOS = SINGLET/ KAOS CE(145) : 177, (135) : 11 SINGLET/ KAOS CE(145) : 17, 2 SINGLET/ KAOS (135) : 17 = SINGLET/ KAOS (135) : 17 3 SINGLET/ KAOS(!35) : 71 = SINGLET/ KAOS(!35) : 71 KESIMPULAN : TAS(450) : 11, SINGLET/ KAOS CE(145) : 17, SINGLET/ KAOS (135) : 99 Tabel 3. 7 Hasil Penyetaraan 4 NODE : Frequent: SINGLET/KAOS CE (032010145) 190 Path Item Hasil Setelah di Setarakan TAS(450) : 243, SINGLET/ KAOS TAS(450) : 13, SINGLET/ KAOS 1 CE(145) : 13 = CE(145) : 13 2 SINGLET/ KAOS CE(145): 177 = SINGLET/ KAOS CE(145): 177 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 31 KESIMPULAN : TAS(450) : 13, SINGLET/ KAOS CE(145) : 190 Sehingga dari proses asosiasi data transaksi dihasilkan rule seperti pada gambar di bawah ini : Tabel 3. 8 Hasil Rule No 3.1.2.6 RULE : 1 { SINGLET/ KAOS CE(145) ,SINGLET/ KAOS CE(185) } 2 { SINGLET/ KAOS CE(145) , BLAZER (420) } 3 {TAS(450) , SINGLET/ KAOS CE(145) , SINGLET/ KAOS (135) } 4 {SINGLET/ KAOS CE(145), TAS(450) } Evaluation Tahap ini akan dilakukan evaluasi terhadap ppola yang ditemukan, apakah sesuai degan tujuan awal penelitian yang dilakukan oleh peneliti atau tidak. 3.1.2.7 Knowledge Presentation Setelah melakukan evaluasi terhadap hasil pola asosiasi yang ditemukan, tahap ini akan dilakukan penterjemahan dengan melakukan pembacaan rule yang dihasilkan. Sehingga hasil dari asosiasi tersebut dapat di mengerti oleh pengguna. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 32 3.2 Identifikasi Sistem 3.2.1 Diagram Use Case Diagram use case merupakan sebuah diagram yang menggambarkan pekerjaan yang dilakukan oleh sistem tersebut. Beberapa pekerjaan sistem yang peneliti bangun dapat dilihat pada gambar di bawah ini : Cari database & data transaksi penjualan <<depends on>> User Cari pola asosiasi barang <<depends on>> Simpan hasil pola asosiasi barang Gambar 3. 3Diagram Use Case PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Tabel 3. 9 Deskripsi Use Case Nomor Use Case 001 Nama Use Case Deskripsi Use Case Cari database dan data Use case ini menggambarkan transaksi proses dimana pengguna melakukan pencarian database dan tabel transaksi yang akan digunakan untuk melakukan proses data mining 002 Cari pola asosiasi Use case ini menggambarkan proses dimana pengguna melakukan pencarian pola asosiasi terhadap data transaksi yang ada 003 Simpan hasil asosiasi Use case ini menggambarkan pengguna melakukan simpan hasil pola asosiasi yang telah dilakukan 33 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.2.2 34 Narasi Use Case Deskripsi dari use case di atas akan dijabarkan dan dijelaskan pada table narasi use case berikut ini : 3.2.2.1 Cari database dan data transaksi penjualan Tabel 3. 10 Narasi Use Case Cari database dan data transaksi penjualan Nama Use Case Cari database dan data transaksi penjualan Id Use Case 001 Source Penjelasan Use case Deskripsi Menjelaskan proses pencarian database yang digunakan dan data transaksi penjualan untuk proses data mining Aktor User Kondisi Awal Tampil Halaman Home Kondisi Akhir Tampil Data Transaksi yang akan diproses Aksi Aktor Reaksi Sistem 1. Klik tombol Open pada Halaman_Home 2. Tampil Halaman_Open 3. Isikan nama database 4. Klik Cek Koneksi 5. Jika database terhubung, maka muncul exception “ Koneksiberhasil !” 6. Tampil daftar table pada button pilih tabel dan data transaksi 7. Pilih table yang akan digunakan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 35 8. Klik OK 9. Tampil data dari tabel yang dimaksud Alt 4.Jika database tidak cocok, Muncul Alternatif exception “ Koneksi gagal !”, kembali step 2 User dapat melanjutkan proses apabila Conclusion : database terhubung. 3.2.2.2 Businesse Rules : - Assumptions : - Cari pola asosiasi barang Tabel 3. 11 Narasi Use Case Cari pola asosiasi barang Nama Use Case Cari pola asosiasi barang Id Use Case 002 Source Penjelasan Use case Deskripsi Menjelaskan proses mencari pola asosiasi barang Aktor User Kondisi Awal Tampil Halaman_Open Kondisi Akhir Tampil Hasil Proses data mining Aksi Aktor 1. Isikan indeks noFaktur dan kodeBarang pada kolom yang tersedia 2. Klik tombol prepocessing Reaksi Sistem PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 36 3. Tampil Halaman Prepocessing yang berisi table data hasil dari proses preprocessing, jumlah transaksi dan jumlah jenis barang 4. Isikan minimum_support 5. Klik tombol Konfirmasi 6. Tampil banyaknya barang yang muncul berdasarkan minimum_support yang di masukkan oleh user 7. Klik tombol Proses 8. Tampil Halaman Hasil proses yang berisi rule dari proses asosiasi Alternatif - Conclusion : User dapat mengetahui rule dari data transaksi penjualan Businesse Rules : - Assumptions : - PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.2.2.3 37 Simpan hasil pola asosiasi barang Tabel 3. 12 Narasi Use Case Cetak hasil pola asosiasi barang Nama Use Case Cetak hasil pola asosiasi barang Id Use Case 003 Source Penjelasan Use case Deskripsi Menjelaskan proses user melakukancetak hasil pola asosiasi dari proses data mining Aktor User Kondisi Awal Tampil Home Page Kondisi Akhir Hasil Analisa Pola tercetak Aksi Aktor Reaksi Sistem 1. Klik tombol Save 2. Tampil JFileChooser untuk memilih lokasi penyimpanan, nama dokumen penyimpanan dan jenis penyimpanan 3. Klik tombol Oke 4. Hasil proses asosiasi berhasil di simpan Alternatif Alt 4. - Conclusion : Hasil proses asosiasi dapat tersimpan apabila telah dilakukan proses data mining Businesse Rules : Assumptions : - User dapat melihat hasil apabila telah melakukan proses data mining Open Issues : - PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 38 3.3 Perancangan Umum Sistem 3.3.1 Masukan Sistem Masukan data dari sistem ini berasal dari table data yang berada di dalam database. Database yang akan digunakan dapat dipilih sendiri oleh user. Tabel data transaksi yang digunakan bergantung penuh pada koneksi database yang digunakan oleh user. Selain itu, dalam proses pencarian rule dalam proses data mining diperlukan sebuah masukan berupa minimum support yang digunakan dalam menentukan rule. Min_supp Pengguna Rule hasil proses penambangan data Aplikasi pencarian rulemenggunakan algoritma FP-Growth Gambar 3. 4Diagram Konteks 3.3.2 Proses Sistem Proses sistem terdiri dari beberapa langkah untuk dapat menemukan rule yang berfungsi untuk memprediksi jenis barang yaitu : a. Pengambilan data transaksi yang akan digunakan untuk proses data mining. b. Menentukan minimum support yang berfungsi dalam menentukan rule. c. Proses asosiasi untuk memprediksi dijalankan d. Menganalisa hasil asosiasi terhadap proses data mining yang telah dijalankan. e. Menyimpan hasil analisa proses data mining yang telah dijalankan pada langkah sebelumnya. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.3.3 39 Keluaran Sistem Sistem yang akan di bangun ini akan memberikan beberapa keluaran diantaranya adalah jumlah kemunculan yang terjadi dari banyaknya transaksi yang ada ketika menentukan minimum support. Selain itu juga akan menampilkan hasil dari proses data mining yang dijalankan berupa rule. 3.3.4 Perancangan Struktur Data Dalam penelitian ini, peeliti menggunakan ArrayList dalam proses pembentukan itemset dari pencarian frequentitemset sampai dengan terbentuknya rule. Pemilihan ArrayList oleh peneliti dalam menyelesaikan penelitian ini dikarenakan ArrayList tidak membutuhkan pendeklarasian panjang dari sebuah larik. Larik akan secara otomatis bertambah seiring dengan banyak nya data yang digunakan dalam penelitian ini. Tabel 3. 13 Struktur Data ArrayList Fungsi prepocessing Menyimpan hasil preprocessing count Menyimpan count dari masing – masing jenis barang trns Menyimpan transaksi yang mengadung kode yang memiliki count sesuai dengan min_support yang di masukkan Tis Menyimpan transaksi dan item yang mengadung kode yang memiliki count sesuai dengan min_support yang di masukkan dataSet Menyimpan data yang siap untuk dibuat tree candidate Menyimpan hasil dari penyetaraan masing – masing item dan support nya PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.2 Perancangan Sistem 3.4.1 3.4.1.1 Diagram Aktivitas Cari database dan data transaksi penjualan USER SISTEM Klik tombol Open Tampil Halaman_Open Pilih koeksi , Isikan nama database, usernme , password dan url YA Klik Cek Koneksi Valid ? TIDAK Tampil exception “ koneksi berhasil ! “ Tampil exception “ koneksi gagal ! “ Tampil semua tabel yang ada pada database tersebut Pilih tabel yang akan digunakan Klik OK Tampil data dari tabel yang dimaksud 40 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Gambar 3. 5 Diagram Aktivitas Cari database dan data transaksi penjualan 41 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.4.1.2 42 Cari pola asosiasi barang USER SISTEM Isikan indeks noFaktur dan kodeBarng pada kolom yang disediakan Klik tombol prepocessing Tampil Halaman Prepocessing yang berisi data hasil prepocessing, jumlah transaksi dan jumlah jenis barang Isikan minimum_support Klik tombol Konfirmasi Tampil banyaknya barang yang muncul bedasarkan minimum_support yng di masukkan Klik tombol proses Tampil Halaman Hasil proses yang berisi rule dari proses sosiasi Gambar 3. 6 Diagram Aktivitas Cari pola asosiasi barang PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.4.1.3 Simpan hasil pola asosiasi barang SISTEM USER Menjalankan proses data mining Tampil hasil proses asosiasi Klik tombol save Tampil JFileChooser untuk memilih lokasi penyimpanan, nama dokumen dan jenis penyimpanan Klik tombol Oke Data berhasil disimpan Gambar 3. 7 Diagram Aktivitas Simpan hasil pola asosiasi barang 43 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.4.2 Diagram Kelas Analisis Halaman_Home Halaman_Bantuan USER Halaman_Open Controller_Data base Halaman_Prepoce Controller_Algo ssing rithm Konn Larik StrukturTabel TreeNode Halaman_HasilPro ses Contoller_Data base ambilHasil LihatHasilAlgoTabel Model Gambar 3. 8 Diagram Kelas Analisis Comparable 44 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.4.3 Diagram Sequence 3.4.3.1 Cari database dan data transaksi penjualan <<interface>> Halaman_Home.java <<controller>> ControlDatabase.java 45 <<model>> Konn.java USER 1 Klik Masuk Tampil inputInput 2 password Halaman_Open username dan password password input Isikan nama database, 3 username, password, password input url 8 5 7 password input Tampil pilihan tabel Konn() 4 ambilTabel() 6 Koneksi berhasil Hasil Connection password input 9 Pilih tabel transaksi 10 ambildatatabel() 11 Tabel valid 12 Tampil data transaksi Gambar 3.9 Diagram Sequence cari data transaksi PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.4.3.2 46 Cari pola asosiasi barang <<interface>> HalamanAwal.java <<controller>> Control Algorithm.java <<model>> StrukturTabel , TreeNode, ambilHasil <<Controller >> Larik <<controller> > Control Algorithm.ja va USER 1 Masukkan min_supp & klik konfirmasi 2 password input Tampil banyak kemunculan 3 password input Klik proses password input Hasilprepoce ssig() count, transaksisesu ai, transaksi dan item sesuai 4 5 Set transaksi sesuai, kode, count 6 Larik 8 7 Datafix(),tree(), addNode(), penyetaraan() Data urut password input 9 password input Buat tree , penyetaraan password input 13 Tampil Halaman_HasilProse s 11 12 Tabel hasil asosiasi Hasil asosiasi password input Gambar 3.10 Diagram Sequence cari pola asosiasi 10 cariNama Kode() password input PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.4.3.3 Simpan hasil pola asosiasi <<interface>> Halaman_HasilProses.java USER 1 Tekan Tombol Save 2 password input Tampil Save dialog 3 4 Pilih format penyimpanan dan klik tombol simpan Simpan data 5 Konfirmasi pentimpanan Gambar 3.11 Diagram Sequence Cetak hasil asosiasi 47 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.4.4 48 Diagram Kelas Desain <<view>> Halaman_Home <<view>> Halaman_Bantuan <<view>> Halaman_Open <<controller>> Controller_Database <<model>> Konn <<view>> Halaman_Prepo cesing <<controller>> Contoller_Algorithm <<controller>> Larik <<model>> StrukturTabe l <<model>> Comparable <<model>> TreeNode <<model>> ambilHasil <<view>> Halaman_Prepo cesing <<controller>> Contoller_Database <<model>> LihatHasilAlgoTableModel Gambar 3.12 Diagram Kelas Desain PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.4.5 Rincian Algoritma Per Method 3.4.5.1 Algoritma Kelas Control Database 49 Tabel 3.14 Algoritma Kelas Control_Database No Nama Fungsi Method Method Algoritma Method 1. Buat variable st bertipe Statement 2. Buat variable rs bertipe ResultSet Ambildata tabel(Con 1. nection conn, String table) 3. Buat variable query bertipe String Mengambil 4. Buat koneksi ke dalam database dan isi/data dari simpan koneksi ke dalam variable st tabel transaksi 5. Melakukan set query untuk mengambil yang dipilih semua data di tabel dan ditampung dalam oeh pengguna variable query 6. Mengeksekusi query tersebut dan menampung dalam variable rs 7. Mengembalikan nilai rs 1. Buat variable st bertipe Statement 2. Buat variable rs bertipe ResultSet 2. Mengambil 3. Buat variable query bertipe String nama – nama 4. Buat koneksi ke dalam database dan Ambiltabe tabel dari l(Connecti koneksi on conn) database yang nama tabel di database dan ditampung dilakukan oleh dalam variable query pengguna simpan koneksi ke dalam variable st 5. Melakukan set query untuk mengambil 6. Mengeksekusi query tersebut dan menampung dalam variable rs 7. Mengembalikan nilai rs PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 50 1. Buat variable statement bertipe PreparedStatement dan inisialisasi dengan nilai null 2. Buat variable result bertipe PreparedStatement dan inisialisasi Mencari nama 3. cariNama Barang dengan nilai null barang dari 3. Buat variable nama bertipe String sebuah 4. Melakukan autocommit pada koneksi. kodebarang 5. Melakukan set query untuk mengambil dalam sebuah nama barang di database dan ditampung tabel transaksi dalam variable sql bertipe String tertentu 6. Mengeksekusi query tersebut dan menampung dalam variable result 7. Selama result.next() maka menjalankan method getString dari variable result dan disimpan pada variable nama 8. Mengembalikan nilai nama PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 51 1. Buat variable statement bertipe PreparedStatement dan inisialisasi dengan nilai null 2. Buat variable result bertipe PreparedStatement dan inisialisasi Mencari nama 4. cariNama Kategori dengan nilai null kategori dari 3. Buat variable nama bertipe String sebuah kode 4. Melakukan autocommit pada koneksi. kategori dalam 5. Melakukan set query untuk mengambil sebuah tabel nama kategori di database dan ditampung transaksi dalam variable sql bertipe String tertentu 6. Mengeksekusi query tersebut dan menampung dalam variable result 7. Selama result.next() maka menjalankan method getString dari variable result dan disimpan pada variable nama 8. Mengembalikan nilai nama 1. Buat variable st bertipe Statement Melakukan proses preprocessing, yaitu 5. prepocessi menggabungka ng n beberapa row yang memiliki nofaktur sama agar menjadi satu row 2. Buat variable rs bertipe ResultSet 3. Buat variable query bertipe String 4. Buat koneksi ke dalam database dan simpan koneksi ke dalam variable st 5. Melakukan set query untuk menggabungkan beberapa row yang memiliki nofaktur sama agar menjadi satu row di tabel dan ditampung dalam variable query 6. Mengeksekusi query tersebut dan menampung dalam variable rs 7. Mengembalikan nilai rs PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.4.5.2 52 Algoritma Kelas Control_Algorithm Tabel 3.15 Algoritma Kelas Control_Algorithm No Nama Fungsi Method Method Berisi kode barang HasilPrep hasil proses 1. ocessing( prepocessin ArayList g yang <Struktur disimpan Tabel> dalam prepocess bentuk ing) ArrayList< ArrayList< String>> Algoritma Method 1. Buat obyek baru dataset yang beripe ArrayList<ArrayList<String>> 2. Selama processing.size() menjalankan : - Memanggil kode barang dan di simpan dalam variable String code - Buat obyek baru data bertipe ArrayList<String> - Menambahkan obyek data dengan nilai dari code - Menambahkan obyek dataSet dengan nilai dari data 3. Mengambalikan nilai dataset PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 53 1. Buat obyek baru arr dengan tipe List<String> 2. Buat obyek countbertipe ArrayList <TreeNode> 3. Buat obyek baru hash yang bertipe HashSet 4. Buat variable string bertipe String dan diinisialisasikan dengan nilai null 5. Selama i kurang dari b.size maka menjalankan : a. Mengambil isi dari b dan disimpan dalam variable items bertipe ArrayList<String> b. Selama items.size melakukan : Menjumlah Count<A rrayList< 2 ArrayList <String> > b, int a 1. Menyimpan isi dari items dan an count dari menyimpan di variable string 2. Menjalankan method split dari masing- variable kode dan menyimpan ke masing dalam z bertipe String[] jenis barang c. Selama k kurang dari z.length : 1. Memasukkan hasilsplit dari j ke dalam yang ada variable string1 2. Menambahkan obyek hash dengan string1 3. Menambahkan obyek arr dengan string1 6. Mengambil nilai dari hash.iterator yang disimpan dalam variable iterasi bertipe iterator 7. Selama iterasi.hasNext() melakukan : a. Mengambil nilai dari iterasi.next dan disimpan dalam variable unik bertipe String PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 54 8. Buat obyek baru unqueset bertipe Set<String> 9. Selama uniqueset. Size() melakukan : a. Mengecek apakah nilai dari collection.frequency(arr, temp) lebih besar atau sama dengan min support, jika ya melakukan : 4. Buat obyek baru tn bertipe TreeNode 5. Memanggil method tambahCount() 6. Melakukan set item pada tn dengan nilai dari temp 7. Melakukan setCounts dengan Collections.frequency(ar,temp) 8. Menambahkan obyek count dengan nilai dari tn 10. Mengembalikan nilai count Transaksi Mengambil YgSesuai transaksi (ArrayLis yang 3 t<Struktu mengandun rTabel> g kode prepocesi yang sesuai ng, dengan ArrayList minimum <TreeNo supportyag de> dimasukka itemSesu n oleh ai) pengguna 1. Buat obyek baru transaksi bertipe ArrayList <StrukturTabel> 2. Buat obyek baru trns bertipe ArrayList <TreeNode> 3. Buat variable string bertipe String dan diinisalisasikan dengan nilai null 4. Selama preprocessing.size() maka melakukan : a. Mengambil kode dan di tamping di variable a bertipe String b. Melakukan split terhadap a dan menyimpan di dalam variable l bertipe String[] c. Selama l.length() maka menjalankan : 9. String = l PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 55 10. Selama itemSesuai.size() melakukan : ï‚· Jika item dari item sesuai dibandingkan dengan nilai dari string dan menghasilkan nilai no maka : i. Buat obyek baru temp5 bertipe StrukturTabel ii. Menyimpan transaksi ke dalamtemp5 iii. Menambahkan obyek transaksi dengan nilai dari temp5 5. Buat obyek hashurut bertipe TreeSet <String> 6. Selama i kurang dari transaksi.size() maka menambahkan hashurut dengan nilai dari transaksi 7. Menampung hashurut.iterator ke dalam variable iterasi yang bertipe Iterator 8. Selama (iterasi.hasNext()) melakukan : a. Penyimpanan isi dari iterasi.next ke dalam variable unik bertipe String b. Membuat obyek baru temp6 bertipe TreeNode c. Menyimpan isi dari variable unik ke dalam setTransaksi dan di simpan di obyek temp2 d. Menambahkan trns dengan temp6 9. Mengembalikan nilai trns PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 56 1. Buat obyek baru transaksidanItemSesuai bertipe ArrayList<StrukturTabel> 2. Buat obyek baru tis yang bertipe ArrayList <TreeNode> 3. Buat variable y dan inisialisasikan dengan nilai null 4. Selama preprocessing.size() maka melakukan : a. Mengambil nilai noFaktur dan ditampung di Transaksi variable c bertipe String danItem b. Mengambil nilai kode dan ditampung di YangSes uai(Array Mengambil List<Stru dan kturTabel mengurutk > an prepocess transaksi 4 variable d bertipe String c. Selama transaksiSesuai.size() melakukan : 11. Mengambil nilai transaksi dan ditampung di variable e bertipe String 12. Jika nilai e dibandingkan dengn nilai dari ing, dan kode c dan bernilai 0 maka : ArayList yang sesuai ï‚· <TreeNo dengan ditampung dalam variable l bertipe de> minimum String[] transaksi supportyag Sesuai, dimasukka ArrayList n oleh <Struktur Tabel> count, int x) pengguna ï‚· Melakukan split pada nilai d dan Selama l.length() melakukan : a) y = l b) Selama count.size() melakukan : i. Memanggil niai kode dari count dan ditampung pada variable n ii. Jika nilai n dibandingkan dengan y menghasilkan nilai nol maka : 13. Mengambil nilai cout dan menyimpan di variable gg 14. Selama gg >= nilai x maka : ï‚· Buat obyek baru temp7 dengan tipe StrukturTabel ï‚· PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ï‚· 57 Melakukan set no fakur, kode dan count pada temp7 ï‚· Menambahkan transaksidanItemSesuai dengan temp7 15. Membuat obyek baru s[] beripe Struktur Tabel 16. Selama transaksidanItemSesuai.size() Membuat obyek baru bertipe StrukturTabel dan melakukan set no faktur, kode dan count 17. Memanggil method Larik.quickSortDesc(s) 18. Selama s.length maka melakukan : ï‚· Melakukan set variable struturTabel degan s[o] ï‚· Melakukan set variable n dengan kode barang , m dengan count barang ï‚· Buat obyek temp77 bertipe TreeNode ï‚· Melakukan set transaksi dan item pada temp77 ï‚· Menambahkan obyek tis dengan temp77 19. Menghapus isi dari obyek transaksidanItemSesuai 5. Mengembalikan nilai obyek tis PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 58 1. Buat obyek baru dataSet dengan tipe ArrayList <ArrayList<String>> 2. Buat obyek baru ah yang bertipe StrukturTabel 3. Buat variable f dengan tipe String dan di inisialisasi kan dengan nilai null 4. Buat variable string dengan tipe String dan di inisialisasi kan dengan nilai null Datafix( 5. Selama i kurang dari transaksiSesuai.size(), maka ArrayList Memasukk 5. <TreeNo an data de> transaksi transaksi yang sesuai Seuai, ke dalam ArrayList Array <TreeNo untuk de> proses transaksi pembentuk danItemS an Tree menjalankan : 20. Memanggil transaksi dari transaksiSesuai dan ditampung dalam variable c bertipe String 21. Buat obyek baru data dengan tipe ArrayList <String> 22. Selama j kurang dari transaksidanItemSesuai.size(), maka menjalankan : ï‚· Memanggil transaksi dari transaksidanItemSesuai dan ditampung esuai) dalam variable e bertipe String ï‚· Jika nilai dari e dibandingkan dengan niai dari c bernilai nol maka menampung nilai item dalam variable f dan ditambahkan dalam obyek data. 23. Menambahkan dataset dengan nilai dari data 6. Mengembalikan nilai dataset PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 59 1. Buat obyek baru root bertipe TreeNode() 2. Mengeset curNode dengan nilai dari root 3. Mengeset variable anak dengan memanggil curNode.getChildNodes 4. Selama datafix.size, menjalankan : a. Melakuakn set curNode dengan root b. Mengambil nilai dari datafix dan disimpan dalam variable bertipe ArrayList<String> c. Selama items.size , menjalankan : - FP- item bertipe String Tree(Arr ayList<A 6. Mengamil nilai items dan di simpan dalam rrayList< Membuat String>> struktur datafix, Tree - Membuat obyek baru temp bertipe TreeNode - Jika variable anak tidak null , maka : ï‚· Selama anak.size(), menjalankan : a). Menyimpan nilai dari anak di itm bertipe TreeNode Arrayist< b). Jika nilai dari itm dibandingkan TreeNod dengan item sama maka e> cek) melakukan set temp dengan itm - Buat obyek tmp baru bertipe TreeNode - Melakukan setItem(item) pada tmp - Melakukan setParentNode(curNode) pada tmp - Menambahkan anak pada curNode dengan nilai dari tmp - Memangil perintah ntuk menambahkan node baru PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI - 60 Melakukan set pada curNode dengan nilai temp - Memanggil perintah tambahCount pada temp 5. Mengembalikan nilai dari root. 1. Buat variable curNode dan diinisialisasikan dengan nilai null; 2. Selama( TreeNode node : head), menjalankan : addNode( TreeNod e tn, 7. Menambah ArrayList kan node <TreeNo dalam tree ï‚· Melakukan set curNode dengan temp ï‚· Jika node.getItem() sama dengan tn.getItem() maka : ï‚· Mengeset nilai curNode dengan node ï‚· Selama curNode.getNextNode() tidak sama dengan null maka mengeset de> curNode dengan head) curNode.getNextNode() 3. Mengeset nextNode pada curNode dengan tn 4. Mengembaikan nilai curNode 3.4.5.3 Algoritma Kelas LihatHasilAlgoTabelModel Tabel 3.16 Algoritma Kelas LihatHasilAlgoTabelModel No 1. Nama Fungsi Method Method delete(int row) Menghapus row yang ada Algoritma Method 1. Memanggil method remove( row) pada obyek rule 2. Memanggil method fireTable RowDeleted(row,row) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Melakukan 2. update perubahan terhadap row yang ada 61 1. Memanggil method update( row) pada obyek rule 2. Memanggil method fireTable RowUpdated(row,row) Menambahka 3. Memanggil method add( row) pada obyek rule 3. add n row pada tabel 4. Memanggil method fireTable RowInserted(row,row) 1. Menjalankan perintah rule.get(rowIndex) dan ditampung di variable s bertipe ambilHasil Mengambil 4. 2. Melakukan switch(coloumIndex) getValueA nilai dari 3. Case 0 : megembalikan nilai candidate t baris dan 4. Case 1 : mengembalikan nilai item kolom 5. Case 2 : mengembalikan nilai count 6. Case 3 : mengembalikan nilai confidence 7. Case 4 : mengembalikan nilai suppxconf 1. Melakukan switch(coloumIndex) 5. getColou mName Mengambil nama kolom dalam tabel 2. Case 0 : mengembalikan “Produk 1 ” 3. Case 1 : mengembalikan “Produk 2 ” 4. Case 2 : mengembalikan “Support ” 5. Case 3 : mengembalikan “Confidence ” 6. Case 4 : mengembalikan “Sup x Con ” PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.4.5.4 62 Algoritma Kelas Konn Tabel 3.17 Algoritma Kelas Konn No Nama Fungsi Method Method Algoritma Method 1. Memanggil method getClose() 2. Menjalankan method DriverManager Konn(String dengan mengambil nilai masukkan namaDB, 1. String url, Melakukan String koneksi ke username, database String berupa nama database, url, username dan password dan disimpan dalam atribut connection 3. Apabila koneksi berhasil maka menampilkan pesan “ Koneksi berhasil” password) 4. Apabila koneksi gagal akan menampilkan pesan “ Koneksi gagal” Mengecek 2. isConnected 1. Menjalankan perintah if dengan syarat apakah koneksi apabila atribut connection tidak null dengan maka akan mengembalikan nilai true database 2. Apabila atribut connection bernilai null terhubung atau tidak maka mengembalikan nilai false PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 63 5.1 Melakukan perintah if dengan syarat Method ini berfungsi 3. getClose untuk memutus koneksi ke database apakah terhubung ke database atau tidak, jika terhubung maka akan dilakukan pemutusan koneksi dan melakukan set pada atribut connection dengan niai null 5.2 Jika tidak terhubung kembalikan nilai false PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 64 3.5 Perancangan Antar Muka Pengguna 3.5.1 Perancangan Antar Muka Halaman Home PENERAPAN DATA MINING PADA PERUSAHAAN RITAIL PAKAIAN UNTUK MEMPREDIKSI KETERSEDIAAN JENIS BARANG DENGAN MENGGUNAKAN ALGORITMA FP-GROWTH Logo Universitas KELUAR BANTUAN MASUK Gambar 3.12 Perancangan Antar Muka Home Penjelasan gambar : Gambar 3.12 merupakan halaman awal tampilan dari sistem pencarian pola asosiasi barang dengan menggunakan algoritma FP –Growth. Halaman ini berisi Judul dari penelitian yang peneliti lakukan, logo universitas, tombol keluar untuk keluar dari system, tombol bantuan untuk melihat informasi tentang system, dan tombol masuk untuk memulai proses pencarian rule. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.5.2 65 Perancangan Antar Muka Halaman Open Logo Universitas Pengambilan Data PENERAPAN DATA MINING PADA PERUSAHAAN RITAIL PAKAIAN UNTUK MEMPREDIKSI KETERSEDIAAN JENIS BARANG DENGAN MENGGUNAKAN ALGORITMA FP-GROWTH Prepocessing Nama Database : Url : Username : Password : Hasil Proses Batal Pilih Tabel : Cek Koneksi OKE TABEL DATA TRANSAKSI Masukkan indeks no faktur dan kode barang pada kolom di bawah ini : No faktur : Kode : Prepocessing Gambar 3.13 Perancangan Antar Muka Halaman Open Penjelasan gambar : Gambar 3.13 merupakan perancangan antar muka halaman open ketika pengguna telah melakukan klik pada tombol masuk. Pada halaman ini terdapat masukan berupa koneksi database, namadatabase, username, password dan url. Pengguna dapat memilih tabel transaksi yang akan digunakan ketika telah terkoneksi dengan database. Halaman ini pula akan menampilkan isi dari tabel transaksi yang telah dipilih. Untuk melakukan preprocessing pengguna harus mengisikan indeks nofaktur dan indeks kode pada kolom yang tersedia. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.5.3 66 Perancangan Antar Muka Halaman Prepocessing Logo Universitas PENERAPAN DATA MINING PADA PERUSAHAAN RITAIL PAKAIAN UNTUK MEMPREDIKSI KETERSEDIAAN JENIS BARANG DENGAN MENGGUNAKAN ALGORITMA FP-GROWTH Pengambilan Data Prepocessing Hasil Proses TABEL DATA TRANSAKSI HASIL PREPOCESSING Jumlah data transaksi : Minimum Support : Jenis Item Barang : % dari transaksi Konfirmasi Banyak Kemunculan : kali dari transaksi Process Gambar 3.14 Perancangan Antar Muka Halaman Prepocessing Penjelasan gambar : Gambar 3.14 merupakan perancangan antar muka halaman preprocessing. Halaman ini berisi tabel transaksi hasil preprocessing, masukkan minimum support dari pengguna untuk melanjutkan ke proses pencarian rule. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.5.4 67 Perancangan Antar Muka Halaman Hasil Proses PENERAPAN DATA MINING PADA PERUSAHAAN RITAIL PAKAIAN UNTUK MEMPREDIKSI KETERSEDIAAN JENIS BARANG DENGAN MENGGUNAKAN ALGORITMA FP-GROWTH Logo Universitas Pengambilan Data Prepocessing Hasil Proses Min Supp: Jumlah data transaksi : Jenis Item Barang : TABEL RULE HASIL PROSES Save Waktu Komputasi Pencarian rule : Penjelasan rule dari hasil proses Home Back Gambar 3.15 Perancangan Antar Muka HalamanHasil Proses Penjelasan gambar : Gambar 3.15 merupakan perancangan antar muka halaman hasil proses yang berisi tabel rule hasil dari proses. Selain itu juga berisi penjelasan terhadap rule yang dihasilkan. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 3.5.5 68 Perancangan Antar Muka Halaman Bantuan Logo Universitas PENERAPAN DATA MINING PADA PERUSAHAAN RITAIL PAKAIAN UNTUK MEMPREDIKSI KETERSEDIAAN JENIS BARANG DENGAN MENGGUNAKAN ALGORITMA FP-GROWTH LANGKAH – LANGKAH PROSES ALGORITMA Home Gambar 3.16 Perancangan Antar Muka Halaman Bantuan Penjelasan gambar : Gambar 3.16 merupakan halaman bantuan. Halaman ini berisi langkah – langkah pencarian rule maupun informasi mengenai sistem ini. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB IV IMPLEMENTASI SISTEM Setelah melakukan analisis dan perancangan sistem, maka tahap berikutnya adalah melakukan implementasi terhadap rencangan yang telah di buat ke sebuah sistem untuk melakukan proses prediksi minat konsumen terhadap suatu barang di sebuah perusahaan XYZ. Implementasi ini dilakukan dengan menggunakan bahasa pemrograman Java dengan menggunakan Netbeans IDE versi 7.2 pda computer dengan spesifikasi intel core i3, memori 1GB. 4.1 Implementasi Antar Muka Pengguna Berikut adalah hasil implementasi antar muka pengguna dari sistem deteksi minat konsumen dengan menggunakan algoritma FP-Growth : 4.1.1 Implementasi Antar Muka Halaman_Open 69 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 70 Gambar 4.1 Halaman_Open Tabel 4.1 Keterangan Halaman_Open Id Objek PanelKoneksi Jenis JPanel Teks - Keterangan Panel yang mendasari bagian cari koneksi database Tulisan yang tampil pada halaman lblNamaDb Jlabel Nama untuk memberikan keterangan Database pengguna untuk memasukkan nama database Tulisan yang tampil pada halaman lblNamaUrl Url untuk memberikan keterangan pengguna untuk memasukkan alamat url PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 71 Tulisan yang tampil pada halaman lblUsername Username untuk memberikan keterangan pengguna untuk memasukkan username Tulisan yang tampil pada halaman lblPwd Password untuk memberikan keterangan pengguna untuk memasukkan password titikdua1 Jlabel : - titikdua2 Jlabel : - titikdua3 Jlabel : - titikdua4 Jlabel : Kolom yang bertujuan untuk txtNamaDatabase JtextField - pengguna menuliskan nama database txtUrl JtextField - Kolom yang bertujuan untuk pengguna menuliskan alamat url Kolom yang bertujuan untuk txtUsername JtextField - pengguna menuliskan nama username txtPassword JpasswordF ield - Kolom yang bertujuan untuk pengguna menuliskan password Tombol yang bertujuan untuk btnBatalKoneksi Jbutton Batal mengosongkan kembali kolom nama database, url, username, password Tombol yang bertujuan untuk btnCekKoneksiDB Jbutton Cek melakukan cek koneksi terhadap Koneksi nama database, url, username, password yang telah dituliskan PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 72 pengguna pada kolom yang tersedia PanelPilihTabel Jpanel - Panel yang mendasari bagian cari table transaksi Tulisan yang tampil pada halaman lblPilihTabel Jlabel Pilih untuk memberikan keterangan Tabel pengguna untuk memilih tabel transaksi Titikdua comboPilihTabel Jlabel JcomboBo x : Berisi pilihan – pilihan tabel yang - ada pada database yang telah terkoneksi Tombol ini bertujuan untuk btnOkePilihanTabel Jbutton Oke menampilkan isi dari tabel yang dipilih pengguna ke dalam tabel yang ada di layar output PanelDataTransaksi Jpanel - Panel yang mendasari tabel transaksi Tulisan yang tampil pada halaman lblJumlahData Jlabel Jumlah untuk memberikan keterangan Data pengguna jumlah data transaksi yang ada titikdua5 Jlabel : Menampilkan jumlah data lblJmlhData2 Jlabel - transaksi yang ada pada tabel transaksi yang dipilih Tulisan yang tampil pada halaman lblIndek1 Jlabel - untuk memberikan keterangan pengguna untuk mengisi kolom indeks nofaktur dan kolom kode PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 73 Tulisan yang tampil pada halaman lblIndek2 Jlabel - untuk memberikan keterangan pengguna untuk mengisi kolom indeks nofaktur dan kolom kode Tulisan yang tampil pada halaman lblNoFaktur Jlabel No Faktur untuk memberikan keterangan pengguna untuk mengisi kolom indeks nofaktur txtIndekNoFaktur Kolom untuk pengguna JtextField menuliskan indeks nofaktur Tulisan yang tampil pada halaman lblIndekKode Jlabel Kode untuk memberikan keterangan Barang pengguna untuk mengisi kolom indeks kode txtIndekKode JtextField btnPrepocessing Jbutton Kolom untuk pengguna menuliskan indeks kode Prepocessi Tombol yang bertujuan untuk ng melakukan proses preprocessing PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.1.2 74 Implementasi Antar Muka Halaman_Prepocessing Gambar 4.2 Halaman_Prepocessing Tabel 4.2 Keterangan Halaman_Prepocessing Id Objek PanelDataPreposesi ng ScrollPaneTableDat aHasilPrepocessing TableDataHasilPrep ocessing Jenis JPanel Teks - JScrollPane - JTable - Keterangan Panel yang mendasari hasil proses prepocessing ScrollPaneyang berfungsi agar tabel bisa di scroll ke bawah Menampung data transaksi hasil prepocessing PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Jumlah lblJmlhDtTransaksi JLable Data Transaksi titikdua8 lblJmlhDataPrepoce ssing JLable : JLable - 75 Tulisan yang tampil pada halaman untuk memberikan keterangan pengguna jumlah data transaksi setelah hasil preprocessing Menampilkan jumlah data transaksi hasil prepocessing Tulisan yang tampil pada halaman lblJenisItem JLable Jenis Item untuk memberikan keterangan Barang pengguna jumlah data item barang setelah hasil prepocessing titikdua9 lblJmlhItemPrepoce ssing1 JLable : JLable - Menampilkan jumlah item transaksi hasil prepocessing Tulisan yang tampil pada halaman lblMinSupp JLable Minimum untuk memberikan keterangan Support pengguna untuk menuliskan minimum support titikdua10 JLable txtMin_supp JTextField : Kolom untuk pengguna menuliskan minimum support Tulisan yang tampil pada halaman lblMinnsupp2 JLable % dari untuk memberikan keterangan pengguna tentang minimum support lblJmlhDataPrepoce ssing1 JLable - Menampilkan jumlah data transaksi hasil prepocessing Tulisan yang tampil pada halaman lblMinsupp3 JLable transaksi untuk memberikan keterangan pengguna tentang minimum PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 76 support btnOkMin_Supp JButton Konfirmas Tombol untuk menghitung jumlah i kemunculan item dalam transaksi Tulisan yang tampil pada halaman lblBnykKemuncula n JLable Banyak untuk memberikan keterangan Kemuncul pengguna tentang banyak item an yang muncul dalam transaksi berdasar minimum support titikdua11 JLable : Menampilkan banyak banyak item lblJmlhItemMuncul JLable - yang muncul dalam transaksi berdasar minimum support Tulisan yang tampil pada halaman lblBnykKemuncula n2 untuk memberikan keterangan JLable kali dari pengguna tentang banyak item yang muncul dalam transaksi berdasar minimum support lblJmlhDataPrepoce ssing2 JLable - Menampilkan jumlah data transaksi hasil prepocessing Tulisan yang tampil pada halaman lblBnykKemuncula n3 untuk memberikan keterangan JLable transaksi pengguna tentang banyak item yang muncul dalam transaksi berdasar minimum support btnProses JButton Process Tombol yang bertujuan untuk melakukan proses pencarian rule PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.1.3 77 Implementasi Antar Muka Halaman_HasilProses Gambar 4.3 Halaman_HasilProses Tabel 4.3 Keterangan Halaman_HasilProses Id Objek Halaman_HasilPros es ScrollPaneTableHas ilProses Jenis Teks JPanel - JscrollPane - Keterangan Panel yang mendasari hasil proses dari pencarian rule ScrollPaneyang berfungsi agar tabel bisa di scroll ke bawah PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI TabelHasilProses Jtable Tabel lblKetTable Jlable Hasil Proses 78 Menampung rule hasil proses Tulisan yang tampil pada halaman untuk memberikan keterangan pengguna bahwa tabel di bawah adalah tabel hasil proses Tombol yang berfungsi untuk btnSave Jbutton Save melakukan penyimpanan data hasil proses btnKembali Jbutton Home ScrollPaneTextArea JscrollPane - TextAreaHasil - JtextArea Tombol yang berfungsi untuk kembali menuju Halaman_Home ScrollPaneyang berfungsi agar textarea bisa di scroll ke bawah Menampung penjelasan rule hasil proses Tulisan yang tampil pada halaman lblPenjelasanRule Jlable Penjelasan untuk memberikan keterangan Hasil Rule pengguna mengenai penjelasan hasil rule Tingkat lblTingkatAkurasi2 Jlable Akurasi Algoritma lblTingkatAkurasi Jlabel - Tulisan yang tampil pada halaman untuk memberikan keterangan pengguna tentang tingkat akurasi dari algoritma Menampilkan hasil perhitungan akurasi algoritma Tulisan yang tampil pada halaman lblMinSuppHasilPr oses Jlabel Minimum untuk memberikan keterangan Support : pengguna tentang minimum support lblMinSuppHasilPr oses2 Jlabel - Menampilkan minimum support PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI lblJmlhDtTransHasi lProses lblJmlhDtTransHasi lProses lblItemTransHasilPr oses lblItemTransHasilPr oses Jlabel Jlabel Jlabel Jlabel 79 Jumlah Tulisan yang tampil pada halaman Data untuk memberikan keterangan Transaksi pengguna tentang jumlah data : transaksi - Jumlah Item : - Menampilkan jumlah data transaksi Tulisan yang tampil pada halaman untuk memberikan keterangan pengguna tentang jumlah item Menampilkan jumlah item PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.1.4 Implementasi Antar Muka Halaman_Home Gambar 4.4 Halaman_Home Tabel 4.4 Keterangan Halaman_Home Id Objek Jenis Teks PanelHome JPanel - lblLogo JLable - btnKeluarHome JButton Keluar Keterangan Panel yang mendasari Halaman_Home Menampilkan logo universitas Tombol yang bertujuan untuk keluar dari aplikasi 80 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI Penerapan Data lblJudul1 JLable Mining Pada Perusahaan Judul Retail Pakaian Untuk lblJudul2 JLable Memprediks i Minat Judul Konsumen Dengan Menggunak lblJudul3 JLable an Judul Algoritma FP-Growth btnBantuanHome JButton Bantuan btnMasukHome JButton Masuk Tombol yang bertujuan untuk masuk ke Halaman_Bantuan Tombol yang bertujuan untuk masuk ke Halaman_Open 81 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4.1.5 Implementasi Antar Muka Halaman_Bantuan Gambar 4.5 Halaman_Bantuan Tabel 4.5 Keterangan Halaman_Bantuan Id Objek Jenis Teks PanelJudul JPanel - PanelLangkahSistem JPanel - Keterangan Panel yang mendasari Judul Berisi langkah – langkah menggunakan sistem 82 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI btnHomeBantuan JButton HOME 83 Tombol untuk kembali ke halaman home 4.2 Implementasi Kelas 4.2.1 Implementasi Kelas Model Tabel 4.6 Implementasi dari kelas model No. Nama Kelas Model Nama File Fisik Nama File Executable 1. Koneksi Koneksi.java Koneksi.class 2. StrukturTabel StrukturTabel.java StrukturTabel.class 3. TreeNode TreeNode.java TreeNode.class 4. Comparable Comparable.java Comparable.class 5. AmbilHasil AmbilHasil.java AmbilHasil.class LihatHasilAlgoTableM LihatHasilAlgoTableMo LihatHasilAlgoTableMo odel del.java del.class 6. 4.2.2 Implementasi Kelas Controller Tabel 4.7 Implementasi dari Kelas Controller No. 4.2.3 Nama Kelas Controller Nama File Fisik Nama File Executable 1. Konn Konn.java Konn.class 2. ControlAlgorithm ControlAlgorithm.java ControlAlgorithm.class 3. Control_Database Control_Database.java Control_Database.class 4. Larik Larik.java Larik.class Implementasi Kelas View PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 84 Tabel 4.8 Implementasi dari kelas view No. 1. 2. Use Case Cari Database dan Data Transaksi Cari Pola Asosiasi Barang 3. Simpan Hasil Asosiasi Barang Antarmuka Nama Kelas Boundary Halaman_Open.java Halaman_Open.java Halaman_Prepocessing.java Prepocessing.java Halaman_HasilProses.java HasilProses.java (Listing program terlampir pada Lampiran 1) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB V UJICOBA DAN EVALUASI Setelah aplikasi prediksi dengan menggunakan algoritma FP-Growth selesai di buat, pada tahap ini akan dilakukan ujicoba terhadap aplikasi tersebut. Ujicoba dilakukan dengan menggunakan data transaksi penjualan dalam perusahan XYZ. Data transaksi yang digunakan untuk unicoba adalah data transaksi penjualan selama 3 hari pada tanggal 1 April 2015 sampai dengan tanggal 3 April 2015. Dalam ujicoba ini akan dilakukan beberapa jenis percobaan untuk setiap data transaksi dengan tujuan untuk mendapatkan aturan asosiasi dengan algoritma FP-Growth yang akurat dan dapat dijadikan sebagai prediksi dalam menentukan stok barang dalam perusahaan. 5.1 Percobaan Data Transaksi Berdasarkan Kode Kategori Per Hari Pada percobaan yang pertama ini, penulis melakukan ujicoba pada system tersebut dengan menggunakan data transaksi penjualan pada perusahaan XYZ dengan berdasarkan kode kategori barang yang ada pada perusahaan. Percobaan ini akan dilakukan sebanyak 4 kali di setiap tanggal 1 April 2015, 2 April 2015 dan 3 April 2015 dengan dilakukan pengubahan pada minimum support yang dimasukkan. Pada ujicoba tersebut akan menggunakan minimum support dengan nilai sebesar 3%, 2.5%, 2% dan 1.5 %. Penulis mengunakan nilai minimum supportdengan beberapa nilai tersebut dengan alasan karena data transaksi tersebut tidak memiliki persebaran nilai yang merata. Apabila menggunakan nilai minimum support besar maka tidak akan menampilkan rule. Sedangkan apabila menggunkan minimum support dengan nilai dibawah yang telah ditentukan oleh penulis, akan menghasilkan rule yang sangat banyak, sehingga akan sulit untuk dianalisa. 85 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5.1.1 86 Percobaan pada data transaksi tanggal 1 April 2015 Data transaksi yang digunakan adalah sebanyak 2245 , sedangkan jumlah item yang ada sebanyak 91. a. Percobaan tanggal 1 April 2015 dengan minimum support 3% Tabel 5.1 Percobaan tanggal 1 April 2015 dengan minimum support 3% No Produk 1 Produk 2 Support Confidence LiftRatio 1 ACC(700) SENDAL(510) 0.68 0.21 1.27419 Waktu Komputasi Pencarian Rule : 1 detik Pada saat peneliti menggunakan minimum support 3% hanya terdapat satu buah rule yang dihasilkan yaitu kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 0.68 persen, besar confidence adalah 0.21, besar nilai lift ratio sebesar 1.27419. Proses algoritma tersebut membutuhkan waktu sebesar 1 detik. b. Percobaan tanggal 1 April 2015 dengan minimum support 2.5 % Tabel 5.2 Percobaan tanggal 1 April 2015 dengan minimum support 2.5% No Produk 1 Produk 2 Support Confidence LiftRatio 1 K.KAKI(640) ACC(700) 0.56 0.589 4.08119 2 ACC(700) SENDAL(510) 0.68 0.21 1.27419 Waktu Komputasi Pencarian Rule : 2 detik PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 87 Pada saat peneliti menggunakan minimum support 2,5% terdapat dua buah rule yang dihasilkan yaitu kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 0.68 persen, besar confidence adalah 0.21 ,dengan nilai lift ratio sebesar 1.27419. Yang kedua adalah kode K.KAKI(640) dan ACC(700) dengan support kedua barang tersebut adalah 0.56 persen, besar confidence adalah 0.589 ,dengan nilai lift ratio sebesar 4.08119. Waktu yang di butuhkan untuk melakukan proses tersebut adalah 2 detik c. Percobaan tanggal 1 April 2015 dengan minimum support 2 % Tabel 5.3 Percobaan tanggal 1 April 2015 dengan minimum support 2 % No Produk 1 Produk 2 Support Confidence LiftRatio 1 K.KAKI(640) ACC(700) 0.56 0.589 4.08119 2 ACC(700) SENDAL(510) 0.68 0.21 1.27419 Waktu Komputasi Pencarian Rule : 2 detik Pada saat peneliti menggunakan minimum support 2,5% terdapat dua buah rule yang dihasilkan yaitu kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 0.68 persen, besar confidence adalah 0.21 ,dengan nilai lift ratio sebesar 1.27419. Yang kedua adalah kode K.KAKI(640) dan ACC(700) dengan support kedua barang tersebut adalah 0.56 persen, besar confidence adalah 0.589 ,dengan nilai lift ratio sebesar 4.08119. Waktu yang di butuhkan untuk melakukan proses tersebut adalah 2 detik PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 88 d. Percobaan tanggal 1 April 2015 dengan minimum support 1.5 % Tabel 5.4 Percobaan tanggal 1 April 2015 dengan minimum support 1.5 % No Produk 1 Produk 2 Support Confidence LiftRatio 1 JAM TANGAN(450) SENDAL(510) 0.34 0.274 1.66251 2 JAM TANGAN(450) ACC(700) 0.41 0.331 2.2935 3 K.KAKI(640) ACC(700) 0.56 0.589 4.08119 4 ACC(700) SENDAL(510) 0.68 0.21 1.27419 Waktu Komputasi Pencarian rule : 2 detik Pada saat peneliti menggunakan minimum support 2 % terdapat empat buah rule yang dihasilkan yaitukode JAM TANGAN( 450) dan SENDAL(510) dengan support kedua barang tersebut adalah 0.34 persen, besar confidence adalah 0.274 ,besar nilai lift ratioadalah 1.66251. Yang kedua adalah kode JAM TANGAN(450) dan ACC(700) dengan support kedua barang tersebut adalah 0.41 persen, besar confidence adalah 0.331 ,besar nilai lift ratio adalah 2.2935 Yang ketiga adalah kode K.KAKI(640) dan ACC(700) dengan support kedua barang tersebut adalah 0.56 persen, besar confidence adalah 0.589 ,besar nilai lift ratio adalah 4.08119. Yang keempat adalah kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 0.68 persen, besar confidence adalah 0.21 ,besar nilai lift ratio adalah 1.27419. Waktu yang dibutuhkan untuk melakukan proses tersebut adalah 2 detik Dari hasil pengujian terhadap data transaksi tanggal 1 April 2015, kesimpulan yang dapat diambil adalah sebagai berikut : 1. Dari hasil ke empat percobaan pola dengan kode ACC(700) dan SENDAL(510) adalah dua barang yang selalu muncul dengan berbagai minimum support. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 89 2. Tingkat keakuratan rule dari keempat proses tersebut yang paling besar terdapat pada rule kode K.KAKI(640) dan ACC(700) , dengan nilai lift ratio sebesar 4.08119. 5.1.2 Percobaan pada data transaksi tanggal 2 April 2015 Data transaksi yang digunakan adalah sebanyak 2450 , sedangkan jumlah item yang ada sebanyak 89. a. Percobaan tanggal 2 April 2015 dengan minimum support 3% Tabel 5.5 Percobaan tanggal 2 April 2015 dengan minimum support 3% No Produk 1 Produk 2 Support Waktu Komputasi Pencarian rule : Confidence LiftRatio - Pada saat pengguna menggunakan minimum support 3 % tidak menghasilkan suatu pola apapun. b. Percobaan tanggal 2 April 2015 dengan minimum support 2.5 % Tabel 5.6 Percobaan tanggal 2 April 2015 dengan minimum support 2.5% No Produk 1 Produk 2 Support Confidence LiftRatio 1 ACC(700) SENDAL(510) 0.69 0.22 1.32432 Waktu Komputasi Pencarian rule : 2 detik PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 90 Pada saat peneliti menggunakan minimum support 2.5 % hanya terdapat satu buah rule yang dihasilkan yaitu kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 0.69 persen, besar confidence adalah 0.22, besar nilai lift ratio adalah sebesar 1.32432. Waktu yang diperlukan untuk melakukan proes tersebut sebesar 2 detik c. Percobaan tanggal 2 April 2015 dengan minimum support 2 % Tabel 5.7 Percobaan tanggal 2 April 2015 dengan minimum support 2% No Produk 1 Produk 2 Support Confidence LiftRatio 1 ACC(700) SENDAL(510) 0.69 0.22 1.32432 Waktu Komputasi Pencarian rule : 2 detik Pada saat peneliti menggunakan minimum support 2.5 % hanya terdapat satu buah rule yang dihasilkan yaitu kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 0.69 persen, besar confidence adalah 0.22, besar nilai lift ratio adalah sebesar 1.32432. Waktu yang diperlukan untuk melakukan proes tersebut sebesar 2 detik d. Percobaan tanggal 2 April 2015 dengan minimum support 1.5 % Tabel 5.8 Percobaan tanggal 2 April 2015 dengan minimum support 1.5 % No Produk 1 Produk 2 Support Confidence LiftRatio 1 JOGER(531) ATASAN CE(610) 0.43 0.222 1.46604 2 ACC(700) SENDAL(510) 0.69 0.22 1.32432 SENDAL(510) 0.42 0.113 0.68022 ATASAN 3 CE(610) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 4 TAS(340) SENDAL(510) 0.4 0.223 Waktu Komputasi Pencarian rule : 91 1.34238 2 detik Pada saat peneliti menggunakan minimum support 1.5% terdapat 4 buah rule yang dihasilkan yaitu kode JOGER(531) dan ATASAN CE(610) dengan support kedua barang tersebut adalah 0.43 persen, besar confidence adalah 0.22, besar lift ratio adalah 1.46604 . Yang kedua adalah kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 0.69 persen, besar confidence adalah 0.22, lift ratio adalah 1.32432. Yang ketiga adalah kode ATASAN CE(610) dan SENDAL(510) dengan support kedua barang tersebut adalah 0.42 persen, besar confidence adalah 0.113, besar nilai lift ratio adalah 0.68022. Yang keempat adalahkode TAS(340) SENDAL(510) dengan support kedua barang tersebut adalah 0.4 dan persen, besar confidence adalah 0.223, besar nilai lift ratio adalah 1.34238 . Waktu yang dibutuhkan untuk menjalankan proses tersebut adalah 2 detik. e. Percobaan tanggal 2 April 2015 dengan minimum support 1.4 % Tabel 5.9 Percobaan tanggal 2 April 2015 dengan minimum support 1.4% No Produk 1 Produk 2 Support Confidence LiftRatio ATASAN 1 JOGER(531) CE(610) 0.43 0.222 1.46604 2 ACC(700) SENDAL(510) 0.69 0.22 1.32432 ATASAN 3 CE(610) SENDAL(510) 0.42 0.113 0.68022 4 TAS(340) SENDAL(510) 0.4 0.223 1.34238 5 ACC(700) ATASAN 0.36 0.115 0.75943 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 92 CE(610) 6 K.KAKI(640) ACC(700) 0.34 Waktu Komputasi Pencarian rule : 0.415 3.23806 2 detik Pada saat peneliti menggunakan minimum support 1.5 % terdapat 4 buah rule yang dihasilkan yaitu kode JOGER(531) dan ATASAN CE(610) dengan support kedua barang tersebut adalah 0.43 persen, besar confidence adalah 0.22, besar lift ratio adalah 1.46604 . Yang kedua adalah kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 0.69 persen, besar confidence adalah 0.22, lift ratio adalah 1.32432. Yang ketiga adalah kode ATASAN CE(610) dan SENDAL(510) dengan support kedua barang tersebut adalah 0.42 persen, besar confidence adalah 0.113, besar nilai lift ratio adalah 0.68022. Yang keempat adalahkode TAS(340) SENDAL(510) dengan support kedua barang tersebut adalah 0.4 dan persen, besar confidence adalah 0.223, besar nilai lift ratio adalah 1.34238 . Yang kelima adalahkode ACC(700) dan ATASAN CE(610) dengan support kedua barang tersebut adalah 0.36 persen, besar confidence adalah 0.115, besar nilai lift ratio adalah 0.75943. Yang keenam adalahkode K.KAKI(640) dan ACC(700) dengan support kedua barang tersebut adalah 0.34 persen, besar confidence adalah 0.115, besar nilai lift ratio adalah 3.23806. Waktu yang dibutuhkan untuk menjalankan proses tersebut adalah 2 detik. Dari hasil pengujian terhadap data transaksi tanggal 2 April 2015, dan dari prediksi yang dilakukan pada data transaksi 1 April 2015, kesimpulan yang adapat diambil adalah sebagai berikut : 5.1.1 Dari hasil ke empat percoban pola dengan kode ACC(700) dan SENDAL(510) adalah dua barang yang selalu muncul dengan berbagai minimum support. Hal ini sesuai dengan pola yang dihasilkan ketika percobaan tanggal 1 April 2015, tetapi nilai dari support, confiden dan lift ratio lebih besar karena jumlah data transaksi pada tanggal 2 April 2015 lebih banyak dari data transaksi tanggal 1 April 2015. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 5.1.2 93 Tingkat keakuratan rule dari proses tersebut yang paling besar terdapat pada rule kode K.KAKI(640) dan ACC(700) , dengan nilai lift ratio sebesar 3.23086. Apabila dilihat prediksi berdasarkan hasil rule pada tanggal 1 April 2015, maka rule tersebut sesuai. 5.1.3 Percobaan pada data transaksi tanggal 3 April 2015 Data transaksi yang digunakan adalah sebanyak 2684 , sedangkan jumlah item yang ada sebanyak 91. a. Percobaan tanggal 3 April 2015 dengan minimum support 3% Tabel 5.10 Percobaan tanggal 3 April 2015 dengan minimum support 3% No Produk 1 Produk 2 Support Confidence LiftRatio 1 ACC(700) SENDAL(510) 1.08 0.286 1.60927 Waktu Komputasi Pencarian rule : 2 detik Pada saat peneliti menggunakan minimum support 3 % hanya terdapat satu buah rule yang dihasilkan yaitu kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 1.08 persen, besar confidence adalah 0.286, besar nilai lift ratio adalah 1.60927 danwaktu yng dibutuhkan untuk melakukan proses tersebut sebesar 2 detik b. Percobaan tanggal 3 April 2015 dengan minimum support 2.5 % Tabel 5.11 Percobaan tanggal 3 April 2015 dengan minimum support 2.5% No Produk 1 Produk 2 Support Confidence LiftRatio PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 1 ACC(700) SENDAL(510) 1.08 Waktu Komputasi Pencarian rule : 0.286 94 1.60927 2 detik Pada saat peneliti menggunakan minimum support 2.5 % hanya terdapat satu buah rule yang dihasilkan yaitu kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 1.08 persen, besar confidence adalah 0.286, besar nilai lift ratio adalah 1.60927 danwaktu yng dibutuhkan untuk melakukan proses tersebut sebesar 2 detik c. Percobaan tanggal 3 April 2015 dengan minimum support 2 % Tabel 5.12 Percobaan tanggal 3 April 2015 dengan minimum support 2% No Produk 1 Produk 2 Support Confidence LiftRatio 1 ACC(700) SENDAL(510) 1.08 0.286 1.60927 Waktu Komputasi Pencarian rule : 3 detik Pada saat peneliti menggunakan minimum support 2 % hanya terdapat satu buah rule yang dihasilkan yaitu kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 1.08 persen, besar confidence adalah 0.286, besar nilai lift ratio adalah 1.60927 danwaktu yng dibutuhkan untuk melakukan proses tersebut sebesar 3 detik PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 95 d. Percobaan tanggal 3 April 2015 dengan minimum support 1.5 % Tabel 5.13 Percobaan tanggal 3 April 2015 dengan minimum support 1.5% No Produk 1 Produk 2 Support Confidence LiftRatio 1 JAM TANGAN(450) ACC(700) 0.42 0.359 2.54909 2 K.KAKI(640) ACC(700) 0.52 0.553 3.92659 3 JOGER(531) 0.52 0.259 2.02669 4 ACC(700) SENDAL(510) 1.08 0.286 1.60927 5 ATASAN CE(610) ACC(700) 0.48 0.14 0.99407 6 TAS(340) SENDAL(510) 0.46 0.179 1.0072 7 TAS(340) ACC(700) 0.5 0.195 1.3846 ATASAN CE(610) Waktu Komputasi Pencarian rule : 3 detik Pada saat pengguna menggunakan minimum support 1.5 % terdapat 7 buah rule yang dihasilkan yaitu kode JAM TANGAN(450) dan ACC(700) dengan support kedua barang tersebut adalah 0.42 persen, besar confidence adalah 0.359, besar nilai lift ratio adalah 2.54909. Yang kedua adalah kode K.KAKI(640) dan ACC(700) dengan support kedua barang tersebut adalah 0.52 persen, besar confidence adalah 0.553, besar nilai lift ratio adalah 3.92659. Yang ketiga adalah kode JOGER(531) dan ATASAN CE(610) dengan support kedua barang tersebut adalah 0.52 persen, besar confidence adalah 0.14368, besar nilai lift ratio adalah 2.02669. Yang keempat adalah kode ACC(700) dan SANDAL(510) dengan support kedua barang tersebut adalah 1.08 persen, besar confidence adalah 0.286, besar nilai lift ratio adalah 1.60927. Yang kelima adalah kode ATASAN CE(610) dan ACC(700) dengan support kedua barang tersebut adalah 0.48 persen, besar confidence adalah 0.179, besar nilai lift ratio adalah 0.99407. Yang keenam adalah kode TAS(340) dan SANDAL(510) dengan support kedua barang tersebut adalah 0.46 persen, besar confidence adalah 0.179, besar nilai lift ratio adalah 1.0072. Yang ketujuh adalah kode TAS(340) dan ACC(700) dengan support kedua barang PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 96 tersebut adalah 0.5 persen, besar confidence adalah 0.195, besar nilai lift ratio adalah 1.3846. Waktu yang dibutuhkan untuk melakukan proses tersebut adalah 3 detik Dari hasil pengujian terhadap data transaksi tanggal 3 April 2015, dan dari prediksi yang dilakukan pada data transaksi 2 April 2015, kesimpulan yang adapat diambil adalah sebagai berikut : 1. Dari hasil ke empat percoban pola dengan kode ACC(700) dan SENDAL(510) adalah dua barang yang selalu muncul dengan berbagai minimum support. Hal ini sesuai dengan pola yang dihasilkan ketika percoban tanggal 2 April 2015, tetapi nilai dari support, confiden dan nilai lift ratio lebih besar karena jumlah data transaksi pada tanggal 3 April 2015 lebih banyak dari data transaksi tanggal 2 April 2015. 2. Tingkat keakuratan algoritma dari keempat percobaan proses tersebut yang paling besar adalah pada kode K.KAKI(640) dan ACC(700) dengan nilai lift ratio sebesar 3.92659 5.2 Percobaan Data Transaksi Berdasarkan Kode Kategori Per 2 Hari 5.2.1 Percobaan pada data transaksi tanggal 1 dan 2 April 2015 Data transaksi yang digunakan adalah sebanyak 4695, sedangkan jumlah item yang ada sebanyak 92. a. Percobaan tanggal 1 dan 2 April 2015 dengan minimum support 3 % Tabel 5.14Percobaan tanggal 1 dan 2 April 2015 dengan minimum support 3 % No Produk 1 Produk 2 Support Waktu Komputasi Pencarian rule : Confidence LiftRatio PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 97 Pada saat peneliti menggunakan minimum support 3 % tidak menghasilkan suatu rule apapun. b. Percobaan tanggal 1 dan 2 April 2015 dengan minimum support 2.5 % Tabel 5.15Percobaan tanggal 1 dan 2 April 2015 dengan minimum support 2.5 % No 1 Produk 1 ACC(700) Produk 2 Support Confidence LiftRatio SENDAL(510) 1.37 0.125 1.29913 Waktu Komputasi Pencarian rule : 4 detik Pada saat peneliti menggunakan minimum support 2.5 % hanya terdapat satu buah rule yang dihasilkan yaitu kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 1.37 persen, besar confidence adalah 0.125, besar nilai lift ratio adalah sebesar1.29913. Waktu yang diperlukan untuk melakukan proses tersebut adalah 4 detik. c. Percobaan tanggal 1 dan 2 April 2015 dengan minimum support 2% Tabel 5.16Percobaan tanggal 1 dan 2 April 2015 dengan minimum support 2 % No 1 Produk 1 ACC(700) Produk 2 Support Confidence LiftRatio SENDAL(510) 1.37 0.125 1.29913 Waktu Komputasi Pencarian rule : 5 detik Pada saat peneliti menggunakan minimum support 2 % hanya terdapat satu buah rule yang dihasilkan yaitu kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 1.37 persen, besar confidence adalah 0.125, besar nilai lift ratio adalah sebesar 1.29913. Waktu yang diperlukan untuk melakukan proses tersebut adalah 5 detik. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 98 d. Percobaan tanggal 1 dan 2 April 2015 dengan minimum support 1.5 % Tabel 5.17Percobaan tanggal 1 dan 2 April 2015 dengan minimum support 1.5 % No Produk 1 Produk 2 Support Confidence LiftRatio 1 ACC(700) SENDAL(510) 1.37 0.125 1.29913 2 K.KAKI(640) ACC(700) 0.9 0.508 3.73834 Waktu Komputasi Pencarian rule : 6 detik Pada saat peneliti menggunakan minimum support 1.5 % terdapat dua buah rule yang dihasilkan yaitu kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 1.37 persen, besar confidence adalah 0.125, besar nilai lift ratio sebesar 1.29913. Yang kedua adalah kode K.KAKI(640) dan ACC(700) dengan support kedua barang tersebut adalah 0.9 persen, besar confidence adalah 0.508, besar nilai lift ratio adalah sebesar 3.73834. Waktu yang dibutuhkan untuk menyelesaikan proses tersebut adalah 6 detik. Dari hasil pengujian terhadap data transaksi tanggal 1 dan 2 April 2015 terhadap hasil prediksi tanggal 3 April 2015, kesimpulan yang adapat diambil adalah sebagai berikut : 1. Dari hasil ke empat percobaan pola dengan kode ACC(700) dan SENDAL(510) adalah dua barang yang selalu muncul dengan berbagai minimum support. Hal ini sesuai dengan pola yang dihasilkan ketika percobaan tanggal 3 April 2015, tetapi nilai dari support, confiden dan lift ratio lebih besar karena jumlah data transaksi pada tanggal 3 April 2015 lebih sedikit dari data transaksi tanggal 1 dan 2 April 2015. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 99 2. Tingkat keakuratan algoritma dari keempat percobaan tersebut yang paling besar adalah ketika K.KAKI(640) dan ACC(700) yaitu sebesar 3.73834 5.3 Percobaan pada data transaksi selama 3 hari tanggal 1,2,3 April 2015 Data transaksi yang digunakan adalah sebanyak 7379, sedangkan jumlah item yang ada sebanyak 93. 5.3.1 Percobaan pada data transaksi selama 3 hari tanggal 1,2,3 April 2015 a. Percobaan tanggal 1,2,3 April 2015 dengan minimum support 3 % Tabel 5.18Percobaan tanggal 1,2,3 April 2015 dengan minimum support 3 % MinSupp : 3 % No 1 Produk 1 ACC(700) Produk 2 Support SENDAL(510) 2.45 Waktu Komputasi Pencarian rule : Confidence Lift Ratio 0.241 1.41813 8 detik Pada saat peneliti menggunakan minimum support 3 % hanya terdapat satu buah rule yang dihasilkan yaitu kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 2.45 persen, besar confidence adalah 0.241, besar nilai lift ratio sebesar 1.41813. Waktu yang dibutuhkan untuk menyelesaikan proses tersebut adalah sebesar 8 detik PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 100 b. Percobaan tanggal 1,2,3 April 2015 dengan minimum support 2.5 % Tabel 5.19Percobaan tanggal 1,2,3 April 2015 dengan minimum support 2.5 % No 1 Produk 1 ACC(700) Produk 2 Support Confidence SENDAL(510) 2.45 0.241 Waktu Komputasi Pencarian Rule : Lift Ratio 1.41813 8 detik Pada saat peneliti menggunakan minimum support 2.5 % hanya terdapat satu buah rule yang dihasilkan yaitu kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 2.45 persen, besar confidence adalah 0.241, besar nilai lift ratio sebesar 1.41813. Waktu yang dibutuhkan untuk menyelesaikan proses tersebut adalah sebesar 8 detik c. Percobaan tanggal 1,2,3 April 2015 dengan minimum support 2 % Tabel 5.20Percobaan tanggal 1,2,3 April 2015 dengan minimum support 2 % No 1 Produk 1 ACC(700) Produk 2 Support Confidence Lift Ratio SENDAL(510) 2.45 0.241 1.41813 Waktu Komputasi Pencarian Rule : 9 detik Pada saat peneliti menggunakan minimum support 2 % hanya terdapat satu buah rule yang dihasilkan yaitu kode ACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 2.45 persen, besar confidence adalah 0.241, besar nilai lift ratio sebesar 1.41813. Waktu yang dibutuhkan untuk menyelesaikan proses tersebut adalah sebesar 9 detik PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 101 d. Percobaan tanggal 1,2,3 April 2015 dengan minimum support 1.5 % Tabel 5.21Percobaan tanggal 1,2,3 April 2015 dengan minimum support 1.5 % No 1 Produk 1 K.KAKI(640) Produk 2 ACC(700) Support Confidence Lift Ratio 1.42 0.524 3.8057 ATASAN 2 JOGER(531) CE(610) 1.16 0.23 1.77343 3 ACC(700) SENDAL(510) 2.45 0.241 1.41813 4 TAS(340) SENDAL(510) 1.14 0.184 1.08272 Waktu Komputasi Pencarian Rule : 10 detik Pada saat peneliti menggunakan minimum support 1.5 % terdapat 4buah rule yang dihasilkan yaitu yang pertama adalah kode K.KAKI(640) dan ACC(700) dengan support kedua barang tersebut adalah 1.42 persen, besar confidence adalah 0.524, besar nilai lift ratio adalah 3.8057 . Yang kedua adalah kodeJOGER(531) dan ATASAN CE(610) dengan support kedua barang tersebut adalah 1.16 persen, besar confidence adalah 0.23, besar nilai lift ratio adalah 1.77343. Yang ketiga adalah kodeACC(700) dan SENDAL(510) dengan support kedua barang tersebut adalah 2.45 persen, besar confidence adalah 0.241, besar nilai lift ratio adalah 1.41813. Yang keempat adalah kodeTAS(340) dan SENDAL(510) dengan support kedua barang tersebut adalah 1.14 persen, besar confidence adalah 0.184, besar nilai lift ratio adalah 1.08272. Waktu yang diperlukan untuk meyelesaikan proses tersebut adalah sebesar 10 detik Dari hasil pengujian terhadap data transaksi tanggal 1, 2, 3 kesimpulan yang adapat diambil adalah sebagai berikut : April 2015 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 102 1. Dari hasil ke empat percobaan pola dengan kode ACC(700) dan SENDAL(510) adalah dua barang yang selalu muncul dengan berbagai minimum support. 2. Tingkat keakuratan algoritma dari keempat percobaan tersebut yang paling besar adalah kode K.KAKI(640) dan ACC(700) dengan nilai lift ratio 3.8057 Dari beberapa uji coba yang telah dilakukan terdapat sebuah rule yang selalu memiliki nilai keakuratan tinggi yaitu barang K.KAKI(640) dengan ACC(700). Melalui nilai keakuratan data tersebut dapat dijadikan sebagai prediksi dalam penyediaan barang dalam perusahaan tersebut. Tabel 5.22 Tabel rule dengan akurasi tertinggi Tanggal 1 April 2015 Item K.KAKI(640) ACC(700) Tanggal 1 Jumlah Awal Penjualan 200 56 200 165 Sisa 144 35 Penambahan Barang 0 200 Sisa 110 96 Penambahan Barang 0 200 Tanggal 2 April 2015 Item K.KAKI(640) ACC(700) Tanggal 2 Jumlah Awal Penjulan 144 34 235 139 Tanggal 3 April 2015 Item K.KAKI(640) ACC(700) Tanggal 3 Jumlah Awal Penjualan 110 52 296 252 Sisa 58 44 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 103 Ketika tanggal 1 April 2015 rule yang memiliki nilai akurasi tinggi adalah K.KAKI(640) dan ACC(700). Di asumsikan jumlah dari masing – masing jenis barang adalah 200. Pada tanggal tersebut penjualan K.KAKI(640) adalah sebesar 56 sehingga memiliki sisa item 144, sedangkan penjualan item ACC(700) adalah sebesar 165 sehingga memiliki sisa item 35. Pada tanggal 2 April 2015 ruletersebut juga memiliki tingkat keakuratan tertinggi. Penjualan K.KAKI(640) adalah sebesar 34 , sisa item dari hari sebelumnya adalah 144, sehingga memiliki sisa item pada tanggal 2 adalah 110, sedangkan penjualan item ACC(700) adalah sebesar 139 namun sisa item pada tanggal sebelumnya hanya 35. Oleh karena itu dilakukan penambahan item sebesar 200 seperti stok awal, sehingga sisa dari item tersebut adalah 96. Pada tanggal 3 April 2015 ruletersebut juga memiliki tingkat keakuratan tertinggi. Penjualan K.KAKI(640) adalah sebesar 52 , sisa item dari hari sebelumnya adalah 110, sehingga memiliki sisa item pada tanggal 3 adalah 58, sedangkan penjualan item ACC(700) adalah sebesar 252 namun sisa item pada tanggal sebelumnya hanya 96. Oleh karena itu dilakukan penambahan item sebesar 200 seperti stok awal, sehingga sisa dari item tersebut adalah 44. Dengan melihat penjelasan di atas, rule yang dihasilkan dari proses asosiasi sangat membantu perusahaan untuk menentukan jenis barang apa yang harus ditambahkan. Seperti hasil di atas, jenis ACC(700) selalu membutuhkan penambahan barang untuk hari berikutnya sesuai dengan hasil yang telah diprediksi. 5.4 Kelebihan dan Kekurangan Sistem 5.4.1 Kelebihan Sistem Kelebihan dari sistem pendekteksian miat konsumen dengan menggunakan algoritma FP-Growth adalah sebagai berikut : 1. Sistem ini dapat menyimpan hasil proses ke dalam file dengan tipe .doc , .xls ,.pdf dan .txt PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 104 2. Sistem ini dapat melakukan proses deteksi dengan kode barang maupun kode kategori. 5.4.2 Kekurangan Sistem Kekurangan dari sistem pendekteksian miat konsumen dengan menggunakan algoritma FP-Growth adalah sebagai berikut : 1. Sistem tidak dapat mengelola data yang berasal dari luar database , misalnya file dengan extensi .csv , .xls sehingga hanya dapat mengelola data yang berasal dari database saja. ( Mysql) 2. Sistem hanya dapat menggunakan satu tabel saja dari database. Tidak dapat melakukan relasi antar tabel secara sistem. PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI BAB VI PENUTUP 6.1 Kesimpulan 1. Algoritma Frequent Pattern Growth (FP-Growth) dapat digunakan untuk melakukan pendekteksian jenis barang yang harus tersedia. Dengan melihat rule yang dihasilkan dari proses asosiasi dalam uji coba, item - item yang ada merupakan sebuah prediksi item akan di beli di kemudian hari. Item – item tersebut yang harus di prioritaskan untuk di sediakan dalam perusahaan tersebut. 2. Nilai dari minimum support sangat berpengaruh terhadap hasil pola yang dihasilkan dalam proses pendekteksian pola. Semakin tinggi nilai minimum support maka semakin sedikit rule yang dihasilkan, sedangkan semakin kecil minimum support maka rule yang dihasilkan semakin banyak. 3. Besar nilai support dan confidence berpengaruh terhadap keakuratan data yang di uji menggunakan lift ratio. Apabila suatu rule memiliki support yang tinggi dan confidence yang tinggi maka rule tersebut memiliki tingkat akurasi yang besar dan rule tersebut dapat dijadikan sebagai prediksi. Apabila suatu rule memiliki support yang rendah dan confidence yang rendah maka rule tersebut memiliki tingkat akurasi yang rendah yaitu memiliki nilai kurang dari 1, dan rule tersebut tidak dapat dijadikan sebagai prediksi. Sedangkan Apabila suatu rule memiliki support yang rendah dan confidence yang tinggi maka rule tersebut kemungkinan memiliki nilai akurasi yang tinggi dan dapat dijadikan sebagai prediksi. 4. Waktu yang dibutuhkan untuk menyelesaikan proses bergantung pada jumlah transaksi yang ada. Semakin banyak data transaksi dan semakin kecilminimum support maka waktu yang dibutuhkan semakin besar. 6.2 Saran 1. Penulis berharap agar sistem ini dapat dikembangkan sehingga dapat digunakan dengan data yang berasal dari luar database seperti .csv, dll 2. Penulis berharap agar sistem ini dikembangkan agar dapat menggunakan data transaksi dalam database lebih dari satu tabel. 105 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 106 DAFTAR PUSTAKA Agrawal,Rakesh,Ramakrishnan, Srikant. Fast Algoritms for Mining Association Rules, IBM Almaden Research Center 650 Harry Road, Sn Jose, CA 95120 Han, J dan Kamber, M. 21001. Data Mining : Concepts and Techniques. Morgan Kaufman. San Fransisco. Han,J.,Pie, J., Y,Yin. 2000.Mining Frequent Patterns without Candidate Generation, School of Computing Science Simon Fraser University. Hill,Mc Graw. 2007 The Complete Reference Java Seventh Edition. Prof. Fomby Tom. July 2013. Association Rules(Aka Affinity Analysis or Market Basket Analysis). Department of Economics Southern Methodist University Dallas, Texas 75275. Tim Dosen USD. Quick Sort dan Merge Sort. Jurusan Teknik Informatika USD McNicholas.P.D., T.B. Murphy, M. O’Regan. Standardising the Lift of an Association Rule. Department of Statistic, Trinity College Dublin, Ireland. Sudiadiarta, I Gede, Market Basket Analysis Menggunakan Algoritma Frequent Pattern Growth(FP-Growth) Untuk Situs E-Commerce. Universitas Sanata Dharma Yogyakarta : Skripsi, 2006 Nurdiyanto, Amin. Penenerapan Algoritma Apriori Untuk Pencarian Pola Asosiasi Barang Pada Data Transaksi Penjualan(Studi Kasus Pada Toko “Kafe Swalayan”). Universitas Sanata Dharma Yogyakarta : Skripsi : 2009. www.solver.com/association-rules-example https://en.m.wikipedia.org/wiki/Lift_(data_mning) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI LAMPIRAN 1 1. Implementasi Kelas Control_Database /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package CONTROLLER; import TOOLS.Konn; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; /** * * @author elsa */ public class Control_Database { public ResultSet ambiltable(Connection conn) throws SQLException{ Statement st; ResultSet rs; String query; st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); query = "show tables"; System.out.println("\nExecuting query : " +query); rs = st.executeQuery(query); return rs; } public ResultSet ambildatatabel(Connection conn, String table) throws SQLException{ Statement st; ResultSet rs; String query; 107 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); query = "select * from " + table; System.out.println("\nExecuting query : " +query); rs = st.executeQuery(query); return rs; } public ResultSet prepocessing(Connection conn, String table, String key1 , String key2) throws SQLException{ Statement st; ResultSet rs; String query; st = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY); query ="SELECT "+key1+", GROUP_CONCAT(distinct("+key2+"))'"+key2+"' FROM " +table+" GROUP BY "+key1; System.out.println("\nExecuting query : " +query); rs = st.executeQuery(query); return rs; } public String cariNamaBarangg(Connection conn, String kode,String table) throws SQLException { PreparedStatement statement = null; ResultSet result = null; String nama = ""; conn.setAutoCommit(false); String sql = "select namaBarang " + "from "+table+" where kodeBarang = "+kode; System.out.println("Query : "+sql); statement = conn.prepareStatement(sql); result = statement.executeQuery(); while(result.next()){ nama = result.getString("namaBarang"); } 108 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI return nama; } public String cariNamaKategori(Connection conn, String kode,String table) throws SQLException { PreparedStatement statement = null; ResultSet result = null; String nama = ""; conn.setAutoCommit(false); String sql = "select namakategori " + "from "+table+" where kategori = "+kode; System.out.println("Query : "+sql); statement = conn.prepareStatement(sql); result = statement.executeQuery(); while(result.next()){ nama = result.getString("namakategori"); } return nama; } } 2. Implementasi Kelas Contol_Algorithm /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package CONTROLLER; import TOOLS.Larik; import TOOLS.StrukturTabel; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; 109 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.TreeSet; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author elsa */ public class Control_Algorithm { ResultSet result = null; PreparedStatement pst = null; Connection conn; public Control_Algorithm(Connection koneksi) { this.conn = koneksi; } public static ArrayList<ArrayList<String>> HasilPrepocessing(ArrayList<StrukturTabel> prepocessing) { ArrayList<String> data1 = new ArrayList<String>(); ArrayList<ArrayList<String>> dataSet = new ArrayList<ArrayList<String>>(); StrukturTabel ah = new StrukturTabel(); int jum = 0; String string = null; for (int i = 0; i < prepocessing.size(); i++) { String d = prepocessing.get(i).getNoFaktur(); String c = prepocessing.get(i).getKodeBarang(); System.out.println((i + 1) + " . " + d + " : " + c); ArrayList<String> data = new ArrayList<String>(); data.add(c); dataSet.add(data); } System.out.println(dataSet); return dataSet; } 110 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 111 public static ArrayList<TreeNode> Count(ArrayList<ArrayList<String>> b, int a) { List<String> arr = new ArrayList<String>(); ArrayList<TreeNode> count = new ArrayList<>(); HashSet<String> hash = new HashSet<>(); String string = null; for (int i = 0; i < b.size(); i++) { ArrayList<String> items = b.get(i); for (int j = 0; j < items.size(); j++) { string = items.get(j).toString(); String z[] = string.split(","); for (int k = 0; k < z.length; k++) { String string1 = z[k]; hash.add(string1); arr.add(string1); } } } Iterator iterasi = hash.iterator(); while (iterasi.hasNext()) { String unik = (String) iterasi.next(); System.out.println(unik); // } Set<String> uniqueset = new HashSet<String>(arr); int jum = 0; for (String temp : uniqueset) { if (Collections.frequency(arr, temp) >= a) { System.out.println(temp + " : " + Collections.frequency(arr, temp)); TreeNode tn = new TreeNode(); tn.tambahCount(); tn.setItem(temp); tn.setCounts(Collections.frequency(arr, temp)); count.add(tn); } // } return count; } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI public static ArrayList<TreeNode> TransaksiYgSesuai(ArrayList<StrukturTabel> prepocessing, ArrayList<TreeNode> itemSesuai) { ArrayList<StrukturTabel> transaksi = new ArrayList<>(); ArrayList<TreeNode> trns = new ArrayList<TreeNode>(); String string = null; int jmlh = 0; for (int i = 0; i < prepocessing.size(); i++) { String a = prepocessing.get(i).getKodeBarang(); String[] l = a.split(","); for (int j = 0; j < l.length; j++) { string = l[j]; for (int k = 0; k < itemSesuai.size(); k++) { if (itemSesuai.get(k).getItem().compareTo(string) == 0) { StrukturTabel temp5 = new StrukturTabel(); temp5.setTransaksiSesuaitpDuplikasi(prepocessing.get(i).getNoFaktur()); transaksi.add(temp5); } } } } // System.out.println(transaksi.size()); TreeSet<String> hashurut = new TreeSet<>(); for (int i = 0; i < transaksi.size(); i++) { hashurut.add(transaksi.get(i).getTransaksiSesuaitpDuplikasi()); } // Cetak int jumlah = 0; Iterator iterasi = hashurut.iterator(); while (iterasi.hasNext()) { String unik = (String) iterasi.next(); TreeNode temp6 = new TreeNode(); temp6.setTransaksi(unik); trns.add(temp6); } System.out.println(jumlah); return trns; 112 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI } public static ArrayList<TreeNode> TransaksidanItemYangSesuai(ArrayList<StrukturTabel> prepocessing, ArrayList<TreeNode> transaksiSesuai, ArrayList<TreeNode> count, int x) { // ArrayList<StrukturTabel> transaksidanItemSesuai = new ArrayList<>(); ArrayList<TreeNode> tis = new ArrayList<TreeNode>(); int jum = 0; String y = null; for (int i = 0; i < prepocessing.size(); i++) { String c = prepocessing.get(i).getNoFaktur(); String d = prepocessing.get(i).getKodeBarang(); System.out.println((i+1) + " . " + c + " " +d); for (int j = 0; j < transaksiSesuai.size(); j++) { String e = transaksiSesuai.get(j).getTransaksi(); if (e.compareTo(c) == 0) { String[] l = d.split(","); System.out.println((j + 1) + " . " + "Transaksi " + c); for (int k = 0; k < l.length; k++) { y = l[k]; // System.out.println(y); jum++; for (int m = 0; m < count.size(); m++) { String n = count.get(m).getItem(); // System.out.println(n); if (n.compareTo(y) == 0) { int gg = count.get(m).getCounts(); if (gg >= x) { System.out.println(n + " : " + gg); StrukturTabel temp7 = new StrukturTabel(); temp7.setNoFaktur(c); temp7.setKodeBarang(n); temp7.setCount(gg); transaksidanItemSesuai.add(temp7); } } } } StrukturTabel s[] = new StrukturTabel[transaksidanItemSesuai.size()]; for (int o = 0; o < transaksidanItemSesuai.size(); o++) { jum++; 113 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 114 s[o] = new StrukturTabel(); s[o].setNoFaktur(transaksidanItemSesuai.get(o).getNoFaktur()); s[o].setKodeBarang(transaksidanItemSesuai.get(o).getKodeBarang()); s[o].setCount(transaksidanItemSesuai.get(o).getCount()); } Larik.quickSortDesc(s); System.out.println("Daftar Kode Barang Setelah Diurutkan: "); String n = null; int m = 0; for (int o = 0; o < s.length; o++) { StrukturTabel strukturTabel = s[o]; System.out.println((o + 1) + ". " + s[o].getKodeBarang() + " : " + s[o].getCount()); n = s[o].getKodeBarang(); m = s[o].getCount(); TreeNode temp77 = new TreeNode(); temp77.setTransaksi(c); temp77.setItem(n); tis.add(temp77); } transaksidanItemSesuai.clear(); System.out.println("\n"); } } } return tis; } public static ArrayList<ArrayList<String>> DataFix(ArrayList<TreeNode> transaksiSesuai, ArrayList<TreeNode> transaksidanItemSesuai) { ArrayList<String> data1 = new ArrayList<String>(); ArrayList<ArrayList<String>> dataSet = new ArrayList<ArrayList<String>>(); StrukturTabel ah = new StrukturTabel(); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI String f = null; int jum = 0; String string = null; for (int i = 0; i < transaksiSesuai.size(); i++) { String c = transaksiSesuai.get(i).getTransaksi(); ArrayList<String> data = new ArrayList<String>(); for (int j = 0; j < transaksidanItemSesuai.size(); j++) { String e = transaksidanItemSesuai.get(j).getTransaksi(); if (e.compareTo(c) == 0) { f = transaksidanItemSesuai.get(j).getItem(); data.add(f); } } dataSet.add(data); } System.out.println(dataSet); return dataSet; } Control_Algorithm() { } public static TreeNode FPTree(ArrayList<ArrayList<String>> datafix, ArrayList<TreeNode> cek) { TreeNode root = new TreeNode(); TreeNode curNode = root; List<TreeNode> anak = curNode.getChildNodes(); for (int i = 0; i < datafix.size(); i++) { curNode = root; ArrayList<String> items = datafix.get(i); for (int j = 0; j < items.size(); j++) { String item = items.get(j); TreeNode temp = new TreeNode(); if (anak != null) { for (int k = 0; k < anak.size(); k++) { TreeNode itm = anak.get(k); if (itm.getItem().compareTo(item) == 0) { temp = itm; } } } 115 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 116 temp = new TreeNode(); temp.setItem(item); temp.setParentNode(curNode); curNode.getChildNodes().add(temp); addNode(temp, cek); curNode = temp; temp.tambahCount(); } curNode = root; } return root; } public static TreeNode addNode(TreeNode tn, ArrayList<TreeNode> head) { TreeNode curNode = null; for (int l = 0; l < head.size(); l++) { TreeNode node = head.get(l); if (node.getItem().compareTo(tn.getItem()) == 0) { curNode = node; while (curNode.getNextNode() != null) { curNode = curNode.getNextNode(); } curNode.setNextNode(tn); } } return curNode; } } 3. Implementasi Kelas TreeNode /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package CONTROLLER; import java.util.ArrayList; import java.util.List; /** PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI * * @author elsa */ public class TreeNode { private String item; private String transaksi; private String itemdalamtransaksi; private TreeNode parentNode; private List<TreeNode> childNodes = new ArrayList<TreeNode>(); private int counts; private TreeNode nextNode; public String getItem() { return item; } public void setItem(String item) { this.item = item; } public TreeNode getParentNode() { return parentNode; } public void setParentNode(TreeNode parentNode) { this.parentNode = parentNode; } public List<TreeNode> getChildNodes() { return childNodes; } public void setChildNodes(List<TreeNode> childNodes) { this.childNodes = childNodes; } public int getCounts() { return counts; } 117 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI public void tambahCount() { this.counts = counts + 1; } public TreeNode getNextNode() { return nextNode; } public void setNextNode(TreeNode nextNode) { this.nextNode = nextNode; } public void setCounts(int counts) { this.counts = counts; } public String getTransaksi() { return transaksi; } public void setTransaksi(String transaksi) { this.transaksi = transaksi; } public String getItemdalamtransaksi() { return itemdalamtransaksi; } public void setItemdalamtransaksi(String itemdalamtransaksi) { this.itemdalamtransaksi = itemdalamtransaksi; } } 4. Implementasi Kelas LihatHasilAlgoTabelModel /* * To change this template, choose Tools | Templates * and open the template in the editor. 118 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI */ package MODEL; import MODEL.ambilHasil; import java.util.ArrayList; import java.util.List; import javax.swing.table.AbstractTableModel; /** * * @author elsa */ public class LihatHasilAlgoTabelModel extends AbstractTableModel { private List<ambilHasil> rule = new ArrayList<ambilHasil>(); public LihatHasilAlgoTabelModel() { } public void delete(int row) { rule.remove(row); fireTableRowsDeleted(row, row); } public void update(int row, ambilHasil s) { rule.set(row, s); fireTableRowsUpdated(row, row); } public void add(ambilHasil Add) { rule.add(Add); fireTableRowsInserted(getRowCount() - 1, getColumnCount() - 1); } public int getRowCount() { return rule.size(); } public int getColumnCount() { return 5; } public Object getValueAt(int rowIndex, int columnIndex) { ambilHasil s = rule.get(rowIndex); switch (columnIndex) { case 0: 119 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI return s.getCandidate1(); case 1: return s.getItem1(); case 2: return s.getCount1(); case 3: return s.getConfidence(); case 4: return s.getLiftRatio(); default: return ""; } } @Override public String getColumnName(int column) { switch (column) { case 0: return "PRODUK 1"; case 1: return "PRODUK 2"; case 2: return "SUPPORT"; case 3: return "CONFIDENCE"; case 4: return "LIFT RATIO"; default: return ""; } } } 5. Implementasi Kelas ambilHasil /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package MODEL; import java.util.ArrayList; /** * 120 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI * @author elsa */ public class ambilHasil { ArrayList<String> candidate; ArrayList<String> item; ArrayList<String> count; private String candidate1; private String item1; private String count1; private String confidence; private String liftRatio; public ArrayList<String> getCandidate() { return candidate; } public void setCandidate(ArrayList<String> candidate) { this.candidate = candidate; } public ArrayList<String> getItem() { return item; } public void setItem(ArrayList<String> item) { this.item = item; } public ArrayList<String> getCount() { return count; } public void setCount(ArrayList<String> count) { this.count = count; } public String getCandidate1() { return candidate1; } public void setCandidate1(String candidate1) { this.candidate1 = candidate1; } 121 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI public String getItem1() { return item1; } public void setItem1(String item1) { this.item1 = item1; } public String getCount1() { return count1; } public void setCount1(String count1) { this.count1 = count1; } public String getConfidence() { return confidence; } public void setConfidence(String confidence) { this.confidence = confidence; } public String getLiftRatio() { return liftRatio; } public void setLiftRatio(String liftRatio) { this.liftRatio = liftRatio; } } 6. Implementasi Kelas Comparable package TOOLS; public interface Comparable { public int compareTo(Object o); } 122 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 123 7. Implementasi Kelas Konn package TOOLS; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JOptionPane; public class Konn { private String namaDB; private String url; private String username; private String password; private Connection connection = null; public Konn(String namaDB, String url, String username, String password) { getClose(); try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException ex) { Logger.getLogger(Konn.class.getName()).log(Level.SEVERE, null, ex); } try { connection = DriverManager.getConnection(url + "/" + namaDB, username, password); System.out.println("Koneksi berhasil"); } catch (SQLException ex) { System.out.println("Koneksi gagal"); } } PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 124 public boolean isConnected() { if (connection != null) { return true; } else { return false; } } public boolean getClose() { if (isConnected()) { try { connection.close(); connection = null; } catch (SQLException ex) { ex.printStackTrace(); //Logger.getLogger(Konn.class.getName()).log(Level.SEVERE, null, ex); } return true; } else { return false; } } public String getNamaDB() { return namaDB; } public void setNamaDB(String namaDB) { this.namaDB = namaDB; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public String getUsername() { return username; } public void setUsername(String username) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Connection getConn() { return connection; } public void setConn(Connection connection) { this.connection = connection; } } 8. Implementasi Kelas Larik package TOOLS; public class Larik { // Descending public static void quickSortHelperDesc(Object[] x, int indeksAwal, int indeksAkhir) { if (indeksAwal < indeksAkhir) { int i = indeksAwal + 1; int j = indeksAkhir; while (i <= indeksAkhir && (((Comparable) x[i]).compareTo(x[indeksAwal])) >= 0) { i++; } while (j > indeksAwal && (((Comparable) x[j]).compareTo(x[indeksAwal])) < 0) { j--; } while (i < j) { swap1(x, i, j); 125 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI while (i <= indeksAkhir && (((Comparable) x[i]).compareTo(x[indeksAwal])) >= 0) { i++; } while (j > indeksAwal && (((Comparable) x[j]).compareTo(x[indeksAwal])) < 0) { j--; } } swap1(x, indeksAwal, j); quickSortHelperDesc(x, indeksAwal, j - 1); quickSortHelperDesc(x, j + 1, indeksAkhir); } } private static void swap1(Object[] x, int i, int j) { Object y = x[i]; x[i] = x[j]; x[j] = y; } public static void quickSortDesc(Object[] x) { quickSortHelperDesc(x, 0, x.length - 1); } } 9. Implementasi Kelas StrukturTabel package TOOLS; public class StrukturTabel implements Comparable { private String noFaktur; private String kodeBarang; private String namaBarang; private String split; private int count; private String tnpdup; private String transaksiSesuaitpDuplikasi; public String getNoFaktur() { return noFaktur; } 126 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI public void setNoFaktur(String noFaktur) { this.noFaktur = noFaktur; } public String getKodeBarang() { return kodeBarang; } public void setKodeBarang(String kodeBarang) { this.kodeBarang = kodeBarang; } public String getNamaBarang() { return namaBarang; } public void setNamaBarang(String namaBarang) { this.namaBarang = namaBarang; } public int getCount() { return count; } public void setCount(int count) { this.count = count; } public String getSplit() { return split; } public void setSplit(String split) { this.split = split; } // public int compareTo(Object o) { if (count == ((StrukturTabel) o).getCount()) { return 0; } else if (count > ((StrukturTabel) o).getCount()) { return 1; } return -1; } // 127 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI // // // 128 /** * @return the tnpdup */ public String getTnpdup() { return tnpdup; } /** * @param tnpdup the tnpdup to set */ public void setTnpdup(String tnpdup) { this.tnpdup = tnpdup; } public String getTransaksiSesuaitpDuplikasi() { return transaksiSesuaitpDuplikasi; } public void setTransaksiSesuaitpDuplikasi(String transaksiSesuaitpDuplikasi) { this.transaksiSesuaitpDuplikasi = transaksiSesuaitpDuplikasi; } } 10. Implementasi Kelas Halaman_Open /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package VIEW; import javax.swing.JOptionPane; import CONTROLLER.Control_Database; import CONTROLLER.Control_Algorithm; import CONTROLLER.TreeNode; import MODEL.LihatHasilAlgoTabelModel; import MODEL.ambilHasil; import TOOLS.Konn; import TOOLS.Larik; import TOOLS.StrukturTabel; import com.lowagie.text.SplitCharacter; import java.awt.Component; import java.io.BufferedWriter; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI import java.io.FileWriter; import java.io.IOException; import java.sql.Connection; import java.sql.ResultSet; import java.sql.ResultSetMetaData; import java.sql.SQLException; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Set; import java.util.Vector; import java.util.logging.Level; import java.util.logging.Logger; import javax.swing.JFileChooser; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JTextArea; import javax.swing.filechooser.FileNameExtensionFilter; import javax.swing.table.DefaultTableModel; import javax.swing.table.TableModel; /** * * @author elsa */ public class Halaman_Open extends javax.swing.JFrame { ArrayList<TreeNode> jmlhItem = new ArrayList<TreeNode>(); ArrayList<StrukturTabel> prepocessing = new ArrayList<>(); ArrayList<ArrayList<String>> countItem = new ArrayList<>(); ArrayList<TreeNode> ambilTransaksi = new ArrayList<>(); ArrayList<ambilHasil> candidate = new ArrayList<>(); LihatHasilAlgoTabelModel model; ambilHasil ah = new ambilHasil(); ArrayList<String> aa = new ArrayList<String>(); ArrayList<String> ab = new ArrayList<String>(); ArrayList<String> ac = new ArrayList<String>(); /** * Creates new form Halaman_Open */ 129 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI public Halaman_Open() { initComponents(); txtPassword.setText("root"); txtUsername.setText("root"); txtUrl.setText("jdbc:mysql://localhost"); txtNamaDatabase.setText("distribusi_sakola7sept"); model = new LihatHasilAlgoTabelModel(); tampilhasil(); jTabbedPane1.setEnabledAt(0, true); jTabbedPane1.setEnabledAt(1, false); jTabbedPane1.setEnabledAt(2, false); btnOkePilihanTabel.setEnabled(false); btnPrepocessing.setEnabled(false); } //Method Penyetaraan mengambil referensi dari : //stackoverflow.com/questions/24242657/one-java-file-use-another-java-file//compile-error public void Penyetaraan(ArrayList<ArrayList<String>> datafix, ArrayList<String> kumpulanRule, int a) { ArrayList<TreeNode> head = Control_Algorithm.Count(datafix, a); TreeNode root = Control_Algorithm.FPTree(datafix, head); Iterator anak = root.getChildNodes().iterator(); while (anak.hasNext() != true) { return; } if (kumpulanRule != null) { for (int l = 0; l < head.size(); l++) { TreeNode treenode = head.get(l); for (String s : kumpulanRule) { aa.add(s); ah.setCandidate(aa); System.out.print(s + " "); } 130 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI ab.add(treenode.getItem()); ah.setItem(ab); int count = treenode.getCounts(); String cont = String.valueOf(count); ac.add(cont); ah.setCount(ac); candidate.add(ah); System.out.println(treenode.getItem() + ":" + treenode.getCounts()); } } for (int i = 0; i < head.size(); i++) { TreeNode hd = head.get(i); ArrayList<String> rule = new ArrayList<String>(); rule.add(hd.getItem()); if (kumpulanRule != null) { rule.addAll(kumpulanRule); } // Menemukan conditional pattern base ArrayList<ArrayList<String>> datafixbaru = new ArrayList<ArrayList<String>>(); TreeNode curNode = hd.getNextNode(); while (curNode != null) { int counter = curNode.getCounts(); ArrayList<String> parentNodes = new ArrayList<String>(); TreeNode parent = curNode; while ((parent = parent.getParentNode()).getItem() != null) { parentNodes.add(parent.getItem()); } for (int k = counter; k > 0; k--) { datafixbaru.add(parentNodes); } curNode = curNode.getNextNode(); } Penyetaraan(datafixbaru, rule, a); } } public String cariNamaBrg(String kode) { 131 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 132 String namaBarang = null; String nb = null; try { String tabel = comboPilihTabel.getSelectedItem().toString(); Control_Database kn = new Control_Database(); String nama = txtNamaDatabase.getText(); String url = txtUrl.getText(); String user = txtUsername.getText(); String pwd = txtPassword.getText(); Konn conn = new Konn(nama, url, user, pwd); conn.setNamaDB(nama); conn.setUrl(url); conn.setUsername(user); conn.setPassword(pwd); conn.getConn(); Connection co = conn.getConn(); namaBarang = kn.cariNamaBarangg(co, kode, tabel); } catch (SQLException ex) { Logger.getLogger(Halaman_Open.class.getName()).log(Level.SEVERE, null, ex); } return namaBarang; } public String cariNamaKategori(String kode) { String namaBarang = null; String nb = null; try { String tabel = comboPilihTabel.getSelectedItem().toString(); Control_Database kn = new Control_Database(); String nama = txtNamaDatabase.getText(); String url = txtUrl.getText(); String user = txtUsername.getText(); String pwd = txtPassword.getText(); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 133 Konn conn = new Konn(nama, url, user, pwd); conn.setNamaDB(nama); conn.setUrl(url); conn.setUsername(user); conn.setPassword(pwd); conn.getConn(); Connection co = conn.getConn(); namaBarang = kn.cariNamaKategori(co, kode, tabel); } catch (SQLException ex) { Logger.getLogger(Halaman_Open.class.getName()).log(Level.SEVERE, null, ex); } return namaBarang; } public int cariCount(String kode) { int count = 0; jmlhItem.size(); for (int i = 0; i < jmlhItem.size(); i++) { String a = jmlhItem.get(i).getItem(); if (a.compareTo(kode) == 0) { count = jmlhItem.get(i).getCounts(); } } System.out.println(kode + " " + count); return count; } public void hapus() { for (int i = 0; i < model.getColumnCount(); i++) { for (int j = 0; j < model.getRowCount(); j++) { model.delete(j); ah.getCandidate().remove(j); ah.getCount().remove(j); ah.getItem().remove(j); } } TabelHasilProses.setModel(model); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI TableModel tb1 = TabelHasilProses.getModel(); System.out.println("Jumlah row : " + model.getRowCount()); } public void tampilhasil() { hapus(); for (int j = 0; j < candidate.size(); j++) { String key = ah.getCandidate().get(j); if (key.length() == 3) { ambilHasil hasilProses = new ambilHasil(); String kode1 = ah.getCandidate().get(j); String nama1 = cariNamaKategori(kode1); hasilProses.setCandidate1(nama1 + " (" + kode1 + ")"); int count = cariCount(kode1); String kode2 = ah.getItem().get(j); String nama2 = cariNamaKategori(kode2); hasilProses.setItem1(nama2 + " (" + ah.getItem().get(j) + ")"); String supp = ah.getCount().get(j); double supp2 = (Double.parseDouble(supp) / 100); System.out.println(supp2); String supp3 = String.valueOf(supp2); hasilProses.setCount1(supp3); System.out.println(count); double confiden = (Double.parseDouble(supp) / count); System.out.println(confiden); DecimalFormat df = new DecimalFormat("#.###"); double df2 = Double.valueOf(df.format(confiden)); System.out.println("nilai confiden : " + df2); String conf1 = String.valueOf(df2); hasilProses.setConfidence(conf1); int count2 = cariCount(kode2); 134 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI String jt = lblJmlhDataPrepocessing.getText(); System.out.println("jumlh transaksi : " + jt); double liftRatio = ((df2 / (count2 / Double.parseDouble(jt)))); System.out.println(confiden); DecimalFormat df1 = new DecimalFormat("#.#####"); double df3 = Double.valueOf(df1.format(liftRatio)); System.out.println("nilai left ratio : " + df3); String sc1 = String.valueOf(df3); hasilProses.setLiftRatio(sc1); model.add(hasilProses); } else { ambilHasil hasilProses = new ambilHasil(); String kode1 = ah.getCandidate().get(j); String nama1 = cariNamaBrg(kode1); hasilProses.setCandidate1(nama1 + " (" + kode1 + ")"); int count = cariCount(kode1); String kode2 = ah.getItem().get(j); String nama2 = cariNamaBrg(kode2); hasilProses.setItem1(nama2 + " (" + ah.getItem().get(j) + ")"); String supp = ah.getCount().get(j); double supp2 = (Double.parseDouble(supp) / 100); System.out.println(supp2); String supp3 = String.valueOf(supp2); hasilProses.setCount1(supp3); System.out.println(count); double confiden = (Double.parseDouble(supp) / count); System.out.println(confiden); DecimalFormat df = new DecimalFormat("#.###"); double df2 = Double.valueOf(df.format(confiden)); System.out.println("nilai confiden : " + df2); String conf1 = String.valueOf(df2); hasilProses.setConfidence(conf1); 135 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI int count2 = cariCount(kode2); String jt = lblJmlhDataPrepocessing.getText(); System.out.println("jumlh transaksi : " + jt); double liftRatio = ((df2 / (count2 / Double.parseDouble(jt)))); System.out.println(confiden); DecimalFormat df1 = new DecimalFormat("#.#####"); double df3 = Double.valueOf(df1.format(liftRatio)); System.out.println("nilai lift ratio : " + df3); String sc1 = String.valueOf(df3); hasilProses.setLiftRatio(sc1); model.add(hasilProses); } } TabelHasilProses.setModel(model); TableModel tb1 = TabelHasilProses.getModel(); } public void pilihDB(Konn kn, String table) { try { Control_Database cd = new Control_Database(); ResultSet rs; rs = cd.ambildatatabel(kn.getConn(), table); ResultSetMetaData rsmd = rs.getMetaData(); int coloumCount = rsmd.getColumnCount(); System.out.println(coloumCount); Vector headers = new Vector(); Vector data = new Vector(); headers.clear(); for (int i = 1; i <= coloumCount; i++) { headers.add(rsmd.getColumnName(i)); } data.clear(); int jum = 0; while (rs.next()) { Vector d = new Vector(); 136 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI for (int i = 1; i <= coloumCount; i++) { d.add(rs.getString(i)); } d.add("\n"); data.add(d); jum++; } System.out.println(jum); String a = Integer.toString(jum); lblJmlhData2.setText(a); DefaultTableModel model = new DefaultTableModel(data, headers); jTable2.setModel(model); jTable2.setAutoCreateRowSorter(true); } catch (SQLException ex) { Logger.getLogger(Halaman_Open.class .getName()).log(Level.SEVERE, null, ex); } } public ArrayList<StrukturTabel> pilihSumberData(Konn kn, String table, String a, String b) { ArrayList<StrukturTabel> o = new ArrayList<>(); try { String z = txtIndeknoFaktur.getText(); System.out.println(txtIndeknoFaktur.getText()); int c = Integer.parseInt(z); String x = txtIndekKode.getText(); System.out.println(txtIndekKode.getText()); int d = Integer.parseInt(x); TableModel tb = jTable2.getModel(); tb.getColumnName(c); String k = tb.getColumnName(c); tb.getColumnName(d); String l = tb.getColumnName(d); Control_Database cd = new Control_Database(); ResultSet rs; ResultSet rs1; rs = cd.prepocessing(kn.getConn(), table, k, l); 137 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI rs1 = cd.prepocessing(kn.getConn(), table, k, l); ResultSetMetaData rsmd = rs.getMetaData(); int coloumCount = rsmd.getColumnCount(); System.out.println(coloumCount); Vector headers = new Vector(); Vector data = new Vector(); headers.clear(); for (int i = 1; i <= coloumCount; i++) { headers.add(rsmd.getColumnName(i)); // } data.clear(); int jum = 0; while (rs.next()) { Vector e = new Vector(); for (int i = 1; i <= coloumCount; i++) { e.add(rs.getString(i)); } e.add("\n"); data.add(e); jum++; } System.out.println(jum); System.out.println(); String f = Integer.toString(jum); lblJmlhDataPrepocessing.setText(f); lblJmlhDataPrepocessing1.setText(f); lblJmlhDataPrepocessing2.setText(f); DefaultTableModel model = new DefaultTableModel(data, headers); TableDataHasilPrepocessing.setModel(model); TableDataHasilPrepocessing.setAutoCreateRowSorter(true); TableModel tb1 = TableDataHasilPrepocessing.getModel(); // System.out.println(tb1.getRowCount()); while (rs1.next()) { StrukturTabel temp = new StrukturTabel(); temp.setNoFaktur(rs1.getString(1)); temp.setKodeBarang(rs1.getString(2)); o.add(temp); } } catch (SQLException ex) { 138 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 139 Logger.getLogger(Halaman_Open.class .getName()).log(Level.SEVERE, null, ex); } // System.out.println("size dari o : " + o.size()); return o; } public int cariJumlah(ArrayList<StrukturTabel> b) { List<String> arr = new ArrayList<String>(); ArrayList<TreeNode> count = new ArrayList<>(); HashSet<String> hash = new HashSet<>(); String string = null; for (int i = 0; i < b.size(); i++) { String items = b.get(i).getKodeBarang(); String z[] = items.split(","); for (int k = 0; k < z.length; k++) { String string1 = z[k]; hash.add(string1); arr.add(string1); } } Iterator iterasi = hash.iterator(); while (iterasi.hasNext()) { String unik = (String) iterasi.next(); System.out.println(unik); // } Set<String> uniqueset = new HashSet<String>(arr); int jum = 0; for (String temp : uniqueset) { System.out.println(temp + " : " + Collections.frequency(arr, temp)); jum++; } return jum; } private void btnCekKoneksiDBActionPerformed(java.awt.event.ActionEvent evt) { String nama = txtNamaDatabase.getText(); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 140 String url = txtUrl.getText(); String user = txtUsername.getText(); String pwd = txtPassword.getText(); Konn conn = new Konn(nama, url, user, pwd); conn.setNamaDB(nama); conn.setUrl(url); conn.setUsername(user); conn.setPassword(pwd); conn.getConn(); if (conn.getConn() != null) { JOptionPane.showMessageDialog(null, "Koneksi Berhasil"); btnOkePilihanTabel.setEnabled(true); Connection co = conn.getConn(); Control_Database cd = new Control_Database(); ResultSet a = null; try { a = cd.ambiltable(co); } catch (SQLException ex) { Logger.getLogger(Halaman_Open.class .getName()).log(Level.SEVERE, null, ex); } try { while (a.next()) { String namaa = a.getString(1); comboPilihTabel.addItem(namaa); } } catch (SQLException ex) { Logger.getLogger(Halaman_Open.class .getName()).log(Level.SEVERE, null, ex); } } else { JOptionPane.showMessageDialog(null, "Koneksi gagal"); } // TODO add your handling code here: } private void btnBatalKoneksiDBActionPerformed(java.awt.event.ActionEvent evt) { txtNamaDatabase.setText(""); txtUrl.setText(""); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 141 txtUsername.setText(""); txtPassword.setText(""); // TODO add your handling code here: } private void txtPasswordActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void btnOkePilihanTabelActionPerformed(java.awt.event.ActionEvent evt) { String nama = txtNamaDatabase.getText(); String url = txtUrl.getText(); String user = txtUsername.getText(); String pwd = txtPassword.getText(); String namatable = comboPilihTabel.getSelectedItem().toString(); Konn conn = new Konn(nama, url, user, pwd); conn.setNamaDB(nama); conn.setUrl(url); conn.setUsername(user); conn.setPassword(pwd); conn.getConn(); Connection co = conn.getConn(); Control_Database cd = new Control_Database(); pilihDB(conn, namatable); // TODO add your handling code here: } private void txtIndekKodeActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void btnPrepocessingActionPerformed(java.awt.event.ActionEvent evt) { jTabbedPane1.setSelectedIndex(1); jTabbedPane1.setEnabledAt(1, true); jTabbedPane1.setEnabledAt(2, false); String nama = txtNamaDatabase.getText(); String url = txtUrl.getText(); String user = txtUsername.getText(); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 142 String pwd = txtPassword.getText(); String namatable = comboPilihTabel.getSelectedItem().toString(); String a = txtIndeknoFaktur.getText(); String b = txtIndekKode.getText(); Konn conn = new Konn(nama, url, user, pwd); conn.setNamaDB(nama); conn.setUrl(url); conn.setUsername(user); conn.setPassword(pwd); conn.getConn(); Connection co = conn.getConn(); Control_Database cd = new Control_Database(); prepocessing = pilihSumberData(conn, namatable, a, b); System.out.println("PREPOCESIING"); for (int i = 0; i < prepocessing.size(); i++) { System.out.println(prepocessing.get(i).getNoFaktur() + " " + prepocessing.get(i).getKodeBarang()); } countItem = Control_Algorithm.HasilPrepocessing(prepocessing); int jumlahitem = cariJumlah(prepocessing); String c = Integer.toString(jumlahitem); lblJmlhItemPrepocessing1.setText(c); // lblItemHsilProses2.setText(c); // // PREPOCESSING.setEnabled(true); // TODO add your handling code here: } private void txtMin_suppActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: } private void txtMin_suppKeyPressed(java.awt.event.KeyEvent evt) { } private void txtMin_suppKeyReleased(java.awt.event.KeyEvent evt) { // TODO add your handling code here: PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 143 } private void btnOkMin_SuppActionPerformed(java.awt.event.ActionEvent evt) { if (txtMin_supp.getText() == null) { JOptionPane.showMessageDialog(null, "Minimum Support Harus Diisi"); } else { String a = txtMin_supp.getText(); System.out.println(a); String c = lblJmlhDataPrepocessing1.getText(); double b = Double.parseDouble(a); int d = Integer.parseInt(c); double rumus = ((b / 100) * d); // int g = Integer DecimalFormat df = new DecimalFormat("#"); double df2 = Double.valueOf(df.format(rumus)); // System.out.println("Jumlah Kemunculan : " + rumus); int df3 = (int) df2; String e = Integer.toString(df3); lblJmlhItemMuncul.setText(e); } // TODO add your handling code here: } private void btnProsesActionPerformed(java.awt.event.ActionEvent evt) { long awal = System.currentTimeMillis(); //MIN_SUPPORT String minsup = txtMin_supp.getText(); System.out.println("minsupp :" + minsup); String c = lblJmlhDataPrepocessing1.getText(); String a = lblJmlhItemMuncul.getText(); int b = Integer.parseInt(a); lblMinSuppHsilProses2.setText(minsup); lblJmlhDtTransHsilProses2.setText(c); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 144 jmlhItem = Control_Algorithm.Count(countItem, b); System.out.println("Jumlah Item : " + countItem.size()); int jumlahitem = 0; for (int i = 0; i < jmlhItem.size(); i++) { String x = jmlhItem.get(i).getItem(); int y = jmlhItem.get(i).getCounts(); System.out.println("kode : " + x + "count : " + y); jumlahitem++; } ambilTransaksi = Control_Algorithm.TransaksiYgSesuai(prepocessing, jmlhItem); System.out.println("Transaksi yg Sesuai : " + ambilTransaksi.size()); ArrayList<TreeNode> TransaksidanItemSesuai = Control_Algorithm.TransaksidanItemYangSesuai(prepocessing, ambilTransaksi, jmlhItem, b); System.out.println("Transaksi dan Item Sesuai : " + TransaksidanItemSesuai.size()); // System.out.println(TransaksidanItemSesuai.size()); for (int i = 0; i < TransaksidanItemSesuai.size(); i++) { String y = TransaksidanItemSesuai.get(i).getItem(); } ArrayList<ArrayList<String>> datafix = Control_Algorithm.DataFix(ambilTransaksi, TransaksidanItemSesuai); Penyetaraan(datafix, null, b); tampilhasil(); long akhir = System.currentTimeMillis(); if (candidate.size() == 0) { jTabbedPane1.setSelectedIndex(1); JOptionPane.showMessageDialog(null, "Tidak Ada Rule yang dihasilkan"); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 145 } else { jTabbedPane1.setSelectedIndex(2); jTabbedPane1.setEnabledAt(2, true); long waktu = (akhir - awal) / 1000; String waktu_eksekusi = String.valueOf(waktu); lblTingkatAkurasi.setText(waktu_eksekusi + " detik "); String newline = "\n"; TextAreaHasil.setEditable(false); TextAreaHasil.append("Hasil dari proses terdapat : " + candidate.size() + " rule"); TextAreaHasil.append("\n" + newline); TextAreaHasil.append("Minimum support yang digunakan : " + lblMinSuppHsilProses2.getText() + " %"); TextAreaHasil.append("\n" + newline); TextAreaHasil.append("Jumlah data transaksi : " + c); TextAreaHasil.append("\n" + newline); TextAreaHasil.append("Jumlah item barang : " + lblItemHsilProses2.getText()); TextAreaHasil.append("\n" + newline); TextAreaHasil.append("PENJELASAN RULE DALAM TABEL : "); TextAreaHasil.append("\n" + newline); for (int i = 0; i < candidate.size(); i++) { ambilHasil hasil = new ambilHasil(); String kode1 = ah.getCandidate().get(i); if (kode1.length() == 3) { String nama1 = cariNamaKategori(kode1); // String produk1 = hasil.setCandidate1(nama1 + " (" +ah.getCandidate().get(i)+")"); String kode2 = ah.getItem().get(i); String nama2 = cariNamaKategori(kode2); hasil.setItem1(nama2 + " (" + ah.getItem().get(i) + ")"); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 146 hasil.setCount1(ah.getCount().get(i)); TextAreaHasil.append((i + 1) + ". " + "Jika konsumen membeli barang " + nama1 + " (" + ah.getCandidate().get(i) + ")" + " maka akan membeli barang " + nama2 + " (" + ah.getItem().get(i) + ")" + newline + "dengan support " + ah.getCount().get(i) + newline + newline); // TextAreaHasil.setText("\n"); } else { String nama1 = cariNamaBrg(kode1); // String produk1 = hasil.setCandidate1(nama1 + " (" +ah.getCandidate().get(i)+")"); String kode2 = ah.getItem().get(i); String nama2 = cariNamaBrg(kode2); hasil.setItem1(nama2 + " (" + ah.getItem().get(i) + ")"); hasil.setCount1(ah.getCount().get(i)); TextAreaHasil.append((i + 1) + ". " + "Jika konsumen membeli barang " + nama1 + " (" + ah.getCandidate().get(i) + ")" + " maka akan membeli barang " + nama2 + " (" + ah.getItem().get(i) + ")" + newline + "dengan support " + ah.getCount().get(i) + newline + newline); // TextAreaHasil.setText("\n"); } } } } private void btnKembaliActionPerformed(java.awt.event.ActionEvent evt) { this.setVisible(false); Halaman_Home a = new Halaman_Home(); a.setVisible(true); } private void btnSaveActionPerformed(java.awt.event.ActionEvent evt) { JFileChooser fileOutput = new JFileChooser(new File("D:/")); PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 147 fileOutput.setFileFilter(new FileNameExtensionFilter("Microsoft Excel(*.xls)", "xls")); fileOutput.setFileFilter(new FileNameExtensionFilter("Microsoft Word(*.doc)", "doc")); fileOutput.setFileFilter(new FileNameExtensionFilter("Text Documents(*.txt)", "xls")); fileOutput.setFileFilter(new FileNameExtensionFilter("PDF(*.pdf)", "pdf")); FileOutputStream outputStream; int pilihanOutput = fileOutput.showSaveDialog(this); if (pilihanOutput == JFileChooser.APPROVE_OPTION) { String namaFileOutput = fileOutput.getSelectedFile().getPath(); String tipeFileOutput = fileOutput.getFileFilter().getDescription(); if (tipeFileOutput.equals("Microsoft Excel(*.xls)")) { File fileHasil = new File(namaFileOutput + ".xls"); try { outputStream = new FileOutputStream(fileHasil); } catch (FileNotFoundException fe) { fe.printStackTrace(); return; } try { TableModel tabelModel = TabelHasilProses.getModel(); FileWriter outputExcel = new FileWriter(fileHasil); for (int i = 0; i < tabelModel.getColumnCount(); i++) { outputExcel.write(tabelModel.getColumnName(i) + "\t"); } outputExcel.write("\n"); for (int i = 0; i < tabelModel.getRowCount(); i++) { for (int j = 0; j < tabelModel.getColumnCount(); j++) { outputExcel.write(tabelModel.getValueAt(i, j) + "\t"); } outputExcel.write("\n"); } outputExcel.close(); JOptionPane.showMessageDialog(null, "Penyimpanan Berhasil", "Pembeitahuan", JOptionPane.INFORMATION_MESSAGE); } catch (IOException ie) { JOptionPane.showMessageDialog(null, "Penyimpanan Gagal", "Pemberitahuan", JOptionPane.INFORMATION_MESSAGE); } } else if (tipeFileOutput.equals("Microsoft Word(*.doc)")) { File fileHasil = new File(namaFileOutput + ".doc"); try { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI outputStream = new FileOutputStream(fileHasil); } catch (FileNotFoundException fe) { fe.printStackTrace(); return; } try { TableModel tabelModel = TabelHasilProses.getModel(); BufferedWriter outputWord = new BufferedWriter(new FileWriter(fileHasil)); for (int i = 0; i < tabelModel.getColumnCount(); i++) { outputWord.write(tabelModel.getColumnName(i) + "\t"); } outputWord.write("\n"); for (int i = 0; i < tabelModel.getRowCount(); i++) { for (int j = 0; j < tabelModel.getColumnCount(); j++) { outputWord.write(tabelModel.getValueAt(i, j) + "\t"); } outputWord.write("\n"); } outputWord.close();; JOptionPane.showMessageDialog(null, "Penyimpanan Berhasil", "Pembeitahuan", JOptionPane.INFORMATION_MESSAGE); } catch (IOException ie) { JOptionPane.showMessageDialog(null, "Penyimpanan Gagal", "Pemberitahuan", JOptionPane.INFORMATION_MESSAGE); } } else if (tipeFileOutput.equals("Text Documents(*.txt)")) { File fileHasil = new File(namaFileOutput + ".txt"); try { outputStream = new FileOutputStream(fileHasil); } catch (FileNotFoundException fe) { fe.printStackTrace(); return; } try { TableModel tabelModel = TabelHasilProses.getModel(); FileWriter outputtxt = new FileWriter(fileHasil); for (int i = 0; i < tabelModel.getColumnCount(); i++) { outputtxt.write(tabelModel.getColumnName(i) + "\t\t\t\t"); } outputtxt.write("\n"); for (int i = 0; i < tabelModel.getRowCount(); i++) { for (int j = 0; j < tabelModel.getColumnCount(); j++) { outputtxt.write(tabelModel.getValueAt(i, j) + "\t\t\t\t"); } 148 PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 149 outputtxt.write("\n"); } outputtxt.close(); JOptionPane.showMessageDialog(null, "Penyimpanan Berhasil", "Pembeitahuan", JOptionPane.INFORMATION_MESSAGE); } catch (IOException ie) { JOptionPane.showMessageDialog(null, "Penyimpanan Gagal", "Pemberitahuan", JOptionPane.INFORMATION_MESSAGE); } } else if (tipeFileOutput.equals("PDF(*.pdf)")) { File fileHasil = new File(namaFileOutput + ".pdf"); try { outputStream = new FileOutputStream(fileHasil); } catch (FileNotFoundException fe) { fe.printStackTrace(); return; } try { TableModel tabelModel = TabelHasilProses.getModel(); FileWriter outputpdf = new FileWriter(fileHasil); for (int i = 0; i < tabelModel.getColumnCount(); i++) { outputpdf.write(tabelModel.getColumnName(i) + "\t\t\t\t"); } outputpdf.write("\n"); for (int i = 0; i < tabelModel.getRowCount(); i++) { for (int j = 0; j < tabelModel.getColumnCount(); j++) { outputpdf.write(tabelModel.getValueAt(i, j) + "\t\t\t\t"); } outputpdf.write("\n"); } outputpdf.close(); JOptionPane.showMessageDialog(null, "Penyimpanan Berhasil", "Pembeitahuan", JOptionPane.INFORMATION_MESSAGE); } catch (IOException ie) { JOptionPane.showMessageDialog(null, "Penyimpanan Gagal", "Pemberitahuan", JOptionPane.INFORMATION_MESSAGE); } } } } private void btnKembali1ActionPerformed(java.awt.event.ActionEvent evt) { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 150 jTabbedPane1.setSelectedIndex(1); TextAreaHasil.setText(""); hapus(); candidate.clear(); // } private void txtIndekKodeKeyPressed(java.awt.event.KeyEvent evt) { btnPrepocessing.setEnabled(true); } 11. Implementasi Kelas Halaman_Home /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package VIEW; import javax.swing.JFrame; import javax.swing.JOptionPane; /** * * @author elsa */ public class Halaman_Home extends javax.swing.JFrame { /** * Creates new form Home */ public Halaman_Home() { initComponents(); } private void btnKeluarHomeActionPerformed(java.awt.event.ActionEvent evt) PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI 151 { int result = JOptionPane.showConfirmDialog(null, "Apakah Anda yakin ingin keluar ?"); switch (result) { case JOptionPane.YES_OPTION: this.dispose(); break; case JOptionPane.NO_OPTION: break; case JOptionPane.CANCEL_OPTION: break; } // TODO add your handling code here: } private void btnMasukHomeActionPerformed(java.awt.event.ActionEvent evt) { this.setVisible(false); Halaman_Open frame = new Halaman_Open(); frame.setVisible(true); // TODO add your handling code here: } 12. Implementasi Kelas Halaman_Bantuan /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package VIEW; import javax.swing.JFrame; /** * * @author elsa */ public class Halaman_Bantuan extends javax.swing.JFrame { PLAGIAT PLAGIATMERUPAKAN MERUPAKANTINDAKAN TINDAKANTIDAK TIDAKTERPUJI TERPUJI /** * Creates new form Bantuan */ public Halaman_Bantuan() { initComponents(); } private void btnHomeBantuanActionPerformed(java.awt.event.ActionEvent evt) { Halaman_Home home = new Halaman_Home(); home.setVisible(true); this.setVisible(false); } 152