Nhiều nhãn trong thuật toán học có giám sát


10

Tôi có một kho văn bản với một chủ đề tương ứng. Ví dụ "A rapper Tupac was shot in LA"và nó được dán nhãn là ["celebrity", "murder"]. Vì vậy, về cơ bản, mỗi vectơ của các tính năng có thể có nhiều nhãn (không cùng số lượng. Vectơ tính năng đầu tiên có thể có 3 nhãn, thứ hai 1, thứ ba 5).

Nếu tôi chỉ có một nhãn tương ứng với mỗi văn bản, tôi sẽ thử trình phân loại Naive Bayes , nhưng tôi thực sự không biết nên tiến hành như thế nào nếu tôi có thể có nhiều nhãn.

Có cách nào để biến Naive Bayes thành vấn đề phân loại nhiều nhãn (nếu có cách tiếp cận tốt hơn - vui lòng cho tôi biết)?

PS vài điều về dữ liệu tôi có.

  • khoảng 10.000 yếu tố trong bộ dữ liệu
  • văn bản khoảng 2-3 câu
  • tối đa 7 nhãn cho mỗi văn bản

@fordpreinf Multveomial Naive Bayes sử dụng phân phối đa cực cho xác suất của một số tính năng được cung cấp một lớp: . OP muốn một bộ phân loại để quản lý nhiều đầu ra như TheGrimmSellectist đã mô tả. p(fi|c)
Robert Smith

Câu trả lời:


6

Đối với người mới bắt đầu, Naive Bayes có lẽ không thích hợp ở đây. Nó giả định tính độc lập giữa các yếu tố đầu vào (do đó là "Ngây thơ") và các từ trong câu rất phụ thuộc.

Nhưng, giả sử bạn thực sự muốn chạy với NB như một thuật toán để bắt đầu thử nghiệm, có hai tùy chọn tôi sẽ xem xét:

Ungraceful: Rất nhiều phân loại NB

Đây sẽ là một cách tiếp cận khác. Tạo một corupus của tất cả các từ được quan sát như vectơ đầu vào của bạn. Tạo một văn bản tắt tất cả các thẻ được quan sát như vectơ đầu ra của bạn. Một trình phân loại NB có nhiều đầu ra tương đương với việc có nhiều phân loại NB với một đầu ra mỗi đầu ra (vì vậy hãy thực hiện bất kỳ cách nào dễ dàng hơn trong bất kỳ khung phần mềm nào bạn đang sử dụng). Hãy coi mỗi phần tử là một mẫu đào tạo trong đó một đầu vào nhất định (một từ) là 1nếu từ đó có mặt và 0nếu từ đó không có. Sử dụng sơ đồ nhị phân tương tự cho đầu ra.

Kẻ vũ phu này buộc ứng dụng Trình phân loại NB vào dữ liệu của bạn và để bạn tìm thấy ý nghĩa bằng cách vẫn haivng để khai thác bộ phân loại khổng lồ mà bạn sẽ để lại.

Duyên dáng hơn: Xử lý dữ liệu của bạn

Đây là cách tiếp cận tôi khuyên dùng nếu bạn muốn chạy với một Trình phân loại NB nhiều lớp.

Mục tiêu của bạn ở đây là tìm ra cách ánh xạ từng bộ thẻ vào một lớp duy nhất. Tôi chắc chắn có một số loại sơ đồ phân cụm hoặc phân tích mạng (có lẽ ["người nổi tiếng"] được liên kết với ["giết người"] có thể trở thành một phân đoạn ["đồi trụy"]) sẽ ánh xạ hợp lý các thẻ của bạn thành một cụm. Nếu bạn coi các thẻ là các nút và hai thẻ đã cho cùng nhau làm liên kết, thì bạn sẽ muốn xem xét các thuật toán phát hiện cộng đồng (đó là nơi tôi bắt đầu). Nhưng, nếu bạn chỉ muốn một cái gì đó hoạt động, thì một số loại hack trên các thẻ chuyển đổi danh sách các thẻ thành chỉ thẻ thường thấy nhất trong tập dữ liệu của bạn là đủ.

Phương pháp này tải trước công việc làm sạch dữ liệu của bạn và sẽ làm cho đầu ra của Trình phân loại NB dễ hiểu hơn.


cảm ơn bạn đã đóng góp, nếu bạn có ý tưởng gì thì tốt hơn NB, xin vui lòng cho tôi biết.
Salvador Dali

1
phần "giải pháp hiện có" của bộ bài trình chiếu này chứa mọi thứ tôi biết để trả lời, cộng với nhiều hơn (giả sử bạn không cần một trình phân loại cụ thể và chỉ muốn một cách sử dụng thẻ). Tôi hy vọng nó hữu ích cho bạn.
TheGrimmSellectist

@TheGrimmSellectist Sẽ không hợp lý khi sử dụng cách tiếp cận đầu tiên? Nếu bạn có một vectơ các tính năng F1, f2, f3 và giả sử, 3 nhãn cho vectơ này, chúng ta có thể phân vùng đó thành 3 vectơ (tất cả đều chứa cùng các tính năng F1, f2, f3) với các nhãn khác nhau làm đầu ra. Sau đó có thể sử dụng Naive Bayes như bình thường. Tôi không chắc đó là những gì bạn có trong tâm trí.
Robert Smith
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.