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?
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?
Yanıtlar:
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.
Ç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 .
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.
"Artımlı" bir çözüm arıyorsanız başka bir seçenek burada bulunabilir ...
LIBLINEAR'ın artımlı öğrenmeye izin veren bir uzantısı.