Outliers – Hướng dẫn xác định và loại bỏ dữ liệu ngoại lai trên MySQL

Outliers / anomalies ( tài liệu ngoại lai / tài liệu không bình thường ) là một trong những thuật ngữ được sử dụng rất thoáng rộng trong quốc tế data và đặc biệt quan trọng là data science. Xác định và vô hiệu outliers là một bước cực kỳ quan trọng trong quy trình giải quyết và xử lý tài liệu. Việc giải quyết và xử lý những tài liệu ngoại lai sẽ giúp tăng cao độ đúng chuẩn cho những quy mô Dự kiến hay những báo cáo giải trình doanh nghiệp một cách đáng kể .
Trong bài này tất cả chúng ta sẽ cùng tìm hiểu và khám phá những yếu tố sau :
Quảng Cáo

  • Outliers thực chất là gì?
  • Tầm quan trọng của việc xác định và loại bỏ outliers?
  • Cùng so sánh và phân tích kết quả của trước và sau khi loại bỏ outliers
  • Phương pháp và các bước thực hiện loại bỏ Outliers
  • Thực hành xử lý Outliers bằng MySQL
  • Cuối cùng là câu hỏi cho bạn thực hành

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 hành ngay.

Outliers ( tài liệu ngoại lai ) là gì ?

Để hiểu được thực chất thực sự của outliers là gì, những bạn có thứ nhất tìm hiểu thêm những hình bên dưới. Chú ý sự khác nhau giữa điểm màu đỏ với những điểm còn lại .
Quảng Cáo

examples-of-different-outliers-2-chiều
Outliers của bộ trên dữ liệu 2 chiều – Nguồn ảnh
Ví dụ về Outliers cho dữ liệu 1 chiều - sentayho.com.vnOutliers của bộ trên dữ liệu 1 chiều dựa trên độ phân tán của dữ liệu
Qua những bức ảnh trên, chắc những bạn cũng thấy được điểm chung của những outliers. Hiểu đơn thuần thì Outliers là một hoặc nhiều thành viên khác hẳn so với những thành viên còn lại của nhóm. Sự độc lạ này hoàn toàn có thể dựa trên nhiều tiêu chuẩn khác nhau như giá trị hay 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 outliers dựa trên giá trị của chúng vì những giá trị này khác xa với các giá trị còn lại của nhóm.

Quảng Cáo

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ả dao động 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 xem là 2 Outliers cho bài kiểm tra đó.

Trong trường hợp khác thì các outliers là những thành phần có thuộc tính hoặc tính cách khác với số còn lại.

Outliers thuộc tính AttributeOutliers dựa thuộc tính của dữ liệu – Nguồn ảnh

Ví 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 xem là một outliers khi 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 trong thực tiễn, người ta chia outliers ra khá nhiều loại khác nhau. Nhưng ở đây mình chỉ muốn những bạn hiểu được thực chất của outliers và cách xác lập những loại outliers đơn thuần. Vậy nên mình gộp chung lại thành 2 dạng như trên .
Nếu muốn khám phá xâu hơn về Outliers, những bạn hoàn toàn có thể Google về nó. Có khá nhiều tài liệu cả tiếng Anh lẫn tiếng Việt lý giải về thuật ngữ này. Mình sẽ không nghiên cứu và phân tích sâu thêm nữa về định nghĩa cũng như phân loại .

Khi nào cần xác lập và vô hiệu outliers

Trên trong thực tiễn, khi tất cả chúng ta làm báo cáo giải trình hay thiết kế xây dựng Model, sẽ rất khó để đạt giá trị tuyệt đối. Trong hầu hết những trường hợp, tài liệu xấu hoặc không bình thường sẽ luôn sống sót. Những tài liệu này sống sót do khá nhiều nguyên do khác nhau tùy vào thực trạng và quy mô kinh doanh thương mại .

Một vài ví dụ cụ thể như:

  1. Lỗi phát sinh trong quá trình nhập và chỉnh sửa dữ liệu như dư hay thiếu vài số 0 hay sai địa chỉ. Lỗi này mình thấy cực kỳ phổ biến.
  2. Đối với các mô hình online, người ta có thể cố ý tạo ra giá trị ảo để test thị trường hoặc làm mồi nhử. Ví dụ một căn nhà có thể được ra bán với giá 100,000 đồng hay 999 tỷ. Nếu bạn tính trung bình giá nhà tại khu vực tính luôn cả nhà phía trên, đảm bảo giá nhà sẽ cao ngất ngưởng so với thực tế.
  3. Khi muốn biết tổng giá trị sản phẩm bán ra trong ngày của một cửa hàng, chúng ta phát hiện có một vài ngày, con số này cao một cách đột biến so với các ngày còn lại. Nguyên nhân là do gần đó có một sự kiện cộng đồng kiến khách hàng đột ngột tăng lên.

