Làm thế nào để dự đoán kết quả chỉ với các trường hợp tích cực như đào tạo?


21

Để đơn giản, giả sử tôi đang làm việc với ví dụ cổ điển về email spam / không phải thư rác.

Tôi có một bộ 20000 email. Trong số này, tôi biết rằng 2000 là thư rác nhưng tôi không có ví dụ nào về email không phải thư rác. Tôi muốn dự đoán liệu 18000 còn lại có phải là thư rác hay không. Lý tưởng nhất, kết quả mà tôi đang tìm kiếm là một xác suất (hoặc giá trị p) rằng email là thư rác.

Tôi có thể sử dụng thuật toán nào để đưa ra dự đoán hợp lý trong tình huống này?

Hiện tại, tôi đang nghĩ đến một phương pháp dựa trên khoảng cách sẽ cho tôi biết email của tôi giống với email spam đã biết như thế nào. Tôi có những lựa chọn nào?

Tổng quát hơn, tôi có thể sử dụng phương pháp học có giám sát hay tôi nhất thiết phải có các trường hợp tiêu cực trong tập huấn luyện của mình để làm điều đó? Tôi có bị giới hạn trong các phương pháp học tập không giám sát? Còn phương pháp bán giám sát thì sao?


1
Bất kỳ thuật toán học tập nào bạn sẽ sử dụng sẽ dự đoán tất cả các thư là thư rác. Bạn phải có ví dụ từ hai loại cho bất kỳ học tập hợp lý.
JohnRos

OK, điều đó sẽ loại trừ một phương pháp học tập có giám sát cổ điển. Nhưng có một thuật toán trả về một số loại số liệu tương tự? Ví dụ: email này rất giống với email spam, email này thì không.
enricoferrero

6
@JohnRos không đúng, học từ dữ liệu tích cực và không có nhãn là một chủ đề lớn trong học tập bán giám sát và nó không giống như bạn mô tả.
Marc Claesen

5
@MarcClaesen: Tôi không quen thuộc với dòng nghiên cứu (rất tuyệt) này. Tôi thấy rằng phép thuật đó nằm trong giả định rằng dữ liệu không được gắn nhãn là hỗn hợp của thư rác và không phải thư rác, điều này làm cho vấn đề có thể giải quyết được.
JohnRos

2
@JohnRos chính xác, và tôi đồng ý với yếu tố mát mẻ. Điều tôi thấy thực sự tuyệt vời là thực tế gần đây chúng tôi đã có thể chỉ ra cách tính các số liệu hiệu suất truyền thống dựa trên các bảng dự phòng (ví dụ: độ chính xác, độ chính xác, thu hồi, ...) mà không cần biết phủ định !
Marc Claesen

Câu trả lời:


19

Điều này được gọi là học từ dữ liệu tích cực và không có nhãn, hoặc viết tắt là PU, và là một hoạt động tích cực của học tập bán giám sát.

Tóm lại, điều quan trọng là sử dụng dữ liệu chưa được gắn nhãn trong quá trình học vì nó mang lại các mô hình được cải thiện đáng kể so với cái gọi là phân loại lớp đơn được đào tạo riêng về các mặt tích cực đã biết. Dữ liệu chưa được gắn nhãn có thể được kết hợp theo nhiều cách, các cách tiếp cận chủ yếu là như sau:

  • bằng cách nào đó suy ra một tập hợp các tiêu cực có khả năng từ dữ liệu chưa được gắn nhãn và sau đó huấn luyện một mô hình được giám sát để phân biệt các tích cực đã biết với các tiêu cực được suy luận này.
  • coi bộ không nhãn là âm và bằng cách nào đó giải thích cho nhiễu nhãn được biết là có mặt.

Tôi đang hoạt động trong lĩnh vực này và thay vì tóm tắt nó ở đây cho bạn, tôi khuyên bạn nên đọc hai bài viết của mình và các tài liệu tham khảo trong đó để có cái nhìn tổng quan về tên miền:

  • Một kỹ thuật tiên tiến để tìm hiểu các mô hình từ dữ liệu tích cực và không nhãn (xuất bản chính thức có sẵn tại đây ): http://arxiv.org/abs/1402.3144
  • Một kỹ thuật để tính toán các số liệu hiệu suất thường được sử dụng mà không có tiêu cực đã biết (đang xem xét, đây là lần đầu tiên thuộc loại này): http://arxiv.org/abs/1504.06837

