Rekursif–Stage 1

July 22, 2017 Leave a comment

image

Tutorial ini diperuntukkan untuk para pemula yang sudah mengetahui konsep dasar pemrograman seperti percabangan, perulangan dan fungsi. Kita akan memperkaya pengetahuan kita mengenai fungsi rekursif. Dimana fungsi ini sangat berguna sekali untuk paradigma pemrograman brute force, backtracking dan juga dynamic programming.

Oleh karena itu kita akan mulai dengan sangat berlahan

Tutorial pertama yang sangat cocok digunakan oleh pemula adalah TOKI learning. Anda dapat download dan mempelajari slide tersebut dari website berikut ini.

image

Dari sini anda dapat mendowload secara langsung tanpa perlu memiliki account di toki learning. Saya sangat menyarankan anda membuat account di website tersebut karena website tersebut sangat baik digunakan untuk kompetitif programming.

Setelah anda menguasai dasar-dasar rekursif seperti factorial dan eksekusi dari program rekursif tersebut anda dapat melanjutkan nya dengan berlatih di website codingbat berikut.

http://codingbat.com/java/Recursion-1

image

Buatlah account pada website tersebut untuk dapat menyimpan progress anda pada pelajaran rekursif.

Pada website tersebut anda akan dilatih berpikir secara rekursif dari dasar sekali.

Apakah anda sudah dapat mengerjakan semua latihan pada website tersebut ?

Selamat jika sudah. Sekarang kita akan melanjutkan perjalanan kita ke pelatihan rekursif yang lain. Kita kembali ke website tokilearning yang ada di

https://training.ia-toki.org/

Selesaikanlah semua task yang ada di halaman berikut. Pastikan anda telah register terlebih dahulu untuk website tersebut.

https://training.ia-toki.org/training/curriculums/1/courses/1/chapters/17/problems 

image

Oke sekarang setelah kita menyelesaikan task2 tingkat nasional mari kita menuju ke tingkat dunia. Smile

Ada satu lagi materi rekursif yang cocok untuk pemula dari topcoder. Silahkan baca artikel berikut ini.

https://www.topcoder.com/community/data-science/data-science-tutorials/an-introduction-to-recursion-part-1/ 

Silahkan melakukan register ke website topcoder http://www.topcoder.com.

image

Ada dua latihan yang bagus yang dapat dikerjakan di website ini mengenai rekursif tingkat dasar.

DerivativeSequence dan Truckloads. Anda bisa saja menyelesaikan task tersebut secara iteratif atau tanpa rekursif. Tetapi saya sangat menyarankan selesaikanlah dengan rekursif untuk melatih pola pikir anda.

Saya akan melanjutkan perjalanan rekursif kita di blog post berikutnya.

Cheers

Categories: Uncategorized

The night of Bipolar with Lizzy

July 8, 2017 Leave a comment

Dear Lizzy,

Surat ini dibuat oleh seorang ayah, lutheran, batak, danamoners, bipolar, forex trader dan pemimpi. Mungkin beberapa istilah kamu belum paham tapi sabar saja nanti kamu sendiri akan tahu.

 

image

Papa malam ini tidak bisa tidur seperti biasa, sepertinya ini karena minum Thai Tea dari kencan papa dengan mama malam ini di pasar festival. Maaf ya nak, karena papa dan mama tidak ngajak lizzy. Di tengah malam ini sepertinya penyakit bipolar papa kambuh ke fase manic. Sepertinya untuk saat ini masih di level hypomanic sehingga ide-ide mulai bermunculan.

Algorithm is the KING

image

Seperti yang lizzy tahu bahwa papa adalah seorang software developer di Danamon. Papa sangat mencintai Algorithm, Meskipun papa tidak hebat seperti anak-anak TOKI atau jebolan ICPC. Papa berharap bahwa lizzy suatu saat akan menjadi peraih medali emas di OSN, IOI and ICPC. Papa juga akan berjuang nak untuk mengajarkan semua ilmu yang telah ayah dapat.

