Pengertian Dan Manfaat Data Mining Email

Pengertian Dan Manfaat Data Mining Email
Database saat ini boleh jadi berkembang menjadi sangat besar secara cepat ke dalam ukuran terabyte. Di dalam tumpukan data tersebut mungkin terdapat informasi-informasi tersembunyi yang sangat penting atau menjadi penting pada saat dibutuhkan. Akan tetapi bagaimana caranya kita menemukan sebuah jarum dalam tumpukan jerami? Dalam hal ini dapat kita katakan bahwa semua data belum berarti informasi.

Kita telah mengetahui bahwa data mentah (raw data) tidak terlalu berguna karena ukurannya yang begitu besar sehingga tidak mungkin dianalisa. Kita perlu mengekstrak pola dari data mentah tersebut. Jawabannya adalah dengan data mining. Banyak organisasi di dunia telah menggunakan data mining untuk mencari dan menarik kesimpulan dari data yang mereka miliki. Berikut beberapa contoh aplikasi data mining:
  • Perusahaan pemasaran menggunakan data sejarah respon pembelian terhadap suatu tawaran produk untuk membangun model untuk memperkirakan pelanggan potensial yang akan di raih dengan metode penawaran tertentu.
  • Agen pemerintah menyaring data transaksi keuangan untuk mendeteksi money laundering dan penyelundupan obat terlarang.
  • Dalam tahapan diagnosis, para fisikawan membangun expert system berdasarkan banyak percobaan yang telah dilakukan.
Secara definisi data mining adalah ekstraksi informasi potensial yang sebelumnya tak diketahui atau implisit, suatu kelas dari aplikasi database yang mencari pola tersembunyi dalam suatu kelompok data. Atau, data mining bisa juga didefinisikan sebagai suatu proses yang menggunakan berbagai perangkat analisis data untuk menemukan pola dan relasi data agar dapat digunakan untuk membuat prediksi dengan tepat.

Dari tinjauan keamanan sistem informasi, data mining memang bagai pisau bermata ganda. Di satu sisi bisa berguna bagi pihak pemilik data untuk hal-hal yang telah disebutkan di atas, namun bisa jadi illegal jika data-data tersebut disalahgunakan untuk hal-hal yang bersifat melanggar privasi orang lain atau bahkan jika pengumpulan data tersebut dilakukan secara tidak etis dan tanpa sepengetahuan pihak yang memiliki informasi.

Makalah ini hanya akan membahas apa itu data mining, kemungkinan aplikasinya dalam mencari pola dalam email, dan sedikit demonstrasi sederhana dengan menggunakan aplikasi jadi seperti outlook dan Access untuk parsing email ke database, serta software open source Weka (Waikato Environment for Knowledge Analysis) yang dikembangkan di Universitas Waikato. Software ini telah memiliki beberapa library dasar untuk melakukan data mining.

Aplikasi data mining sendiri bukanlah suatu aplikasi sederhana. Ia melibatkan algorithma machine learning yang membutuhkan algoritma kecerdasan buatan yang cukup kompleks dan berada di luar cakupan makalah ini.

1. Data Mining
Data mining adalah proses yang menggunakan berbagai perangkat analisis data untuk menemukan pola dan hubungan dalam data yang mungkin dapat digunakan untuk membuat prediksi yang valid.

Langkah pertama dan paling sederhana dalam data mining yaitu menggambarkan data – menyimpulkan atribut statistik (seperti rata-rata dan standar deviasi), mereview secara visual menggunakan diagram dan grafik, serta mencari relasi berarti yang potensial antar variabel (misalnya nilai yang sering muncul bersamaan). Mengumpulkan, mengeksplor, dan memilih data yang tepat adalah sangat penting.

Pada dasarnya ada empat langkah utama dalam melakukan data mining:
1. Mendeskripsikan data, yakni menyimpulkan atribut statistik (seperti rata-rata dan standard deviasi), mereview secara visual menggunakan grafik dan diagram, serta mencari hubungan-hubungan potensial antar variabel (seperti misalnya, nilai-nilai yang seringkali keluar bersamaan). 

2. Membangun model perkiraan (predictive model) berdasarkan pada pola-pola yang ditemukan pada langkah sebelumnya. 

3. Menguji model di luar sampel asli. Sebuah model yang baik tidak harus sama persis dengan kenyataan sebenarnya (seperti peta bukanlah representasi sempurna dari jalan yang sebenarnya), akan tetapi bisa menjadi panduan yang berguna untuk mengerti bisnis kita. 