Chúng ta hoàn toàn có thể thấy được với 2 ví dụ ( 1 ) và ( 2 ) thì những tài liệu xấu này cần được vô hiệu để tăng tính đúng chuẩn cho những Mã Sản Phẩm hoặc báo cáo giải trình. Nhưng với trường hợp thứ ( 3 ), những outliers này lại hoàn toàn có thể cho tất cả chúng ta thấy được một tiềm năng lệch giá mới. Nếu tất cả chúng ta tìm hiểu và khám phá nguyên do tại sao lại có marketing tăng đột biến và sẵn sàng chuẩn bị cho kỳ tiếp theo, năng lực là sẽ có thêm được nhiều doanh thu .
Vậy nên việc xác lập Outliers là thiết yếu trong hầu hết những trường hợp. Nhưng việc giải quyết và xử lý chúng như thế nào thì còn tùy thuộc vào từng thực trạng. Chúng ta cần tìm hiểu và khám phá sâu hơn nguyên do gây ra những Outliers trước khi quyết định hành động vô hiệu hay giữ lại những outliers này .

Phương pháp xác lập Outliers

Vì thực chất của outliers có khá nhiều loại khác nhau nên cũng sẽ có nhiều chiêu thức khác nhau để xác lập outliers. Trong bài viết này tất cả chúng ta sẽ chỉ tập trung chuyên sâu vào một loại outliers là những data point có giá trị quá cao hoặc quá thấp so với phần đông tài liệu .
Chúng ta sẽ sử dụng bộ tài liệu là SuperStore Sales và tìm outliers dựa trên tổng giá trị của mỗi hóa đơn tại mỗi state. Với câu hỏi này, tài liệu mà tất cả chúng ta cần giải quyết và xử lý chỉ có một chiều ( xem lại hình 2 ). Bạn nào chưa có tài liệu SupperStore thì xem hướng dẫn tại đây .
Extreme value AnalysisExtreme value Analysis – Nguồn ảnh
Kết hợp với loại outliers, mình sẽ sử dụng giải pháp Extreme Value Analysis. Phương pháp này đơn thuần là xác lập những data points có giá trị cực cao / thấp ( extreme value ). Các giá trị extreme sẽ được xác lập bằng khoảng cách của chúng so với giá trị trung bình ( Average / Mean ). Toàn bộ những giá trị Extreme đều được xác lập là outliers .

Lưu ý: trên thực tế, các giá trị outliers 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ò những chiêu thức khác thì hoàn toàn có thể vào hỏi Google hoặc xem tại blog này
Okay, trước khi đi vào hướng dẫn những tìm và vô hiệu outliers, những bạn cùng xem một báo cáo giải trình mẫu do mình phong cách thiết kế trên Tableau để hoàn toàn có thể tưởng tượng ra được những Outliers là như thế nào .

Báo cáo mẫu về vô hiệu Outlier trên Tableau

Sử dụng báo cáo giải trình này như thế nào :

  • Các bạn có thể rê chuột trên các giá trị để có thể thấy được những giá trị outliers.
  • So sánh sự khác nhau giữa giá trị trung bình mỗi hóa đơn trước và sau khi loại bỏ Outliers.
  • Điều chỉnh giá trị phía trên góc phải để thấy được sự thay đổi của Outliers. Các bạn sẽ hiểu những biến này ở phần sau của bài viết.
  • Comment phía dưới xem bạn đã tìm được insight gì hay từ report này?
  • Đổi chế độ điện thoại sang ngang (landscape) nếu không thấy rõ số liệu
  • Boxplot trong hình chỉ để mục đích so sánh vì cách tính khác nhau

Các bạn hoàn toàn có thể tải Workbook này xuống để tìm hiểu thêm cách làm. Nếu có nhiều nhu yế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ựa như như vậy .
Okay giờ mình vào phần tiếp theo xem phương pháp xác lập Outliers nhé

Các bước cần thực thi để xác lập Outliers

Như mình đã nói phía trên, trong bài này tất cả chúng ta sẽ xác lập outliers là những order có giá trị cao hoặc thấp hơn không bình thường so với những orders còn lại trong nhóm. Để làm điều này tất cả chúng ta thực thi những bước sau. Tùy theo từng môi trường tự nhiên tất cả chúng ta sẽ có cách khác nhau để triển khai từng bước, nhưng cơ bản tất cả chúng ta sẽ đều trải qua những bước này .