Papa akan buatkan kurikulum untuk kamu mulai dari balita, TK, SD, SMP, SMA sampai dengan perkuliahan. Papa emang terkesan egois menimpakan semua mimpi papa kepada lizzy. Tapi papa sangat mendambakan akan ada medali emas yang lahir dari keluarga ini. Jika lizzy tidak mau ya tidak apa-apa, kurikulum ini bakalan dapat diaplikasikan juga untuk anak-anak Indonesia yang lain.

image

Mudah-mudahan kamu masih bisa ketemu dengan pembimbing TOKI paling keren sedunia yaitu ibu Inggriani Liem. Berikan yang terbaik buat bangsa kata ibu kita tersebut. Ibu Inggriani juga sudah lama menantikan medali emas yang lain dari Tanah Air. Mudah-mudahan kamu bisa ya nak. Smile

image

Papa berharap akan banyak Gennady.Korotkevich (tourist) yang lahir dari tanah air kita indonesia. Dia jadi juara IOI semenjak umur 11 tahun, hitungan SD. Jangan mau kalah karena indonesia adalah bangsa yang besar. Jadi kita bisa mempersiapkan anak-anak kita semenjak kecil. Haha. Egois sekali ayahmu ini nak. Tapi hal ini semua tergantung kamu mau menjalani atau tidak nya. Tidak ada paksaan. Smile

Oke mari kita flash back kembali malam kencan papa dengan mama. Seperti biasa jika kami pulang cepat kami akan mampir di pasar festival untuk makan malam. Pasfest ini cukup dekat dari kantor papa. Jadi bisa jalan kaki nyampe. Mama harus naik grab bike baru nyampe.

Kami berbincang-bincang mengenai kantor dan masa depan. Cie.

SRIN is the last office

image

Di sela-sela pembicaraan aku mengungkapkan bahwa papa sebenarnya masih berharap masuk Samsung Research Indonesia (SRIN). Tapi sekarang papa harus menyelesaikan tugas papa dulu di Danamon selama tiga tahun ini untuk Big Data. Jangan sampai jadi kutu loncat seperti yang diharamkan oleh Pak Luhut Pandjaitan. Smile

image

Mengapa jatuh cinta dengan SRIN ? Ya karena disana ada Pak Risman, mentor papa. Saya yakin leadership dan arah dari research terbaik indonesia akan lahir dari sana. Caranya masuk samsung adalah dengan mengikuti algorithm test. Dah dapat bocoran dari Pak Risman katanya soalnya paling sekitar backtracking, graph, greedy dan dynamic programming (DP). Latihan nya di hackerrank.

image

 

Nah bocoran ini yang bikin sakit kepala, karena semuanya itu advanced algoerithm yang dipakai oleh competitive programmer. Hasil brosing-brosing di internet dapet bocoran soal lagi dari flyer samsung jobs.

image

 

Soal pertama bisa diselesaikan dengan code iterative biasa dan pengecekan dengan modulus.

Soal kedua sepertinya harus pakai dynamic programming karena berhubungan dengan optimasi.

Soal ketiga ini soal klasik flood fill dengan DFS.

Soal keempat ini soal klasik DP Knapsack yang bisa dikerjakan juga dengan recursive backtracking dengan memoization.

Tapi tetep saja saya tidak percaya diri jadi prajurit dari Pak Risman, takut gagal test dan malu ketahuan tidak capable. Hal ini yang membuat ayah selalu mengurungkan diri mengikuti test algorithm di samsung.

Tapi 3 tahun lagi papa pasti coba, makanya prepare dari sekarang dulu. Papa sudah beli beberapa buku programming yang membahas teknik untuk menyelesaikan coding interview. Dapat satu buku yang bagus tentang dynamic programming.

Well, tidak ada yang tahu masa depan, tapi bisa saja bermimpi. Bias sekali ya. Haha. Jangan sampai melupakan prinsip Think Fast and Slow. Smile

Trading Forex for living

image

Papa juga cerita ke mama tentang perjalanan trading kami berdua. Papa juga mengeluti dunia trading forex, meskipun saat ini level papa masih beginner di demo account. Hal ini papa geluti untuk mencapai financial freedom dan kebebasan bekerja dari rumah. Hal ini merupakan cita2 dari papa untuk independen dari kantor. Bisa jagain Lizzy dan fokus untuk belajar untuk lizzy. Bukan untuk papa sendiri.

