Tìm kiếm để ước tính tham số SVM


8

Tôi hiện đang thử nghiệm với gridsearch để đào tạo một máy vectơ hỗ trợ. Tôi hiểu rằng, nếu tôi có tham số gamma và C, hàm R Tune.svm thực hiện xác thực chéo 10 lần cho tất cả các kết hợp của 2 tham số này.

Vì tôi không biết bắt đầu như thế nào, tôi đã cố gắng lấy một số thông tin về nó, ví dụ wikipedia 2 gợi ý các giá trị không tuyến tính, ví dụ C trong phạm vi {10, 100, 1000}.

Cho đến nay tôi sử dụng các ví dụ từ liên kết wikipedia thứ hai của mình, đó là:

gammas = 2^(-15:3)
costs = 2^(-5:15)

Kết quả thành 399 kết hợp.

Điều này mất rất, rất lâu (~ 2000 mẫu). Ví dụ, đối với kernel "radial", kết quả tốt nhất của tôi là gamma = 0,5 và cost = 2.

Tôi không thể nhận được kết quả tương tự nếu tôi chỉ sử dụng các giá trị như (1, 2, 3, 4, ... 10) cho chi phí và (0, 0,5, 1, 1.5, 2) cho các gamma? Tôi biết ví dụ này được xây dựng vì tôi đã biết kết quả.

Câu hỏi của tôi:

Nhưng tại sao quy mô theo cấp số nhân này?

Có rất nhiều giá trị từ 0 đến 1 mà tôi nghĩ rằng đây là một sự lãng phí thời gian tính toán và chỉ có rất ít con số rất lớn mà dù sao nó cũng không thể tìm thấy một kết quả rất chính xác. Nó chỉ có ý nghĩa đối với tôi nếu điều này được sử dụng để tìm phạm vi nhỏ hơn, giả sử sau đó chúng tôi biết chi phí tốt nhất là 2 ^ 3 và sau đó chúng tôi tìm kiếm xung quanh đó. Nhưng không nơi nào đề cập đến được thực hiện theo cách đó.


1
Đó là chính xác lý do tại sao tìm kiếm lưới là một phương pháp kém để tìm các tham số tối ưu. Bạn có thể muốn kiểm tra các thư viện cung cấp các phương thức tối ưu hóa chuyên dụng, như Optunity .
Marc Claesen

Câu trả lời:


11

Lý do cho lưới hàm mũ là cả C và gamma đều là các tham số tỷ lệ hoạt động theo cấp số nhân, do đó, việc nhân đôi gamma có thể có tác động lớn gần như (nhưng theo hướng khác) khi giảm một nửa. Điều này có nghĩa là nếu chúng ta sử dụng một lưới các giá trị tăng theo cấp số nhân, thì sẽ có cùng một lượng "thông tin" về các tham số siêu thu được bằng cách đánh giá tiêu chí lựa chọn mô hình tại mỗi điểm lưới.

Tôi thường tìm kiếm trên lưới dựa trên số nguyên 2, có vẻ như hoạt động khá tốt (tôi đang làm việc trên một bài báo về tối ưu hóa tìm kiếm lưới - nếu bạn sử dụng lưới quá tốt, bạn có thể kết thúc quá phù hợp với tiêu chí lựa chọn mô hình , do đó, một lưới khá thô hóa ra lại tốt cho việc khái quát hóa cũng như chi phí tính toán.).

Đối với phạm vi rộng, không may là các giá trị siêu tham số tối ưu phụ thuộc vào bản chất của vấn đề và vào kích thước của tập dữ liệu và không thể xác định được a-prori. Lý do cho lưới điện lớn, dường như lãng phí, là để đảm bảo các giá trị tốt có thể được tìm thấy tự động, với xác suất cao.

Nếu chi phí tính toán là một vấn đề, thì thay vì sử dụng tìm kiếm dạng lưới, bạn có thể sử dụng thuật toán đơn giản Nelder-Mead để tối ưu hóa lỗi xác thực chéo. Đây là một thuật toán tối ưu hóa không yêu cầu thông tin độ dốc, do đó, nó khá đơn giản để sử dụng cho bất kỳ vấn đề nào trong đó tìm kiếm lưới hiện đang được sử dụng. Tôi không phải là người dùng R, nhưng Nelder-Mead được triển khai trong R thông qua optim.


Đoạn đầu tiên giải thích rất rõ những gì không rõ ràng với tôi, tôi không thể tìm thấy mẩu thông tin đó (về tỷ lệ).
Verena Haunschmid

Tác phẩm bạn đề cập trong đoạn 2 đã được xuất bản chưa?
Sycorax nói Phục hồi lại

không, đáng buồn bị từ chối, đang viết lại để phù hợp với ý kiến ​​của người đánh giá.
Dikran Marsupial

0

Đây được gọi là vấn đề "điều chỉnh tham số" cho các SVM. Một trong những cách tiếp cận đơn giản nhất là lấy trung vị của từng mức độ chính xác dự đoán lớp lớn nhất thu được khi bạn trải qua các nếp gấp CV.

Ngoài ra, theo nguyên tắc thông thường, hãy sử dụng trình phân loại đơn giản hơn để xác định xem dữ liệu của bạn có thể phân tách tuyến tính hay không. Nếu hàng xóm gần nhất k (kNN) hoặc hồi quy tuyến tính hoạt động tốt hơn, thì bạn không nên sử dụng cách tiếp cận (tính toán) đắt tiền hơn như SVM. SVM có thể dễ dàng bị lạm dụng, vì vậy hãy đảm bảo bạn đánh giá hồi quy tuyến tính, kNN, phân tích phân biệt tuyến tính, rừng ngẫu nhiên, v.v.

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.