4. Memverifikasi/menguji model. Misalnya, dari suatu database pelanggan yang telah merespon tawaran yang pernah diiklankan kepada mereka, kita membangun sebuah model perkiraan yang memiliki prospek akan mendapat respon yang sama dari pelanggan dengan tipikal tersebut tersebut. Tapi bisakah kita benar-benar bergantung pada perkiraan kita tersebut? Kita perlu membuktikan model perkiraan kita tersebut ke sample pelanggan yang lain dan melihat hasil yang kita dapatkan.

Untuk melakukan hal tersebut diatas maka setidaknya dibutuhkan suatu program yang dapat menampilkan (kalau tidak mendeteksi) pola dan keteraturan dalam data sehingga pola-pola yang kuat atau sangat jelas terlihat dapat digunakan untuk melakukan prediksi. 

Keterbatasan Data Mining
Data mining hanyalah sebuah alat, bukan tongkat ajaib. Data mining tidak secara otomatis mengamati apa yang terjadi pada database lalu mengirimkan laporan ketika terdapat pola-pola menarik. Penggunaan data mining tetap saja mengharuskan kita untuk mengerti data kita dan mengerti metode-metode analisis data. Data mining membantu analis untuk menemukan pola dan relasi data akan tetapi tidak secara langsung mengatakan nilai dari pola tersebut. Lebih jauh lagi, pola-pola yang tidak diketemukan melalui data mining harus diverifikasi kembali dalam dunia nyata.

Perlu diingat bahwa hubungan prediktif yang ditemukan melalui data mining tidak selalu merupakan sebab dari suatu prilaku atau tindakan. Misalnya, datamining bisa jadi menemukan bahwa pria dengan pendapatan Rp. 5 – 10 juta per bulan adalah pelanggan dari majalah-majalah tertentu dan kemungkinan besar merupakan pembeli dari suatu produk. Suatu perusahaan bisa saja mengambil keuntungan dari pola ini dengan menargetkan pemasaran kepada orang-orang yang memenuhi pola tersebut. Tapi tetap saja perusahaan tersebut tidak boleh mengasumsikan bahwa hanya faktor inilah yang menyebabkan mereka membeli produk perusahaan tersebut.

Model dan Algoritma Data Mining
Dalam bagian ini akan dibahas suatu model dan algoritma yang sering digunakan dalam melakukan data mining. Yang harus diperhatikan adalah bahwa model atau algoritma ini bukan merupakan satu-satunya yang ada dan tidak harus digunakan secara eksklusif. Pemilihan model tentu saja sangat bergantung pada tujuan yang ingin dicapai dalam melakukan data mining dan data yang akan dihadapi.

Neural Network
Neural Network biasa digunakan dalam masalah klasifikasi (di mana outputnya adalah variabel kategoris) atau regresi (outputnya kontinyu). Neural network dimulai dengan layer input, dimana tiap simpul berkorespondensi dengan variabel prediktor. Simpul-simpul input ini terhubung ke beberapa simpul dalam hidden layer. Tiap simpul input terhubung dengan tiap simpul dalam hidden layer. Simpul dalam hidden layer bisa jadi terhubung ke simpul lain dalam hidden layer, atau ke output layer. Output layer terdiri dari satu atau beberapa variabel respon.

Gambar Neural network dengan satu hidden layer

Setelah layer input, tiap simpul mengambil satu himpunan input, mengalikan input-input tersebut dengan bobot Wxy (misalnya, bobot dari simpul 1 ke 3 adalah W13 – lihat gambar), menambahkan kedua bobot, menerapkan fungsi (biasa dipanggil fungsi aktivasi atau squashing), dan melewatkan outputnya ke simpul dalam layer berikutnya. Misalnya, nilai yang dilewatkan dari node 4 ke node 6 adalah:

Activation function applied to ([W14 * value of node 1] + [W24 * value of node 2])

Gambar Wxy adalah bobot dari simpul x ke simpul y

Tiap simpul bisa dilihat sebagai variabel prediktor (dalam hal ini simpul 1 dan 2) atau sebagai kombinasi dari variabel prediktor (simpul 3 sampai 6). Simpul 6 adalah kombiasi non linear dari nilai simpul 1 dan 2, karena fungsi aktivasi terhadap nilai penjumlahan di simpul-simpul tersembunyi. Jika terdapat fungsi aktivasi tanpa hidden layer, jaringan saraf akan ekivalen dengan regresi linear; dan dengan fungsi aktivasi non-linear tertentu, jaringan saraf akan ekivalen dengan regresi logistik. 

