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

Machine Learning “Hello World” – Part 03 – Visualisasi

April 19, 2017 1 comment

Ok, Sekarang kita sudah memiliki pengetahuan dasar mengenai apa data yang akan kita olah. Saatnya kita memperdalam dengan visualisasi. Kita akan melihat 2 tipe plots

  • Univariate plot untuk memperdalam pengetahuan tentang masing-masing attribute
  • Multivariate plot untuk mempelajari tentang relasi antar attribute.

Univariate Plot

Kita akan memulai membuat plot untuk masing-masing variable. Kita beruntung karena semua attribute adalah numerik sehingga kita dapat menggunakan box and whisker plot untuk setiap attribute.

image

Untuk mengetahui bagaimana cara membaca whisker plot anda dapat mengikuti tutorial di khanacademy berikut ini.

https://www.khanacademy.org/math/probability/data-distributions-a1/box–whisker-plots-a1/v/constructing-a-box-and-whisker-plot 

 

Kita juga dapat membuat histogram untuk setiap input variable untuk mendapatkan gambaran mengenai probability distribution.

image

Untuk mengetahui lebih lanjut mengenai cara membaca atau membuat histogram anda dapat mengikuti tutorial di khan academy berikut ini

https://www.khanacademy.org/math/probability/data-distributions-a1/displays-of-distributions/v/histograms-intro

Dari gambar tersebut dapat disimpulkan bahwa 2 variable memiliki Gaussian distribution. Hal ini berguna karena kita dapat menggunakan machine learning algorithm yang bekerja bagus dengan tipe Gaussian distribution.

Untuk mengetahui lebih lanjut mengenai gaussian distribution anda dapat mengikuti tutorial di khanacademy.

https://www.khanacademy.org/math/probability/normal-distributions-a2 

Multivariate Plot

Mari kita lanjutkan dengan melihat interaksi antar attribute/variable. Kita akan menggunakan scatter plot untuk pasangan semua attribute yang ada. Plot ini sangat baik digunakan untuk melihat relasi antar struktur dari variable masukan.

 

image

Kita dapat melihat bahwa terdapat struktur diagonal pada scatter plot beberapa attribute hal ini menunjukkan korelasi yang tinggi antar variable tersebut.

Pelajari scatter plot dari khan academy

https://www.khanacademy.org/math/probability/scatterplots-a1/creating-interpreting-scatterplots/v/constructing-scatter-plot

 

Selanjutnya kita akan melanjutkan ke bagian yang paling menarik. Akhirnya kita akan melakukan evaluasi terhadap machine learning algorithm !!

 

Semakin menarik !

 

Cheers

Categories: Uncategorized

Machine Learning “Hello World” – Part 02 – Loading dan Summary

April 18, 2017 Leave a comment

 

image

 

Pada tutorial ini kita akan membahas bagaimana python dapat digunakan untuk melakukan pembangunan aplikasi machine learning. Untuk meningkatkan kepercayaan diri kita perlu melihat pengunaan python secara end to end. Artinya kita mengabungkan semua unsur yang diperlukan dalam machine learning. Seperti loading data, menampilkan descriptive statistics dan summary, sedikit visualization dan membandingkan 6 machine learning model.

Machine learning merupakan experimental science, jadi kita harus mencoba coba teknik yang menghasilkan hasil yang cukup akurat dan dapat diterima. Jadi tidak ada the best machine learning algorithm, semuanya tergantung hasil dari experiment kita, feature (attribute) yg digunakan sebagai input dan juga setting dari parameter yang digunakan.

image

 

Project kecil yang bisa dijadikan sebagai awal adalah mengklasifikasikan atau mengkategorikan jenis bunga iris. Iris dataset adalah dataset yang bagus untuk project pertama dikarenakan dataset tersebut sudah dipahami dengan baik.

