Setiap Senin saya ketemu dengan Sugi, mhs yang sedang melakukan penelitian dengan saya sejak semester lalu. Topiknya “cost sensitive learning”. Yaitu klasifikasi dengan memperhatikan misclassification cost. Atau kalau dilihat dari sudut pandang lain: “true-classifiation” benefit (yi lawan dari cost).
OOT: apa ya istilah yang digunakan untuk misclassification? Miskomunikasi, istilah kebalikannya apa?
Salah satu bentuk misclassification yang banyak dipakai adalah menggunakan misclassification matrix, disingkat dengan “cost matrix”. Misclassification cost disingkat “cost”.
Dan biasanya topik cost-sensitive learning ini dikaitkan dengan topic “permasalahan klasifikasi jumlah instance antar kelas yang tidak imbang” (imbalance class problem).
[buat posting: imbalance problem vs cost sensitive learning]
OOT: bahasa Inggis yg lebih bagus/baku apa? Imbalance atau unbalance? Di data mining biasanya “imbalance”, namun ada yang mengatakan bahwa sebenarnya dari sisi bahasa yang lebih tepat adalah “unbalance”. Coba cari dengan Google “imbalance” dan “unbalance”, maka yang terakhir yang lebih banyak digunakan.
Untuk klasifikasi biner (dua kelas):
[buatlah gambar cost matrix di sini]
Di sini, ada empat jenis benar salahnya tebakan: TP, TN, FP, FN. Biasanya TP dan TN tidak ada costnya.
Sehingga hanya ada dua yang ada nilai costnya FP dan FN. Nilai FP dan FN bisa berbeda. Kedua nilai itu didapatkan memang dari permasalahan (atau dari user), kita tinggal ambil/pakai. Nilai2 itu bukan dari data, lalu kita proses sehingga menghasilkan nilai FP, FN.
Bagaimana kalau multiple-class (ada lebih dari dua nilai kelas)?
Contoh kasus yang sangat menarik adalah di kompetisi Data Mining Cup 2008. Di sini multi-class (kaau ngga salah ada lima kelas), ada imbalance, ada cost. Sayangnya kasusnya yang nggak enak: tentang lotere. Coba saja download data, keterangan permasalahannya. Beberapa mhs ITTelkom ikut kompetisi ini. Hasil mereka bisa dilihat di web site komptesisi. Cara mereka menyelesaikan permasalahan bisa didownload di sini. […………….]
O ya, bagaimana kalau multiple-class (ada lebih dari dua nilai kelas)?
Ini contoh table cost matrix dari kompetisi Data Mining Cup 2008.
[cost matrix DMCup 08]
Tampak jelas bahwa kolom dan baris matrixnya sekarang sebanyak/sebesar jumlah nilai kelasnya. Tidak ada kelas positif, kelas negative sehingga tidak ada FP dan FN. Ya bisa kita beri nama misclassification costnya misalkan kita beri nama AB, artinya kalau true class nya: A predicted: B.
Mengapa cost-sensitive penting? Lebih mendekati kebutuhan riil?
Karena evaluasi performansi klasifikasi akan lebih riil (lebih berguna bagi user) bila nilainya adalah cost (atau benefit), bukan error (atau akurasi).
Yang lebih generik lagi dibandingkan cost-matrix seperti yang di Data Mining Cup 08 adalah bila kolom dan baris matrixnya sebesar jumlah instance. Jadi ada mapping antara semua instance ke semua instance yang lain (termasuk juga ke diri sendiri). Matriksnya N x N, dimana N adalah jumlah instance. Seperti matriks-matriks sebelumnya yang dipakai adalah separo saja (matriksnya simetri).
[gambar marix NxN)
Bagaimana kalau permasalahannya seperti pada churn prediction?
Dimana nilai yang ada adalah nilai atribut (satu dimensi) bukan berupa matrix?
Mana nilai cost/benefitnya? Bagaimana kita mengubah menjadi cost matrix?
[to be continue in other posting]