Bobot koneksi (W) adalah parameter tidak diketahui yang diestimasi dengan metode training. Awalnya, metode training yang umum adalah backpropagation; metode-metode yang baru lalu bermunculan seperti gradien konjugasi, quasi-Newton, Levenberg-Marquardt, dan algoritma genetic. Tiap metode training memiliki satu himpunan parameter yang mengatur berbagai aspek dari training seperti misalnya menghindari local optima atau mengatur kecepatan konversi. 

Arsitektur (atau topologi) dari jaringan saraf adalah jumlah dari simpul dan layer-layer tersembunyi, dan bagaimana mereka saling berhubungan. Dalam merancang jaringan saraf, baik user maupun software harus memilih jumlah simpul dan layer tersembunyi, fungsi aktivasi, dan batasan-batasan bobot. Meskipun terdapat aturan umum, kita biasanya tetap harus bereksperimen dengan parameter-parameter tersebut.

Tipe yang paling umum dari jaringan saraf adalah jaringan feed forward backpropagation. Untuk kesederhanaan bahasan, kita akan membahas jaringan dengan satu hidden layer.

Training Backpropagation hanyalah salah satu versi dari gradien descent, suatu jenis algoritma yang mencoba untuk mengurangi nilai target (error, dalam kasus jaringan saraf) dalam tiap langkah. Algoritma ini bekerja seperti berikut:

Feed forward: Nilai dari simpul output dihitung berdasarkan nilai simpul input dan bobot-bobot awal. Nilai-nilai dari simpul input ini dikombinasikan dalam hidden layers, dan nilai dari simpul-simpul di hidden layer digabungkan untuk menghitung nilai output.

Backpropagation: Error dalam output dihitung dengan mencari beda antara output terhitung dan output yang diinginkan. Kemudian, error dari output dimasukkan kembali ke hidden layer secara proporsional, sesuai dengan bobotnya. Hal ini akan membuat error dihitung untuk tiap simpul output dan simpul tersembunyi dalam jaringan. Akhirnya, error di tiap simpul tersembunyi dan simpul output digunakan oleh algoritma untuk mengatur bobot yang masuk ke simpul untuk mengurangi error.

Proses ini berulang untuk tiap baris dalam himpunan traininng. Tiap lewatan terhadap tiap baris dalam himpunan traininng disebut epoch. Himpunan training ini akan digunakan berulang kali, sampai error yang dihasilkan tidak lagi berkurang. Pada titik tersebut jaringan saraf dianggap teah terlatih untuk menemukan pola dalam himpunan test. Karena banyak sekali parameter yang mungkin ada dalam jaringan tersembunyi, suatu jaringan saraf dengan simpul-simpul tersembunyi yang cukup akan selalu menyelesaikan training set jika dibiarkan berjalan cukup lama. Tapi seberapa baikkah jaringan saraf tersebut untuk data yang lain? Untuk menghiondari jaringan saraf yang overfitted yang akan hanya bekerja dengan baik pada data training, kita harus tahu kapan harus berhenti melakukan training. Beberapa implementasi akan mengevaluasi jaringan saraf pada data penguji secara periodik selama latihan. Selama error rate dalam hipunan penguji terus menurun, training akan terus dilakukan. Jika error rate bertambah, meskipun error rate pada data traininng terus menurun, maka jaringan saraf mungkin mengalami overfitting. Grafik dalam gambar mengilustrasikan bagaimana himpunan data penguji dapat menolong kita menghindari overfitting. Kita dapat melihat bahwa error rate terus menurun pada tiap lewatan jariingan saraf terhadap data (garis titik-titik), akan tetapi error rate untuk data penguji mengalami kenaikan. Karena tujuan dari data mining adalah untuk membuat prediksi pada data yang bukan himpunan traininng, maka kita tentu saja harus menggunakan jaringan saraf yang akan meminimalisasi error pada data penguji, bukan data training.

Gambar Error rate sebagai fungsi jumlah epoch dalam jaringan saraf

