2012-04-30 19 views
5

"grid.py" của libsvm cố gắng tối ưu hóa chỉ hai tham số "c" và "g" của svm-train. Tôi muốn mở rộng "grid.py" để tối ưu hóa cho các tham số khác (ví dụ "r" hoặc "d") bằng cách chạy "grid.py" một lần nữa và một lần nữa cho các thông số khác nhau. Tôi có một số câu hỏi
1. Có tập lệnh nào đã có thể tối ưu hóa các thông số khác rồi "c" và "g" không?
2. Tham số nào quan trọng hơn và phạm vi tối đa/tối thiểu là bao nhiêu. Đôi khi thay đổi/tối ưu hóa một thông số sẽ tự động tối ưu hóa tham số khác. Đó là trường hợp với các tham số svm-train?
svm-train tối ưu hóa tham số khác

Trả lời

11

Theo như tôi biết không có tập lệnh nào thực hiện điều này, tuy nhiên tôi không thấy lý do tại sao grid.py không thể dễ dàng mở rộng để làm như vậy. Tuy nhiên, tôi không nghĩ rằng nó có giá trị nỗ lực.

Trước hết, bạn cần chọn hạt nhân của mình. Đây là một tham số trong chính nó. Mỗi hạt nhân có một bộ thông số khác nhau và sẽ thực hiện khác nhau, do đó, để so sánh các hạt nhân, bạn sẽ phải tối ưu hóa các tham số của từng hạt nhân.

C, thông số chi phí là thông số tổng thể áp dụng cho chính SVM. Các tham số khác là tất cả các đầu vào cho hàm hạt nhân. C kiểm soát sự cân bằng giữa biên độ rộng và nhiều điểm huấn luyện sai phân loại (nhưng một mô hình có thể tổng quát tốt hơn cho dữ liệu trong tương lai) và biên độ hẹp phù hợp với điểm đào tạo tốt hơn nhưng có thể được trang bị cho dữ liệu đào tạo.

Nói chung, hai hạt được sử dụng rộng rãi nhất là tuyến tính (không yêu cầu tham số) và hạt nhân RBF.

Hạt nhân RBF nhận tham số gamma. Điều này phải được tối ưu hóa, giá trị của nó sẽ ảnh hưởng đáng kể đến hiệu suất.

Nếu bạn đang sử dụng hạt nhân Đa thức, d là thông số chính, bạn sẽ tối ưu hóa điều đó. Nó không có ý nghĩa để sửa đổi các thông số khác từ mặc định trừ khi bạn có một số lý do toán học tại sao làm như vậy sẽ phù hợp hơn với dữ liệu của bạn. Theo kinh nghiệm của tôi hạt nhân đa thức có thể cho kết quả tốt, nhưng một sự gia tăng nhỏ nếu có bất kỳ hạt nhân RBF nào với chi phí tính toán khổng lồ. Tương tự với hạt nhân sigmoid, gamma là thông số chính của bạn, tối ưu hóa và để lại coef0 theo mặc định, trừ khi bạn hiểu rõ lý do tại sao điều này phù hợp hơn với dữ liệu của bạn.

Vì vậy, lý do tại sao grid.py không tối ưu hóa các tham số khác là bởi vì trong hầu hết các trường hợp, nó chỉ đơn giản là không cần thiết và thường sẽ không dẫn đến cải thiện hiệu suất. Đối với câu hỏi thứ hai của bạn: Không, đây không phải là trường hợp tối ưu hóa một câu hỏi sẽ tối ưu hóa câu hỏi kia. Giá trị tối ưu của các thông số này cụ thể cho tập dữ liệu của bạn. Thay đổi giá trị của các tham số hạt nhân sẽ ảnh hưởng đến giá trị tối ưu của C. Đây là lý do tại sao tìm kiếm lưới được khuyến nghị. Việc thêm các tham số bổ sung này vào tìm kiếm của bạn sẽ làm tăng đáng kể thời gian cần thiết và không cho phép bạn tăng hiệu suất của trình phân loại.

+0

ý của bạn là D là đúng? nơi tôi có thể tìm thấy thông tin về các thông số nào là cần thiết cho hạt nhân nào? vì vậy tôi sẽ không lãng phí thời gian với các thông số không cần thiết. ty – MonsterMMORPG