Hai TS! Kembali lagi soal outlier, kita akan melanjutkan bahasan kita yang ada disini dan mengenal lebih jauh bagaimana mendeteksi dan menangani outlier.

 

Mendeteksi Outlier

Sebelum kita mendeteksi outlier, kita perlu melihat kembali dataset kita dan menentukan manakah dan seberapa banyak fitur yang diperhitungkan untuk mendeteksi outlier (univariat atau multivariat), dan bagaimana distribusi nilai dari fitur tersebut (parametrik atau non-parametrik).

Beberapa metode yang dapat digunakan:

  • Visualisasi Data

Visualisasi membantu dalam memperlihatkan outlier yang ada di data kita.

Histogram

Histogram cocok untuk memvisualisasikan data univariat untuk menemukan outlier dengan memberikan gambaran central tendency dan kesimetrisan data observasi. Histogram membagi range nilai kedalam beberapa kelompok, lalu menunjukkan berapa kali data jatuh ke masing-masing kelompok pada bar chartnya. Outlier akan terlihat berada terletak jauh di sebelah kiri atau kanan histogram.

Gambar 1. Histogram Yang Menunjukkan Outlier

Sumber: Biostatistics – University of Florida

 

Boxplot dan Inter Quartile Range (IQR)

Boxplot (atau dikenal sebagai diagram box dan whisker) menggambarkan kelompok data numerik secara grafis yang menggambarkan ukuran central tendency, keragaman data observasi, dan bentuk distribusi data (skewness). Boxplot memberikan 5 ukuran:

  • Nilai observasi terkecil
  • Kuartil pertama (Q1) atau kuartil terendah, yang memotong 25% nilai terendah
  • Kuartil kedua (Q2) yakni median atau nilai pertengahan
  • Kuartil ketiga (Q3) atau kuartil tertinggi, yang memotong 25% nilai tertinggi
  • Nilai observasi terbesar

Inter Quartile Range (IQR) disebut juga midspread atau middle 50% atau H-spead, merupakan ukuran dispersi statistik dan rentang dimana 50% data berada. IQR = Q3 – Q1.

Gambar 2. Boxplot dengan Outlier dan Ukurannya

Sumber: towardsdatascience.com

 

Garis yang merupakan perpanjangan dari box (dari kiri ke kanan atau atas ke bawah jika boxplot berbentuk vertikal) dinamakan whisker. Jika suatu observasi berada di luar batas whisker maka akan dikategorikan sebagai outlier atau nilai ekstrem.

  • Nilai outlier:

Outlier atas jika nilainya berada di antara Q3 + (1.5 x IQR) dan Q3 + (3 x IQR)

Outlier bawah jika nilainya berada di antara Q1 – (1.5 x IQR) dan Q1 – (3 x IQR)

  • Nilai esktrem:

Ekstrem atas jika nilainya berada di atas Q3 + (3 x IQR)

Ekstrem bawah jika nilainya berada di atas Q3 + (3 x IQR)

Selain membantu menemukan outlier, boxplot juga membantu dalam memahami distribusi data kita. Median dalam box menunjukkan pusat penyebaran datanya (mean) san kesimetrisan dari distribusi data serta panjang box menunjukkan keragaman dan tingkat penyebaran datanya.

  • Jika data berdistribusi normal, maka garis median berada di tengah box, panjang whisker sama, dan diharapkan tidak terdapat nilai outlier atau ekstrem
  • Jika data tidak simetris (skewed), maka garis median tidak terletak di tengah box dan panjang whisker lebih panjang. Terjadi positive skeweness jika outlier berada di bagian atas (atau kanan) boxplot dan whisker bagian atas (atau kanan) lebih panjang. Terjadi negative skewness jika outlier berada di bagian bawah (atau kiri) boxplot dan whisker bagian bawah (atau kiri) lebih panjang.

Gambar 3. Distribusi Data: Normal, Negatively Skewed, Positively Skewed

Sumber: researchgate.net

