17

Hãy nói rằng bạn có quyền truy cập vào tài khoản email với lịch sử của các email nhận được từ những năm cuối cùng (~ email 10k) phân thành 2 nhómmạng thần kinh để phát hiện thư rác email

  • email chính hãng
  • thư rác

Làm cách nào bạn tiếp cận nhiệm vụ tạo giải pháp mạng thần kinh có thể được sử dụng để phát hiện spam - về cơ bản phân loại email là spam hoặc không phải spam?

Giả sử rằng tìm nạp email đã có sẵn và chúng tôi chỉ cần tập trung vào phần phân loại.

Những điểm chính mà tôi sẽ hy vọng sẽ nhận được trả lời sẽ là:

  1. Những thông số để lựa chọn như là đầu vào cho NN, và tại sao?
  2. Cấu trúc của NN nào có khả năng hoạt động tốt nhất cho công việc như vậy?

Ngoài ra bất kỳ kiến ​​nghị tài nguyên, hoặc triển khai hiện có (tốt nhất là trong C#) được chào đón nhiều hơn

Cảm ơn bạn

EDIT

  • Tôi thiết về việc sử dụng mạng thần kinh như khía cạnh chính của dự án là kiểm tra cách tiếp cận NN sẽ hoạt động để phát hiện spam
  • Al do đó, đó là "vấn đề đồ chơi" chỉ đơn giản là để khám phá chủ đề trên mạng thần kinh và thư rác

Trả lời

24

Nếu bạn nhấn mạnh vào NNS ... Tôi sẽ tính toán một số tính năng cho mỗi email

Cả hai nhân vật-Based, Word-based, và các tính năng từ vựng (Khoảng 97 như tôi đếm những):

  1. Tổng số có các ký tự (C)
  2. Tổng số có các ký tự alpha/Tỷ lệ C chars alpha
  3. Tổng số có các ký tự chữ số/C
  4. Tổng số có các ký tự khoảng trắng/C
  5. Tần suất của mỗi chữ cái/C (36 chữ cái của bàn phím - AZ, 0-9)
  6. Tần suất ký tự đặc biệt (10 ký tự: *, _, +, =,%, $, @, ـ, \, /)
  7. Tổng số không lời (M)
  8. Tổng số không có các từ ngắn/M Hai chữ hoặc ít hơn
  9. Tổng số có các ký tự trong từ/C
  10. chiều dài từ trung bình
  11. Avg. độ dài câu trong chars
  12. CPC độ dài câu bằng các từ
  13. Chiều dài từ freq. phân phối/M Tỷ lệ các từ có độ dài n, n từ 1 đến 15
  14. Loại Tỷ lệ mã thông báo Số từ duy nhất/M
  15. Hapax Legomena Freq.các từ một lần xảy ra
  16. Hapax Dislegomena Freq. hai lần xảy ra từ
  17. K biện pháp Yule của
  18. biện pháp D Simpson
  19. biện pháp S Sichel của
  20. biện pháp W Brunet của
  21. biện pháp R Honore của
  22. Tần số ký tự chấm câu 18 chấm câu:. ،; ? ! :() - “« »<> [] {}

Bạn cũng có thể thêm một số tính năng khác dựa trên định dạng: màu sắc, phông chữ, kích thước, ... được sử dụng.

Hầu hết các biện pháp này có thể được tìm thấy trực tuyến, trên giấy tờ hoặc thậm chí Wikipedia (tất cả đều là phép tính đơn giản, có thể dựa trên các tính năng khác).

Vì vậy, với khoảng 100 tính năng, bạn cần 100 đầu vào, một số nút trong một lớp ẩn và một nút đầu ra.

Các yếu tố đầu vào cần phải được chuẩn hóa theo kho dữ liệu được phân loại trước hiện tại của bạn.

Tôi chia thành hai nhóm, sử dụng một nhóm làm nhóm đào tạo và nhóm còn lại làm nhóm thử nghiệm, không bao giờ trộn chúng. Có thể ở tỷ lệ 50/50 nhóm đào tạo/thử nghiệm với tỷ lệ spam/nonspam tương tự.

8

Bạn có đang thực hiện nó với mạng Neural không? Có vẻ như bạn đang thiết lập khá tốt để sử dụng Bayesian classification, được vạch ra cũng trong một vài bài tiểu luận của Paul Graham:

Lịch sử phân loại bạn có thể truy cập để làm cho các tập đoàn rất mạnh mẽ cung cấp cho thuật toán Bayesian, có thể bạn sẽ kết thúc với một kết quả khá hiệu quả.

+0

Cảm ơn Chad, vâng tôi đã thực hiện nó với NN, đó là một yêu cầu, và nó thực sự là để thử nghiệm nếu cách tiếp cận NN sẽ làm việc trong bối cảnh này. – kristof

2
  1. Về cơ bản, bạn có toàn bộ vấn đề, phạm vi tương tự để thiết kế và đào tạo mạng neural, tính năng trích xuất. Nơi tôi sẽ bắt đầu, nếu tôi là bạn, đang cắt và dicing văn bản đầu vào theo một số lượng lớn, mỗi cách là đầu vào tính năng tiềm năng dọc theo dòng "tín hiệu nơron này 1.0 nếu 'giá' và 'viagra' xảy ra trong vòng 3 từ của nhau ", và tiêu hủy những người theo mối tương quan tuyệt đối tốt nhất với nhận dạng thư rác.
  2. Tôi muốn bắt đầu bằng cách sử dụng 50 đến 200 nơron đầu vào tốt nhất và gắn chúng vào một nơron đầu ra đơn (các giá trị được đào tạo cho 1.0 = spam, -1.0 = không phải spam), nghĩa là perceptron một lớp. Tôi có thể thử một mạng lưới backpropagation nhiều lớp nếu nó hoạt động kém, nhưng sẽ không giữ hơi thở của tôi cho kết quả tuyệt vời.

Nói chung, kinh nghiệm của tôi đã khiến tôi tin rằng mạng thần kinh sẽ thể hiện hiệu suất tầm thường nhất trong nhiệm vụ này và tôi muốn giới thiệu thứ gì đó Bayesian như Chad Birch gợi ý, nếu đây không phải là vấn đề đồ chơi để khám phá lưới thần kinh.

+0

Chúc mừng Chaos, điểm tốt. Tôi cũng xem xét việc khai thác tính năng như một vấn đề phức tạp tương tự như bản thân NN. Và có nó thực sự là một vấn đề đồ chơi để khám phá lưới thần kinh – kristof

2

Chad, câu trả lời bạn đã nhận được cho đến nay là hợp lý, nhưng tôi sẽ trả lời cập nhật của bạn rằng:

Tôi thiết về việc sử dụng mạng thần kinh như các khía cạnh chính của dự án là để kiểm tra cách tiếp cận NN sẽ hoạt động như thế nào để phát hiện spam.

Vâng, sau đó bạn gặp vấn đề: một thử nghiệm thực nghiệm như thế này không thể chứng minh tính không phù hợp.

Có lẽ bạn nên học một chút về những gì NN thực sự làm và không làm, để xem tại sao chúng không phải là một ý tưởng đặc biệt tốt cho vấn đề phân loại này. Có lẽ một cách hữu ích để suy nghĩ về chúng là các hàm xấp xỉ hàm phổ dụng. Nhưng đối với một số ý tưởng về cách tất cả điều này phù hợp với nhau trong lĩnh vực phân loại (đó là những gì các vấn đề lọc thư rác), duyệt một văn bản giới thiệu như pattern classification có thể hữu ích.

Không thành công nếu bạn đã chết khi thấy nó chạy, chỉ cần sử dụng bất kỳ thư viện NN chung nào cho chính mạng đó. Hầu hết các vấn đề của bạn sẽ là làm thế nào để đại diện cho các dữ liệu đầu vào anyway. Cấu trúc `tốt nhất 'là không rõ ràng, và nó có lẽ không quan trọng lắm. Các đầu vào sẽ phải là một số phép đo (tính năng) chuẩn hóa trên chính bản thân. Một số là hiển nhiên (đếm từ 'thư rác', vv), một số ít hơn rất nhiều. Đây là một phần bạn thực sự có thể chơi với, nhưng bạn nên mong đợi để làm kém so với bộ lọc Bayesian (trong đó có vấn đề riêng của họ ở đây) do bản chất của vấn đề.

+0

Cảm ơn Simon, điều đầu tiên đến với tâm trí của tôi khi tôi nghe về ý tưởng thực sự là: loại tham số nào có thể được sử dụng cho đầu vào. Bạn cũng đúng rằng loại thử nghiệm này không thể chứng minh được sự không phù hợp. Tôi có lẽ nên thêm rằng đây thực sự chỉ là một bài tập chỉ để chơi với cả NN và phát hiện thư rác vấn đề cho một ai đó là khá mới trong lĩnh vực AI - Tôi sẽ cập nhật câu hỏi của tôi để làm sáng tỏ thêm một chút về điều này :) – kristof

Các vấn đề liên quan