Jumat, 24 Mei 2019

Berkompetisi di Kaggle Perkenalan dengan Platform ,Dataset, Menambahkan Fitur & Melakukan prediksi sederhana



Berkompetisi di Kaggle   Perkenalan dengan Platform dan Dataset


image
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
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 !

Melakukan prediksi sederhana

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.

Menambahkan Fitur

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.
sumber
https://weltam.wordpress.com/2017/04/20/berkompetisi-di-kaggle-part-1-perkenalan-dengan-platform-dan-dataset/
https://weltam.wordpress.com/2017/04/21/berkompetisi-di-kaggle-part-2-menambahkan-fitur/
https://weltam.wordpress.com/2017/04/20/berkompetisi-di-kaggle-part-1-melakukan-prediksi-sederhana/

Tidak ada komentar:

Posting Komentar