Cách loại bỏ các giá trị ngoại lai trong biểu đồ phân tán python

Khi làm việc trong một dự án Khoa học dữ liệu, bạn tìm kiếm điều gì? . Một trong số đó là tìm kiếm “Outliers”. Trong bài đăng này, chúng tôi sẽ cố gắng hiểu ngoại lệ là gì?

Gặp gỡ ngoại lệ

Wikipedia định nghĩa,

Trong thống kê, một ngoại lệ là một điểm quan sát cách xa các quan sát khác

Định nghĩa trên cho thấy rằng ngoại lệ là một cái gì đó tách biệt/khác biệt với đám đông. Rất nhiều video động lực gợi ý khác biệt với đám đông, đặc biệt là Malcolm Gladwell. Đối với số liệu thống kê, nó cũng là một điều tốt hay không?

Thu thập dữ liệu & ngoại lệ

Như bây giờ chúng ta đã biết thế nào là ngoại lệ, nhưng bạn cũng đang tự hỏi làm thế nào mà một ngoại lệ lại giới thiệu với cộng đồng?

Dự án Khoa học dữ liệu bắt đầu bằng việc thu thập dữ liệu và đó là khi các ngoại lệ lần đầu tiên được giới thiệu với dân số. Mặc dù vậy, bạn sẽ không biết gì về các ngoại lệ trong giai đoạn thu thập. Các ngoại lệ có thể là kết quả của một lỗi trong quá trình thu thập dữ liệu hoặc nó có thể chỉ là một dấu hiệu cho thấy sự khác biệt trong dữ liệu của bạn

Hãy xem xét một số ví dụ. Giả sử bạn được yêu cầu quan sát màn trình diễn của đội cricket Ấn Độ tôi. e Chạy do từng người chơi thực hiện và thu thập dữ liệu

Dữ liệu đã thu thập

Như bạn có thể thấy từ dữ liệu được thu thập ở trên, tất cả những người chơi khác đều ghi được 300+ ngoại trừ Người chơi 3, người đã ghi được 10. Con số này có thể chỉ là một lỗi đánh máy hoặc nó đang hiển thị sự khác biệt trong dữ liệu của bạn và cho biết rằng Player3 đang hoạt động rất tệ, vì vậy cần cải thiện

Bây giờ chúng ta đã biết các giá trị ngoại lệ có thể là một sai lầm hoặc chỉ là phương sai, bạn sẽ quyết định như thế nào nếu chúng quan trọng hay không. Chà, khá đơn giản nếu chúng là kết quả của một sai lầm, thì chúng ta có thể bỏ qua chúng, nhưng nếu đó chỉ là sự khác biệt trong dữ liệu, chúng ta sẽ cần suy nghĩ thêm một chút. Trước khi cố gắng tìm hiểu xem có nên bỏ qua các ngoại lệ hay không, chúng ta cần biết các cách để xác định chúng

Tìm kiếm ngoại lệ

Hầu hết các bạn có thể đang nghĩ, Oh. Tôi chỉ có thể có một lượng dữ liệu cao nhất để tìm ra các ngoại lệ giống như chúng ta đã làm trong ví dụ về môn cricket đã đề cập trước đó. Hãy nghĩ về một tệp có hơn 500 cột và hơn 10 nghìn hàng, bạn có nghĩ rằng ngoại lệ có thể được tìm thấy theo cách thủ công không? . Hầu hết chúng ta sẽ cố gắng xem các phương pháp trực quan (dễ nhất) thay vì toán học

Vì vậy, hãy bắt đầu. Chúng tôi sẽ sử dụng Bộ dữ liệu định giá nhà ở Boston được bao gồm trong API bộ dữ liệu sklearn. Chúng tôi sẽ tải tập dữ liệu và tách ra các tính năng và mục tiêu

boston = load_boston()
x = boston.data
y = boston.target
columns = boston.feature_names
#create the dataframe
boston_df = pd.DataFrame(boston.data)
boston_df.columns = columns
boston_df.head()

Dữ liệu nhà ở Boston

Các tính năng/biến độc lập sẽ được sử dụng để tìm kiếm bất kỳ ngoại lệ nào. Nhìn vào dữ liệu ở trên, có vẻ như chúng ta chỉ có các giá trị số i. e. chúng tôi không cần thực hiện bất kỳ định dạng dữ liệu nào. (Thở dài. )