Gambar 4. Boxplot dan Histogram dengan Outlier

Sumber: researchgate.net

 

Scatter Plot

Scatter plot cocok digunakan untuk memvisualisasikan data multivariat sehingga dapat digunakan untuk mendeteksi outlier multivariat. Sebagai contoh, scatterplot menunjukkan koleksi obervasi dengan sumbu x-nya mewakili variabel independen (berat siswa) dan sumbu-y nya mewakili variabel dependen (berat tas). Di kasus ini (scatter plot dua dimensi), terlihat dua outlier yakni anak bernama Sharon dan Brad yang terletak jauh dari data observasi lainnya. Selain dua dimensi, scatter plot juga dapat menunjukkan outlier dengan scatter plot tiga dimensi.

                                2 Dimensi                                                                           3 Dimensi

Gambar 5. Ilustrasi Scatter Plot 2D dan 3D dengan Outlier

 

  • Z-Score

Z-Score merupakan salah satu metode parametrik untuk mendeteksi outlier yang mengukur seberapa besar standar deviasi dari sebuah data observasi dari meannya. Implementasinya hanya bisa digunakan untuk dimensi low dimentional dimana ukuran datasetnya kecil ke medium. Z-Score menstandardiasi data dengan asumsi distribusi gaussian (normal) dengan mean 0 dan standar deviasinya 1.

Dimana  adalah data observasi ke-i,  adalah rata-rata seluruh observasi, dan  adalah standar deviasi dari seluruh observasi.