Papa bersama mama sudah melalui lika-liku dunia trading ini, sampai rugi puluhan juta. Tapi kami tetap bersikeras untuk mendalami nya. Belakangan ini hasilnya sudah mulai kelihatan. Meskipun dibutuhkan ketegaran untuk melalui masa-masa drawdown dan lost berturut2. 

Jika berhasil maka kami akan pulang ke Siantar kampung halaman dan lizzy bisa bersekolah di sana. Karena lingkungan nya yang baik untuk belajar.

Recursion is My Next Big Project

image

Dan kembali ke algorithm, see i always comeback to algorithm. As that topic is very near to my heart. Sepertinya papa akan buat buku khusus untuk membahas recursive dari awal sampai ke level Dynamic Programming. Karena ujung-ujungnya recursive banyak sekali kegunaannya mulai dari backtracking sampai ke dynamic programming. Papa akan buat buku ini mudah digunakan dan banyak latihan nya. Karena they way to master is only by doing lots of exercises. Mudah- mudahan bisa selesai dalam waktu singkat dan bisa dapat tanggapan yang baik. Kayaknya pakai pascal saja supaya lebih gampang dipahami.

Closing

Fiuh, sampai sekarang masih belum bisa tidur juga. Masa-masa hypomanic adalah masa-masa yang paling produktif dan sayang dibiarkan berlalu karena ini adalah masa-masa keemasan. Meskipun dokter bilang jangan keterusan. Smile Akhirnya mama paksa papa untuk makan obat supaya bisa tidur. Dan akhirnya obat tersebut bereaksi dan saya pun tertidur.

 

Cheers

Categories: Algorithm, Life, Lizzy Tags: , , , , , ,

Perkenalan Machine Learning Algorithm – Part 1

April 27, 2017 Leave a comment

Pada tutorial sebelumnya saya hanya mengajarkan bagaimana alur data science dan machine learning proses. Saya hanya mengajarkan pemakaian tools machine learning dengan menggunakan scikit-learn. Hal ini saya tujukan untuk memberikan pemahaman mengenai end to end skeleton yang dapat anda gunakan pada setiap project machine learning anda. Setelah anda mengetahui apa-apa saja langkah-langkah yang ada maka anda dapat dengan mudah memperdalam masing-masing machine learning algorithm nya.

Pada kesempatan tutorial selanjutnya dalam blog ini kita akan mempelajari mengenai masing-masing algoritma machine learning. Kita akan belajar istilah-istilah yang lazim digunakan dalam dunia machine learning.

Programmer dapat belajar dengan cepat jika diberikan contoh dan deskripsi yang jelas mengenai sesuatu hal. Hal ini juga berlaku terhadap algoritma machine learning. Tutorial akan terdri dari deskripsi algoritma machine learning dan juga bagaimana cara mengimplementasikannya dengan bahasa pemrograman python.

Blog ini ditulis untuk programmer sehingga tidak menggangap anda memiliki pengalaman dalam statistika, probability dan juga linear algebra. Jika anda mengetahui sedikit statistika maka hal itu akan dapat membantu anda tetapi tidak menjadi penghambat anda untuk memahami tutorial tersebut.

Data memiliki bagian terbesar dalam machine learning. Sehingga kita perlu belajar terminologi yang benar ketika berbicara mengenai data. Mari kita mulai saja dengan bagaimana anda berpikir tentang data. Pikirkan saja spreadsheet atau excel file. Kita memiliki kolom, row dan cell.

 

image

Sebuah kolom memiliki data dengan tipe yang sama. Contoh kita memiliki kolom berat, tinggi atau harga. Semua data pada kolom yang sama memiliki skala dan arti yang sama dengan yang lain. Kolom ini sering disebut juga sebagai attribute atau fitur.

Row menggambarkan satu observasi atau single instance. Semakin banyak row yang kita punya semakin banyak example dari domain yang kita pelajari.

Cell merupakan single value dari satu row atau kolom.

Gampangnya kita dapat menyebut data ini sebagai tabular atau dataframe data. Bentuk data seperti ini sangat mudah digunakan dalam machine learning. Ada beberapa term yang digunakan pada perspektif yang berbeda. Ada 2 perspektif yaitu statistical dan computer science

