Làm thế nào tôi có thể nhanh chóng phát hiện các biến gian lận trong dữ liệu lớn?


7

Giả sử Chúng ta có một tập dữ liệu với hàng triệu hàng và hàng nghìn cột và tác vụ là phân loại nhị phân. Khi chúng ta chạy mô hình hồi quy logistic, hiệu suất tốt hơn rất nhiều so với dự kiến, ví dụ, phân loại gần như hoàn hảo.

Chúng tôi nghi ngờ có một số biến gian lận trong dữ liệu, làm thế nào tôi có thể nhanh chóng phát hiện ra nó?

Ở đây các biến gian lận có nghĩa là một biến rất biểu thị cho phản hồi và chúng ta không nên sử dụng nó. Ví dụ: chúng tôi sử dụng nếu một người thực hiện cuộc gọi dịch vụ khách hàng để dự đoán xem một người có mua sản phẩm hay không.


2
Ý tưởng của bạn về "biến gian lận" ở đây có vẻ tương tự như ngụy biện "tương quan = nhân quả" (hoặc có lẽ là " hậu kỳ "). Nhưng đề xuất của bạn có vẻ giống như "Làm thế nào để xác định xem một người dự đoán có chi phối kết quả không?". Điều này có thể hữu ích để gắn cờ các biến cho QA / QC hơn nữa , nhưng không mang tính quyết định. Trong ví dụ kết thúc của bạn, dấu thời gian trên dữ liệu sẽ là xác định (tức là cuộc gọi theo sau mua hàng, vì vậy "gian lận" vì mũi tên nhân quả bị ngược).
GeoMatt22

@ GeoMatt22 cảm ơn vì nhận xét của bạn, tôi thừa nhận lỗi không rõ ràng. Tôi cũng đang suy nghĩ nếu định nghĩa nên bao gồm sự kết hợp tuyến tính của các biến thay vì một biến và xác định mức độ mạnh mẽ của nó được coi là "gian lận".
Haitao Du

Tôi nghĩ rằng "sự liên kết mạnh mẽ" không thể được sử dụng để suy ra "nguyên nhân so với gian lận" một cách hoàn toàn hợp lý. Tuy nhiên theo nghĩa Bayes, "quá tốt là đúng" trước đây dường như không có giá trị. Nhưng tôi không chắc chắn làm thế nào để chính thức hóa việc này :) (Trong một tên miền cụ thể, tôi đoán bạn có thể tích lũy " PDF nhân quả trước "?)R2
GeoMatt22

quy trình lưu ý: bạn có thể muốn trì hoãn trước khi đăng câu trả lời, để khuyến khích phản hồi. (Hoặc đăng một ghi chú về ý định của bạn, như tôi đã làm ở đây .)
GeoMatt22

1
@ hxd1011: Nếu bạn muốn xem một trường hợp khác liên quan đến rò rỉ dữ liệu, hãy xem chủ đề gần đây này . Một số tài liệu tham khảo và liên kết được cung cấp cũng có thể hữu ích.
usεr11852

Câu trả lời:


11

Điều này đôi khi được gọi là "Rò rỉ dữ liệu." Có một bài báo hay về điều này ở đây:

Rò rỉ trong khai thác dữ liệu: Xây dựng, phát hiện và tránh

Bài báo trên có rất nhiều ví dụ thú vị (và kinh hoàng) về rò rỉ dữ liệu, ví dụ, một cuộc thi dự đoán ung thư trong đó hóa ra số ID bệnh nhân có dự đoán gần như hoàn hảo về ung thư trong tương lai, vô tình vì cách các nhóm được hình thành trong suốt nghiên cứu .

Tôi không nghĩ rằng có một cách cắt rõ ràng để xác định rò rỉ dữ liệu. Bài viết trên có một số gợi ý nhưng nói chung nó rất cụ thể. Ví dụ, bạn chắc chắn có thể chỉ nhìn vào mối tương quan giữa các tính năng và mục tiêu của bạn. Tuy nhiên, đôi khi bạn sẽ bỏ lỡ mọi thứ. Ví dụ: hãy tưởng tượng bạn đang tạo một trình phát hiện bot spam cho một trang web như stackexchange, ngoài các tính năng thu thập như độ dài tin nhắn, nội dung, v.v., bạn có thể thu thập thông tin về việc tin nhắn có bị người dùng khác gắn cờ hay không. Tuy nhiên, nếu bạn muốn trình phát hiện bot của mình càng nhanh càng tốt, bạn không cần phải dựa vào cờ thông báo do người dùng tạo. Đương nhiên, các bot spam sẽ tích lũy một tấn cờ tin nhắn do người dùng tạo, vì vậy trình phân loại của bạn có thể bắt đầu dựa vào các cờ này, và ít hơn về nội dung của các tin nhắn. Theo cách này, bạn nên xem xét xóa cờ như một tính năng để bạn có thể gắn thẻ bot nhanh hơn nỗ lực của người dùng có nguồn gốc đám đông, tức là trước khi nhiều đối tượng tiếp xúc với tin nhắn của họ.

Đôi khi, bạn sẽ có một tính năng rất ngu ngốc gây ra sự phát hiện của bạn. Có một giai thoại hay ở đây về một câu chuyện về cách Quân đội cố gắng tạo ra một máy dò xe tăng, có độ chính xác gần như hoàn hảo, nhưng cuối cùng lại phát hiện ra những ngày nhiều mây thay vì tất cả các hình ảnh huấn luyện với xe tăng được chụp vào một ngày nhiều mây và mọi hình ảnh huấn luyện không có xe tăng đã được thực hiện vào một ngày rõ ràng. Một tài liệu rất phù hợp về vấn đề này là: "Tại sao tôi nên tin tưởng bạn?": Giải thích Dự đoán của bất kỳ phân loại nào - Ribeiro, et. al.


1
+1 cảm ơn vì đã trả lời những câu hỏi chưa được xác định rõ ràng của tôi! và bây giờ tôi biết thuật ngữ này và sẽ đọc công thức của họ!
Haitao Du

Ở đoạn cuối: quân đội rõ ràng đã dành bài học đó cho trái tim !
GeoMatt22

2
+1 Rò rỉ phổ biến nhất mà tôi gặp phải là rò rỉ từ tương lai. Đây là lý do tại sao tôi không quá lo lắng về nhóm mới "Chỉ cần chạy dữ liệu của bạn thông qua thuật toán của chúng tôi và nó sẽ tạo ra một mô hình giống như một Nhà khoa học dữ liệu!" các sản phẩm. Máy học tuân theo tín hiệu, ngay cả khi tín hiệu bị rò rỉ.
Wayne

2

Một cách để phát hiện các biến gian lận là xây dựng mô hình cây và xem xét một vài phân tách đầu tiên. Dưới đây là một ví dụ mô phỏng.

cheating_variable=runif(1e3)
x=matrix(runif(1e5),nrow = 1e3)
y=rbinom(1e3,1,cheating_variable)

d=data.frame(x=cbind(x,cheating_variable),y=y)

library(rpart)
library(partykit)
tree_fit=rpart(y~.,d)
plot(as.party(tree_fit))

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.