Melampaui Norma: Menjelajahi Dunia Outlier
Bagaimana para outlier menjaga Data Scientist tetap waspada
Outlier adalah titik-titik yang berada pada jarak abnormal dari sebagian besar titik dalam dataset. Sebelum kita menyelami lebih dalam untuk memecahkan masalah pembelajaran mesin apa pun, ini adalah langkah kunci untuk menghapus outlier jika tidak diperlukan. Mari kita bahas akar dari Outlier.
Penyebab umum Outlier
- Kesalahan Entri Data (kesalahan manusia)
- Kesalahan eksperimental
- Kesalahan pengukuran (kesalahan instrumental)
- Kesalahan pengambilan sampel (mengekstraksi data dari berbagai/sumber yang salah)
- Kesalahan yang disengaja (outlier dummy dibuat untuk menguji metode deteksi)
- Kesalahan alami (bukan kesalahan, hal baru dalam data)
1. IQR (Jangkauan Interkuartil)
IQR adalah 50% tengah dari kumpulan data. Ini adalah rentang nilai
antara kuartil ketiga dan kuartil pertama (Q3 — Q1). Digunakan untuk mengukur variabilitas dengan membagi kumpulan data menjadi kuartil. Kuartil adalah nilai yang membagi data Anda menjadi 4 bagian asalkan data diurutkan dalam urutan menaik.
IQR = Q3 — Q1
Q1 = kuartil ke-1 (kuartil bawah yang merupakan persentil ke-25 yang membagi 25% data yang lebih rendah)
Q2 = kuartil ke-2 (median yang merupakan persentil ke-50)
Q3 = kuartil ke-3 (kuartil atas yang merupakan persentil ke-75 yang membagi 25 bagian atas % data)
Catatan : Persentase dan persentil adalah dua hal yang berbeda. Jika persentil ke-25 adalah 8 maka itu berarti 25% data kurang dari 8. Jika persentil ke-75 adalah 40 maka itu berarti 75% data kurang dari 40.
Jika nilai data < Q1–1.5(IQR) ATAU nilai data > Q3+1.5(IQR) maka diperlakukan sebagai outlier.
#Python code for finding outliers
import numpy as np
data = [1,4,6,3,500,24,53]
sort_data = np.sort(data)
Q1 = np.percentile(data,25)
Q3 = np.percentile(data,75)
IQR = Q3-Q1
low_limit = Q1 - 1.5(IQR)
upper_limit = Q3 + 1.5(IQR)
outlier = []
for i in data:
if(i>upper_limit or i<low_limit):
outlier.append()
return outlier
Ini juga dikenal sebagai skor standar yang memberi kita gambaran seberapa jauh titik data dari rata-rata. Ini memberi tahu seberapa jauh titik data menyimpang dari rata-rata dalam standar deviasi. Kita tahu bahwa jika data mengikuti distribusi normal maka data mencakup 99,7% titik hingga 3 standar deviasi. Kita dapat menghitung outlier kita di luar itu di kedua sisi.
Jadi jika kita mendapatkan z-score 2,5 maka kita katakan itu adalah 2,5 standar deviasi di atas rata-rata dan jika kita mendapatkan -2,5 maka kita katakan itu adalah 2,5 standar deviasi di bawah rata-rata. Oleh karena itu dapat disimpulkan bahwa z-score bukanlah standar deviasi di atas atau di bawah yang berarti setiap nilai turun.
Keuntungan utama z-score adalah memberi tahu Anda berapa banyak nilai dalam % yang merupakan outlier.
Z Score = (x-μ)/σ
x adalah pengamatan dalam sampel
x̄ adalah rata-rata pengamatan dalam sampel
σ adalah standar deviasi pengamatan dalam sampel
3. Urutkan data dan lihat nilai ekstrem
Ini adalah metode dasar di mana Anda dapat mengurutkan data. Setelah itu cari nilai ekstrim dan itu akan menjadi outlier kita.
Misalnya, Kami telah diberi umur sebagai 4,6,9,2,10,12,102.
Langkah 1 : Sortir data : 2, 4,6,9,12,102
Langkah 2 : Tempatkan nilai ekstrim kita dapat melihat 102 adalah nilai ekstrim sehingga bisa menjadi outlier bagi kita.
4. Merencanakan plot pencar, plot kotak
- Scatterplot : Ini adalah indikator bagus yang memungkinkan kita untuk melihat apakah ada pola antara dua variabel. Ini digunakan saat Anda memasangkan data numerik atau saat Anda menentukan hubungan antara dua variabel. Tapi tidak hanya itu, Anda juga bisa menggunakannya untuk deteksi outlier.
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv("heart.csv")
fig,ax = plt.subplots(figsize = (10,6))
# Scatter with positive examples
pos = ax.scatter(df.age[df.target==1], df.thalach[df.target == 1], color="salmon", label="Heart Disease")
# Scatter with negative examples
neg = ax.scatter(df.age[df.target==0], df.thalach[df.target == 0], color="lightblue", label="No Heart Disease")
#customization
plt.title("Max heart rate in comparison to age")
plt.xlabel("Age")
plt.ylabel("Max heart rate")
plt.legend()
plt.show()
Visualization of Scatter plot
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
df = pd.read_csv("diabetes.csv")
#visualazing each feature to detect the presence of outliers
fig, axis = plt.subplots(nrows=1, ncols=8, figsize=(16, 6))
sns.boxplot(data=df[['Pregnancies']], ax=axis[0]);
sns.boxplot(data=df[['Glucose']], ax=axis[1]);
sns.boxplot(data=df[['BloodPressure']],ax=axis[2]);
sns.boxplot(data=df[['SkinThickness']], ax=axis[3]);
sns.boxplot(data=df[['Insulin']], ax=axis[4]);
sns.boxplot(data=df[['BMI']], ax=axis[5]);
sns.boxplot(data=df[['DiabetesPedigreeFunction']],ax=axis[6]);
sns.boxplot(data=df[['Age']], ax=axis[7]);
Visualization of Boxplot
Terima kasih sudah membaca! Jika Anda menikmati karya ini dan ingin membaca lebih banyak karya saya, harap pertimbangkan untuk mengikuti saya di Medium. Saya berharap dapat berbagi lebih banyak dengan Anda di masa mendatang.