Dari perspektif statistical learning kita melihat bahwa ada fungsi yang akan dicoba dipelajari oleh algoritma machine learning. Jika kita memberikan input value maka akan dicoba diprediksi output valuenya.

Output = f(input)

Kolom tersebut akan menjadi input yang disebut sebagai variable input. Dimana kolom yang akan kita prediksi untuk input yang akan datang disebut sebagai output variable atau response variable.

OutpuVariable = f(InputVariables)

Biasanya kita akan memiliki lebih dari satu input variable. Dalam hal ini kita akan menyebut input variable tersebut sebagai input vector.

OutputVariable = f(InputVector)

Jika anda masih ingat dengan pelajaran statistika anda yang lalu anda akan mengetahui terminologi jadul. Yaitu banyak disebut sebagai dependent dan variable independent.

DependentVariable = f(IndependentVariables)

Untuk lebih sederhananya kita menyingkatnya menjadi

Y = f( X )

Dari computer science perspektif kita sering sekali mendengar bahwa row disebut sebagai entity dan kolom disebut sebagai attribute. Atau sering disingkat menjadi

OutputAttribute = Program(InputAttributes)

Nama lain dari kolom adalah fitur.

Output = Program(InputFeatures)

Observation juga sering disebut sebagai instance. Dan Output sering disebut sebagai prediksi

Prediction = Program(Instance)

Banyak juga orang menyamakan model dan algoritma. Dan kadang digunakan saling menggantikan satu sama lain. Model adalah representasi dari apa yang telah dipelajari dari data atau hasil dari algoritma yang belajar teresbut. Algoritma adalah proses dari pembelajaran tersebut.

Model = Algorithm(Data)

Categories: Machine Learning

Berkompetisi di Kaggle – Part 3– Menambahkan Fitur

April 21, 2017 Leave a comment

Ketika kita menggunakan fungsi .describe() kita menyadari bahwa tidak semua kolom ditampilkan. Hanya kolom-kolom yang mempunyai data numerik saja. Kita tidak dapat mengirimkan data non numerik sebagai input ke algoritma machine learning.

Ada dua pilihan, yaitu mengeluarkan data non numeric pada saat training atau mencari cara untuk mengubah data tersebut ke numerik.

Untuk saat ini kita akan mengabaikan kolom/attribute Ticket, Cabin dan Nama karena kita tidak mengambil informasi yang lebih dari situ.

Mari kita convert Sex ke kolom dengan tipe numerik. Kita dapat mengubahnya dengan mengubah male menjadi 0 dan female menjadi 1.

Hal ini dapat kita lakukan dengan code berikut ini

image

image

Berikutnya kita akan mengubah kolom Embarked ke numerik. Kita juga mengisi missing value dari kolom tersebut.

image

Sekarang kita masih tetap akan menggunakan LogisticRegression dan mengevaluasi feature/attribute terbaru kita.

image

Wow dengan menambahkan beberapa attribute kita dapat mencapai akurasi 78%.

Sekarang kita akan membuat submission dengan menggunakan fitur yang baru. Terlebih dahulu kita akan menyamakan perubahan yang kita lakukan pada dataset training dengan dataset test.

image

 

Kita dapat melakukan copy paste dari code sebelum dan menambahkan fitur yang kita inginkan.

image

Sekarang kita akan submit hasil tersebut ke kaggle.

image

Selamat anda berhasil melakukan kemajuan akurasi menjadi 75%.

Kita akan tetap terus berjuang untuk mendapatkan hasil yang lebih baik pada iterasi berikutnya. Apakah itu dengan menambah fitur atau mengubah algoritma yang kita butuhkan.

Sampai jumpa pada tutorial selanjutnya.

 

Cheers

Categories: Machine Learning

Berkompetisi di Kaggle – Part 2– Melakukan prediksi sederhana

April 20, 2017 Leave a comment

Pada tutorial ini kita akan melakukan submission berdasarkan algoritma yang kita buat. Pertama sekali kita perlu mendownload dataset yang ada dari website kaggle untuk kompetisi titanic.

image

Simpan file dataset tersebut pada tempat yang mudah di akses.

