Memahami Data Dengan Exploratory Data Analysis
Exploratory Data Analysis (EDA) adalah bagian dari proses data science. EDA menjadi sangat penting sebelum melakukan feature engineering dan modeling karena dalam tahap ini kita harus memahami datanya terlebih dahulu. Dalam artikel ini penulis menggunakan dataset house price dari Kaggle.
Proses Data Science:
- Data Preparation
- Data Cleansing
- Exploratory Data Analysis
- Feature Engineering
- Modeling
- Evaluation
- Deployment
Exploratory Data Analysis memungkinkan analyst memahami isi data yang digunakan, mulai dari distribusi, frekuensi, korelasi dan lainnya. Dalam prakteknya, curiousity sangat penting dalam proses ini, pemahaman konteks data juga diperhatikan, karena akan menjawab masalah masalah dasar.
Pada umumnya EDA dilakukan dengan beberapa cara:
- Univariat Analysis — analisis deskriptif dengan satu variabel.
- Bivariat Analysis — analisis relasi dengan dua variabel yang biasanya dengan target variabel.
- Multivariat Analysis — analisis yang menggunakan lebih dari atau sama dengan tiga variabel.
Penulis menggunakan seaborn untuk proses EDA ini, ada banyak sekali tools untuk analysis dasar, mulai dari Matplotlib sampai tableau. Karena saya bekerja biasa dengan Python dan tampilan Seaborn juga bagus.
Hal yang pertama dilihat setelah loading dataset yaitu dimensi data, dan deskripsi statistik seperti mean, median, mode, quartile, standard deviation. Figure 1 diatas menggambarkan seberapa banyak missing value di setiap variable. Dari sini bisa kita lihat PoolQC merupakan yang paling banyak missingnya. Missing value ini bisa kita masukan nilainya tergantung tipe datanya, jika tipe data kategori bisa kita input missing value dari modus, atau jika continuous bisa berupa mean / median dari variabel tersebut. Namun jika kita lihat dalam dokumentasi datasetnya, nilai N/A dalam PoolQC artinya ‘No Pool’, maka penulis mengisi nilai missing tersebut dengan ‘None’. Begitu juga dengan variabel variabel yang lainnya missing value diisi dengan None atau Mean.
Analisis yang umum dilakukan ketika target variabel berupa numerik adalah melihat histogramnya apakah berdistribusi normal atau tidak. Jika kasusnya target variabel adalah diskrit berupa binary atau multi-class dicek distribusinya balance atau tidak. Dengan histogram ini kita dapat mengetahui apakah datanya skewed atau tidak. Figure 2 diatas menunjukan data agak skewed ke kiri. Untuk membuat datanya berdistribusi normal bisa menggunakan log.
Pada dasarnya histogram sangat membantu untuk mengetahui apakah data tersebut berdistribusi normal atau tidak, sehingga kita bisa memikirkan langkah selanjutnya. karena datanya banyak yang skewed kekiri, ditahap selanjutnya kita bisa melakukan scaling baik itu standard scaler atau robust scaler.
Penulis menggunakan subplots di matplotlib untuk mendapatkan semua histogram, cara ini lebih cepat daripada satu-per-satu variabel dibuatkan histogramnya sehingga dapat mempercepat waktu analisis.
Scatterplot memberi tahu kita apakah ada hubungan antara 2 variabel. Dalam hal ini apakah ada hubungan yang linear antara variabel lain dengan sale price. Selain itu dari scatterplot ini juga bisa di-breakdown lagi berdasarkan warna dan bentuk dari tiap-tiap endpoint. selengkapnya bisa lihat di dokumentasi Seaborn.
Ground Living Area adalah salah satu variabel yang cukup linear dengan sale price. semakin besar nilal GrLvArea maka semakin tinggi pula nilai SalePrice. Maka dari itu, jika kita melihat kernel-kernel yang ada dalam kompetisi tersebut, biasanya mereka melakukan penghapusan data berdasarkan variabel ground living area yang outlier.
Figure 5 menunjukan frekuensi value dari variabel kategori. Figure diatas dapat memberi tahu kita variabel kategori tersebut sangat tidak seimbang, sehingga nantinya bisa kita modifikasi value-value yang sedikit digabung menjadi satu.
Hal yang turut diperhatikan juga ada variabel kategori tersebut memiliki banyak value seperti variabel Neighborhood. Neighborhood memiliki 25 nilai yang berbeda. Biasanya variabel kategori ini dibuat menjadi One-Hot Encoding namun jika banyak seperti ini cara tersebut menjadi tidak efektif, cara lainnya bisa menggunakan probability setiap value lalu prob yang nilainya sama digabungkan menjadi value yang sama.
Analisis korelasi menjelaskan ada atau tidaknya hubungan antar dua variabel. Nilai Korelasi bisa positif atau negatif atau lemah. Korelasi positif yang artinya jika penambahan pada nilai X maka bertambah juga nilai Y. Korelasi negatif menjelaskan hubungan setiap kenaikan nilai X maka ada penurunan pada nilai Y. Korelasi yang lemah menjelaskan dua variabel ini tidak ada hubungannya sama sekali. Biasanya korelasi dikatakan sangat kuat jika nilainya melebihi 0.7 jika kurang dari tersebut korelasi antar dua variabel tersebut lemah.
Figure 6 menggambarkan nilai korelasi antar variabel. Highlight dari figure ini adalah variabel OverallQual memiliki korelasi positif dengan SalePrice. hal ini sangat masuk akal karena variabel OverallQual menjelaskan kualitas finishing rumah yang dijual. semakin baik kualitasnya maka semakin tinggi harga rumah tersebut.
Analisis box plot menggambarkan distribusi sebuah data. Figure 7 menggambarkan sebaran data sale price terhadap year built. bisa kita lihat semakin tahun bertambah semakin banyak harga rumah yang outlier. Garis paling atas merupakan Q3 yang artinya maximum value, garis tengah adalah median, dan garis paling bawah adalah Q1. kotak tersebut menggambarkan interquartile. Namun, analisis seperti ini harus hati hati, karena mungkin saja rumah yang dibagun tidak ada hubungannya sama harga rumah jadi bisa outlier. ada faktor faktor lain yang mempengaruhi sebuah harga rumah sangat jauh berbeda walau tahun pembangunannya sama.
Figure 8 menggambarkan sebaran data ground living area dan sale price disetiap area rumah. kotak pertama menggambarkan harga rumah di area rural low density. kedua rural medium density, ketiga commerical, keempat faving, kelima rural high density. Dari lima figure tersebut rumah commercial memiliki kecenderungan dengan harga yang murah sedangkan rumah paving lebih mahal.
Bisa dilihat dataset ini lebih menjelaskan data ini dikhususkan untuk memprediksi rumah yang ada di area rural low density. Perlu diingat juga model machine learning yang dibuat sangat spesifik. Kita tidak bisa membuat model machine learning yang sangat general yang bisa dipakai mana saja. Jika tujuannya untuk mengcover semua segement semperti area yang disebutkan diatas, maka distribusi datanya juga harus seimbang.
Conclusion
Exploratory Data Analysis sangat penting untuk dilakukan sebelum tahap pemodelan. Dari analisis ini menjawab pertanyaan-pertanyaan dasar. Tentunya masih banyak analisis yang bisa dilakukan dari dataset ini dan penulis hanya membahas sebagian kecil saja. Bervariasinya variabel variabel yang tersedia kita dapat membuat variabel baru dan mencari hubungannya dengan variabel target sehingga dapat menambah informasi yang berguna untuk pemodelan. Notebook ini bisa dilihat di github Andreas Chandra.