Sunday, July 02, 2017

Solved: How to Apply Machine Learning to Problem


Sebenernya ini post dibuat untuk nulis kegiatan hari Jumat kemarin, tetapi aku baru sempet nulis sekarang. Ini hari Minggu malem menuju ke Senin.

Hari itu hari Jumat. Hari kerja biasa. Seperti biasa aku commute ke kantor pake Chiyoda Line + Yamanote Line yang penuh sesak itu. Di pagi, aku bikin script untuk automasi bagaimana caranya ngegabung banyak file dengan format arff dengan atribut yang sama supaya jadi satu file gemuk berformat arff. Kenapa ini butuh? Program yang kubuat untuk nge-convert dari PDF ke file arff cuma berlaku satu file PDF jadi satu file arff. Kalo file PDF-nya ada banyak, maka bakal ngehasilin banyak file arff. Kalo misalkan aku mau nyiapin data training buat 1000 file sekaligus, mustahil aku harus ngegabungin banyak arff manual dengan copy paste by hand. Maka dari itu aku bikin script buat ngegabungin arff ini. Awalnya aku coba pake Bash/Shell buat ngegabungin, tapi ternyata susah banget! Banyak bug ga jelas, dan yang kuinginkan kenyataannya beda jauh dengan apa yang terjadi. Akhirnya karena saran Visat, aku pake Python, dan ini pertama kalinya aku bikin script Python, and it's very nice! 10/10 will start to script in Python then.


Setelah script ini selesai, aku nyoba prepare dataset, ngeconvert masing-masing pdf jadi file arff. Kemudian masing-masing data kulabelin satu-satu classnya secara manual. Ya, agak melelahkan emang. Tapi selesai. Abis itu aku mulai eksplorasi pake Weka, algoritma apa yang cocok dan punya akurasi tinggi buat ngelakuin klasifikasi yang bakal aku lakukan nanti.

Karena hari ini hari Jumat, kita harus solat Jumat. Seperti minggu lalu, aku solat Jumat di Kamata Masjid bareng kak Ical (IF2009) dan kak Akbar (IF2011). Kita harus naik kereta sekitar 10 menit pake Keihin-Tohoku dari Shinagawa ke Kamata station. Perjuangan yang agak sulit buat solat Jumat daripada di Indonesia yang mana kita hampir bisa menemukan tempat solat Jumat dengan mudah di manapun. Setelah solat Jumat, aku chat Dikra (IF2011) apakah dia udah sampe di Jepang karena dia balik ke Indo buat mudik. Kukira dia masih di Indonesia, ternyata dia udah balik dan kita sebenernya solat Jumat di masjid yang sama >< Sayangnya dia balik duluan abis kelar solat Jumat tepat, jadi ga ketemu deh.

Abis solat Jumat, kita makan kebab dulu di deket Kamata station.

Kebab stall

Masih nyesel kenapa ga beli yang ada nasinya

Penjualnya orang India. Muslim.
Abis solat Jumat aku balik lagi ke kantor. Ngelanjutin eksplorasi algoritma Machine Learning lagi. Pipin yang TA-nya tentang Machine Learning dan sudah melakukan banyak eksplorasi tiap malam tentang ML dan segala klasifikasinya, ngasih saran beberapa algoritma yang bagus buat problemku dan dataset ini yang atributenya kebetulan semua numerik.

At the end, aku nyobain banyak banget algoritma dan ngeevaluasi satu-satu untuk masing-masing dataset dan field yang mau dicari. So far ada 3 dataset dan 4 field. Jadi aku nyobain untuk 12 file arff berbeda. Ini list algo Weka yang kupake buat klasifikasi: naive bayes, HMM, LivSVM, SMO, Voted Perceptron, Kernel Logistic Regression, Multilayer Perceptron, KNN, KStar, LWL, NNge, Decision Table, J48 Decision Tree, Decision Table, J48, Random Forest, Random Tree, REPTree.

So far dari 3 dataset (format invoice yang berbeda) dan 4 field (company name, date, tax rate, row field) yang kupake, inilah algo yang selalu ngasih 100% akurasi:
1. LibSVM
2. KNN
3. NNge
4. Random Forest
5. Random Tree

Tapi sayangnya data ini masih kecil karena cuma beberapa dokumen dalam dataset jadi kemungkinan overfittingnya sangat gede. Aku masih nunggu pdf dari Thao untuk dataset yang lebih banyak. Di sore hari sekitar jam 6, Thao baru ngasih pdfnya ke aku. Dan aku ga punya banyak waktu buat ngelanjutin eksplorasi karena PDFnya masih mentah, harus diubah ke arff, digabung jadi satu arff gemuk, dilabelin manual satu-satu. Dan udah sore. Capek. Akhirnya aku ngobrol ama Thao aja dan abis itu pulang.

Sampe di rumah, seperti hari Kamisnya, aku makan curry deket stasiun Yoyogi Uehara. Kali ini lauknya katsu. Bumbunya mantap. Ketagihan.

Katsu curry yeay!
Sekian!

Related Articles

0 comment:

Post a Comment