Showing posts with label classification. Show all posts
Showing posts with label classification. Show all posts

Monday, July 03, 2017

Decide to Use RandomTree Algorithm


Kopi dikasih mbak-mbak meja sebelah di kantor.
Baik banget astaga.
Hari ini nggak banyak yang kulakukan karena kebanyakan cuma pekerjaan rutin yang nggak mikir banyak. Untuk ngelatih ML model, kita perlu nyiapin training data yang terdiri dari parameter dan actual classnya. Yang kulakukan hari ini adalah nyiapin data training ini. Aku nge-generate invoice dengan 5 pattern format yang berbeda, masing-masing pattern terdiri dari 7 file pdf. Masing-masing file pdf, kulabelin mana lokasi teks yang menunjukkan field untuk date, company name, tax rate, sama row. Rada cape karena ngelabelin tiap kata di 35 dokumen itu rada membosankan. Bukan susah sih, gampang, tapi bosen karena terlalu berulang-ulang.

Setelah semua data training siap dalam bentuk arff, aku ngelanjutin eksperimen pake Weka buat milih algoritma terbaik untuk dipake dalam prediksi kalau ada dokumen baru yang datang. Pengennya, apabila ada sekumpulan kata dalam satu dokumen dan diketahui posisinya masing-masing, ML model ini bisa memprediksi, mana kata yang tergolong ke company name yang benar, tax rate, dan tanggal, berdasarkan lokasi field-field yang bersangkutan di invoice yang sudah jadi training data sebelumnya.

Akurasi terbaik dapet kalo aku pake either: KNN, NNge, Random Forest, Random Tree. Tapi melihat cara kerja tiap algoritma yang ditampilkan di Weka, algo yang dipake Random Tree most likely bakal menarik dan paling cocok buat di-apply di problem ini. KNN kadang kurang baik untuk nentuin K apabila dataset masih kecil. NNge kurang baik karena rule yang dibikin belum tentu fix bisa memenuhi rule yang di-generate algoritma NNge, cenderung tidak fleksibel terhadap perubahan. Random Forest juga kurang baik karena dia melakukan 100 iterasi. Ini menambah kompleksitas banget kalo volume datanya growing. Random Tree adalah pilihan yang tepat.

Tiba-tiba aja udah jam 7 malem. Aku pulang. Aku menemukan fakta penting dari Michi bahwa air kran di Jepang aman buat langsung diminum, ini ga kayak Indo banget yang harus ngerebus air kalo mau minum air kran. Dari fakta ini bakal bisa ngehemat ribuan yen sepertinya. TQ Michi!

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.