Gần đây tôi đã bắt đầu học cách làm việc sklearn
và vừa bắt gặp kết quả đặc biệt này.
Tôi đã sử dụng digits
bộ dữ liệu có sẵn sklearn
để thử các mô hình và phương pháp ước tính khác nhau.
Khi tôi đã thử nghiệm một mô hình Support Vector Machine trên các dữ liệu, tôi phát hiện ra có hai lớp khác nhau trong sklearn
phân loại SVM: SVC
và LinearSVC
, nơi những ứng dụng cũ một đối-một cách tiếp cận và sử dụng khác một chống-phần còn lại cách tiếp cận.
Tôi không biết ảnh hưởng gì đến kết quả, vì vậy tôi đã thử cả hai. Tôi đã thực hiện ước tính theo kiểu Monte Carlo khi tôi chạy cả hai mô hình 500 lần, mỗi lần chia mẫu ngẫu nhiên thành đào tạo 60% và kiểm tra 40% và tính toán lỗi dự đoán trên bộ kiểm tra.
Công cụ ước tính SVC thông thường tạo ra biểu đồ lỗi sau: Trong khi công cụ ước tính SVC tuyến tính tạo ra biểu đồ sau:
Điều gì có thể giải thích cho một sự khác biệt rõ ràng như vậy? Tại sao mô hình tuyến tính có độ chính xác cao hơn hầu hết thời gian?
Và, có liên quan, điều gì có thể gây ra sự phân cực rõ rệt trong kết quả? Độ chính xác gần bằng 1 hoặc độ chính xác gần bằng 0, không có gì ở giữa.
Để so sánh, phân loại cây quyết định tạo ra tỷ lệ lỗi phân phối bình thường hơn nhiều với độ chính xác khoảng 0,85.
Similar to SVC with parameter kernel=’linear’, but implemented in terms of liblinear rather than libsvm, so it has more flexibility in the choice of penalties and loss functions and should scale better (to large numbers of samples).