Jaringan saraf berbeda secara filosofis dari banyak metode statistik pada beberapa hal. Pertama, jaringan saraf biasanya memiliki lebih banyak parameter. Misalnya, terdapat tiga belas parameter (9 bobot dan 4 bias) dalam jaringan saraf pada gambar 4. Karena banyaknya parameter, dan kombinasi dari parameter menghasilkan prediksi yang similar, parameter menjadi uninterpretable dan jaringan bertindak sebagai prediktor “black box”. Pada kenyataannya, suatu hasil bisa diasosiasikan dengan beberapa himpunan bobot yang berbeda. Oleh karena itu, bobot network secara umum tidak membantu dalam usaha untuk mengerti proses yang menghasilkan prediksi. Akan tetapi hal ini dapat diterima dalam banyak aplikasi. Suatu bank hanya ingin mengenali secara otomatis suatu tanda tangan, akan tetapi tidak peduli bentuk relasi fungsional antara pixel dan karakter yang diwakilinya. Beberapa aplikasi yang memiliki ratusan variabel sebagai input ke dalam model dengan ribuan parameter (bobot simpul) meliputi pabrik kimia, robot dan pasar keuangan, serta masalah-masalah pengenalan pola seperti suara, vision dan karakter.

Satu keuntungan dari model jaringan saraf adalah jaringan saraf mudah untuk diimplementasikan untuk dijalankan pada paralel komputer dengan tiap node menjalankan kalkulasinya sendiri-sendiri secara simultan.

Pengguna harus sadar terhadap beberapa fakta tentang jaringan saraf: pertama, jaringan saraf tidak mudah untuk ditafsirkan. Tidak ada penjelasan rasional yang eksplisit tentang bagaimana suatu jaringan saraf melakukan keputusan atau prediksi. Kedua, jaringan saraf cenderung mengalami overfit data training kecuali pengukuran yang sangat ketat, untuk acakan bobot atau validasi silang dilakukan secara hati-hati.Ketiga, jaringan saraf membutuhkan waktu lama untuk melakukan training kecuali masalahnyas sangat kecil. Setelah ditrain, jaringan saraf bisa melakukan prediksi dengan cukup cepat. Keempat, jaringan saraf membutuhkan persiapan data yang banyak. Implementasi yang sukses dari jaringan saraf membutuhkan pemililihan dan preprocessing data yang baik. Misalnya, jaringan saraf mensyaratkan semua variabel harus numerik. Oleh karena itu, data kategoris seperti “propinsi” biasanya dipecah menjadi variabel dikotomis (misalnya “jawa barat”, “jawa timur”), masing-masing dengan nilai “1” (yes) atau “0” (no). Akhirnya, jaringan saraf akan bekerja dengan baik jika set data yang digunakan cukup besar dan rasio sinyal terhadap noise cukup tingggi.

Decision trees
Decision tree adalah cara merepresentasikan kumpulan aturan yang mengacu ke suatu nilai atau kelas. Misalnya kita bisa mengklasifikasikan suatu proposal pinjaman uang memiliki resiko baik atau buruk. Gambar ? memperlihatkan decision tree sederhana: decision node, branches and leaves.

Gambar Classification tree sederhana

Komponen pertama adalah simpul top decision, atau simpul root, yang menentukan test yang akan dijalankan. Simpul root dalam contoh ini adalah “income > $40.000”. Hasil dari tes ini menyebabkan tree terpecah menjadi dua cabang, dengan tiap cabang meepresentasikan satu dari jawaban yang mungkin. Dalam kasus ini, jawabannya adalah “ya” dan “tidak”, sehingga kita mendapatkan dua cabang.

Bergantung pada algoritma yang digunakan. Tiap simpul bisa memiliki dua atau lebih cabang. Misalnya, CART akan menggenerate hanya dua cabang pada tiap simpul. Tree seperti ini disebut binary tree. Ketika lebih dari dua cabang diperbolehkan maka disebut sebagai multiway tree.

Tiap cabang akan memiliki simpul node yang lain atau dasar tree, yang disebut leaf. Dengan mengikuti decision tree kita bisa memberikan nilai pada suatu kasus dengan memutuskan cabang mana yang akan diambil, dimulai dari simpul root dan bergerak ke bawah sampai leaf. Dengan menggunakan metode ini, seorang petugas yang bertanggung jawab untuk memutuskan pemberian pinjaman terhadap nasabah bisa menentukan apakah seorang nasabah memiliki resiko kredit yang baik atau buruk.

