Maschinelles Lernen und Neural Computation Übung: Grundlagen von Matlab und Netlab Georg Dorffner / Achim Lewandowski SS 2008 Maschinelles Lernen und Neural Computation 1 Matlab – Nützliches I • Zugriff auf die Daten: – Per Hand eingeben: >> a=4 %Skalar >> Vektor=[3; 5; 7] >> bmat=[2 3 4 5; 3 4 5 6; 11 1 2 1] – Aus Ascii-Datei: >> load beispiel.dat Variable (oder Array) heißt nun beispiel – Aus Matlab-Datei (Endung .mat): >> load class.mat class.mat kann mehrere Variablen, arrays,… auch mit anderen Namen enthalten SS 2008 Maschinelles Lernen und Neural Computation 2 Matlab – Nützliches II • Welche Daten sind im Arbeitsspeicher? >> whos Name Vektor a bmat Size Bytes 3x1 1x1 3x4 24 8 96 Class double array double array double array • Daten abspeichern, alles löschen, neu laden >>save daten Ve* bmat %legt daten.mat an >>clear %loescht alles >>load daten %Vektor und bmat sind wieder geladen SS 2008 Maschinelles Lernen und Neural Computation 3 Matlab – Nützliches III >>a*bmat %Multiplikation ans = 8 12 44 12 16 4 16 20 8 20 24 4 >>c=bmat' %Transponierte c = 2 3 4 5 SS 2008 3 4 5 6 11 1 2 1 Maschinelles Lernen und Neural Computation 4 Matlab – Nützliches IV >>d=a*bmat d = 8 12 44 12 16 4 16 20 8 20 24 4 >>d=a*bmat; %ruhiger Modus ohne Bildschirmausgabe >> help befehl %Hilfe zu befehl >> c=zeros(1,3) ergibt c=[0 0 0] >> d=ones(3,1) ergibt d=[1;1;1] SS 2008 (1x3) (3x1) Maschinelles Lernen und Neural Computation 5 Matlab – Nützliches V Matrizen zusammenfügen: >>a=[2 3 4] >>b=[5 6 7] >>c=[a b] c = 2 3 >>c=[a;b] 4 5 6 7 c = 2 5 SS 2008 3 6 4 7 Maschinelles Lernen und Neural Computation 6 Netlab – Grundsätzliches http://www.ncrg.aston.ac.uk/netlab/ netlab.zip, nethelp.zip und foptions.m (ab Matlab 7.0) entpackt und dann in den Pfad aufgenommen: Menupunkt: File – SetPath – Add with Subfolders Verzeichnisse mit Netlab und den Daten aufnehmen Netlab-Befehle stehen nun zur Verfügung Daten werden gefunden SS 2008 Maschinelles Lernen und Neural Computation 7 Netlab – GLM glm (General Linear Model) 1. Initialisieren: net=glm(nin,nout,outfunc) • Brauche also 1. nin: Dimension der Inputs 2. nout: Dimension der Outputs 3. outfunc: Ausgabefunktion, die eins von den folgenden sein kann: 'linear', 'logistic' oder 'softmax' • • SS 2008 Brauche (noch) nicht die Daten z.B. net=glm(5,3, 'linear') Maschinelles Lernen und Neural Computation 8 Netlab – GLM II net= type: nin: nout: nwts: outfn: w1: b1: SS 2008 'glm' 5 3 18 'linear' [5x3 double] [0.6909 0.2414 -0.2627] Maschinelles Lernen und Neural Computation 9 Netlab – GLM III Modell an Daten anpassen: [netneu, options] = netopt(net, options, x, t, alg) • • • • • • • • net eben definiert options=foptions erzeugt den Optionenvektor (1x18) options(1)=1 %Fehler anzeigen options(14)=30 %Anzahl der Iterationen Daten bestehen aus n Beobachtungen (jeweils Input- und Outputvektor), bspw. n=300 x 300x5-Matrix, t 300x3-Matrix alg= 'scg'‚ (Scaled Conjugate Gradient) netneu=netopt(net, options, x, t, ‚scg') netneu = type: nin: nout: nwts: outfn: w1: b1: SS 2008 'glm' 5 3 18 'linear' [5x3 double] [0.4566 0.3357 0.5434] Maschinelles Lernen und Neural Computation 10 Netlab – GLM IV Outputvektor für neue Daten vorhersagen: tvor = glmfwd(netneu,xneu) • netneu eben angepasst • bspw. xneu 2x5-Matrix • xneu=[1 1 1 1 1; -1 -1 -1 -1 -1] tvor = 2.1326 -0.8870 SS 2008 0.2828 1.4671 1.1488 -1.7579 Maschinelles Lernen und Neural Computation 11 Netlab – MLP I Multilayer-Perceptron: 1. Initialisieren: net=mlp(nin,nhidden,nout,outfunc) z.B. net=mlp(1,4,1, 'linear') type: 'mlp' nin: 1 nhidden: 4 nout: 1 nwts: 13 %number of weights outfn: 'linear' w1: [0.2400 -0.0927 0.3431 0.4234] b1: [-0.0608 0.2300 -0.2370 -0.2280] w2: [4x1 double] b2: -0.2587 SS 2008 Maschinelles Lernen und Neural Computation 12 Netlab – MLP II Multilayer-Perceptron: 2. Trainieren mit x Inputmatrix und t Targetmatrix: bspw. x=5*rand(100,1); t=sin(x)+0.1*rand(100,1); netneu=netopt(net, options, x, t,'scg') 3. Vorhersagen auf Trainingsinput: tfitted=mlpfwd(netneu,x) tfitinitial=mlpfwd(net,x) %ohne Training plot(x,[t tfitted tfitinitial],'.') SS 2008 Maschinelles Lernen und Neural Computation 13 Netlab – GMM I Gauss‘sches Mischmodell: 1. Initialisieren: mix = gmm(dim, ncentres,covartype) covartype: 'spherical', 'full', 'diag', z.B. mix=gmm(3,10,'diag') 2. Vortrainieren (k-means) mix2 = gmminit(mix, x,options) 3. Parameter anpassen: mix3=gmmem(mix2, x,options) SS 2008 Maschinelles Lernen und Neural Computation 14 Netlab – GMM II Gauss‘sches Mischmodell Beispiel x1=randn(100,1); x2=randn(50,1)*2+4; x3=randn(50,1)*2+12; x=[x1;x2;x3] 1.Initialisieren: mix = gmm(1, 3, 'diag') 2. Vortrainieren (k-means) mix2 = gmminit(mix, x,options) 3. Parameter anpassen: mix3=gmmem(mix2, x,options) SS 2008 Maschinelles Lernen und Neural Computation 15 Netlab – GMM III Gauss‘sches Mischmodell Beispiel angepasste Dichte anzeigen lassen: xv=[-2:0.1:15]' yv=gmmprob(mix3,xv) yv2=gmmprob(mix2,xv) plot(xv,[yv yv2]) SS 2008 Maschinelles Lernen und Neural Computation 16