Titanic Probability Surviving with Naive Bayes

Fira Yusi Rukmana

Sosial Media


4 orang menyukai ini
Suka

Summary

Portofolio ini dikerjakan untuk melengkapi tugas akhir free course bisa.ai Data Science yang saya ikuti. Tugas yang diberikan yaitu membuat klasifikasi data menggunakan machine learning dengan jupyter notebook pada komputer ataupun google colaboratory dengan mengambil dataset dari kaggle.com. Studi kasus yang diambil yaitu menganalisis dataset titanic dan memprediksi survived dari penumpang kapal. Metode yang digunakan yaitu:

  1. Melakukan exploratory data analysis untuk memahami karakteristik dataset yang digunakan
  2. Melakukan pre-processing data sebelum dianalisis seperti missing value, transformation data, dan lain-lain
  3. Melakukan pembelajaran model menggunakan algoritma klasifikasi naive bayes dan menguji hasil model yang telah dibangun

Hasil yang diperoleh yaitu dari 12 kolom, hanya 7 kolom yang digunakan untuk analisis data. Akurasi yang diperoleh dari algortima naive bayes yaitu 82%.

Description

Description 

Classification yaitu proses memprediksi kelas atau label dalam sebuah kumpulan dataset yang terdiri dari variabel dependent atau atribut. Metode classification diterapkan pada data supervised yaitu data yang telah memiliki label atau kelas. Untuk melakukan klasifikasi, saya menggunakan salah satu algoritma dari machine learning yaitu naive bayes. Naive bayes adalah metode klasifikasi data berdasarkan probabilitas dari suatu peristiwa yang telah terjadi. Metode ini cocok untuk klasifikasi binner dan multiclass. Teknik ini dapat dimanfaatkan untuk mengevaluasi banyak hal, seperti perkiraan cuaca. Perkiraan cuaca akan memprediksi apakah besok akan cerah atau tidak dan lain sebagainya. 

 

Dataset