Model decision tree umum digunakan dalam data mining untuk menelaah data dan menginduksi tree dan aturan yang akan digunakan untuk membuat prediksi. Sejumlah algoritma yang berbeda bisa digunakan untuk membangun tree di antara nya adalah CHAID (Chi squared Automatic Interactin Detection), CART (Classification and Regression Trees), Quest dan C5.0.

Decision tree berkembang melalui pemecahan iteratif dari data ke dalam grup-grup diskrit, yang tujuannya adalah untuk memaksimalkan “jarak” antara grup pada tiap pemecahan. 

Contoh yang kita gunakan sampai saat ini sangatlah sederhana. Tree ini sangat mudah untuk dimengerti dan diinterpretasikan. Akan tetapi, tree bisa menjadi sangat kompleks. Bisa dibayangkan kompleksitas suatu tree yang diturunkan dari database dengan ratusan atribut dan variabel respon dengan lusinan kelas input. Tree sperti ini akan sangat sulit untuk dimengerti, meskipuntiap path dari tree biasanya dapat dimengerti. Dalam hal ini decision tree bisa menjelaskan prediksinya, yang merupakan keuntungan penting.

Akan tetapi, kejelasan ini bisa jadi menyesatkan. Misalnya, percabangan dari suatu decision tree mengimplikasikan suatu presisi yang jarang ditemui dalam dunia nyata. (Kenapa seseorang yang gajinya $40.001 akan menjadi nasabah dengan resiko kredit yang baik sedangkan seseorang dengan gaji $40.000 tidak?)

Selain dua buah algoritma yang dibahas di atas, masih banyak lagi algoritma lain seperti Multivariate Adaptive Regression Splines (MARS), Rule induction, K-nearest neighbor and memory-based reasoning (MBR), Logistic regression, Discriminant analysis, Generalized Additive Models (GAM), Boosting, dan Genetic algorithms.

2. Implementasi Data Mining Email
Mengenali suatu pendekatan yang sistematis merupakan hal yang sangat penting agar kita dapat melakukan data mining dengan sukses. Banyak vendor dan organisasi konsultan telah menentukan urutan langkah yang akan menghasilkan hasil yang memuaskan. 

Langkah-langkah dasar dalam data mining adalah sebagai berikut: 
1. Define business problem
2. Build data mining database
3. Explore data
4. Prepare data for modeling
5. Build model
6. Evaluate model
7. Deploy model and results

Mengikuti langkah-langkah di atas, maka pertama kali kita harus menentukan dulu masalah yang hendak dipecahkan. Dalam hal ini tujuan kita melakukan data mining email harus terlebih dahulu didefinisikan. Dalam kasus email, data mining biasanya dilakukan untuk mengetahui prilaku pelanggan dari order yang masuk via email, atau bisa juga mengetahui prilaku konsumsi seseorang. Suatu contoh nyata, Google melakukan data mining email untuk mengetahui iklan yang relevan untuk ditampilkan ke web interface layanan email mereka. 

Tujuan yang berbeda membutuhkan pemodelan database dan data yang berbeda pula.
Pada makalah ini akan didemonstrasikan bagaimana suatu data bisa diambil dari aplikasi email client seperti outlook untuk kemudian diparse ke database. Setelah data terkumpul dalam database kemudian dilakukan data analisis dengan menggunakan software open source Weka (Weikato Environment for Knowledge Analysis).

Karena kesulitan dalam mengumpulkan data yang baik (dalam hal ini email yang representatif) maka digunakan data fiktif yang kiranya akan menarik untuk dianalisis. Walaupun begitu, tetap akan didemonstrasikan bagaimana email penulis diparse ke dalam database Access.

Aplikasi Pendukung
Pada bagian ini akan dibahas aplikasi-aplikasi atau bahasa pendukung yang digunakan untuk membangun aplikasi data mining email dalam makalah ini, yaitu Outlook Express, Visual Basic for Application, dan Microsoft Access.

Outlook Express
Outlook Express adalah salah satu aplikasi email client yang bekerja pada platform Windows selain Eudora, Mozilla ThunderBird, Pegasus Mail, dan masih banyak lagi yang lainnya.

Alasan penggunaan Outlook dalam makalah ini adalah karena interoperabilitasnya yang sangat baik dengan sistem aplikasi Ms Office lainnya (dalam hal ini kita akan menggunakan relational database Ms Access) dan biasanya sudah terpaket dalam Windows yang kita gunakan. Akan tetapi selain itu, Outlook juga memiliki kemampuan pengorganisasian email yang cukup baik (virtual folders, versatile searching) dan penyaringan spam yang cukup solid. 

