Loại bỏ các ngoại lệ z-score python
Ngoại lệ/bất thường (dữ liệu ngoại lai/dữ liệu bất thường) là một trong những thuật ngữ được sử dụng rất rộng rãi trong dữ liệu thế giới và đặc biệt là khoa học dữ liệu. Xác định và loại bỏ các ngoại lệ là một bước cực kỳ quan trọng trong quá trình xử lý dữ liệu. Việc xử lý các dữ liệu bên ngoài sẽ giúp nâng cao độ chính xác cho các mô hình dự đoán hoặc báo cáo doanh nghiệp một cách đáng kể. Show
Trong bài này chúng ta sẽ cùng nhau tìm hiểu các vấn đề sau
Lưu ý. Bài viết sẽ không đi nghiên cứu quá sâu về Outliers. Bài này chỉ dừng lại ở mức cơ bản để các bạn có thể đọc, hiểu và thực hiện ngay Mục Lục
Outliers (dữ liệu ngoại lai) là gì?Để hiểu được bản chất thực sự của các ngoại lệ là gì, các bạn trước tiên hãy tham khảo các hình bên dưới. Chú ý sự khác nhau giữa các điểm màu đỏ với các điểm còn lại Các giá trị ngoại lệ của bộ dữ liệu 2 chiều – Nguồn ảnhCác giá trị ngoại lệ của bộ dữ liệu 1 dựa trên tốc độ phân tán của dữ liệuQua các bức ảnh trên, chắc các bạn cũng thấy được điểm chung của các ngoại lệ. Hiểu đơn giản thì Outliers là một hoặc nhiều cá thể khác Chắc chắn đối với các thành viên còn lại của nhóm. Sự khác biệt này có thể dựa trên nhiều tiêu chí khác nhau như giá trị hoặc thuộc tính Đối với 2 hình trên, chúng ta có thể dễ dàng xác định các điểm khác biệt dựa trên giá trị của họ vì các giá trị này khác với các giá trị còn lại của nhóm Ví dụ. trong một lớp học gồm 100 học sinh, phần lớn học sinh đều đạt kết quả đào tạo từ 5 đến 7, riêng chỉ có 1 bạn đạt điểm 1 và một bạn đạt điểm 10. Trong trường hợp này, 2 bạn có điểm 1 và 10 có thể được coi là 2 Người xuất sắc nhất cho bài kiểm tra đó Trong trường hợp khác, các ngoại lệ là những thành phần có thuộc tính hoặc tính cách khác với số lượng còn lại Các ngoại lệ dựa trên tính chất của dữ liệu – Nguồn ảnhVí dụ. một công ty với mô hình B2B có rất nhiều khách hàng khác nhau nhưng trong những khách hàng này có một doanh nghiệp đến từ nước ngoài. Doanh nghiệp nước ngoài này có thể được coi là ngoại lệ khi xem xét về tính chất khách hàng. Vì họ có thể có những hành vi mua hàng rất khác với khách hàng nội địa Trên thực tế, người ta chia ra những ngoại lệ khá nhiều loại khác nhau. Nhưng ở đây mình chỉ muốn các bạn hiểu được bản chất của các ngoại lệ và cách xác định các loại ngoại lệ đơn giản. Do đó, mình phải chia sẻ lại thành 2 dạng như trên Nếu muốn tìm hiểu xâu hơn về Outliers, các bạn có thể Google về nó. Có nhiều tài liệu khác nhau cả tiếng Anh lẫn tiếng Việt giải thích về thuật ngữ này. Mình sẽ không phân tích sâu nữa về định nghĩa cũng như phân loại Khi nào cần xác định và loại bỏ ngoại lệTrên thực tế, khi chúng ta làm báo cáo hay xây dựng mô hình, sẽ rất khó để đạt được giá trị tuyệt đối. Trong hầu hết các trường hợp, dữ liệu xấu hoặc bất thường sẽ luôn tồn tại. Những dữ liệu này tồn tại do khá nhiều nguyên nhân khác nhau tùy theo hoàn cảnh và mô hình kinh doanh Một vài ví dụ cụ thể như
Chúng ta có thể thấy được với 2 ví dụ (1) và (2) thì những dữ liệu xấu này cần được loại bỏ để tăng tính chính xác cho các mô hình hoặc báo cáo. Nhưng với trường hợp thứ (3), các ngoại lệ này lại có thể cho chúng ta thấy là một tiềm năng kinh doanh mới. Nếu chúng ta tìm hiểu nguyên nhân tại sao lại có sự gia tăng đột biến và chuẩn bị cho kỳ tiếp theo, khả năng là sẽ có thêm nhiều lợi nhuận Do đó, việc xác định các ngoại lệ là cần thiết trong phần lớn các trường hợp. Nhưng việc xử lý chúng như thế nào thì còn tùy thuộc vào từng hoàn cảnh. Chúng ta cần tìm hiểu sâu hơn nguyên nhân gây ra các ngoại lệ trước khi quyết định loại bỏ hoặc giữ lại các ngoại lệ này Phương pháp xác định OutliersVì bản chất của các ngoại lệ có nhiều loại khác nhau nên cũng sẽ có nhiều phương pháp khác nhau để xác định các ngoại lệ. Trong bài viết này, chúng tôi sẽ chỉ tập trung vào một loại ngoại lệ là những điểm dữ liệu có giá trị quá cao hoặc quá thấp so với phần dữ liệu lớn Chúng ta sẽ sử dụng bộ dữ liệu là SuperStore Sales và tìm kiếm các ngoại lệ dựa trên tổng giá trị của mỗi đơn hóa tại mỗi tiểu bang. Với câu hỏi này, dữ liệu mà chúng ta cần xử lý chỉ có một chiều (xem lại hình 2). Bạn nào chưa có dữ liệu SupperStore thì xem hướng dẫn tại đây Phân tích giá trị cực trị – Nguồn ảnhKết hợp với các loại ngoại lệ, mình sẽ sử dụng phương pháp Phân tích giá trị cực đoan. Phương pháp này đơn giản là xác định các điểm dữ liệu có giá trị cực cao/thấp (giá trị cực cao). Các giá trị cực đoan sẽ được xác định bằng khoảng cách của chúng so với giá trị trung bình (Trung bình/Trung bình). Toàn bộ các giá trị Extreme đều được xác định là ngoại lệ Lưu ý. trên thực tế, các giá trị ngoại lai có khả năng không phải là giá trị Extreme. Đặc biệt là đối với các mảng dữ liệu nhiều hơn 1 chiều Bạn nào tò mò về các phương pháp khác thì có thể vào hỏi Google hoặc xem tại blog này Được rồi, trước khi đi vào hướng dẫn các tìm kiếm và loại bỏ các ngoại lệ, các bạn cùng xem báo cáo mẫu do mình thiết kế trên Tableau để có thể định cấu hình các ngoại lệ như thế nào Report sample about type outlier on TableauSử dụng báo cáo này như thế nào
Các bạn có thể tải Workbook này xuống để tham khảo cách làm. Nếu có nhiều yêu cầu mình sẽ làm bài mới hướng dẫn từng bước cách làm một cái tương tự như vậy
Các bước cần thực hiện để xác định OutliersNhư mình đã nói về phía trên, trong bài này chúng ta sẽ xác định ngoại lệ là những đơn hàng có giá trị cao hoặc thấp hơn bất thường so với những đơn hàng còn lại trong nhóm. Để làm điều này chúng ta thực hiện các bước sau. Tùy theo từng môi trường mà chúng ta sẽ có những cách khác nhau để thực hiện từng bước, nhưng cơ bản chúng ta sẽ đều trải nghiệm qua những bước này Bước 0. Trực quan hóa/vẽ dữ liệu của bạnUp data sketchup. Đây là cách nhanh nhất để phát hiện xem dữ liệu của bạn có xuất hiện Ngoại lệ hay không (bảng điều khiển phía trên chính là ví dụ). Nếu dữ liệu của bạn hoàn toàn bình thường thì bạn không cần phải thêm gì nữa. Nếu có dấu hiệu bất thường thì continue nhé Bước 1. Search the total value of each order. Các bạn có thể thay đổi giá trị cần thiết để tùy thuộc vào tập dữ liệu mà các bạn đang làm việc. Ví dụ như số lượng khách hàng hàng mới hoặc số lượng hợp đồng được ký trong ngày,… Bước 2. Tính Trung bình & Độ lệch chuẩnTính giá trị trung bình (Average/Mean) và độ lệch chuẩn (Standard Deviation) của tổng giá trị thứ tự theo từng Sub-Category. Việc tính 2 giá trị này sẽ cho chúng ta giá trị trung tâm (Average) và từ giá trị trung tâm chúng ta sẽ kiểm tra xem mức độ phân tán của dữ liệu như thế nào dựa trên giá trị của độ lệch chuẩn (Độ lệch chuẩn) Standard Deviation and data partition – Nguồn ảnhVới bộ dữ liệu có mức phân tán bình thường thì với 3 Độ lệch chuẩn (STD), chúng ta sẽ bao phủ khoảng >99% của dữ liệu. Do đó, những dữ liệu nằm ngoài 3 STD thường sẽ là ngoại lệ Các bạn xem thêm về Độ lệch chuẩn tại đây nhé Bước 3. Tính giá trị biên Upper/Lower ria mépRâu trên/dưới là 2 giá trị cực đại/tiểu giúp chúng ta xác định dữ liệu chuẩn (kỳ vọng) và giá ngoại lai (ngoại lệ). Header header (upper ria mép) và gốc (lower ria mép) theo công thức sau
bước. ở đây là một dãy số tự nhiên chúng ta đặt tùy chọn theo phân tán dữ liệu. Trong phần lớn trường hợp, Steps = 3 (tương đương 3 Độ lệch chuẩn) sẽ bao phủ tầm nhìn trên 90% tổng số liệu. Các bạn có thể bắt đầu với Step = 3 trong phần lớn trường hợp Bước 4. Xác định ngoại lệ dựa trên giá trị biênViệc này khá đơn giản, chúng ta chỉ cần thực hiện việc so sánh giá trị của Đơn hàng giữa râu trên và râu dưới. Nếu giá trị của đơn đặt hàng nằm bên trong đoạn từ trên đến dưới thì sẽ là dữ liệu mong đợi, còn bên ngoài sẽ là ngoại lệ. Mình có công thức sau
Như các định nghĩa về phía trên là mọi giá trị nằm ngoài vùng biên đều là ngoại lệ Bước 5. Thực hiện tính toán khi đã loại bỏ các ngoại lệBây giờ chúng ta đã biết những thứ tự nào là Outliers. Bước tiếp theo đơn giản là thực hiện các tính năng cần thiết với điều kiện để loại bỏ các ngoại lệ Ở đây mình sẽ thực hiện lại việc tính giá trị trung bình của mỗi hóa đơn tại mỗi Bang Bước 6. Kiểm tra tra cứu và điều chỉnh giá trị BướcSau khi đã có kết quả mới, chúng ta thực hiện việc so sánh với kết quả trước đó để xem sự khác nhau như thế nào. Lúc này chúng ta cũng cần quan tâm đến một giá trị khác nữa là lượng dữ liệu mà chúng ta còn lại sau khi loại bỏ các ngoại lệ Việc làm này cực kỳ quan trọng đối với kết quả cuối cùng. Tùy thuộc vào mục đích sử dụng mà chúng ta chọn các giá trị khác nhau Lúc này các bạn thực hiện tính toán tổng số lượng dữ liệu (đặt hàng) còn lại so với dữ liệu gốc là bao nhiêu. With the data data number as have enough or too many? Nếu muốn tăng số lượng dữ liệu, chúng ta sẽ tăng giá trị của các bước lên và lùi lại. Mình khuyến khích mỗi lần nên tăng/giảm đi 0. 5. Hướng dẫn xác định và loại bỏ các ngoại lệ bằng SQLBây giờ các bạn đọc đoạn mã phía bên dưới nhé. Lưu ý, trong phần mình sử dụng SQL CTE (lệnh với). Bạn nào chưa hiểu về lệnh này thì đọc bài trước của mình tại link này nhé
Sau khi chạy đoạn mã các bạn sẽ thấy được rất nhiều tiểu ban có giá trị trung bình mỗi hóa đơn giảm hơn rất nhiều so với các bạn đầu Nếu đã có kết quả, bạn có thể quay lại Bảng điều khiển phía trên để kiểm tra và so sánh cũng như kiểm tra xem những ngoại lệ đã bị loại bỏ là những đơn đặt hàng nào Tổng kết và thực hiệnBài này chúng ta đã cùng nhau làm quen với khái niệm, có thể mới với một số bạn, là Outliers. Cùng với đó là những lợi ích cũng như cách để xác định và loại bỏ những Ngoại lệ không mong muốn Mình đã thử demo cách xác định các ngoại lệ và loại bỏ chúng dựa trên tổng giá trị của một Đơn đặt hàng và Trạng thái. Bây giờ các bạn có thể thực hiện hành động tương tự với tập dữ liệu đó nhưng sử dụng câu hỏi sau
Bạn nào chưa hiểu chỗ nào có thể bình luận phía dưới. Mình sẽ cố gắng giải đáp nếu có thể. Đánh dấu lại để quay lại khi cần thiết nhé |