Bước 0 : Visualise / plot your data

Phác họa dữ liệu lên. Đây là cách nhanh nhất để phát hiện xem tài liệu của bạn có Open Outliers hay không ( dashboard phía trên chính là ví dụ ). Nếu như tài liệu của bạn trọn vẹn thông thường thì bạn không cần phải thêm gì nữa. Nếu có tín hiệu không bình thường thì liên tục nhé .
Bước 1 : Tìm tổng giá trị của mỗi order. Các bạn hoàn toàn có thể biến hóa giá trị cần tính tùy thuộc vào dataset mà những bạn thao tác. Ví dụ như số lượng người mua mới hay số lượng hợp đồng được ký trong ngày, …

Bước 2 : Tính Average và Standard Deviation

Tính giá trị trung bình ( Average / Mean ) và độ lệch chuẩn ( Standard Deviation ) của tổng giá trị order theo từng Sub-Category. Việc tính 2 giá trị này sẽ cho tất cả chúng ta giá trị TT ( Average ) và từ giá trị TT tất cả chúng ta sẽ kiểm tra xem độ phân tán của tài liệu như thế nào dựa trên giá trị của độ lệch chuẩn ( Standard Deviation ) .
Standard Deviation và phân bố dữ liệuStandard Deviation và phân bố dữ liệu – Nguồn ảnh
Với bộ tài liệu có độ phân tán thông thường thì với 3 Standard Deviation ( STD ), tất cả chúng ta sẽ bao trùm được khoảng chừng > 99 % của tài liệu. Vậy nên những tài liệu nằm ngoài 3 STD thường sẽ là Outliers .
Các bạn xem thêm về Standard Deviation ở đây nhé

Bước 3 : Tính giá trị biên Upper / Lower whisker

Upper / lower whisker là 2 giá trị cực lớn / tiểu nhằm mục đích giúp tất cả chúng ta xác lập tài liệu chuẩn ( expected ) và giá ngoại lai ( outliers ). Giá trị biên phía ngọn ( upper whisker ) và gốc ( lower whisker ) theo công thức sau :

Upper_whisker = AVG + STDV * Steps

Lower_whisker = AVG – STDV*Steps

Steps : ở đây là một dãy số tự nhiên tất cả chúng ta tự đặt ra tùy theo độ phân tán của tài liệu. Trong phần đông trường hợp, Steps = 3 ( tương tự 3 Standard deviations ) sẽ bao trùm tầm trên 90 % tổng số tài liệu. Các bạn hoàn toàn có thể khởi đầu với Step = 3 trong hầu hết trường hợp .

Bước 4 : Xác định outliers dựa trên giá trị biên

Việc này khá đơn thuần, tất cả chúng ta chỉ cần triển khai so sánh giá trị của Order với Upper whisker và Lower whisker. Nếu giá trị của Order nằm bên trong đoạn từ Upper đến lower thì sẽ là expected data, còn ngoài những sẽ là outliers. Mình có công thức sau :

If Sum_sale > Upper_whisker or Sum_sale < Lower_whiske then ‘ Outlier ’ else ‘ Expected ’

Như xác lập phía trên là mọi giá trị nằm ngoài vùng biên đều là outliers .

Bước 5 : Thực hiện giám sát khi đã vô hiệu Outliers

Bây giờ tất cả chúng ta đã biết được những order nào là Outliers. Bước tiếp theo đơn thuần là thực thi những phép tính thiết yếu với điều kiện kèm theo để loại outliers .
Ở đây mình sẽ thực thi lại việc tính giá trị trung bình của mỗi hóa đơn tại mỗi State .

Bước 6 : Kiểm tra và kiểm soát và điều chỉnh giá trị Step

Sau khi đã có được tác dụng mới, tất cả chúng ta triển khai việc so sánh với tác dụng trước đó xem sự khác nhau như thế nào. Lúc này tất cả chúng ta cũng cần chăm sóc đến một giá trị khác nữa là số lượng tài liệu mà tất cả chúng ta còn lại sau khi vô hiệu Outliers .
Việc này cực kỳ quan trọng cho tác dụng sau cuối. Tùy thuộc vào mục tiêu sử dụng mà tất cả chúng ta chọn giá trị khác nhau .
Lúc này những bạn triển khai tính tổng số lượng data ( order ) còn lại so với tài liệu gốc là bao nhiêu. Với số lượng tài liệu như vậy đã đủ chưa hay quá nhiều ?
Nếu muốn tăng số lượng tài liệu thì tất cả chúng ta tăng giá trị của steps lên và ngược lại. Mình khuyến khích là mỗi lần nên tăng / giảm đi 0.5. Sau đó tất cả chúng ta quay lại bước 3 và tái diễn cho đến khi có bạn cảm thấy hài lòng .

