Đầu ra của Scikit SVM trong phân loại đa lớp luôn cho cùng một nhãn


10

Tôi hiện đang sử dụng Scikit tìm hiểu với đoạn mã sau:

clf = svm.SVC(C=1.0, tol=1e-10, cache_size=600, kernel='rbf', gamma=0.0, 
              class_weight='auto')

và sau đó thực hiện phù hợp và dự đoán cho một tập hợp dữ liệu với 7 nhãn khác nhau. Tôi có một đầu ra kỳ lạ. Bất kể kỹ thuật xác thực chéo nào tôi sử dụng nhãn dự đoán trên bộ xác thực luôn luôn là nhãn 7.

Tôi thử một số tham số khác, bao gồm cả mặc định đầy đủ ( svm.SVC()) nhưng miễn là phương thức kernel tôi sử dụng rbfthay vì polyhoặc linearnó không hoạt động, trong khi nó hoạt động thực sự tốt polylinear.

Ngoài ra, tôi đã thử dự đoán về dữ liệu xe lửa thay vì dữ liệu xác nhận và nó hoàn toàn phù hợp.

Có ai nhìn thấy loại vấn đề này trước đây và biết những gì đang xảy ra ở đây?

Tôi không bao giờ nhìn vào phân phối lớp của tôi một cách chi tiết nhưng tôi biết nó nên có khoảng 30% trong số họ là 7, 14% là 4.

Tôi thậm chí đã thử thực hiện thủ công 1-vs-rest và nó vẫn không hữu ích.


Tỷ lệ dữ liệu của bạn rơi vào mỗi lớp là gì?
gung - Phục hồi Monica

Thực sự có nhiều "7" trong dữ liệu của tôi nhưng không nhiều. Khoảng 30% trong số họ là 7. @gung
Tamaki Sakura

Câu trả lời:


10

Một nguyên nhân có thể là thực tế bạn không điều chỉnh mô hình của bạn. Bạn cần tìm các giá trị tốt cho và . Trong trường hợp của bạn, mặc định hóa ra là xấu, dẫn đến các mô hình tầm thường luôn mang lại một lớp nhất định. Điều này đặc biệt phổ biến nếu một lớp có nhiều thể hiện hơn các lớp khác. Phân phối lớp học của bạn là gì?Cγ

scikit-learn có các phương tiện tìm kiếm siêu tham số hạn chế, nhưng bạn có thể sử dụng nó cùng với một thư viện điều chỉnh như Optunity . Một ví dụ về điều chỉnh scikit-learn SVC với Optunity có sẵn ở đây .

Tuyên bố miễn trừ trách nhiệm: Tôi là nhà phát triển chính của Optunity.


Tôi thực sự đã thử một cách mạnh mẽ mọi sự kết hợp giữa C và gamma có sức mạnh từ 10 đến 4 nhưng tất cả chúng đều cho tôi đầy đủ 7. Tôi thậm chí đã bắt đầu nghi ngờ nếu tôi biên dịch scikit học theo cách chính xác.
Tamaki Sakura

8

Vấn đề hóa ra là kiểm tra tham số. Tôi đã không thử khi ở gammagiữa 0,0 (tức là 1 / n_feature) và 1. Trên dữ liệu của tôi gammanên chuyển sang một cái gì đó xung quanh1e-8


4
γ
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.