Anda di halaman 1dari 8

YAML

category: "Course Notes"

real-name: "Dealing with Outliers"

by: "Alfarizi"

content:: Dev
field-related:: Machine Learning and Data Science
course-name:: Python for Machine Learning and Data Science Masterclass
up:: 20220421CN - Chapter 11 - Feature Engineering and Data Preparation
prev:: 20220421CN - Introduction to Feature Engineering and Data Preparation
creation-date:: 2022-04-22
tags:: #course/notes

✧✦✧

Dealing with Outliers

Notes

Outliers

Data Outliers merupakan data yang terlihat tidak make-sense.


Misalnya: Umumnya kos yang masih kosongan mempunyai harga sewa 350rb hingga
600rb per-bulan nya. Namun ternyata terdapat 1 data yang menujukkan bahwa harga sewa
kos nya 1 juta per-bulan nya. Apakah kos tersebut benar-benar masih kosongan?
Data outliers perlu kita bersihkan (buang) agar tidak merusak model ML.
Saat menentukan data outliers, kita perlu mempertimbangkan hal berikut:
Range Data
Seperti di contoh atas, kita menspesifikasikan bahwa range harga sewa kos kosongan
berkisar 350rb hingga 600rb.
Terdapat juga metodologi dalam mencari range data, yakni:
InterQuartile Range (dibahas di bagian ini)
Standard Deviation (tidak dibahas di bagian ini)
Visualized or Domain Limit Value (sedikit dibahas karena menggunakan plot,
namun tidak dibahas lebih mendalam)
Percentage Data
Yakni banyak nya data yang termasuk ke dalam data outliers.
Data yang termasuk ke dalam data outliers, kalau bisa tidak boleh lebih dari 10% dari
keseluruhan data.
Misalkan: Terdapat 100 data, dan ternyata 25% nya masuk ke dalam outliers. Maka
kemungkinan nya:
1. Terdapat kesalahan dalam mengumpulkan data (−).
2. Terdapat kesalahan dalam menentukan range data outliers (−).
3. Data yang kita peroleh memang cukup bervariasi, dan bisa jadi akan
menggeneralisasi model ML nya nanti (+).

Note

Jika sejak awal kita sudah menetapkan range data outliers nya, maka model ML yang
terbentuk akan hanya dapat digunakan untuk range pada data tersebut.
Misalnya:
1. Kita tadi sudah menentapkan range data dari 350rb - 600rb untuk sewa kos kososngan
di daerah jogja.
2. Setelah di-lihat persentase data yang masuk ke dalam outliers, diperoleh 5% data
termasuk ke dalam outliers (which is normal).
3. Data tersebut kemudian dimasukkan ke model ML.
4. Model ML tersebut hanya dapat digunakan untuk memprediksi kos yang mempunyai
features (features nya berupa harga) berkisar 350rb - 600rb. Untuk features yang ber-
harga diatas 600rb, maka kemungkinan akan terdapat ketidaksesuaian dengan data
yang digunakan di model ML, sehingga kemungkinan akan diperoleh prediksi yang
mempunyai error cukup tinggi.

Jupyter TIME!
Mencari Data Outliers

Disini hanya dicontohkan mencari outliers menggunakan Inter-Quartile Range. Untuk lebih
lengkapnya mengenai inter-quartile range, bisa baca (20220422SL 2000) How to Make
Box and Whisker Plot.

Misalkan ada data age seperti berikut:


Jika kita lakukan box-plot, diperoleh:

Terlihat ada 1 data yang termasuk ke data outliers.


Bagaimana cara kita tahu range data nya? Kita dapat menggunakan InterQuartal Range:
Terlihat bahwa lower_limit = 22.125 , sedangkan pada data terlihat bahwa ada 1 data
yang kurang dari 22.125, yakni 16:

Data 16 inilah yang menjadi data outliers.

Tip
Kita bisa menggunakan np.percentile() untuk mencari kuartal 1, kuartal 3, dan IQR nya.

Untuk menghapus yang termasasuk dalam data outliers, kita dapat menggunakan filter pada
pandas (seperti pada umumnya):
Info

Terkadang, kita punya limit fix. Misalnya: Pada data voting, pastinya orang yang berusia kurang
dari 18 tahun tidak akan di-izinkan untuk ikut voting. Untuk itu kita bisa langsung filter untuk data
yang kurang dari 18 tahun.
Pentingnya Domain Knowledge dalam Mengeliminasi Data Outliers

Seperti yang telah dicontohkan sebelumnya, bahwa outliers dapat dicari kemudian dieliminasi
dengan gampang. Namun, pada dasarnya Domain Knowledge jauh lebih dipertimbangkan
daripada pencarian outliers seperti Inter-Quartile Range.
Domain Knowledge adalah suatu kemampuan untuk memahami suatu data. Jika diri-kita tidak
terlalu paham mengenai data tersebut, maka kita dapat tanya ke yang ahli (expertise).
Misalkan ada data yang di-plot scatter seperti ini:

Sepertinya
merupakan
data outliers

Terlihat bahwa sepertinya terdapat 3 data outliers. Hal ini dikarenakan seiring area ruang
keluarga meningkat, tapi harganya tidak terlalu meningkat. Kayak aneh gitu kan.
Untuk mengatasi hal tersebut kita bisa melakukan dropping data:
Namun, muncul pertanyaan: Bagaimana jika emang data nya seperti itu? Bagaimana jika 3
data tersebut merupakan data terbaru yang diperoleh beberapa hari ini, sedangkan data
lainnya itu diperoleh 1 tahun sebelumnya. Jadi mungkin emang sekarang harganya lagi turun
banget kayak gitu (mungkin dampak dari Covid?).
Disitulah Domain Knowledge cukuplah penting. Data seperti itu dapat dipertimbangkan,
sehingga lebih tahu mana data yang memang akurat.

Related
 (20220422SL 2000) How to Make Box and Whisker Plot
 20220421CN - Chapter 11 - Feature Engineering and Data Preparation
 20220421CN - Introduction to Feature Engineering and Data Preparation
 20220513CN - Dealing with Missing Data - Part One - Evaluation of Missing Data
 Machine Learning and Data Science
 Python for Machine Learning and Data Science Masterclass

Anda mungkin juga menyukai