Có hai loại phân tích mà chúng ta sẽ theo dõi để tìm ra các ngoại lệ - Đơn biến (phân tích ngoại lệ một biến) và Đa biến (phân tích ngoại lệ hai biến trở lên). Đừng nhầm lẫn đúng không, khi bạn bắt đầu mã hóa và vẽ biểu đồ dữ liệu, bạn sẽ thấy rằng việc phát hiện ra ngoại lệ dễ dàng như thế nào. Để đơn giản hóa mọi thứ, chúng ta sẽ bắt đầu với phương pháp phát hiện ngoại lệ cơ bản và từ từ chuyển sang các phương pháp nâng cao

Khám phá các ngoại lệ với các công cụ trực quan

Biểu đồ hộp-

Định nghĩa Wikipedia,

Trong thống kê mô tả, biểu đồ hộp là một phương pháp để mô tả bằng đồ thị các nhóm dữ liệu số thông qua các phần tư của chúng. Các biểu đồ hộp cũng có thể có các đường kéo dài theo chiều dọc từ các hộp (râu) biểu thị sự thay đổi bên ngoài các phần tư trên và dưới, do đó, thuật ngữ biểu đồ hộp và râu và biểu đồ hộp và râu. Các ngoại lệ có thể được vẽ dưới dạng các điểm riêng lẻ

Định nghĩa trên gợi ý rằng nếu có một ngoại lệ, nó sẽ được vẽ dưới dạng điểm trong boxplot nhưng các tổng thể khác sẽ được nhóm lại với nhau và hiển thị dưới dạng hộp. Hãy thử và xem nó chính mình

import seaborn as sns
sns.boxplot(x=boston_df['DIS'])

Boxplot - Khoảng cách đến trung tâm việc làm

Biểu đồ trên cho thấy ba điểm trong khoảng từ 10 đến 12, đây là những điểm ngoại lệ vì không có trong ô quan sát khác i. e không ở đâu gần tứ phân vị

Ở đây chúng tôi phân tích Univariate outlier i. e. chúng tôi chỉ sử dụng cột DIS để kiểm tra ngoại lệ. Nhưng chúng ta cũng có thể thực hiện phân tích ngoại lệ đa biến. Chúng ta có thể thực hiện phân tích đa biến với Box plot không? . Vì chúng tôi không có giá trị phân loại trong bộ dữ liệu Nhà ở Boston của mình, chúng tôi có thể cần quên việc sử dụng biểu đồ hộp để phân tích ngoại lệ đa biến

Âm mưu phân tán-

Định nghĩa Wikipedia

Biểu đồ phân tán, là một loại biểu đồ hoặc sơ đồ toán học sử dụng tọa độ Descartes để hiển thị các giá trị cho hai biến thông thường cho một tập hợp dữ liệu. Dữ liệu được hiển thị dưới dạng tập hợp các điểm, mỗi điểm có giá trị của một biến xác định vị trí trên trục hoành và giá trị của biến kia xác định vị trí trên trục tung

Như định nghĩa cho thấy, biểu đồ phân tán là tập hợp các điểm hiển thị giá trị cho hai biến. Chúng ta có thể thử vẽ biểu đồ phân tán cho hai biến từ bộ dữ liệu nhà ở của mình

fig, ax = plt.subplots(figsize=(16,8))
ax.scatter(boston_df['INDUS'], boston_df['TAX'])
ax.set_xlabel('Proportion of non-retail business acres per town')
ax.set_ylabel('Full-value property-tax rate per $10,000')
plt.show()

Lô đất phân tán — Tỷ lệ mẫu đất kinh doanh không bán lẻ trên mỗi thị trấn v/s Thuế bất động sản giá trị đầy đủ

Nhìn vào biểu đồ trên, chúng ta có thể thấy hầu hết các điểm dữ liệu nằm phía dưới bên trái nhưng có những điểm nằm xa dân số như góc trên bên phải

Khám phá các ngoại lệ với chức năng toán học

Điểm Z-

Định nghĩa Wikipedia

Điểm Z là số độ lệch chuẩn đã ký mà theo đó giá trị của một điểm quan sát hoặc điểm dữ liệu cao hơn giá trị trung bình của những gì đang được quan sát hoặc đo lường