Kita sekarang sudah dapat meload data tersebut dan melakukan analisa sederhana. Sesuaikan dengan path dari dataset yang anda punya.

image

Kita dapat melihat 10 data teratas dengan fungsi head pada pandas dataset.

image

Untuk melihat statistik dari data numerik anda dapat memanggil fungsi describe.

image

Anda tentu melihat kejanggalan pada hasil dari statistik yang ada. Kita melihat bahwa attribute Age tidak memiliki jumlah yang sesuai dengan kolom lain nya. Hal ini disebabkan oleh null atau value yang hilang. Mari kita lihat lebih dalam lagi untuk attribute tersebut.

 

image

Ternyata memang benar terdapat NaN. Hal ini harus kita atasi karena algoritma machine learning akan memproses data yang salah tersebut. Kita harus melakukan pre processing untuk mengisi value yang hilang tersebut. Untuk hal yang sederhana ini kita dapat mengisnya dengan nilai tengah atau median dari data tersebut.

image

Oke sekarang agar kita tidak bosan maka kita dapat saja mengambil salah satu algoritma klasifikasi dan langsung menghitung akurasinya. Kita akan melakukan coba-coba atau eksperimen dengan data set berikut dan algoritmanya. Attribute yang kita pilih adalah Pclass dan Age. Artinya kita menggunakan 2 attribute atau features tersebut untuk melakukan prediksi. Algoritma yang kita pilih disini adalah LogisticRegression

image

Kita dapat melihat bahwa akurasi dari algoritma LogisticRegression adalah 69% terhadap data training. Cukup rendah. Tetapi untuk saat ini kita dapat menggunakannya sebagai baseline.

Sekarang kita akan melakukan prediksi terhadap dataset testing. Kita load dan bersihkan dulu data testing sesuai dengan apa yang kita lakukan terhadap Age.

image

Langsung saja kita lakukan fitting dan training terhadap model tersebut dengan menggunakan data training. Dan prediksi dengan data testing.

 

image

Setelah kita mem prediksi kita dapat menyimpan hasil nya pada dataframe dan ditulis ke csv file untuk di submit.

Jika anda melakukan submission terhadap result tersebut anda akan mendapatkan akurasi  kurang lebih 66%

 

image

Cukup untuk kita jadikan baseline. Selanjutnya pada tutorial berikutnya masih di topik titanic kita akan membandingkan beberapa algoritma dan memilih yang terbaik. Kita juga akan melakukan feature engineering untuk mendapatkan hasil yang lebih baik.

Kita akan melakukan iterasi pada permasalahan titanic tersebut. Kita tidak bisa menyerah pada hasil dan merasa puas hanya dengan satu iterasi saja. Kita harus mengulang kembali proses-proses yang sebelumnya telah kita pelajari.

Anda juga dapat mencoba-coba parameter dan algoritma yang lain seperti SVM, Decision Tree etc.

 

Selamat melakukan eksplorasi

 

Cheers

Categories: Machine Learning

Berkompetisi di Kaggle – Part 1– Perkenalan dengan Platform dan Dataset

April 20, 2017 Leave a comment

 

image

Seperti janji pada blog post sebelumnya saya akan mengajak anda untuk berjuang dalam kompetisi data science Kaggle. Kaggle merupakan platform kompetisi untuk data science. Kaggle menggunakan platform tersebut untuk menantang para data scientist untuk menyelesaikan tugas yang telah di tentukan. Jika anda pernah mengikuti competitive programming maka anda mungkin sudah familiar dengan TopCoder dsb. Anda dapat menganggap Kaggle adalah TopCoder untuk Data Scientist

 

image

 

Keuntungannya adalah data set yang digunakan adalah data set yang sudah baik dan hanya membutuhkan sedikit data cleansing. Bentuk nya tabular sehingga memudahkan kita untuk melakukan eksplorasi dan pemodelan.

Di kaggle banyak kompetisi yang berjalan, oleh karena itu kita akan memilih kompetisi yang mudah untuk dijadikan sebagai bahan latihan. Project Hello World di kaggle adalah kompetisi Titanic. Dalam kompetisi titanic kita akan memprediksi mana saja penumpang yang akan bertahan hidup atau selamat.