Berikut adalah beberapa fitur dasar dari Outlook Email Client:
  • Kemampuan mengelola banyak account email dan newsgroup
  • Kemudahan dalam mengeksplorasi pesan/email masuk
  • Memiliki addressbook untuk menyimpan dan melihat alamat-alamat email
  • Kemampuan mendownload email/newsgroup untuk dibaca secara offline
  • Mengirim dan menerima pesan secara aman dengan enkripsi
Microsoft Access
Pada dasarnya Access adalah suatu Database Management System (DBMS). Seperti halnya produk lain dalam kategori ini, Access meyimpan dan memanggil informasi/data, mempresentasikan data yang diminta, dan mengotomasi repetitive tasks. Dengan akses kita bisa membuat form masukan yang mudah digunakan seperti diperlihatkan pada gambar ?

Gambar Screenshot form pada Access

Akses juga merupakan aplikasi database windows yang cukup powerful. Karena baik Windows maupun Access adalah produk Microsoft, kedua produk tersebut bekerjasama dengan sangat baik. Access berjalan di semua versi windows.

Dengan menggunakan OLE (Object Linking Embedding) di Windows dan produk Ms Office (Excel, Word, Power Point dan Outlook) kita bisa mengembangkan kemampuan Access. OLE memungkinkan produk yang satu dengan lainnya saling bertukar informasi dengan mudah.

Berikut beberapa fitur yang ditawarkan Access:
  • Database management system yang benar-benar relasional
  • Wizard yang mudah digunakan
  • Importing, exporting, dan linking tabel
  • Form dan laporan dengan fitur WYSIWYG
  • Multiple table queries and relationships
  • Business graph and chart
  • Kemampuan DDE dan OLE
  • True Client/server
  • Dukungan modul VBA
Gambar ? mengilustrasikan kemampuan Access pada banyak level

Gambar Kemampuan Access pada banyak level

VBA Pada Access
Access memiliki banyak tool yang cukup baik yang memungkinkan kita bekerja dengan database serta tabel, queries, form, dan report yang dimilikinya tanpa menulis satu baris kode pun. Akan tetapi, pada kasus-kasus tertentu, kita mungkin membutuhkan pengembangan aplikasi yang lebih rumit seperti misalnya validasi input yang lebih ekstensif atau error handling yang lebih baik.

Untuk situasi-situasi seperti ini, kita membutuhkan suatu bahasa tingkat tinggi. Access menyediakan bahasa pemrograman yang disebut Visual Basic for Application (VBA) yang mampu meningkatkan kemampuan dari Access dan melebihi kemampuan yang ditawarkan oleh Macro.

Visual Basic telah menjadi bahasa umum untuk semua aplikasi Microsoft. Visual Basic ada di semua aplikasi Ms Office XP, termasuk Excel, Word, Power Point, dan outlook. Visual Basic adalah bahasa pemrograman terstruktur yang menawarkan bnyak struktur pemrograman yang telah biasa digunakan oleh programmer seperti If .. Then … Else, Select Case, dan seterusnya. Visual Basic memungkinkan seorang programmer bekerja dengan fungsi dan subrutin di dalam bahasa yang hampir seperti layaknya bahasa Inggris. Bahasa ini juga sangat ekstensibel (mampu memanggil rutin Windows API) dan bisa berinteraksi melalui ADO (Active Data Objects) atau DAO (Data Access Objects) dengan semua tipe data Access atau Visual Basic. 

Weka
Weka adalah koleksi algoritma data mining untuk tugas-tugas data mining. Algoritma ini bisa diterapkan secara langsung ke dalam dataset atau bisa juga dipanggil dari kode java kita sendiri. Weka memiliki tools untuk data pre-processing, classification, regression, clustering, association rules, dan visualization. Weka juga cocok untuk digunakan dalam pengembangan skema baru learning machine. Weka adalah software open source yang diterbitkan dibawah lisensi GNU General Public License.

Perancangan dan Implementasi
Tujuan dari aplikasi ini adalah untuk men data-mine email yang berada dalam mailbox Outlook. Kita akan mengekstrak informasi email dan memasukkan informasi tersebut ke dalam relational database sehingga kemudian kita bisa menganalisanya dengan beberapa algoritma data mining. 