Sebuah observasi dikatakan outlier jika data yang telah ternormalisasi memiliki nilai absolut ( yang lebih dari nilai threshold berupa 2.5, 3, atau 3.5 (bisa dipilih sesuai kebutuhan).

Gambar 6. Standar Deviasi Untuk Distribusi Normal

Sumber: towardsdatascience.com

  • Jarak Mahalanobis

Metrik jarak yang paling sering kita dengar dan juga paling sering digunakan dalam mengukur jarak antara dua poin adalah jarak Euclidean. Namun, dalam pendeteksian outlier, penggunaan jarak Euclidean kurang cocok. Hal ini dikarenakan, jika terdapat korelasi antar variabel maka jarak Euclidean akan memberikan weight lebh besar dari seharusnya di variabel yang saling berkorelasi (yang akan berujung misleading). Contohnya dengan gambar berikut:

Gambar 7. Jarak Euclidean untuk data yang tidak berkorelasi (kiri) dan data yang berkorelasi (kanan)

Sumber: machinelearningplus.com

 

Dari gambar terlihat bahwa kedua poin memiliki jarak eucliden yang sama dari center. Namun hanya poin yang berwarna biru yang sebenarnya dekat dengan cluster. Euclidean tidak dapat menentukan sebenarnya seberapa dekat poin ke distribusi poinnya.

Maka, digunakanlah jarak Mahalanobis yang lebih robust dimana Mahalanobis merupakan jarak antara poin dan distribusi sehingga disebut jarak “multivariat”.

Yang dilakukan jarak Mahalanobis (untuk mengatasi kelemahan Euclidean):

  1. Mengubah kolom menjadi variabel yang tidak berkorelasi
  2. Scale kolomnya untuk menjadikan variansinya 1
  3. Menghitung jarak Euclideannya

Rumus jarak Mahalanobis:

Dimana:

D2 = Kuadrat Jarak Mahalanobis

x = vektor observasi (baris dalam dataset)

m = vektor dari nilai mean dari variabel independen (rata-rata dari setiap kolom)

C-1 = invers matriks kovarians dari variabel independen

 

  • DBSCAN (Density-Based Spatial Clustering of Application with Noise)

DBSCAN merupakan model proximity-based outlier detection dan salah satu metode non-parametrik dan unsupervised untuk mendeteksi outlier yang didasari metode clustering dalam satu atau banyak dimensi. DBSCAN menggunakan implementasi Sci-kit learn dan merupakan metode yang sangat efektif ketika distribusi dari data kita tidak dapat ditentukan. DBSCAN adalah algoritma clustering berdasarkan kepadatan (density based) yang memperhatikan density (MinPts) data-data dari suatu neighborhood (radius ε) (dengan menggunakan jarak Euclidean atau jarak lainnya) dan memutuskan apakah mereka berada di cluster yang sama atau tidak. Jika suatu observasi atau poin berada jauh dari poin lain maka dianggap sebagai outlier dan diberi label -1.

DBSCAN memerlukan 3 parameter untuk proses klasterisasi:

  • K: lebar atau jumlah poin
  • Eps: jarak maksimal antara 2 poin yang diijinkan dalam satu cluster.
  • MinPts, adalah jumlah minimal poin sehingga sebuah cluster dapat terbentuk.

Dalam DBSCAN, setelah proses klasterisasi, semua data didefiniskan sebagai Core Point, Border

Point, dan Noise Point.

  • Core Point merupakan poin yang berada dalam satu klaster yang poin tetangga (neighborhood)-nya paling tidak berjumlah sama atau lebih dari MinPts.
  • Border Point merupakan poin yang berada dalam suatu klaster namun jumlah neighborhoodnya < MinPts (tetapi tetap ‘density reachable).
  • Noise Point adalah outlier yang tidak ada dalam cluster dan tidak ‘density reachable’.

Gambar 8. Ilustrasi Core, Border, dan Noise Point

Sumber: Implementasi Metode Density Based Spatial Clustering of Application with Noise Untuk Mencari Arah Penyebaran Wabah Demam Berdarah. (Yuwono, A. et al.)

                Kesulitan dalam DBSCAN yakni pemilihan parameter yang optimal karena ketergantungan

DBSCAN terhadap ketiga parameternya.

 

  • kNN (K-Nearest Neighbor)

Selain metode DBSCAN diatas yang merupakan model proximity-based outlier detection dan non-parametrik, terdapat algoritma lain yang juga didasari metode clustering yakni kNN. kNN mengklasifikan data berdasarkan similaritas dalam metrik jarak seperti Euclidean, Manhattan, atau jarak lainnya.

 

  • PCA (Principle Component Analysis)

PCA atau Principal Component Analysis adalah analisis multivariat yang mentransformasi variabel-variabel asal yang saling berkorelasi menjadi variabel-variabel baru yang tidak saling berkorelasi dengan mereduksi sejumlah variabel tersebut sehingga punya dimensi yang lebih keci namun dapat menerangkan sebagian besar keragaman variabel aslinya. Hasil yang ingin didapatkan adalah komponen utama/principal component yang merupakan kombinasi linear dari variabel asal yang dapat menjelaskan variansi data keseluruhan dengan baik.

PCA resisten terhadap outlier serta cocok mengatasi data berdimensi tinggi. PCA mengukur jarak masing-masing observasi dari pusat data untuk deteksi anomali. Jarak dihitung berdasarkan sum of square dari skor principal component yang standardized.

Algoritma PCA mentransform data ke sistem koordinat baru. Seperti ilustrasi berikut:

Gambar 9. Pendeteksian Outlier dengan PCA

Sumber: help.sap.com

 

  • Isolation Forest

Isolation forest adalah model outlier ensemble dan salah satu metode non-parametrik untuk dataset yang besar dalam satu atau banyak dimensi. Algoritmanya mengisolasi setiap data dan membaginya menjadi outlier atau inliner. Pembagiannya bergantung kepada seberapa lama untuk membagi poin-poinnya atau seberapa banyak isolation numbernya (jumlah isolasi).

Untuk mengisolasi atau mendeteksi outlier, diperlukan isolation number atau split (pembagian) yang lebih sedikit dibandingkan mengisolasi inliner (data non-outlier).

Gambar 10. Ilustrasi Isolasi Outlier

Sumber: quantdare.com

 

Menangani Outlier

Setelah mengetahui bagaimana cara mendeteksi oulier, kita akan membahas bagaimana menangani (dan mendeteksi) outlier yang kita temui atau deteksi dengan Python. Sebelum melangkah lagi, ada baiknya kita mengetahui kapan kita dapat membuang outlier, kapan tidak dalam ‘Berkenalan dengan Outlier (Part 1)’.

Jika kita ingin menghapus outlier, terdapat beberapa metode trimming dan penggantian yang dapat dilakukan:

  • Z-Score
  • IQR (Inter Quartile Range)
  • Winsorization

Winsorization adalah salah satu cara untuk meminimalkan influence dari outlier dalam data tanpa menghapus outlier namun menggantikannya dengan weight yang lebih kecil (nilai yang lebih dekat dengan poin lainnya).

  • Mengganti outlier dengan mean atau median

 

Jika kita ingin mempertahankan outlier, yang dapar kita lakukan:

  • Transformation

Transformasi yang dapat dilakukan untuk meminimalkan efek outlier (karena transformasi membentuk normalitas dalam distribusi data) adalah dengan transformasi logaritma atau akar kuadrat (square root)

  • Membuat dua analisis data dengan dan tanpa outlier
  • Memisahkan antara outlier dan non-outlier, lalu menganalisisnya secara terpisah

 

Untuk lebih paham, kita dapat mencoba hands-on ke data. Berikut, code atau simulasi untuk metode pendeteksian dan penanganan outlier (yang disebutkan di atas) bisa dicek disini.

Selain package-package umum yang biasa digunakan seperti sklearn, numpy, matplotlib, dllnya yang dapat digunakan untuk mendeteksi outlier, terdapat salah satu package Python yang khusus untuk pendeteksian outlier data multivariat bernama PyOD.

 

Demikian perjalanan kita dalam mengenal outlier! Outlier mungkin memang terlihat sebagai momok ketika kita menganalisis data, namun sebenarnya mereka juga penting untuk diperhatikan bahkan diolah. Semoga dengan tulisan ini, dapat membantu para TS sekalian memahami outlier baik dalam mendekteksinya dan menanganinya yaa.

 

Semangat terus dan sampai bertemu di tulisan lainnya!

 

Link Notebook (Google Colab):

https://colab.research.google.com/drive/19IjkPIBbtiuwhYfXvdbBueXEQ_iRPizh

 

 

 

Referensi:

Deepthi, A. S., Rao, K. V. (2014). Anomaly Detection Using Principal Component Analysis.

Yuwono, A. et al. (2009). Implementasi Metode Density Based Spatial Clustering of Application with Noise Untuk Mencari Arah Penyebaran Wabah Demam Berdarah. Diakses di: https://media.neliti.com/media/publications/79802-ID-implementasi-metode-density-based-spatia.pdf

https://help.sap.com/viewer/6a2cd93857fd4973baa558931701afcd/1.0.3/en-US/bd98a950503e4277ae9acb3274ddc9a4.html

https://humansofdata.atlan.com/2018/03/when-delete-outliers-dataset/

https://towardsdatascience.com/a-brief-overview-of-outlier-detection-techniques-1e0b2c19e561

https://towardsdatascience.com/ways-to-detect-and-remove-the-outliers-404d16608dba

https://towardsdatascience.com/5-ways-to-detect-outliers-that-every-data-scientist-should-know-python-code-70a54335a623

https://www.kdnuggets.com/2018/12/four-techniques-outlier-detection.html

https://www.kdnuggets.com/2019/06/overview-outlier-detection-methods-pyod.html

https://smartstat.wordpress.com/2010/11/03/mengenal-box-plot-box-and-whisker-plots/

https://www.mikulskibartosz.name/outlier-detection-with-scikit-learn/

https://quantdare.com/isolation-forest-algorithm/

https://www.machinelearningplus.com/statistics/mahalanobis-distance/

One Thought on “Berkenalan dengan Outlier (Part 2)”