Trực giác đằng sau Z-score là mô tả bất kỳ điểm dữ liệu nào bằng cách tìm mối quan hệ của chúng với Độ lệch chuẩn và Giá trị trung bình của nhóm điểm dữ liệu. Điểm Z đang tìm phân phối dữ liệu trong đó giá trị trung bình là 0 và độ lệch chuẩn là 1 i. e. phân phối bình thường

Chắc hẳn bạn đang thắc mắc rằng, điều này giúp ích như thế nào trong việc xác định các điểm ngoại lệ? . Những điểm dữ liệu quá xa so với 0 sẽ được coi là ngoại lệ. Trong hầu hết các trường hợp, ngưỡng 3 hoặc -3 được sử dụng. e nếu giá trị điểm Z lớn hơn hoặc nhỏ hơn 3 hoặc -3 tương ứng, điểm dữ liệu đó sẽ được xác định là ngoại lệ

Chúng tôi sẽ sử dụng chức năng điểm Z được xác định trong thư viện scipy để phát hiện các ngoại lệ

from scipy import stats
import numpy as np
z = np.abs(stats.zscore(boston_df))
print(z)

Điểm Z của dữ liệu nhà ở Boston

Nhìn vào mã và đầu ra ở trên, rất khó để nói điểm dữ liệu nào là ngoại lệ. Hãy thử và xác định một ngưỡng để xác định một ngoại lệ

threshold = 3
print(np.where(z > 3))

Điều này sẽ cho một kết quả như dưới đây -

Điểm dữ liệu có điểm Z lớn hơn 3

Đừng bối rối bởi kết quả. Mảng đầu tiên chứa danh sách các số hàng và số cột tương ứng của mảng thứ hai, có nghĩa là z[55][1] có điểm Z cao hơn 3

print(z[55][1])3.375038763517309

Vì vậy, điểm dữ liệu — bản ghi thứ 55 trên cột ZN là một ngoại lệ

điểm IQR -

Biểu đồ hộp sử dụng phương pháp IQR để hiển thị dữ liệu và ngoại lệ (hình dạng của dữ liệu) nhưng để có được danh sách ngoại lệ được xác định, chúng ta sẽ cần sử dụng công thức toán học và truy xuất dữ liệu ngoại lệ

Định nghĩa Wikipedia

Khoảng tứ phân vị (IQR), còn được gọi là mức phân vị giữa hoặc mức trung bình 50%, hoặc mức lây lan H về mặt kỹ thuật, là thước đo độ phân tán thống kê, bằng với sự khác biệt giữa phần trăm thứ 75 và phần trăm thứ 25, hoặc giữa phần tư trên và phần tư dưới, IQR = Q3

Nói cách khác, IQR là phần tư thứ nhất được trừ từ phần tư thứ ba;

Nó là thước đo độ phân tán tương tự như độ lệch chuẩn hoặc phương sai, nhưng mạnh hơn nhiều so với các giá trị ngoại lệ

IQR hơi giống với điểm Z trong việc tìm kiếm sự phân phối dữ liệu và sau đó giữ một số ngưỡng để xác định ngoại lệ

Hãy cùng tìm hiểu xem chúng ta có thể sử dụng biểu đồ hộp bằng cách sử dụng IQR và cách chúng ta có thể sử dụng nó để tìm danh sách các giá trị ngoại lai như chúng ta đã làm khi sử dụng phép tính điểm Z. Đầu tiên chúng ta sẽ tính toán IQR,

Q1 = boston_df_o1.quantile(0.25)
Q3 = boston_df_o1.quantile(0.75)
IQR = Q3 - Q1
print(IQR)

Ở đây chúng tôi sẽ nhận được IQR cho mỗi cột

IQR cho mỗi cột

Vì chúng ta hiện có điểm số IQR, đã đến lúc nắm bắt các giá trị ngoại lai. Đoạn mã dưới đây sẽ đưa ra một đầu ra với một số giá trị đúng và sai. Điểm dữ liệu mà chúng tôi có Sai có nghĩa là các giá trị này hợp lệ trong khi True biểu thị sự hiện diện của ngoại lệ

print(boston_df_o1 < (Q1 - 1.5 * IQR)) |(boston_df_o1 > (Q3 + 1.5 * IQR))

Phát hiện ngoại lệ với IQR

Bây giờ chúng ta đã biết cách phát hiện các ngoại lệ, điều quan trọng là phải hiểu liệu chúng có cần được xóa hoặc sửa hay không. Trong phần tiếp theo, chúng ta sẽ xem xét một vài phương pháp loại bỏ các giá trị ngoại lai và nếu được yêu cầu, hãy gán các giá trị mới