Jadi langkah perancangan pertama kali adalah dengan merancang program pengekstrak data email Outlook untuk kemudian di ekspor ke Access. Selanjutnya membangun model data mining berdasarkan data mentah yang telah kita masukkan ke database tersebut. 

Secara garis besar model dari aplikasi data mining ini dapat diilustrasikan sebagai berikut:

Gambar Alur proses data mining

Program Pengekstrak dan Pengimpor Data Email
Sebenarnya kita bisa menghubungkan Outlook dengan Access tanpa melakukan pemrograman sedikitpun. Yakni dengan menggunakan driver yang telah terpasang secara built-in pada Office 2000. Sayangnya metode ini memiliki kekurangan dalam hal kesulitan dalam kustomisasi database. Untuk pertimbangan kemudahan kita hanya akan menggunakan import wizard dari Access yang akan mengimport semua data email yang ada pada inbox outlook. Untuk membuat database yang lebih baik, mungkin kita dapat mendesign sendiri struktur database yang baik dan kemudian menulis script sederhana menggunakan visual basic editor di outlook agar setiap email yang diterima akan langsung dimasukkan ke database. Berikut program sederhana berbentuk modul di Microsoft Access untuk mengimport email dari outlook dengan menggunakan bahasa Visual Basic for Application.

Option Compare Database 
  • Dim ol As New Outlook.Application 
  • Dim PublicFolder As MAPIFolder 
  • Dim OldTaskItems As Items 
  • Dim itm As Outlook.TaskItem 
  • Dim AppPath As String 
Sub ImportItems() 
Set PublicFolder = ol.GetNamespace("MAPI").Folders("Public Folders").Folders("All Public Folders").Folders("PT").Folders("Help Desk Application").Folders("Tarefas Antigas") 

Set OldTaskItems = PublicFolder.Items.Restrict("[Subject] > ''") 

Dim nmritens As Integer 
nmritens = OldTaskItems.Count ' 
' If nmritens = 0 Then 
' MsgBox "Tidak ada item baru" 
' Else 
' MsgBox " Terdapat" & nmritens & " untuk diimport" 
' End If 

For Each itm In OldTaskItems 
If nmritens > 1 Then 
Set appAccess = CreateObject("Access.Application") 
strAccessPath = appAccess.SysCmd(9) 
strDBName = "c:/documents and Settings/doni/my Documents/mdb/" & "importoutlook.mdb" 'strAccessPath & "email.mdb" 
Set dbe = CreateObject("DAO.DBEngine.36") 
Set wks = dbe.Workspaces(0) 
Set dbs = wks.OpenDatabase(strDBName) 
Set rst = dbs.OpenRecordset("tblHdrs") 
rst.AddNew 
rst.remetente = itm.UserProperties("Behalf") 
rst.assunto = itm.UserProperties("Subject") 
rst.recebido = itm.UserProperties("Received Date") 
rst.fechado = itm.UserProperties("Close Date") 
rst.Update 
rst.Close 
dbs.Close 
End If 
Next 
End Sub 

Hal yang sama bisa kita lakukan jika kita lebih memilih menggunakan server seperti MSSQL, MySQL, atau PostGreSQL. 

Berikut adalah data yang mungkin dihasilkan:

Gambar Tabel import dari outlook

Bisa dilihat data diatas tidak terlalu menarik untuk dianalisis, karena sifatnya yang terlalu luas dan tidak spesifik. Beberapa hal yang bisa dianalisis mungkin untuk menemukan kata terbanyak yang muncul sehingga bisa dipakai untuk menentukan ketertarikan sang empunya email, atau siapa pengirim email terbanyak. Dalam bagian berikutnya kita akan mensimulasikan data yang lebih menarik untuk disimulasikan namun tidak terlalu besar.

Analisis Data
Misalkan suatu pasangan orang tua yang sibuk memiliki account email yang dipakai untuk menerima email berisi laporan cuaca tiap hari dan kegiatan bermain anak dari sang baby sitter. Template email telah diatur sedemikian rupa sehingga menghasilkan data sebagai berikut: 

Gambar Data cuaca dan kegiatan bermain anak

Data tersebut akan disimulasikan dengan menggunakan Weka. Dalam manualnya software Weka hanya menerima format file ARFF. Walaupun kita bisa saja langsung menggunakan format file Access dengan mengubah kode atau membuat kode kita sendiri dengan memanfaatkan library yang telah ada dalam Weka.