Dataset yang digunakan berdasarkan dari data open source kaggle (https://www.kaggle.com/code/abhishekmamidi/titanic-data-preprocessing-and-visualization/data?select=train.csv)  yang mana jumlah data sebanyak 891 baris dengan 12 kolom yang terdiri dari:

  • PassengerId: nomor id penumpang
  • Survived: kolom target, 1 = Yes dan 0 = No
  • Pclass: kelas tiket penumpang, 1, 2 dan 3
  • Name: nama penumpang
  • Sex: jenis kelamin penumpang
  • Age: usia penumpang
  • SibSp: jumlah saudara yang dimiliki
  • Parch: jumlah orang tua yang dimiliki
  • Ticket: kode tiket penumpang
  • Fare: tarif harga tiket penumpang
  • Cabin: lokasi kabin penumpang
  • Embarked: tujuan penumpang 

Dataset ini nantinya akan di-split untuk dijadikan sebagai data training dan data testing. Sebelum itu data harus dipastikan bersih, tidak terdapat data kosong dan format data sesuai (tidak berantakan). 

 

Exploratory Data Analysis

Pada tahap ini langkah yang dilakukan yaitu pertama mengetahui tipe data pada masing-masing kolom. Hasil yang ditemukan kita harus melakukan encoding pada beberapa kolom seperti kolom ‘sex’ yang masih memuat nilai female dan male

Kemudian kita mengecek apakah terdapat data kosong. Ternyata ada 3 kolom yang memuat data kosong yaitu age, cabin dan embarked. Untuk kolom age bisa kita handling dengan menggunakan median atau mean. Kemudian untuk kolom cabin, karena dirasa tidak begitu memiliki pengaruh pada proses analisis maka bisa di hapus. Dan untuk kolom embarked hanya terdapat 2 data kosong, maka 2 data tersebut bisa kita hapus karena tidak terllau banyak jumlah data kosongnya. 

Kemudian memahami satu per satu deksripsi masing-masing kolom dan nilai yang merepresentasikan dari sebuah data objek. Dari hasil tersebut ternyata kolom pasenger, name, dan ticket tidak memiliki pengaruh pada target. Sehingga bisa dihapus. Kemudian kita bisa membuat kolom baru untuk menjumlahkan antara kolom jumlah sibsp dan parch.

Selanjutnya saya melakukan visualisasi data terhadap beberapa kolom, hasil yang ditemukan sebagai berikut:

  • Jumlah penumpang yang tidak selamat jauh lebih banyak dibandingkan penumpang yang selamat. Yakni yang tidak selamat 549 dan yang selamat berjumlah 342
  • Jumlah penumpang yang memilih kelas 3 jauh lebih banyak dibandingkan penumpang yang memilih kelas 1 dan 2. Namun kemungkinan bertahan hidup penumpang kelas 1 jauh lebih tinggi dibandingkan kelas 3 dan 2. Asumsi sementara, kelas 1 memiliki fasilitas atau layanan keselamatan yang lebih canggih ketimbang kelas dibawahnya yaitu kelas 2 dan 3
  • Jumlah penumpang paling banyak berjenis kelamin laki laki. Yaitu 577 laki laki dan 314 untuk perempuan. Namun kemungkinan bertahan hidup perempuan justru lebih tinggi ketimbang laki laki
  • Jumlah penumpang keberangkatan S jauh lebih banyak, namun kemungkinan bertahan keberangkatan C lebih tinggi
  • Penumpang kebanyakan tidak membawa saudaranya, artinya mereka berangkat sendiri. Namun, penumpang yang membawa saudranya berjumlah 1 kemungkinan bertahan jauh lebih tinggi dibandingkan mereka yang sendiri. Sama halnya di kolom parch

 

Pre-Processing

Setelah itu masuk ke tahap pre-processing. Pada tahap ini hal yang dilakukan yaitu: 

  • Menghapus kolom yang tidak memiliki kontribusi pada kolom target seperti kolom passengerId, ticket, dan cabin
  • Kemudian membuat kolom baru hasil penjumlahan dari kolom SibSp dan parch
  • Dan selanjunya melakukan encoding pada kolom sex, embarked dan kolom name (untuk diambil gelarnya saja seperti Mr, Miss, Mrs dll). Selain gelar tersebut maka gelar akan dikategorikan menjadi others

Hasil dataset yang diperoleh dari tahap ini yaitu 891 baris dan 8 kolom. Kemudian masing masing kolom memuat tipe data integer atau float sehingga dataset siap untuk dilakukan modelling. Sebelum melakukan modelling, saya mencoba mencari nilai korelasi dari masing-masing kolom, hasil yang didapat yaitu sebagai berikut:

Korelasi terbagi menjadi dua nilai yaitu korelasi positif dan korelasi negatif, sehingga nilai yang mendekati tengah atau 0 artinya tidak memiliki korelasi. Dari hasil korelasi tersebut didapatkan beberapa kesimpulan yaitu:

  • Kolom survived memiliki korelasi dengan kolom title (name), pclass, age dan embarked
  • Kolom pclass dan kolom embarked memiliki korelasi dengan fare. Secara logika memang semakin tinggi kelas yang dipilih maka tarif yang dikenakan semakin tinggi pula
  • Kolom sex memiliki korelasi dengan tittle. Dari hasil analisis kolom title diambil dari gelar dari kolom name. Dan gelar yang diberi pun menyesuaikan gender 

Dari hasil yang diperoleh pada perhitungan korelasi, kita bisa menggunakan atau memilih atribut yang memiliki kontribusi atau memiliki korelasi paling tinggi dengan target yaitu kolom title, pclass, age.

Sebelum masuk ke tahap modelling kita harus membedakan antara data atribut dan data target. Setelah itu kita membagi dataset menjadi data training dan data testing. Pembagian antara data training dan data testing yaitu 70% dan 30%. 

 

Modelling

Pada tahap ini yang dilakukan yaitu melakukan pelatihan pada data training dengan menggunakan algoritma naive bayes. Algoritma naive bayes merupakan salah satu algoritma kalsifikasi pada machine learning. Algortima ini bisa dikatakan sederhana karena hanya melakukan prediksi berdasarkan peluang dari sebuah kejadian yang telah terjadi. 

Pada tahap ini dilakukan 4 jenis data yaitu:

7 kolom terdiri dari kolom: Pclass, Sex, Age, Fare, Embarked, FamilySize, Title

3 kolom terdiri dari kolom: Title,Ppclass, Age

 

No

Jumlah kolom yang digunakan

Normalisasi

Akurasi

1

7 kolom

Tidak

0.80

2

7 kolom

Ya

0.82

3

3 kolom

Tidak

0.75

4

3 kolom

Ya

0.73

            

Dari hasil diatas kita bisa melihat ternyata model yang dibangun dari 7 kolom secara rerata akurasi yang dihasilkan cukup baik. Bisa diartikan bahwa nilai korelasi yang digunakan untuk memilih atribut apa yang akan dianalisis sepenuhnya kurang tepat. Hal tersebut bisa dilihat dari akurasi dengan menggunakan 3 kolom. Kemudian untuk dataset yang dianalisis bernilai real atau harus melalui tahap normalisasi skala nilai masing-masing atribut ternyata akurasi yang dihasilkan tidak jauh berbeda. 

 

Source Code

https://colab.research.google.com/drive/1lJPnbg8kYDJsdCojqXEJp-CviS-oA-iK?usp=sharing

Informasi Course Terkait
  Kategori: Data Science / Big Data
  Course: Python Data Science untuk Pemula