Mevcut SVM modellerine eğitim verileri eklemek mümkün müdür?


14

Libsvm kullanıyorum ve her svmtrain () dediğimde yeni bir model oluşturduğumu ve var olan bir modele veri koymanın bir seçeneği olmadığını fark ettim. Ancak bunu yapmak mümkün mü? Bu yönü libsvm'de görmüyor muyum?


'Varolan bir modele veri koymak' ile ne demek istediğinizden emin değil misiniz? Bunu yapmanıza izin veren başka bir teknik (SVM değil) örneği verebilir misiniz? Örneğin lojistik regresyonu ele alalım; yeni veriler eklerseniz, mevcut veriler üzerinde hangi verilerin 'yeni' veya 'eski' olduğuna bakılmaksızın yeniden eğitilen yeni bir ortak verimlilik seti elde edersiniz. Degrade iniş tipi çözücü kullanıyorsanız, muhtemelen yeni çözüme yakın olacak şekilde önceden optimize edilmiş değerlere başlatarak zaman kazanabilirsiniz. Demek istediğin bu mu?
Bogdanovist

Yanıtlar:


17

Bir "artımlı" veya "çevrimiçi" öğrenme algoritması aradığınız anlaşılıyor. Bu algoritmalar, her şeyi sıfırdan yeniden eğitmeden bir sınıflandırıcıyı yeni örneklerle güncellemenizi sağlar.

Destek vektör makineleri ile kesinlikle mümkündür, ancak libSVM'nin şu anda desteklemediğine inanıyorum. Aşağıdakileri de içeren diğer paketlere bir göz atmaya değer olabilir.

PS: @Bogdanovist: Bu konuda oldukça kapsamlı bir literatür var. kNN açık ve önemsiz derecede artımlıdır. Biri (bazı) bayes sınıflandırıcılarını olasılıklar yerine sayıları depolayarak artımlı sınıflandırıcılara çevirebilir. STAGGER, AQ * ve ID * karar ağacı algoritma ailesinin bazıları (hepsi değil) de başımın üstünde artımlıdır.


1
İlginç, kafa kafaları için teşekkürler. Daha önce `` çevrimiçi '' terimini görmüştüm, ancak teknik önemi anlamamıştım (kelimenin tam anlamıyla 'internetz'e zarar verebilir' anlamına geldiğini düşündüm).
Bogdanovist

Yardımcı olduğuma sevindim! Yukarıda bahsetmiş olmalıydım, ancak bazı çevrimiçi / artımlı algoritmalar aslında uygulamanıza bağlı olarak (örneğin, Twitter konularını tahmin etmek için harika, kanser için daha az harika olan "en yeni" örneklere daha fazla ağırlık verir) Araştırma).
Matt Krause

12

Çevrimiçi / artımlı SVM yardımcı programlarının çoğu doğrusal çekirdekler içindir ve bunun doğrusal olmayan çekirdekler kadar zor olmadığını düşünüyorum.

Şu anda mevcut olan önemli Çevrimiçi / artımlı SVM araçlarından bazıları:
+ Leon Bottous'un LaSVM : Hem doğrusal hem de doğrusal olmayan çekirdekleri destekler. C ++ kodu
+ Bordes LaRank : Hem doğrusal hem de doğrusal olmayan çekirdekleri destekler. C ++ kodu. Bağlantı artık bozuldu :-( görünüyor
+ Gert CAUWENBERGHS' kod artan ve azalan destekler doğrusal ve doğrusal olmayan çekirdekleri hem Matlab kodu:..
+ Chris Diehl en Artan SVM Öğrenme :.. Destekler doğrusal ve doğrusal olmayan çekirdekleri hem Matlab kodu
+ Alistair Shilton SVMHeavy : Sadece İkili sınıflandırma ve regresyon C ++ kodu
+ Francesco Parrella'nın OnlineSVR: Sadece Regresyon. Matlab ve C ++.
+ Pegasos : Hem doğrusal hem de doğrusal olmayan. C ve Matlab kodu. Bir java arayüzü .
+ Langford'ın Vowpal Wabbit : Emin değilim :-(
+ Koby Crammer'in MCSVM : Hem doğrusal hem de doğrusal olmayan. C kodu

Daha güncel bir liste Quora cevabımda bulunabilir .


(+1) Siteye hoş geldiniz. Bu oldukça kapsamlı bir liste! :)
kardinal

4

Başka bir olasılık alfa tohumlamadır . LibSVM'nin bunu destekleyip desteklemediğinin farkında değilim. Fikir, çok miktarda eğitim verisini parçalara bölmektir. Sonra ilk yığın üzerinde bir SVM eğitiyorsunuz. Ortaya çıkan destek vektörleri, verilerinizin bazı örneklerinden başka bir şey olmadığından, bunları alıp SVM'nizi bir sonraki yığınla eğitmek için kullanırsınız. Ayrıca, bu SVM'yi bir sonraki yineleme (tohumlama) için alfa değerlerinin ilk tahminini hesaplamak için kullanırsınız. Bu nedenle, faydalar iki yönlüdür: sorunların her biri daha küçüktür ve akıllı başlatma ile daha da hızlı bir şekilde birleşirler. Bu şekilde, bir dizi basit adımı sırayla çözmek için büyük bir problemi basitleştirirsiniz.


bu yöntemi uygulayan bir kütüphane var mı?
d.putto

Görünüşe göre libsvm zaten yapıyor veya en azından algoritmanın bir varyantı work.caltech.edu/~htlin/program/libsvm
jpmuc

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.