Vượt lên trên các chuẩn mực: Khám phá thế giới của những kẻ ngoại lai

May 08 2023
Làm thế nào các điểm ngoại lệ giữ cho Nhà khoa học dữ liệu luôn chú ý của họ Điểm ngoại lệ là các điểm ở khoảng cách bất thường so với hầu hết các điểm trong tập dữ liệu. Trước khi chúng tôi đi sâu vào giải quyết bất kỳ vấn đề học máy nào, bước quan trọng là loại bỏ các giá trị ngoại lệ nếu không cần thiết.

Làm thế nào những người ngoại lệ giữ Nhà khoa học dữ liệu trên ngón chân của họ

Ngoại lệ là những điểm ở khoảng cách bất thường so với hầu hết các điểm trong tập dữ liệu. Trước khi chúng tôi đi sâu vào giải quyết bất kỳ vấn đề học máy nào, bước quan trọng là loại bỏ các giá trị ngoại lai nếu không cần thiết. Hãy để chúng tôi thảo luận về gốc rễ của một Ngoại lệ.

Nguyên nhân phổ biến của Outliers

  1. Lỗi Nhập liệu (lỗi do con người)
  2. lỗi thử nghiệm
  3. Lỗi đo lường (lỗi thiết bị)
  4. Lỗi lấy mẫu (trích xuất dữ liệu từ các nguồn khác nhau/sai)
  5. Lỗi cố ý (các ngoại lệ giả được tạo để kiểm tra các phương pháp phát hiện)
  6. Lỗi tự nhiên (không phải lỗi, tính mới trong dữ liệu)

1. IQR (Dải tứ phân vị)

IQR là 50% ở giữa của tập dữ liệu. Đó là phạm vi giá trị
giữa phần tư thứ ba và phần tư thứ nhất (Q3 — Q1). Được sử dụng để đo mức độ biến thiên bằng cách chia tập dữ liệu thành các phần tư. Phần tư là các giá trị chia dữ liệu của bạn thành 4 phần miễn là dữ liệu được sắp xếp theo thứ tự tăng dần.
IQR = Q3 — Q1
Q1 = phần tư thứ nhất (phần tư dưới là phân vị thứ 25 chia cho 25% dữ liệu thấp hơn)
Q2 = phần tư thứ 2 (trung vị là phân vị thứ 50)
Q3 = phần tư thứ 3 (phần tư trên là phân vị thứ 75 chia cho 25% trên % Dữ liệu)

Lưu ý : Tỷ lệ phần trăm và tỷ lệ phần trăm là hai điều khác nhau. Nếu phân vị thứ 25 là 8 thì điều đó đơn giản có nghĩa là 25% dữ liệu nhỏ hơn 8. Nếu phân vị thứ 75 là 40 thì điều đó đơn giản có nghĩa là 75% dữ liệu nhỏ hơn 40.

Nếu giá trị dữ liệu < Q1–1,5(IQR) HOẶC giá trị dữ liệu > Q3+1,5(IQR) thì nó được coi là ngoại lệ.

#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

Nó còn được gọi là điểm tiêu chuẩn cho chúng ta biết điểm dữ liệu cách giá trị trung bình bao xa. Nó cho biết một điểm dữ liệu lệch bao xa so với giá trị trung bình tính theo độ lệch chuẩn. Chúng tôi biết rằng nếu dữ liệu tuân theo phân phối bình thường thì dữ liệu bao gồm 99,7% số điểm cho đến 3 độ lệch chuẩn. Chúng tôi có thể tính toán các ngoại lệ của chúng tôi ngoài điều đó ở cả hai bên.
Vì vậy, nếu chúng tôi nhận được z-score là 2,5 thì chúng tôi nói đó là 2,5 độ lệch chuẩn trên mức trung bình và nếu chúng tôi nhận được -2,5 thì chúng tôi nói đó là 2,5 độ lệch chuẩn dưới mức trung bình. Do đó, chúng ta có thể kết luận rằng điểm số z không có độ lệch chuẩn trên hoặc dưới nghĩa là mỗi giá trị đều giảm.
Ưu điểm chính của z-score là nó cho bạn biết bao nhiêu giá trị tính bằng % là ngoại lệ.

Điểm Z = (x-μ)/σ
x là một quan sát trong mẫu
x̄ là giá trị trung bình của các quan sát trong mẫu
σ là độ lệch chuẩn của các quan sát trong mẫu

3. Sắp xếp dữ liệu và xem các giá trị cực trị

Đây là phương pháp cơ bản mà bạn có thể sắp xếp dữ liệu. Sau đó, hãy tìm các giá trị cực trị và đó sẽ là ngoại lệ của chúng ta.
Ví dụ: Chúng tôi đã được cho tuổi là 4,6,9,2,10,12,102.
Bước 1: Sắp xếp dữ liệu: 2, 4,6,9,12,102
Bước 2: Tìm các giá trị cực trị, chúng ta có thể thấy 102 là giá trị cực trị nên có thể là một ngoại lệ đối với chúng ta.

4. Vẽ biểu đồ phân tán, boxplot

  • Biểu đồ phân tán : Đây là chỉ báo tuyệt vời cho phép chúng tôi xem liệu có mẫu giữa hai biến hay không. Nó được sử dụng khi bạn ghép nối dữ liệu số hoặc khi bạn xác định mối quan hệ giữa hai biến. Nhưng không chỉ điều này, bạn cũng có thể sử dụng nó để phát hiện ngoại lệ.
  • 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

Cảm ơn vì đã đọc! Nếu bạn thích tác phẩm này và muốn đọc thêm tác phẩm của tôi, vui lòng cân nhắc theo dõi tôi trên Phương tiện. Tôi mong được chia sẻ nhiều hơn với bạn trong tương lai.