5

przypadków użycia:Jak obliczyć prawdopodobieństwo (zaufanie) klasyfikacji SVM dla małego zestawu danych?

Mam mały zestaw danych z około 3-10 próbek w każdej klasie. Używam sklearn SVC do sklasyfikowania tych z jądrem rbf. I potrzebuję pewności prognozy wraz z przewidywaną klasą. Użyłem metody SVC dla metody predykcyjnej predict_proba. Otrzymałem z tego dziwne wyniki. Szukałem trochę i okazało się, że ma sens tylko dla większych zestawów danych.

Znalezione pytanie na stosie Scikit-learn predict_proba gives wrong answers.

Autor pytania zweryfikował to przez pomnożenie zbioru danych, tym samym powielając zestaw danych.

Moje pytania:

1) Jeśli pomnożyć mój zestaw danych przez powiedzmy, 100, mający Każda próbka 100 razy, zwiększa „poprawności” z „predict_proba”. Jakie będą skutki uboczne? Przewyższenie?

2) Czy istnieje inny sposób, w jaki mogę obliczyć zaufanie klasyfikatora? Jak odległość od hiperpłaszczyzn?

3) Dla tego małego rozmiaru próbki, czy SVM jest zalecanym algorytmem, czy powinienem wybrać coś innego?

+1

Co masz na myśli przez "zaufanie?"W każdym razie, z tylko 3 próbkami, nie ma zbyt wiele nadziei w cokolwiek, co wybierzesz." –

+3

@ juanpa.arrivillaga Jak pewny jest klasyfikator, że ta próbka należy do tej klasy? Platt skalowanie lub odległość od hiperpłaszczyzny? –

+0

Jako @juanpa powiedział - z 3 próbek nie ma nic sensownego do zrobienia, naprawdę, w szczególności SVM nie ma sensu (i 99% innych metod statystycznych). Możesz użyć 1-NN, która jest po prostu regułą "dołączyć etykietę najbliższego punkt ", ale znowu - 3 próbki na klasę są o wiele za małe na jakąkolwiek przyzwoitą analizę, chyba że masz dziesiątki tysięcy klas, a pomiędzy nimi jest struktura – lejlot

Odpowiedz

0

Po pierwsze: Twój zestaw danych wydaje się bardzo mały dla jakichkolwiek praktycznych zastosowań. Biorąc to pod uwagę, zobaczmy, co możemy zrobić.

Pliki SVM są popularne głównie w dużych ustawieniach wymiarowych. Obecnie nie jest jasne, czy dotyczy to twojego projektu. Budują samoloty na kilku (lub nawet pojedynczych) instancjach wspierających i często osiągają lepsze wyniki w przypadku dużych zestawów treningowych z sieci neuronowych. A priori mogą nie być twoim gorszym wyborem.

Nadmierne pobór danych nie przyniesie oczekiwanych rezultatów przy użyciu SVM. SVM opiera się na pojęciu wektorów wsparcia, które są w zasadzie wartościami odstającymi klasy, która definiuje to, co jest w klasie, a co nie. Nadmiar próbkowania nie stworzy nowego wektora wsparcia (zakładam, że już używasz zestawu pociągów jako zestawu testowego).

Zwykły oversampling w tym scenariuszu nie dostarczy również żadnych nowych informacji o zaufaniu, innych niż artefakty utworzone przez niezbalansowane nadpróbkowanie, ponieważ wystąpienia będą dokładnymi kopiami i nie wystąpią żadne zmiany w zakresie dystrybucji. Możesz być w stanie znaleźć jakieś informacje za pomocą SMOTE (Technika Oversampling Synthetic Minority). Zasadniczo wygenerujesz syntetyczne instancje oparte na tych, które masz. Teoretycznie dostarczy ci to nowych instancji, które nie będą dokładnymi kopiami tych, które posiadasz, i mogą w związku z tym nieco różnić się od normalnej klasyfikacji. Uwaga: Z definicji wszystkie te przykłady będą znajdować się pomiędzy oryginalnymi przykładami w przestrzeni próbnej. Nie oznacza to, że będą leżeć pomiędzy twoją przewidywaną przestrzenią SVM, prawdopodobnie efekty uczenia się, które nie są prawdą.

Na koniec można oszacować pewność z odległością do hiperpłaszczyzny. Proszę zobaczyć: https://stats.stackexchange.com/questions/55072/svm-confidence-according-to-distance-from-hyperline