2017-04-25 3 views
0

Ich bin ein Anfänger Maschine lernen und würde mich über Ihre Hilfe freuen.Extrahieren von Funktionen in fastICA (Matlab)

Ich versuche, die FastICA MATLAB-Toolbox zu verwenden, und nachdem ich so viel über Google gegoogelt und gelesen habe, werde ich immer verwirrter.

Ich benutze die Car Data Set und ich verwende 1000 100x40 Bilder (500 Auto, 500 Nicht-Auto). Ich verwende fastica, um die unabhängigen Komponenten zu finden (ich werde sie verwenden, um später ein Autoerkennungssystem zu bauen).

Ich verwende den folgenden Code auf meinem Zug Datensatz:

[icasig, A, W] = fastica(Training_Set); 

A und W 1000x1000 Matrizen und icasig ist 1000x4000 Matrix und als ich icasig die Zeilen enthalten die unabhängigen Komponenten und A die Mischmatrix verstehen .

Wie kann ich die unabhängigen Komponenten darstellen? Kann mir jemand in einfachem Englisch erklären, was ist W?

Auch eine andere Sache, die mich verwirrt ist, wenn ich einige Zeilen in Icasig lösche und zum Beispiel 300x4000 Matrix bekomme ich Feature-Komprimierung tun?

Wenn ich einen Klassifizierungsalgorithmus (zum Beispiel SVM) verwende, wie kann ich die Anzahl der unabhängigen Komponenten variieren, die ich benutze, um sie zu trainieren? Ich denke, dass Rica perfekt dafür ist, aber leider habe ich nicht die Statistik und Machine Learning Toolbox.

Antwort

1

Kann mir jemand in einfachem Englisch erklären, was ist W?

w in ICA stellt in der Regel eine Trennmatrix. Bei einem gemischten Bild, X, kann man unabhängige Komponenten erhalten, indem man wX berechnet. Das Ergebnis, S, wird normalerweise eine andere Matrix sein, deren Größe identisch mit X ist. Jede Zeile S enthält Daten, die eine unabhängige Komponente darstellen.

Einer der Hauptzwecke der Verwendung des ICA-Algorithmus ist es, die Trennmatrix w zu finden. Wenn Sie keine Ahnung davon haben, würde ich vorschlagen, dass Sie mehr Literatur lesen, bevor Sie weitermachen. Sogar fast ICA's Wikipedia Seite erzählt Ihnen über w.

Wie kann ich die unabhängigen Komponenten darstellen?

Wenn icasig ist S, können Sie versuchen, die folgenden:

icasig = abs(icasig) % take the absolute 

% you can add a for loop here to plot all components 
component=icasig(1,:) % take the first component 
im = reshape(component,[h,w,3]); % h being the height of the image of the component and w being the width 
im=uint8 (round(im)); 
figure; imshow(im); 
% end of the for loop. Be prepared to have a lot of pictures poping up. 

wenn ich ein paar Zeilen in icasig löschen und zum Beispiel 300x4000 Matrix erhalten bin ich Feature Kompression zu tun?

Wenn das Löschen einzelner Komponenten eine Feature-Komprimierung bedeutet, dann ja.

+0

Vielen Dank für Ihre Antwort, aber ich bin immer noch verwirrt. Ich habe versucht, einen Klassifikator mit den Funktionen von ICA zu bauen, aber ich bin mir nicht sicher, ob ich es richtig mache. Die Eingabe in Svmtran ist icasig? Und wie soll ich das Testset projizieren? [Icasig, A, W] = fastica (Training_Set); SVMStruct = svmtrain (icasig, train_label, "kernel_function", "quadratisch") Group = svmclassify (SVMStruct, Test_Set) – Jane

+0

@Jane Ich bin nicht vertraut mit SVM, aber es scheint, dass Sie hier das Richtige tun. Ich bin nicht sicher, was Sie meinen, indem Sie Testsatz projizieren. Ich würde vorschlagen, dass Sie eine neue Frage öffnen oder Ihre ursprüngliche Frage redigieren, um das Problem von svm einzuschließen. – Anthony

Verwandte Themen