Segera saja kita mulai tanpa panjang lebar. Buka website berikut

https://www.kaggle.com/c/titanic 

Lakukan registrasi jika anda baru pertama kali. Anda dapat sign in dengan menggunakan google plus, facebook ataupun twitter.

Hal yang pertama sekali perlu dilakukan adalah memahami deskripsi dari masalah yang ada. Hal ini dapat di lihat pada bagian description.

SNAGHTML13dc6643

 

Dari dekripsi tersebut kita mengetahui bahwa kompetisi ini tujuannya adalah memberikan tutorial bagi para pemula dalam kontes machine learning. Kita juga mengetahui bahwa tugas yang di berikan adalah memprediksi penumpang selamat atau tidak. Jadi tugas ini merupakan binary classification yang artinya memilih dari 2 pilihan ( selamat atau tidak )

Setelah anda mengetahui masalah yang harus dipecahkan tentu saja selanjutnya kita ingin melihat bagaimana kita akan melakukan deliverables nya. Format dari deliverables yang akan kita submit.

SNAGHTML13e1c36e

Dari penjelasan diatas kita dapat mempelajari format dari submission. Kita diminta untuk mensubmit file dengan format yang telah ditentukan.

Kita sudah mempelajari bagaimana submission nya, sekarang kita masuk ke bagian yang lebih seru yaitu mempelajari data yang ada dan formatnya. Kita dapat melihat di tab Data page.

image

Kita dapat melihat penjelasan dari data yang telah disediakan untuk kompetisi titanic.

image

Data set dibagi menjadi dua yaitu training data set dan test data set. Training data set akan kita gunakan untuk membuat model. Test data set adalah dataset yang kita pakai untuk membuat prediksi apakah selamat atau tidak.

Selain kedua data set tersebut kita juga diberikan contoh dari file submission yaitu gender_submission.csv

image

Mari kita perhatikan isi data set tersebut satu persatu. Pertama-tama kita akan melihat data set training

 

image

Kita dapat melihat bahwa formatnya adalah CSV dan kita juga mempunya header. Kolom yang akan di prediksi juga sudah tersedia yaitu kolom Survived. Mari kita lihat apa perbedaannya dengan test dataset.

SNAGHTML13ec73a3

Test dataset memiliki struktur yang sama dengan train dataset hanya saja tidak memiliki kolom survived. Oke sekarang kita akan melihat dataset terakhir yaitu submission.

image

 

Seperti yang kita lihat kita hanya memiliki dua kolom atau attribute yaitu passenger id dan status selamat atau tidak. File ini adalah file yang sudah memiliki format yang sesuai dengan penjelasan untuk submission. Kita dapat langsung saja mensubmit file ini ke Kaggle untuk Titanic.

Mari kita submit dan lihat hasil dari akurasi prediksi dari file tersebut. Untuk saat ini kita belum melakukan modeling atau bagaimana file tersebut dihasilkan, yang ingin kita dapatkan adalah sense dari bertanding di kaggle secara end to end. File di atas kemungkinan dihasilkan oleh salah satu algorithm blackbox yang dapat digunakan untuk binary classifier.

 

SNAGHTML13f29622

Klik submit prediction yang telah di sediakan.

image

Langsung saja drag and drop gender_submission.csv ke submission.

SNAGHTML13f4d10e

Klik submission maka file kita tersebut akan di grading secara otomatis. Setelah itu kita akan diberikan hasil dari submission tersebut.

image

Selamat anda telah berhasil memberikan submission pertama anda di kaggle. Anda adalah Kagglers now. Data Scientist !

Pada tutorial selanjutnya kita akan melakukan prediksi dan step by step untuk membuat submission kita sendiri dengan pemodelan machine learning.

 

Cheers

Categories: Uncategorized

Machine Learning “Hello World” – Part 04 – Evaluasi Algoritma Learning

April 19, 2017 Leave a comment

Ini adalah waktunya untuk masuk ke pertunjukan sebenarnya dari machine learning. Smile 

 

image

 