Làm việc với các ngoại lệ. Sửa chữa, loại bỏ

Trong quá trình phân tích dữ liệu, khi bạn phát hiện ra điểm ngoại lệ, một trong những quyết định khó khăn nhất có thể là cách xử lý điểm ngoại lệ. Họ nên loại bỏ chúng hoặc sửa chúng?

Điểm Z

Trong phần trước, chúng ta đã thấy cách một người có thể phát hiện ngoại lệ bằng cách sử dụng điểm Z nhưng bây giờ chúng tôi muốn loại bỏ hoặc lọc các ngoại lệ và lấy dữ liệu sạch. Điều này có thể được thực hiện chỉ với một mã dòng vì chúng tôi đã tính điểm Z

________số 8

Có và không có kích thước ngoại lệ của tập dữ liệu

Vì vậy, đoạn mã trên đã xóa khoảng hơn 90 hàng khỏi tập dữ liệu tôi. e. ngoại lệ đã được loại bỏ

Điểm IQR -

Giống như điểm Z, chúng ta có thể sử dụng điểm IQR đã tính toán trước đó để lọc ra các giá trị ngoại lai bằng cách chỉ giữ lại các giá trị hợp lệ

boston_df_out = boston_df_o1[~((boston_df_o1 < (Q1 - 1.5 * IQR)) |(boston_df_o1 > (Q3 + 1.5 * IQR))).any(axis=1)]boston_df_out.shape

Đoạn mã trên sẽ loại bỏ các ngoại lệ khỏi tập dữ liệu

Có nhiều cách để phát hiện và loại bỏ các ngoại lệ nhưng các phương pháp mà chúng tôi đã sử dụng cho bài tập này được sử dụng rộng rãi và dễ hiểu

Có nên loại bỏ một ngoại lệ hay không. Mọi nhà phân tích dữ liệu/nhà khoa học dữ liệu đều có thể có những suy nghĩ này một lần trong mọi vấn đề họ đang giải quyết. Tôi đã tìm thấy một số lời giải thích tốt -

https. //www. cổng nghiên cứu. net/bài đăng/Khi_is_it_justifiable_to_exclude_outlier_data_points_from_statistical_analyses

https. //www. cổng nghiên cứu. net/post/Which_is_the_best_method_for_removing_outliers_in_a_data_set

https. //www. theanalysisfactor. com/các ngoại lệ-để-thả-hoặc-không-thả/

Để tóm tắt lời giải thích của họ - dữ liệu xấu, tính toán sai, những điều này có thể được xác định là Ngoại lệ và nên được loại bỏ nhưng đồng thời bạn cũng có thể muốn sửa chúng vì chúng thay đổi cấp độ dữ liệu. e. nghĩa là nguyên nhân gây ra sự cố khi bạn lập mô hình dữ liệu của mình. Đối với 5 người cũ nhận mức lương 10K, 20K, 30K, 40K và 50K và đột nhiên một trong những người bắt đầu nhận mức lương 100K. Hãy xem xét tình huống này vì bạn là người sử dụng lao động, bản cập nhật lương mới có thể bị coi là sai lệch và bạn cũng có thể cần tăng lương cho nhân viên khác để giữ cân bằng. Vì vậy, có thể có nhiều lý do khiến bạn muốn hiểu và sửa các điểm ngoại lệ

Tóm lược

Trong suốt bài tập này, chúng ta đã thấy trong giai đoạn phân tích dữ liệu, người ta có thể gặp một số dữ liệu bất thường như thế nào. ngoại lệ. Chúng tôi đã học về các kỹ thuật có thể được sử dụng để phát hiện và loại bỏ những giá trị ngoại lệ đó. Nhưng có một câu hỏi được đặt ra về việc đảm bảo liệu có thể loại bỏ các giá trị ngoại lai hay không. Để trả lời những câu hỏi đó, chúng tôi đã tìm thấy các bài đọc thêm (liên kết này đã được đề cập trong phần trước). Hy vọng bài viết này đã giúp độc giả trong việc biết Outliers

Lưu ý- Đối với bài tập này, các công cụ và thư viện bên dưới đã được sử dụng

Framework- Jupyter Notebook, Language- Python, Libraries- thư viện sklearn, Numpy, Panda và Scipy, Plot Lib- Seaborn và Matplot