Hướng dẫn xác lập và vô hiệu outliers bằng SQL

Bây giờ những bạn đọc đoạn mã phía dưới nhé. Lưu ý, trong phần mình mình sử dụng SQL CTE ( lệnh with ). 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é .
– Bước 0 : mình đã làm với Tableau dashboard phía – trên rồi nên mình không chăm sóc ở đây – Bước 1 : Tổng giá trị mỗi order with sales_per_order as ( select Order_ID, state, sum ( Sales ) as total_order_sales from sentayho.com.vn group by Order_ID, state ) – Bước 2 : Tính avg và standard deviation – dựa trên total_order_sales và State, avg_std as ( select state, sum ( total_order_sales ) as sum_sales, count ( * ) as number_of_orders, avg ( total_order_sales ) as avg_sales, std ( total_order_sales ) as std_sales from sales_per_order group by state ) – Bước 3 : tính Upper whisker và Lower whisker mỗi state – upper_whisker = avg + std * steps – lower_whisker = avg – std * steps – ở đây mình mặc đinh steps = 3, upper_lower_whisker as ( select state, std_sales, avg_sales, number_of_orders, ( avg_sales + std_sales * 3 ) as upper_whisker – tất cả chúng ta đang kiểm tra giá trị của mỗi order – nên những giá trị < 0 đều sẽ là lỗi, case when ( avg_sales – std_sales * 3 ) < 0 then 0 else ( avg_sales – std_sales * 3 ) end as lower_whisker from avg_std ) – Bước 4 : xác lập order là outliers – So sánh total_order_sales với upper và lower, find_outliers as ( select sentayho.com. vnr_ID, sentayho.com.vn, sentayho.com. vnl_order_sales, sentayho.com. vner_of_orders, sentayho.com. vn_sales, sentayho.com. vn_sales, sentayho.com. vnr_whisker, sentayho.com. vnr_whisker, case when sentayho.com. vnl_order_sales > sentayho.com. vnr_whisker or sentayho.com. vnl_order_sales < sentayho.com. vnr_whisker then ‘ Outlier ’ else ‘ Expected ’ end as Outlier_status from sales_per_order as spo left join upper_lower_whisker as ulh on sentayho.com.vn = sentayho.com.vn ) – Bước 5 : Tính lại giá trị trung bình của mỗi order – sau khi vô hiệu những outliers ( chỉ giữ lại Expected ) select state – hàng loạt order của state, number_of_orders, std_sales, upper_whisker, lower_whisker, avg_sales, avg ( total_order_sales ) as avg_sales_no_outliers – số order sau khi đã vô hiệu outliers, count ( * ) as new_number_of_orders – tỉ lệ phần trăm tài liệu còn lại, count ( * ) / number_of_orders * 100 as remaining_data from find_outliers where outlier_status = ‘ Expected ’ group by state, number_of_orders – ở đây mình thấy với Step = 3 mình đã có được phần nhiều tài liệu ( > 95 % ) – cộng với việc khi visualise mình thấy đã xác loại được khá nhiều outliers – vậy nên mình không biến hóa step nữa
Sau khi chạy đoạn code trên những 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 bạn đầu .
Nếu đã có tác dụng những bạn hoàn toàn có thể quay trở lại Dashboard phía trên để kiểm tra và so sánh cũng như kiểm xem những outliers đã bị vô hiệu là những order nào .

Tổng kết và thực hành thực tế

Bài này tất cả chúng ta đã cùng nhau làm quen với khái niệm, hoàn toàn có thể mới với một số ít bạn, là Outliers. Cùng với đó là những quyền lợi cũng như cách để xác lập và vô hiệu những Outliers không mong ước .
Mình đã cho demo thử cách xác lập outliers và vô hiệu chúng dựa trên tổng giá trị của một Order và State. Bây giờ những bạn hoàn toàn có thể thực hành thực tế cùng với dataset đó nhưng sử dụng câu hỏi sau :

“Tính trung bình tổng giá trị mỗi order của mỗi tháng trong năm.”

Bạn nào chưa hiểu chỗ nào hoàn toàn có thể comment phía dưới. Mình sẽ cố gắng nỗ lực giải đáp nếu hoàn toàn có thể. Bookmark lại để quay lại khi cần nhé .
Đừng quên san sẻ nếu thấy có ích nhé .
Bài viết thuộc quyền sở hữu của sentayho.com.vn

Bạn thấy bài viết thế nào ?