6

Po pierwsze, jest to z pewnością praca domowa (więc proszę nie pobierać pełnych próbek kodu). To powiedziawszy ...Jak korzystać z nienadzorowanych technik uczenia się na zbiorze danych, a następnie oznaczać klastry?

Potrzebuję przetestować nienadzorowany algorytm obok nadzorowanego algorytmu, używając przybornika sieci neuronowej w Matlabie. Zbiorem danych jest UCI Artificial Characters Database. Problem polega na tym, że miałem dobry tutorial na temat nadzorowanych algorytmów i zostałem pozostawiony bez nadzoru.

Więc wiem, jak utworzyć mapę samoorganizującą się przy użyciu selforgmap, a następnie trenuję ją przy użyciu train(net, trainingSet). Nie rozumiem, co robić dalej. Wiem, że zgrupował dane, które przekazałem (mam nadzieję) 10 klastrów (po jednym na każdą literę).

następnie dwa pytania:

  • Jak można następnie oznaczyć klastrów (biorąc pod uwagę, że mam wzorzec porównawczy)?
    • Czy staram się zmienić to w nadzorowany problem z nauką, kiedy to robię?
  • Jak utworzyć matrycę zamieszania na (innym) zestawie testowym w celu porównania z nadzorowanym algorytmem?

Myślę, że brakuje tu czegoś konceptualnego lub żargonowego - wszystkie moje poszukiwania pochodzą z nadzorowanych technik uczenia się. Punkt w dobrym kierunku byłby bardzo doceniany. Moje istniejący kod jest poniżej:

P = load('-ascii', 'pattern'); 
T = load('-ascii', 'target'); 

% data needs to be translated 
P = P'; 
T = T'; 

T = T(find(sum(T')), :); 

mynet = selforgmap([10 10]); 
mynet.trainparam.epochs = 5000; 
mynet = train(mynet, P); 


P = load('-ascii', 'testpattern'); 
T = load('-ascii', 'testtarget'); 

P = P'; 
T = T'; 
T = T(find(sum(T')), :); 

Y = sim(mynet,P); 
Z = compet(Y); 

% this gives me a confusion matrix for supervised techniques: 
C = T*Z' 

Odpowiedz

6

Ponieważ nie stosujesz żadnej części etykietowanych danych, z definicji stosujesz metodę nienadzorowaną.

„Jak mogę następnie oznaczyć klastrów (biorąc pod uwagę, że mam wzorzec porównawczy)?”

Możesz wypróbować różne perturbacje zestawu etykiet i zachować ten minimalizujący średni błąd (lub dokładność) na wzorze porównania. Dzięki klastrowaniu możesz oznaczać swoje klastry w dowolny sposób. Pomyśl o tym, jak próbować różnych przypisań do etykiet, dopóki nie zminimalizujesz określonej charakterystyki wydajności.

"Czy staram się zmienić to w nadzorowany problem z nauką, kiedy to robię?"

To zależy. Jeśli jawnie używasz (znanych) punktów danych w procesie grupowania, jest to częściowo nadzorowane. Jeśli nie, wystarczy użyć informacji o etykietach, aby ocenić i "porównać" z nadzorowanymi podejściami. Jest to forma nadzoru, ale nie oparta na zestawie szkoleniowym, ale na oczekiwanej wydajności w najlepszym przypadku (tj."agent" określa prawidłowe etykiety dla klastrów).

"Jak utworzyć matrycę zamieszania na (innym) zestawie testowym w celu porównania z nadzorowanym algorytmem?"

Potrzebujesz sposobu na przekształcenie klastrów w klasy oznaczone etykietą. Dla niewielkiej liczby klastrów (np C <= 5), można w zasadzie utworzyć C! matryce i utrzymać ten, który minimalizuje średni błąd klasyfikacji. W twoim przypadku jednak z C = 10, jest to, oczywiście, niepraktyczne i grób napowietrznych!

jako alternatywę można oznakować klastrów (a tym samym uzyskania matryc błąd) przy użyciu:

  • Semi-nadzorowanych podejścia, gdzie klastry mogą być znakowane a-priori, lub z przewodnikiem w procesie siewu dane należące do znanego klastrze/class.
  • Ranking lub znalezienie odległości między szacunkami centroidy klastrów i etykiety prawdy o ziemi. Spowoduje to przypisanie do każdego klastra etykiety o najbliżej położonej lub najbardziej podobnej wartości.
1

this video można mieć żadnej pomocy? Nie odpowiada na twoje pytanie, ale pokazuje, że interakcja z człowiekiem może być wymagana, aby nawet wybrać liczbę klastrów. Automatyczne oznaczanie klastrów jest jeszcze trudniejsze.

Jeśli o tym pomyślisz, nie ma gwarancji, że tworzenie klastrów zostanie wykonane na podstawie przedstawionego numeru. Sieć może grupować cyfry na podstawie szerokości linii lub wygładzania czcionki, itp.