Berikut adalah isi file weather.arff yang merupakan hasil konversi dari tabel email dalam database Access.
@relation weather
@attribute outlook {sunny, overcast, rainy}
@attribute temperature real
@attribute humidity real
@attribute windy {TRUE, FALSE}
@attribute play {yes, no}
@data
sunny,85,85,FALSE,no
sunny,80,90,TRUE,no
overcast,83,86,FALSE,yes
rainy,70,96,FALSE,yes
rainy,68,80,FALSE,yes
rainy,65,70,TRUE,no
overcast,64,65,TRUE,yes
sunny,72,95,FALSE,no
sunny,69,70,FALSE,yes
rainy,75,80,FALSE,yes
sunny,75,70,TRUE,yes
overcast,72,90,TRUE,yes
overcast,81,75,FALSE,yes
rainy,71,91,TRUE,no

Sekarang kita bisa memulai menganalisa data tersebut dengan menggunakan algoritma yang telah disediakan. Untuk memperlihatkan apa yang dapat dilakukan decision tree learner pada data tersebut, kita dapat menggunakan algoritma j4.8, yang merupakan implementasi Weka untuk decision tree learner. Kita dapat mengetik:

java weka.classifiers.j48.J48 -t weather.arff
Pada command line. Atau menggunakan Graphical User Interface yang tersedia.

Berikut output yang kita dapatkan:
J48 pruned tree
outlook = sunny
humidity <= 75: yes (2.0)
humidity > 75: no (3.0)
outlook = overcast: yes (4.0)
outlook = rainy
windy = TRUE: no (2.0)
windy = FALSE: yes (3.0)
Number of Leaves : 5
Size of the tree : 8

=== Error on training data ===
Correctly Classified Instances 14 100 %
Incorrectly Classified Instances 0 0 %
Mean absolute error 0
Root mean squared error 0
Total Number of Instances 14

=== Confusion Matrix ===
a b <-- as="" classified="" o:p="">
9 0 | a = yes
0 5 | b = no

=== Stratified cross-validation ===
Correctly Classified Instances 9 64.2857 %
Incorrectly Classified Instances 5 35.7143 %
Mean absolute error 0.3036
Root mean squared error 0.4813
Total Number of Instances 14

=== Confusion Matrix ===
a b <-- as="" classified="" o:p="">
7 2 | a = yes
3 2 | b = no

Bagian pertama adalah decision tree dalam bentuk teks. Seperti dapat kita lihat, percabangan pertama adalah dalam atribut outlook, dan kemudian pada level selanjutnya, percabangan terjadi masing-masing pada humidity dan windy. Dalam struktur pohon, titik dua merepresentasikan label kelas yang telah diberikan ke leaf tertentu, diikuti dengan nomor yang merepresentasikan jumlah instans yang memenuhi persyaratan tersebut. 

Dibawah struktur pohon, jumlah leaf dicetak, kemudian total jumlah simpul dalam pohon (size of the tree).
Bagian kedua output memperlihatkan kesalahan yang terjadi dalam data trining. Dalam kasus ini, semua 14 data telah diklasifikasi dengan benar, dan tak satupun yang dibiarkan tak terklasifikasi. Suatu instans bisa tidak diklasifikasi jika skema pembelajaran menahan pemberian suatu kelas label ke instans tersebut.

Kesimpulan dari data training dapat dilihat pada confusion
matrix, yang memperlihatkan berapa banyak instans dari tiap kelas telah diassign ke tiap kelas. Dalam kasus ini, hanya elemen diagonal dari matriks yang non-zero karena semua instans telah diklasifikasikan secara benar. 

Bagian terakhir dari output memperlihatkan hasil yang didapat dari stratified ten-fold cross-validation. Modul evaluasi secara otomatis melakukan ten-fold cross-validation jika tidak diberikan file test. Seperti dapat kita lihat, lebih dari 30% instans (5 dari 14) telah diklasifikasikan secara salah dalam validasi silang. Hal ini mengindikasikan bahwa hasil yang didapatakan dari training data dangat optimistik dibandingkan dengan apa yang mungkin didapat dari himpunan tes yang independen dari source yang sama. Dari confusion matrix kita dapat melihat bahwa 2 instans kelas yes telah dikelompokkan ke kelas no, dan tiga kelas no diassign ke kelas yes.
 

Kumpulan Artikel News Copyright © 2011-2012 | Powered by Blogger