2010-09-06 70 views
5

Tôi bắt đầu sử dụng NaiveBayes/Simple phân loại để phân loại (Weka), tuy nhiên tôi có một số vấn đề cần hiểu khi đào tạo dữ liệu. Tập dữ liệu tôi đang sử dụng là weather.nominal.arff.diễn giải kết quả Naive Bayes

alt text

Trong khi tôi sử dụng thử nghiệm đào tạo sử dụng từ các tùy chọn, kết quả phân loại là:

Correctly Classified Instances 13 - 92.8571 %  
Incorrectly Classified Instances 1 - 7.1429 % 

a b classified as 
9 0 a =yes 
1 4 b = no 

câu hỏi đầu tiên của tôi là những gì tôi nên hiểu từ các trường hợp được phân loại không chính xác? Tại sao một vấn đề như vậy lại xảy ra? bộ sưu tập thuộc tính nào được phân loại không chính xác? có cách nào để hiểu điều này không?

Thứ hai, khi tôi thử xác thực chéo 10 lần, tại sao tôi nhận được các trường hợp được phân loại chính xác khác nhau (ít hơn)?

Kết quả là:

Correctly Classified Instances   8    57.1429 % 
Incorrectly Classified Instances   6    42.8571 % 

a b <-- classified as 
7 2 | a = yes 
4 1 | b = no 

Trả lời

8

Bạn có thể nhận các dự đoán cá nhân cho mỗi trường hợp bằng cách chọn tùy chọn này từ:

More Options ...> dự đoán Output> rõ

Điều này sẽ cung cấp cho bạn thêm các chỉ số đánh giá, như sau:

=== Predictions on training set === 

inst#  actual predicted error prediction 
    1  2:no  2:no  0.704 
    2  2:no  2:no  0.847 
    3  1:yes  1:yes  0.737 
    4  1:yes  1:yes  0.554 
    5  1:yes  1:yes  0.867 
    6  2:no  1:yes + 0.737 
    7  1:yes  1:yes  0.913 
    8  2:no  2:no  0.588 
    9  1:yes  1:yes  0.786 
    10  1:yes  1:yes  0.845 
    11  1:yes  1:yes  0.568 
    12  1:yes  1:yes  0.667 
    13  1:yes  1:yes  0.925 
    14  2:no  2:no  0.652 

cho biết rằng phiên bản thứ 6 đã được phân loại sai. Lưu ý rằng ngay cả khi bạn đào tạo và thử nghiệm trên cùng một trường hợp, phân loại sai có thể xảy ra do sự không nhất quán trong dữ liệu (ví dụ đơn giản nhất là có hai trường hợp có cùng các tính năng nhưng với nhãn lớp khác nhau).

Hãy nhớ rằng cách thử nghiệm ở trên là thiên vị (hơi gian lận vì nó có thể thấy câu trả lời cho các câu hỏi). Do đó, chúng tôi thường quan tâm đến việc ước tính thực tế hơn về lỗi mô hình trên dữ liệu không nhìn thấy được. Cross-validation là một trong những kỹ thuật như vậy, nơi nó phân chia dữ liệu thành 10 nếp gấp phân tầng, thực hiện thử nghiệm trên một lần, trong khi đào tạo trên chín lần khác, cuối cùng nó báo cáo độ chính xác trung bình trong mười lần chạy.

+0

cảm ơn câu trả lời rõ ràng và mẹo đầu tiên + 1. điểm khó hiểu là thiên vị, ý bạn là gì? Tôi có nên luôn sử dụng xác thực chéo cho tất cả các thuật toán phân loại khác nhau của mình không? – berkay

+4

suy nghĩ về nó, bạn muốn tìm hiểu một mạng lưới Naive Bayes mô hình dữ liệu của bạn, sau đó bạn muốn kiểm tra độ chính xác dự đoán của nó. Nếu bạn đào tạo mô hình và kiểm tra nó trên cùng một tập hợp, thì bạn đang đánh giá quá cao độ chính xác của nó (nó đã thấy những ví dụ cụ thể do đó thực hiện tốt trên chúng), nhưng có lẽ sẽ kém thành công trên dữ liệu mới. Điểm mấu chốt ở đây là ** tổng quát **: chúng tôi muốn khái quát hóa ngoài các trường hợp đã được cung cấp tại "thời gian đào tạo" cho các ví dụ mới không nhìn thấy được. – Amro

+0

Amro cảm ơn câu trả lời rõ ràng. Tôi đang đăng ở đây để đặt câu hỏi về việc thu hồi và độ chính xác của các kết quả xác thực chéo. recall (7/(2 + 7)) = 0778 và độ chính xác là (1/(1 + 4)) = 0.2, tuy nhiên weka nói cho độ chính xác = 0.636? bất kỳ ý tưởng về điều này? – berkay