2012-09-19 39 views
13

Tôi đang sử dụng libsvm ở chế độ C-SVC với hạt nhân đa thức bậc 2 và tôi được yêu cầu huấn luyện nhiều SVM. Trong huấn luyện, tôi nhận được một hoặc thậm chí cả hai cảnh báo cho một số các SVMs mà tôi đào tạo:libsvm Thu hẹp Heuristics

WARNING: using -h 0 may be faster 
* 
WARNING: reaching max number of iterations 
optimization finished, #iter = 10000000 

tôi đã tìm thấy các mô tả cho h tham số:

-h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1) 

và tôi đã cố gắng đọc giải thích từ tài liệu libsvm, nhưng đó là một mức độ quá cao đối với tôi. Bất cứ ai có thể vui lòng cung cấp một lời giải thích của giáo dân và, có lẽ, một số gợi ý như thiết lập này sẽ có lợi vì ...? Ngoài ra, sẽ hữu ích nếu biết bằng cách đặt thông số này cho tất cả SVM mà tôi đào tạo, có thể tạo ra tác động tiêu cực đến độ chính xác cho những SVM không rõ ràng đưa ra cảnh báo này.

Tôi không chắc chắn nên làm gì với cảnh báo khác.

Chỉ cần cung cấp thêm chi tiết: bộ đào tạo của tôi có 10 thuộc tính (tính năng) và chúng bao gồm 5000 vectơ.


Cập nhật:

Trong trường hợp bất kỳ ai khác là nhận được "đạt số tối đa của lặp", nó dường như được gây ra bởi các vấn đề ổn định số. Ngoài ra, điều này sẽ tạo ra một thời gian đào tạo rất chậm. Các hạt đa thức được hưởng lợi từ việc sử dụng các kỹ thuật xác thực chéo để xác định giá trị tốt nhất cho việc chuẩn hóa (tham số C), và trong trường hợp các hạt đa thức, với tôi nó giúp giữ nó nhỏ hơn 8. Ngoài ra, nếu hạt nhân không đồng nhất \ sum (\ gamma x_i s_i + coef0)^d (xin lỗi, LaTeX không được hỗ trợ trên SO), trong đó coef0! = 0, sau đó xác nhận chéo có thể được thực hiện với kỹ thuật tìm kiếm lưới cho cả gamma và C, vì, trong này trường hợp, giá trị mặc định cho gamma (1/number_of_features) có thể không phải là lựa chọn tốt nhất. Tuy nhiên, từ các thí nghiệm của tôi, có thể bạn không muốn gamma quá lớn, vì nó sẽ gây ra các vấn đề về số (tôi đang thử giá trị tối đa là 8 cho nó).

Để có thêm cảm hứng về các giá trị có thể cho gamma và C, hãy thử poking trong grid.py.

Trả lời

8

Các chẩn đoán thu hẹp có sẵn để tăng tốc độ tối ưu hóa. Như đã nói trong phần Câu hỏi thường gặp, đôi khi chúng giúp ích và đôi khi không. Tôi tin rằng đó là vấn đề thời gian chạy, thay vì hội tụ.

Thực tế là tối ưu hóa đạt đến số lần lặp tối đa là thú vị. Bạn có thể muốn chơi với sự khoan dung (tham số chi phí), hoặc có một cái nhìn tại các vấn đề cá nhân gây ra điều này. Các tập dữ liệu có lớn không?

+0

Cảm ơn câu trả lời! Tôi nghĩ rằng bạn là đúng liên quan đến heuristics thu hẹp. Họ chỉ giúp đào tạo các mô hình nhanh hơn. –

+0

Về các lần lặp tối đa, bộ dữ liệu của tôi có 5000 mục. Việc đào tạo mất ít hơn một phút. Thông số chi phí là gì? Nó có phải là sự chuẩn hóa? Ngay bây giờ tôi chỉ cần đặt nó là 1, giá trị mặc định trong libsvm ... –

+0

Ồ, tôi nên làm rõ điều này: bộ đào tạo của tôi có 10 thuộc tính/tính năng và chúng bao gồm 5000 vectơ. –

Các vấn đề liên quan