Gudang Data untuk penerapan Algoritma Apriori

4.3.1.1 Implementasi Proses Transfer Data

Proses transfer data pada OLAP dilakukan secara manual dapat dilakukan dengan cara mengeksekusi file Automatisasi_data.bat. Isi perintah file Automatisasi_data.bat dapat dilihat pada tabel 4.10 Tabel 4.10 Tabel kode perintah file Automatisasi_data.bat C: cd C:\Kettle3.1 Kitchen.bat - file=C:\Users\Esy\Documents\transformasi\automatisasi.kjb Proses eksekusi transformasi data dapat dilihat pada gambar 4.35. Gambar 4.35 Proses Transfer Data

4.3.2 Gudang Data untuk penerapan Algoritma Apriori

Algoritma apriori akan diterapkan pada gudang data untuk melakukan perhitungan asosiasi mengambil atribut hari, atribut lintasan, dan atribut pendapatan. Setelah itu dilakukan scanning terhadap database dengan melakukan query sql. Query tersebut dapat dilihat pada tabel 4.11 Tabel 4.11 Query SQL untuk scanning data hari, lintasan, dan pendapatan select distincthari, lintasan, pendapatan from ms_operasional_c; Berdasarkan query tersebut akan tampil data hari, lintasan, dan pendapatan seperti pada Gambar 4.36. Data kapal diproses untuk mencari kandidat itemset yang masuk sesuai dengan minimum support dan minimum confidence yang diinputkan. Hasil dari perhitungan asosiasi dapat dilihat pada gambar 4.37 Gambar 4.36 hasil query data Berdasarkan hasil query pada gambar 4.36, terlihat bahwa masing- masing atribut memiliki data yang berbeda. Dalam proses perhitungan dengan algoritma, data hasil query disimpan dalam sebuah arraylist. ArrayList tersebut akan digunakan untuk proses pencarian Candidate itemset. public void getData { ResultSet rs = null; try { Statement st = connector.createStatement; String query = select distincthari, lintasan, pendapatan from ms_operasional_c; rs = st.executeQueryquery; if rs = null { while rs.next { test2 t = new test2; t.setHarirs.getString1; t.setLintasanrs.getString2; t.setPendapatanrs.getString3; data.addt; } for int i = 0; i data.size; i++ { System.out.printlnData: + data.geti; } crazy.adddata.clone; jumlahrecord = data.size; System.out.printlnjumlah data: + jumlahrecord; } } catch Exception e { System.out.printlne; } } Setelah data tersimpan arraylist selanjutnya akan dilakukan pencarian candidate, perhitungan count dan support dari setiap candidate. Dilakukan perulangan while untuk mendapatkan data distinct yang telah tersimpan di array sebelumnya sebagai candidate 1-itemset yang selanjutnya dimasukkan ke dalam arraylist data1. Berdasarkan panjang arraylist data1 akan dilakukan proses perhitungan count dan support dari candidate 1-itemset. Hasil perhitungan data akan disimpan di arraylist baru yaitu temp2. public void findCandidate1Itemsets { count array itemset int i = 1; int x = 0; int cur = 0; int jmldata = 0; int vv = 0; String[][] tes; while data.size x { if data1.isEmpty { data1.adddata.getx; } else { if data1.containsdata.getx { } else { data1.adddata.getx; } } x++; } System.out.printlnProses penjumlahan; tes = new String[data1.size][2]; while data1.size cur { x = 0; jmldata = 0; while data.size x { if data.getx.equalsdata1.getcur { jmldata++; } x++; } tes[cur][0] = data1.getcur.toString; tes[cur][1] = + jmldata; temp1.addjmldata; cur++; } for int j = 0; j tes.length; j++ { System.out.printlntes[j][0] + + tes[j][1]; } count support x = 0; while temp1.size x { hitung = twoDecPlacesDouble.parseDoubleString.valueOfDouble.parseDouble temp1.getx.toString jumlahrecord; temp2.addhitung; x++; } System.out.printlnsupport + temp2; } Untuk mendapatkan frequent 1-itemset dilakukan perulangan while sepanjang jumlah candidate 1-itemset dengan nilai membandingkan nilai support candidate 1-itemset dengan nilai minimum support yang dimasukkan pengguna. Jika support nya lebih besar dari minimum support maka candidate 1-itemset tersebut menjadi frequent 1-itemset. Frequent 1- itemset dan supportnya akan dimasukkan ke dalam konstruktor Itemset string, double yang selanjutnya akan dimasukkan ke dalam arraylist temp3. private LargeItemset findFrequent_1_itemset{ String min1 = 10; double min11 = Integer.parseIntmin1; System.out.printlnmin11: +min11; minsup =Double min11 100; System.out.printlnminsup: +minsup; int x = 0; whiletemp2.size x{ double sup1 = twoDecPlacesDouble.parseDoubleString.valueOfDouble.parseDouble temp2.getx.toString; if sup1 = minsup{ String item = data1.getx.toString; System.out.printlnitem: +item; temp3.addnew Itemsetitem,sup1; ak.additem; } x++ ; } System.out.printlnada +temp3; int jumfreq1 = temp3.size; System.out.println\nFrequent 1-itemset\t : +jumfreq1; Itemset[] itemss = new Itemset[temp3.size]; for int i = 0; i temp3.size; i++ { itemss[i] = Itemset temp3.geti; System.out.printlntheItemss: +itemss[i]; } System.out.printlnFrequent 1 -itemset: +itemss.length; return new LargeItemsetitemss, 1; } Untuk pencarian frequent k-itemset diawali dengan memasukan semua frequent 1- itemset ke dalam arraylist ls dengan memanggil method putLargeItemset yang ada di kelas Ls public void putLargeItemset l { ls.addl.getK - 1, l; } Selanjutnya dilakukan proses pencarian candidate k-itemset dengan memanggil method aprioriGen di kelas LargeItemset yang bertipe Candidate dimana di dalam method ini dilakukan proses pencarian subset dan join antar frequent itemset dengan memanggil method joinItemset dan getSubsetint,int yang ada di kelas Itemset. method aprioriGen untuk mencari kombinasi candidate k-itemset public Candidate aprioriGen { ArrayList cItems = new ArrayList; for int i = 0; i items.length; i++ { for int j = i + 1; j items.length; j++ { if items[i].similarToitems[j] { Itemset c = items[i].joinitems[j]; System.out.printlnc: +c; if hasInfrequentSubsetc { cItems.addc; System.out.printlncItems; +cItems; System.out.printlncItemslength: +cItems.size; } } } } if cItems.size == 0 { return new Candidatenull, k + 1; } else { Itemset[] theCItems = new Itemset[cItems.size]; for int i = 0; i cItems.size; i++ { theCItems[i] = Itemset cItems.geti; }return new CandidatetheCItems, k + 1; } } method similarTo untuk membandingkan apakah itemset pertama sama dengan itemset kedua, jika tidak sama maka kedua itemset tersebut akan dijoinkan untuk menghasilkan candidate itemset yang baru public boolean similarToItemset item { if elements.length == 1 { return elements[0].equalsitem.elements[0]; } for int i = 0; i elements.length - 1; i++ { if elements[i].equalsitem.elements[i] { return false; } } return elements[elements.length - 1].equalsitem.elements[elements.length - 1]; } method join untuk menggabungkan kedua itemset jika keduanya merupakan itemset yang berbeda public Itemset joinItemset item { String[] joinedElements = new String[elements.length + 1]; for int i = 0; i elements.length; i++ { joinedElements[i] = new Stringelements[i]; } joinedElements[elements.length] = new Stringitem.elements[elements.length - 1]; return new ItemsetjoinedElements, 0d; } method hasInfrequentSubset untuk meninjau apakah itemset yang telah dijoinkan merupakan subset dari frequent itemset sebelumnya public boolean hasInfrequentSubsetItemset c { for int i = 0; i k; i++ { ArrayList cSubSet = c.getSubSeti + 1; System.out.printlncSubset+k+ :+cSubSet; for int j = 0; j cSubSet.size; j++ { boolean flag = false; for int l = 0; l items.length; l++ { System.out.printlnitemseleng: +items.length; System.out.printlnitemsssa +l+: +items[l]; if items[l].getElements.containsAllArrayList cSubSet.getj { flag = true; break; }} if flag { return true; } }} return false; } method getSubset membuat kombinasi subset dari itemset yang telah dijoinkan public ArrayList getSubSetint k { return getSubSetk, elements.length; } private ArrayList getSubSetint k, int size { ArrayList subSet = new ArrayList; if k == 1 { for int i = 0; i size; i++ { ArrayList item = new ArrayList1; item.addelements[i]; subSet.additem; } return subSet; } else { for int i = size - 1; i = k - 1; i-- { ArrayList subSubSet = getSubSetk - 1, i; for int j = 0; j subSubSet.size; j++ { ArrayList item = ArrayList subSubSet.getj; item.addelements[i]; } subSet.addAllsubSubSet; } return subSet; } } Selanjutnya dilakukan proses perhitungan count dan support dari candidate k-itemset yang telah ditemukan dengan melakukan perulangan for, guna membaca data dari list data dan diakhiri dengan proses prunning untuk menghasilkan frequent k –itemset dengan memanggil method getLdouble yang ada di kelas Candidate. pencarian count dan support dari kombinasi candidate k-itemset forint i =0;i items.length;i++{ int count=0; forIterator iterator = data.iterator; iterator.hasNext;{ ArrayList elements = ArrayList iterator.next; ifelements.containsAllitems[i].getElements{ count++; } } items[i].setSupportdoublecount jumlahbaris; } method getL untuk prunning candidate k-itemset guna mendapatkan frequent k-itemset public LargeItemset getLdouble minimumSupport { ArrayList itemArrayList = new ArrayList; for int i = 0; i items.length; i++ { System.out.printlnitem[i] +i+: +items[i]; if items[i].getSupport = minimumSupport { itemArrayList.additems[i].clone; } } if itemArrayList.size == 0 { return new LargeItemsetnull, k; } Itemset[] itemArray = new Itemset[itemArrayList.size]; for int i = 0; i itemArrayList.size; i++ { itemArray[i] = Itemset itemArrayList.geti; System.out.printlnitemArray+itemArray[i]; } return new LargeItemsetitemArray, k; } Pencarian subset dari semua Frequent k-itemset dilakukan perulangan for sebanyak tingkat frequent k-itemset k guna mendapatkan frequent k-itemset tiap tingkat. Dari frequent k-itemset tersebut akan dicari subset nya dengan membandingkan subset yang didapat dengan semua frequent itemset yang telah didapat. Jika frequent itemset tersebut mengandung subset yang dibandingkan maka frequent itemset tersebut akan digunakan untuk pencarian aturan asosiasi. mendapatkan semua subset dari semua frequent k-itemset yang telah dihasilkan foraaa =0; aaa ada.size; aaa++{ Itemset s = Itemset ada.getaaa; cari subset dan kombinasi aturan forint b=0; b ls.size; b++{ ArrayList isi = new ArrayList; isi.adds.getElements; coba = s.getSubSetb+1; forint bb =0; bb coba.size; bb++{ boolean flag = false; forint bbb =0; bbb itemlarge.length;bbb++{ ifitemlarge[bbb].getElements.containsAllArrayListcoba.getbb { flag = true; break; } } Setelah itu akan ditentukan aturan asosiasi yang kuat dengan penentuan frequent itemset yang akan menjadi anteseden dan konsekuen, menentukan support untuk keduanya lalu menghitung nilai confidence dari aturan yang terbentuk. Aturan yang memiliki nilai confidence lebih besar atau sama dengan nilai minimum confidence yang dimasukan pengguna akan menjadi aturan asosiasi yang kuat

4.4 Implementasi Antar Muka Pengguna OLAP

Hasil implementasi antar muka pengguna untuk OLAP yang sudah dirancang pada bab sebelumnya dapat dilihat sebagai berikut:

4.4.1 Halaman Login