Trong một SVM, bạn đang tìm kiếm hai thứ: một siêu phẳng có lề tối thiểu lớn nhất và một siêu phẳng phân tách chính xác càng nhiều trường hợp càng tốt. Vấn đề là bạn sẽ không thể có được cả hai thứ. Tham số c xác định mức độ mong muốn của bạn là tuyệt vời như thế nào. Tôi đã rút ra một ví dụ nhỏ dưới đây để minh họa điều này. Ở bên trái, bạn có một c thấp cung cấp cho bạn một lề tối thiểu khá lớn (màu tím). Tuy nhiên, điều này đòi hỏi chúng ta bỏ qua vòng tròn màu xanh ngoại lệ mà chúng ta đã không phân loại đúng. Bên phải bạn có một c cao. Bây giờ bạn sẽ không bỏ qua ngoại lệ và do đó kết thúc với một lề nhỏ hơn nhiều.
Vì vậy, trong số các phân loại là tốt nhất? Điều đó phụ thuộc vào dữ liệu trong tương lai mà bạn dự đoán sẽ trông như thế nào và thường thì bạn không biết điều đó. Nếu dữ liệu trong tương lai trông như thế này:
sau đó phân loại đã học bằng cách sử dụng giá trị c lớn là tốt nhất.
Mặt khác, nếu dữ liệu trong tương lai trông như thế này:
sau đó phân loại đã học bằng cách sử dụng giá trị c thấp là tốt nhất.
Tùy thuộc vào tập dữ liệu của bạn, việc thay đổi c có thể hoặc không thể tạo ra một siêu phẳng khác nhau. Nếu nó không tạo ra một siêu phẳng khác nhau, điều đó không có nghĩa là phân loại của bạn sẽ đưa ra các lớp học khác nhau cho các dữ liệu cụ thể bạn đã sử dụng nó để phân loại. Weka là một công cụ tốt để trực quan hóa dữ liệu và chơi xung quanh với các cài đặt khác nhau cho một SVM. Nó có thể giúp bạn có được ý tưởng tốt hơn về cách dữ liệu của bạn trông như thế nào và tại sao thay đổi giá trị c không thay đổi lỗi phân loại. Nói chung, có ít trường hợp đào tạo và nhiều thuộc tính giúp cho việc phân tách dữ liệu tuyến tính dễ dàng hơn. Ngoài ra, thực tế là bạn đang đánh giá dữ liệu đào tạo của mình và không phải dữ liệu mới chưa thấy giúp việc phân tách dễ dàng hơn.
Những loại dữ liệu bạn đang cố gắng học một mô hình từ? Bao nhiêu dữ liệu? Chúng ta có thể nhìn thấy nó?