Attribute nya semuanya adalah numeric sehingga kita tidak perlu melakukan feature engineering terlalu dalam. Kita tidak perlu melakukan standarisasi atau normalisasi terhadap data numeric karena datanya memiliki scala yang sama dan unit yang sama.

Hanya memiliki 4 attribute ( feature ) dan 150 rows ( instance ) sehingga bisa di load semuanya ke memory.

Dalam tutorial ini kita akan melakukan project kecil secara end to end. Berikut adalah overview dari hal-hal yang akan kita lakukan

  1. Loading dataset
  2. Melakukan summary terhadap dataset
  3. Memvisualisasikan dataset
  4. Melakukan evaluasi terhadap algorithm
  5. Melakukan prediksi terhadap dataset

Pahami setiap step by step dan sangat di harapkan anda mengetikkan semua command sendiri sehingga mendapatkan feel dari pemrograman machine learning.

Mari kita masuk ke tutorial pertama

 

Import Library

Pertama sekali yang kita lakukan adalah melakukan import terhadap semua library yang dibutuhkan.

image

Pastikan semuanya dapat di load tanpa error. Jika terjadi error pastikan anda telah menginstall pandas dan juga scipy dari package manager conda.

Loading Dataset

Iris dataset dapat di download dari site berikut ini.

https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data

Simpan file tersebut dengan nama iris.data.csv.

Kita akan menggunakan pandas untuk me load data. Kita juga akan menggunakan pandas untuk melakukan eksplorasi deskriptif statistics dan visualization. Perhatikan bahwa kita mencantumkan nama untuk setiap column pada saat me load data. Ini akan membantu kita dalam mengekspolore data kemudian.

image

 

Explorasi Dataset

Sekarang saatnya kita melihat isi dan struktur dari data yang baru saja kita load. Hal-hal yang akan kita lihat adalah

  1. Dimensi dari dataset
  2. Keseluruhan data
  3. Statistical Summary dari semua attribute
  4. Breakdown dari data berdasarkan class variable.

Tenang saja, masing-masing hanya butuh eksekusi satu command saja. Dan command tersebut akan berguna untuk project-project machine learning berikutnya.

Dimensi dari Dataset

Kita dapat melihat berapa instance ( baris ) yang ada dan berapa banyak attribute ( kolum ) yang dipunyai oleh data dengan property shape pada pandas.

image

Dari sini kita dapat mengetahui bahwa ada 150 baris atau instance dan 5 attribute atau feature.

Struktur data.

Ada baiknya jika kita melihat-lihat bagaimana sebenarnya bentuk data dan formatnya. Kita dapat mengambil sample beberapa data dari atas.

image

Dari sini anda dapat mengambil beberapa kesimpulan dengan melihat 20 row pertama. Semua attribute adalah numeric, dan class yng akan dikategorikan adalah string. Kita juga melihat bahwa semuanya tidak ada yang mengandung nilai null. Hal ini akan kita pastikan lagi lebih jauh di explorasi berikutnya.

Statistical Summary

Sekarang kita dapat melihat summary dari setiap attribute. Hal ini mencakup count, mean, min dan max value juga percentile.

image

Disini kita dapat melihat bahwa semua attribute yang berisi numerik atau angka memiliki scale yang sama dan diantara 0 sampai dengan 8 centimeters. Kita juga dapat melihat count nya sama semua yaitu 150 dimana hal ini menunjukkan bahwa tidak ada missing value atau null value.

Class Distribution

Mari kita melihat jumlah dari instance ( baris ) yang terdapat pada setiap kelas. Kita dapat melihat ini dengan nilai absolute.

image

Kita dapat melihat bahwa semua kelas memiliki jumlah instance yang sama. 33% dari dataset.

Pada tutorial ini kita telah melakukan loading data dan summary terhadap data set. Pada pertemuan berikutnya kita akan memvisualisasikan dataset dengan matplotlib di python.

 

Happy exploring

 

Cheers

Categories: Machine Learning