Kita akan membuat model dari data yang ada dan melakukan estimasi terhadap akurasi dari data yang belum diketahui sebelumnya. Berikut langkah-langkah nya

  1. Memisahkan dataset untuk validasi
  2. Membuat test untuk 10 fold cross validation
  3. Membangun 6 model untuk memprediksi spesies bunga dari pengukuran bunga
  4. Memilih model yang terbaik
  5. Melakukan prediksi dengan model yang terbaik
    Dataset untuk Validasi

Mari kita mulai membagi dataset untuk validasi dan untuk training. Kita perlu mengetahui apakah model yang akan kita buat adalah model yang baik. Kemudian kita akhirnya akan menggunakan metode statistik untuk melakukan estimasi akurasi dari model terhadap data yang belum diketahui sebelumnya. Kita akan membagi dataset tersebut menjadi dua bagian 80% digunakan untuk training model dan 20% digunakan untuk validasi.

image

 

Sekarang kita telah memiliki data untuk training di X_train dan Y_train untuk membuat mode dan X_validation dan Y_validation yang dapat kita gunakan untuk memvalidasi model yang dibuat.

Kita akan menggunakan teknik 10-fold cross validation untuk melakukan estimasi akurasi. Kita akan membagi dataset kita menjadi 10 bagian, 9 untuk training dan 1 lagi untuk test. Kita akan melakukan kombinasi train-test split. Kita akan menggunakan akurasi matrix untuk melakukan evaluasi model. Ini adalah rasio dari jumlah prediksi yang benar dibagi dengan jumlah instance dari dataset dikali dengan 100 untuk mendapatkan persentasi. Kita akan menggunakan scoring variable dalam membangun dan mengevaluasi setiap model.

 

This is a ratio of the number of correctly predicted
instances divided by the total number of instances in the dataset multiplied by 100 to give a
percentage (e.g. 95% accurate). We will be using the scoring variable when we run build and
evaluate each model next.

Membangun model

Kita tidak tahu algoritma machine learning mana yang terbaik untuk masalah iris ini dan konfigurasi apa yang tepat. Seperti yang sebelumnya kita sampaikan bahwa machine learning dan data mining adalah experimental science. Jadi kita perlu mencoba-coba algoritma dan menentukan mana yang cocok berdasarkan statistik.

Mari kita melakukan evaluasi terhadap 6 algoritma yang berbeda

  • Logistic Regression (LR)
  • Linear Discriminant Analysis ( LDA ).
  • k-Nearest Neighbors ( KNN )
  • Classification dan Regression Tree ( CART )
  • Gaussian Naive Bayes ( NB )
  • Support Vector Machine ( SVM )
    Jangan takut jika anda belum mengetahui atau memahami ke enam algoritma di atas. Untuk sekarang ini anda dapat memperlakukannya sebagai black box dimana jika kita memberikan input akan mengeluarkan output. Tentu saja setelah kita melakukan training terhadap fungsi tersebut berdasarkan data-data contoh.

List di atas merupakan kombinasi yang bagus antara algoritma Linear sederhana ( LR and LDA ) dan juga non linear ( KNN, CART, NB, SVM ). Mari kita evaluasi ke enam algoritma tersebut.

image

Sekarang kita sudah dapat menentukan model mana yang akan kita gunakan. Kita dapat melihat bahwa KNN memiliki akurasi yang terbaik. Sekarang kita akan melakukan validasi terhadap testing data set yang telah kita sisihkan sebelumnya.

image

Kita mendapatkan akurasi 90% ! Good progress.

Confusion matrix juga menunjukkan bahwa ada 3 error yang tercipta.

image

Untuk mengetahui lebih dalam mengenai confusion matrix kita dapat melihat pada tutorial berikut.

 

http://www.dataschool.io/simple-guide-to-confusion-matrix-terminology/

https://www.coursera.org/learn/ml-foundations/lecture/pcbUq/false-positives-false-negatives-and-confusion-matrices 

 

Selamat anda sudah melakukan end to end machine learning project. Anda juga mendapatkan accuracy yang cukup baik. Sekarang kita dapat beranjak menuju tutorial yang lebih menantang lagi. Bagaimana memulai kompetisi di Kaggle !!

 

Ikuti terus seri tutorial pada blog ini.

 

Cheers

Categories: Machine Learning