Einführung in Matlab und Netlab

Werbung
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
Herunterladen