Menemukan Outlier pada Tipe Data Numerik — Machine Learning
Dalam data preprocessing salah satu Langkah yang tidak boleh dilewatkan adalah menemukan outliers. Outlier merupakan data yang sangat berbeda dengan kumpulan data lainnya contohnya seperti seekor singa diantara gerombolan kerbau. Singa tersebut menjadi outlier karena sangat berbeda dari kumpulan hewan yang lainnya. Ada beberapa cara untuk menemukan outlier seperti
- Membuat Scatter Plot
Cara yang paling mudah adalah dengan membuat visualisasi data kedalam bentuk scatter plot, kemudian lihat lah data yang posisinya paling jauh dari kumpulan data lainnya, dengan demikian maka dapat dipastikan bahwa itu adalah outlier. Perhatikan contoh dibawah ini saya ingin menemukan outlier pada variable x
Dari scatter plot diatas bisa kita lihat bahwa data 100 termasuk outlier karena sangat jauh dari sekumpulan data yang lainnya
2. Z Score
Z Score atau biasa disebut nilai standar merupakan sebuah teknik untuk mengetahui apakah suatu data lebih besar dari mean atau lebih kecil dari mean serta untuk mengetahui seberapa jauh jarak data tersebut dari mean, jika nilai z score suatu data lebih kecil dari -2 atau lebih besar dari 2 maka bisa dikatan data tersebut adalah outlier. Rumus untuk menghitungnya adalah sebagai berikut
x = data numerik
μ = Rata Rata
σ = Nilai standar deviasi
Pertahatikan contoh dibawah ini, pada kasus kali ini kita akan menggunakan library mern, cek disini https://github.com/bluenet-analytica/mern
pip3 install mern
coding
from mern import NumericOutlier
remover = NumericOutlier()
x = [11,31,21,19,8,54,35,26,23,13,29,17]
# Z Score
print(remover.find(x, "zscore"))# output 54
dari hasil diatas bisa kita lihat bahwa 54 jaraknya sangat jauh dari nilai mean dengan demikian maka 54 dikatan sebagai outlier
3. IQR Score (Interquartile Range Score)
Cara kerja dari Iqr score adalah sebagai berikut
disini kita masih menggunakan library mern, baiklah langsung saja kita lihat contoh kode nya. perlu diketahui bahwa jika kita menggunakan library ini kita tidak perlu mengurutkan datanya karena akan otomatis diurutkan
from mern import NumericOutlier
remover = NumericOutlier()
x = [1, 2, 2, 2, 3, 1, 1, 15, -15,2, 2, 3, 1, 1, 2]
# using Inter Quartile Range Score
print(remover.find(x, "iqr"))# output [-15, 3, 3, 15]
Mengapa kita perlu menghilangkan outlier ?
Kita perlu menghilangkan outlier supaya kita mendapatkan nilai akurasi yang tinggi, contohnya seperti pada kasus regresi linear jika data kita terdapat outlier maka nilai kofisien determinasi akan menurun, oleh sebab itu kita harus menghilangkan outlier pada dataset yang kita miliki.