Jangan Biarkan Data “Aneh” Merusak Model Anda! 3 Cara Jitu Atasi Outlier.
Halo para pembelajar dan praktisi data! Sebagai seorang akademisi di bidang machine learning, salah satu “musuh” dalam selimut yang paling…
Jangan Biarkan Data “Aneh” Merusak Model Anda! 3 Cara Jitu Atasi Outlier.

Outlier
Halo para pembelajar dan praktisi data! Sebagai seorang akademisi di bidang machine learning, salah satu “musuh” dalam selimut yang paling sering saya temui dalam dataset adalah outlier. Outlier adalah titik data yang nilainya jauh berbeda dari mayortias data lainnya.
Bayangkan dari data tinggi badan sekelompok orang, lalu tiba-tiba ada satu data bernilai 5 meter. Apakah wajar? Jawabnya tidak. Nah, Itulah outlier!
Kenapa outlier ini berbahaya? Karena ia dapat mendistorsi hasil statistik dan “menipu” model machine learning. Rata-rata bisa bergeser secara drastis, dan model yang Anda latih bisa jadi sangat tidak akurat karena mencoba menyesuaikan diri dengan nilai-nilai yang tidak wajar ini.
Jadi, bagaimana cara kita menjinakkan “outlier” ini? Mari kita bedah tiga metode populer untuk menangani outlier.
1. Metode IQR (Interquartile Range)
Metode ini adalah salah satu yang paling umum dan solid. Metode ini adalah dengan menetapkan “pagar” berdasarkan sebaran data. Data apa pun yang berada di luar pagar ini dianggap sebagai outlier.
Deskripsi
Metode ini menggunakan kuartil untuk menentukan batas atas dan bawah data. Pertama, kita hitung Kuartil 1 (Q1, persentil ke-25) dan Kuartil 3 (Q3, persentil ke-75). Jarak antara keduanya disebut Interquartile Range (IQR = Q3 — Q1). Batas bawah ditetapkan pada Q1 - 1.5 * IQR dan batas atas pada Q3 + 1.5 * IQR.
Kelebihan
- Sangat efektif karena tidak bergantung pada asumsi distribusi data (misalnya, data tidak harus terdistribusi normal).
- Tangguh (robust) terhadap nilai-nilai ekstrem itu sendiri.
Kekurangan Faktor pengali 1.5 terkadang bisa terlalu kaku dan mungkin salah mengklasifikasikan beberapa data normal sebagai outlier, atau sebaliknya.
Kode python Sederhana
import pandas as pd
import numpy as np
data = {'nilai': [10, 12, 12, 13, 12, 11, 100, 14, 13]}
df = pd.DataFrame(data)
Q1 = df['nilai'].quantile(0.25)
Q3 = df['nilai'].quantile(0.75)
IQR = Q3 - Q1
batas_bawah = Q1 - 1.5 * IQR
batas_atas = Q3 + 1.5 * IQR
df_filtered = df[~((df['nilai'] < batas_bawah) | (df['nilai'] > batas_atas))]
print("Data setelah outlier dihapus:")
print(df_filtered)
2. Metode Z-Score
Metode ini cocok digunakan jika data Anda terdistribusi normal seperti berbentuk lonceng. Z-score mengukur seberapa jauh sebuah titik data dari rata-ratanya dalam satuan standar deviasi.
Deskripsi
Menghitung skor Z untuk setiap titik data dengan rumus (nilai - rata_rata) / standar_deviasi. Titik data dengan nilai absolut Z-score di atas ambang batas tertentu (umumnya 3) dianggap sebagai outlier.
Kelebihan
- Metode statistik yang solid jika asumsi normalitas data terpenuhi.
- Mudah diinterpretasikan.
Kekurangan
- Sangat sensitif terhadap outlier itu sendiri. Nilai rata-rata dan standar deviasi bisa terdistorsi oleh outlier, sehingga metode ini bisa gagal mendeteksi outlier yang seharusnya terdeteksi.
- Tidak cocok untuk data yang tidak terdistribusi normal.
Kode python Sederhana
import pandas as pd
from scipy import stats
import numpy as np
data = {'nilai': [10, 12, 12, 13, 12, 11, 100, 14, 13]}
df = pd.DataFrame(data)
df_filtered = df[(np.abs(stats.zscore(df['nilai'])) < 3)]
print("Data setelah outlier dihapus:")
print(df_filtered)
3. Winsorizing
Daripada membuang outlier, bagaimana jika kita “menjinakkannya”? Itulah ide di balik metode Winsorizing. Teknik ini tidak menghapus outlier, melainkan mengganti nilai ekstrem tersebut dengan nilai terdekat yang masih dianggap “normal”.
Deskripsi Mengganti nilai ekstrem (misalnya, 5% data terkecil dan 5% data terbesar) dengan nilai pada batas persentil tertentu (misalnya, nilai di persentil ke-5 dan ke-95).
Kelebihan
- Tidak ada kehilangan data karena outlier tidak dihapus, hanya dimodifikasi.
- Mengurangi pengaruh outlier sambil tetap mempertahankan jumlah total data.
Kekurangan
- Dapat mengubah distribusi data asli.
- Memilih batas persentil yang tepat bisa menjadi tantangan dan bersifat subjektif.
Kode python Sederhana
from scipy.stats.mstats import winsorize
import numpy as np
data = np.array([10, 12, 12, 13, 12, 11, 100, 14, 13, 1, 95])
winsorized_data = winsorize(data, limits=[0.1, 0.1])
print("Data setelah di-winsorize:")
print(winsorized_data)
Kesimpulan
- Sebagai titik awal yang aman, gunakanlah dengan Metode IQR. Metode ini bekerja dengan baik di banyak situasi dan tidak memerlukan asumsi tentang distribusi data.
- Jika data Anda terdistribusi normal, gunakanlah metode Z-Score. Metode ini adalah pilihan statistik yang kuat.
- Jika Anda tidak ingin kehilangan data, pertimbangkan Winsorizing. Ini adalah cara yang tepat untuk mengurangi dampak outlier tanpa menghapusnya.
Menangani outlier adalah perpaduan antara ilmu dan seni. Tidak ada satu solusi yang cocok untuk semua. Kuncinya adalah memahami data Anda dan memilih metode yang paling sesuai dengan karakteristik dan tujuan analisis Anda.
Selamat mencoba!
메타데이터
- post_id
- 9e67aa7ff5e2
- slug
- jangan-biarkan-data-aneh-merusak-model-anda-3-cara-jitu-atasi-outlier-9e67aa7ff5e2
- url
- https://medium.com/@fajri.hulvi/jangan-biarkan-data-aneh-merusak-model-anda-3-cara-jitu-atasi-outlier-9e67aa7ff5e2
- canonical_url
- https://medium.com/@fajri.hulvi/jangan-biarkan-data-aneh-merusak-model-anda-3-cara-jitu-atasi-outlier-9e67aa7ff5e2
- author_url
- https://medium.com/@fajri.hulvi
- status
- ok
- fetched_at
- 2026-07-08 05:22:04