1
Xuất sắc! Rất cám ơn cho các tài liệu tham khảo. RESVM và SVM được đóng gói dường như hoạt động tương tự trong cài đặt học tập PU. Bạn có thể đề xuất các triển khai (tốt nhất là trong R) của một trong hai thuật toán không? Không có vẻ như được bao gồm trong caret, không may.
enricoferrero

1
@enricoferrero Có, chúng hoạt động tương tự trừ khi có dương tính giả (đã biết), trong trường hợp đó, RESVM vượt trội hơn đáng kể so với đóng gói SVM (Tôi đã thiết kế RESVM cho mục đích đó, vì ứng dụng tôi làm việc có dương tính giả). Tôi không nghĩ rằng có sẵn các triển khai R, nhưng bạn có thể thực hiện cả hai cách dễ dàng bằng cách gói một triển khai SVM như kernlabhoặc e1071. Lưu ý rằng cả đóng gói SVM và RESVM đều có một số siêu đường kính mà bạn phải tối ưu hóa, theo đó tôi khuyên dùng thư viện Optunity (có giao diện R).
Marc Claesen

1
@enricoferrero Tôi có triển khai RESVM dòng lệnh tại github.com/claesenm/resvm , mặc dù mã đó không được đánh bóng rất tốt. Repo cụ thể đó được viết bằng Python và được sử dụng làm trình điều khiển cho gói OblembleSVM .
Marc Claesen

Có vẻ như một tùy chọn tốt khác cho thuật toán SVM được đóng gói có thể là sử dụng gói mlr trong R với trình bao bọc đóng gói xung quanh người học SVM .
enricoferrero

7

Tôi cho rằng không có nhiều trường hợp spam trong 18000 trường hợp của bạn. Để sử dụng phương pháp học có giám sát cho việc này, bạn cần có nhiều hơn 1 danh mục / lớp trong dữ liệu của mình. Vì bạn biết 2000 trường hợp là thư rác, bạn có thể gắn nhãn 18000 trường hợp còn lại là 'danh mục không xác định' và huấn luyện bất kỳ mô hình học tập có giám sát nào để dự đoán liệu một trường hợp có nằm trong thư rác hoặc danh mục không xác định. Sau đó kiểm tra độ chính xác của mô hình mẫu để xem mô hình hoạt động tốt như thế nào để phân biệt giữa 2 loại. Nếu nó hoạt động tốt, thì giả định của tôi về một vài trường hợp spam trong danh mục 'không xác định' được bảo hành. Nếu nó không hoạt động tốt, thì bạn sẽ phải sử dụng một người học không được giám sát (như kmeans, v.v.) để phân cụm và xác định các nhóm đồng nhất riêng biệt trong dữ liệu của bạn. Sau đó xác định cụm nào chứa hầu hết 2000 email spam, và cái nào không, và gắn nhãn chúng là thư rác và không phải thư rác tương ứng. Tiếp theo, bạn có thể tiến hành mô hình hóa bằng cách sử dụng một người học được giám sát như tôi đã mô tả trước đó.


2

Những gì OP đang nói đến là một nhiệm vụ phân loại một lớp, đây là một nhiệm vụ rất khó khăn.

Có nhiều bài viết về nhiệm vụ này trên các lĩnh vực nghiên cứu khác nhau. Tôi cũng đã viết một Đề án xác minh quyền tác giả nội tại hiệu quả dựa trên việc học tập của nhóm . Rất dễ dàng để điều chỉnh nó để phân loại thư rác / không phải thư rác, thay vì tác giả. Hãy dùng thử và cho tôi biết nếu bạn cần thêm chi tiết ...


Tôi gặp lỗi 404 khi theo liên kết của bạn.
enricoferrero

Có một lỗi đánh máy. Xin lỗi vì điều đó, nên làm việc ngay bây giờ ;-)
Ngoại lệ chưa được xử lý
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.