Có thể nối dữ liệu đào tạo vào các mô hình SVM hiện có không?


14

Tôi đang sử dụng libsvm và tôi nhận thấy rằng mỗi khi tôi gọi svmtrain (), tôi tạo một mô hình mới và dường như không có tùy chọn nào để đưa dữ liệu vào một mô hình hiện có. Điều này có thể làm được tuy nhiên? Tôi chỉ không nhìn thấy khía cạnh này trong libsvm?


Tôi không chắc ý của bạn là gì khi 'đưa dữ liệu vào một mô hình hiện có'? Bạn có thể cho một ví dụ về một số kỹ thuật khác (không phải SVM) cho phép bạn làm điều này? Lấy ví dụ hồi quy logistic; nếu bạn thêm dữ liệu mới, bạn sẽ nhận được một nhóm các hệ số mới được đào tạo lại trên tập hợp hiện có mà không cần tham khảo dữ liệu nào là 'mới' hay 'cũ', tất cả chỉ là dữ liệu đào tạo. Tôi đoán rằng nếu bạn đang sử dụng một bộ giải loại giảm độ dốc, bạn có thể tiết kiệm thời gian bằng cách khởi tạo các giá trị được tối ưu hóa trước đó, có thể sẽ gần với giải pháp mới. Ý bạn là vậy đúng không?
Bogdanovist

Câu trả lời:


17

Có vẻ như bạn đang tìm kiếm một thuật toán học tập "gia tăng" hoặc "trực tuyến". Các thuật toán này cho phép bạn cập nhật một trình phân loại với các ví dụ mới, mà không cần đào tạo lại toàn bộ từ đầu.

Điều đó hoàn toàn có thể với các máy vectơ hỗ trợ, mặc dù tôi tin rằng libSVM hiện không hỗ trợ nó. Có thể đáng để xem qua một số gói khác cung cấp nó, bao gồm

PS: @Bogdanovist: Có một tài liệu khá rộng về điều này. kNN rõ ràng và gia tăng không đáng kể. Người ta có thể biến (một số) phân loại bayes thành phân loại gia tăng bằng cách lưu trữ số lượng thay vì xác suất. STAGGER, AQ * và một số (nhưng không phải tất cả) của họ thuật toán cây quyết định ID * cũng tăng dần, ra khỏi đỉnh đầu của tôi.


1
Thú vị, cảm ơn cho những người đứng đầu. Tôi đã thấy thuật ngữ 'trực tuyến' được băng bó trước đó, nhưng đã không nhận ra ý nghĩa kỹ thuật (tôi nghĩ nó có nghĩa đen là 'có thể haz internetz').
Bogdanovist

Rất vui được giúp đỡ! Tôi nên đã đề cập ở trên, nhưng một số thuật toán trực tuyến / gia tăng thực sự làm tăng thêm trọng lượng cho các ví dụ "mới nhất", có thể có hoặc không hữu ích, tùy thuộc vào ứng dụng của bạn (ví dụ: tuyệt vời để dự đoán chủ đề twitter, ít gây ung thư nghiên cứu).
Matt Krause

12

Hầu hết các tiện ích SVM trực tuyến / gia tăng đều dành cho các hạt nhân tuyến tính và tôi cho rằng nó không khó như các hạt nhân phi tuyến tính.

Một số công cụ SVM trực tuyến / gia tăng đáng chú ý hiện có:
+ LaSVM của Leon Bottous : Nó hỗ trợ cả hạt nhân tuyến tính và phi tuyến tính. Mã C ++
+ LaRank của Bordes : Nó hỗ trợ cả nhân tuyến tính và phi tuyến tính. Mã C ++. Có vẻ như các liên kết bị phá vỡ tại :-(
+ Gert Cauwenberghs' mã tăng và decremental : hỗ trợ cả hai tuyến tính và phi tuyến hạt nhân Matlab mã..
+ Chris Diehl của Incremental SVM Learning :.. Hỗ trợ cả hai tuyến tính và phi tuyến hạt nhân Matlab đang
+ Alistair SVMHeavy của Shilton : Chỉ phân loại nhị phân và hồi quy. Mã C ++
+ Francesco Parrella's OnlineSVR: Chỉ hồi quy. Matlab và C ++.
+ Pegasos : Cả tuyến tính và phi tuyến. Mã C và Matlab. Một giao diện java .
+ Langford's Vowpal Wmus : Không chắc chắn :-(
+ Koby Crammer's MCSVM : Cả tuyến tính và phi tuyến tính. Mã C

Một danh sách cập nhật hơn có thể được tìm thấy trên câu trả lời Quora của tôi .


(+1) Chào mừng đến với trang web. Đó là một danh sách khá đầy đủ! :)
Đức hồng y

4

Một khả năng khác là gieo hạt alpha . Tôi không biết liệu libSVM có hỗ trợ nó hay không. Ý tưởng là chia một lượng lớn dữ liệu đào tạo thành nhiều phần. Sau đó, bạn đào tạo một SVM trên đoạn đầu tiên. Vì các vectơ hỗ trợ kết quả không là gì ngoài một số mẫu dữ liệu của bạn, bạn lấy chúng và sử dụng chúng để huấn luyện SVM của bạn với đoạn tiếp theo. Ngoài ra, bạn sử dụng SVM đó để tính toán ước tính ban đầu của các giá trị alpha cho lần lặp tiếp theo (gieo hạt). Do đó, lợi ích có hai mặt: mỗi vấn đề nhỏ hơn và thông qua khởi tạo thông minh, chúng hội tụ thậm chí nhanh hơn. Bằng cách này, bạn đơn giản hóa một vấn đề lớn thành giải quyết tuần tự một loạt các bước đơn giản hơn.


Có thư viện nào ngoài đó áp dụng phương pháp này không?
d.putto

rõ ràng libsvm đã làm điều đó, hoặc ít nhất là một số biến thể của thuật toán work.caltech.edu/~htlin/program/libsvm
jpmuc

1

Một tùy chọn khác nếu bạn đang tìm kiếm một giải pháp "gia tăng" có thể được tìm thấy ở đây ...

Tăng dần

Một phần mở rộng của LIBLINEAR cho phép học tập tăng dần.

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.