Föreläsning 6: Klassificering, minsta kvadratproblem, SVD

Föreläsning 6:
Klassificering, minsta kvadratproblem, SVD
Berkant Savas
Tillämpad matematik i natur och teknikvetenskap, TNA005
Institutionen för teknik och naturvetenskap
Linköpings universitet
20 mars 2017
1 / 62
UPG5 och UPG8: Miniprojekt 1
Återkoppling
inom tio dagar från och med idag
Eventuella kompletteringar tittar vi på efter alla kursmoment
(början på juni).
2 / 62
Andra halvan av kursen
Miniprojekt 2 : Klassificering av handskrivna siffror
Föreläsning 6 och 7 Matematisk modellering, klassificering,
minstakvadratproblem, projektion på underrum,
singulärvärdesfaktorisering (SVD).
Lab, handledning och redovisning
Miniprojekt 3 : Kastparabler och projektilbanor
Föreläsning 8 och 9 Differentialekvationer, system av
differentialekvationer samt numeriska lösningar av
differentialekvationer
Lektion, lab, handledning och redovisning
3 / 62
Kursmål för miniprojekt 2:
1
Matematiskt modellering
2
Reflektera över en matematisk modells förtjänster och
begränsningar
3
Använda MATLAB för att lösa beräkningsproblem
4
Behandla matriser och linjära ekvationssystem
5
Teckna och lösa minstakvadratproblem
6
Välja lämpliga metoder för att studera matematiska
frågeställningar
7
Författa en kortfattad teknisk rapport
8
Strukturera och presentera muntligt en bärande matematisk
idé
9
Kritiskt konstruktivt granska andras skriftliga framställan och
föra en diskussion om innehållet
4 / 62
Detta gör vi idag!!! Och i morgon!
Klassificeringsproblemet
Lösningsprocedur
Tre algoritmer
Minstakvadratproblem
Singulärvärdesfaktorisering, egenskaper
Miniprojekt 2: Klassificering av siffror
Exempel
5 / 62
Klassificering och miniprojekt 2
Handskrivna siffror från USPS databasen (brev)
Implementera tre olika algoritmer som automatiskt klassificerar
handskrivna siffror.
6 / 62
Vilken siffra?
Kan en datoralgoritm avgöra att detta är en 9a?
7 / 62
Vilken siffra?
Kan en datoralgoritm avgöra att detta är en 6a?
8 / 62
Vilken siffra?
Kan en datoralgoritm avgöra att detta är en 3a?
9 / 62
Tillämpningar? Siffror och bokstäver
Sortera brev på posten
Läsa nummerskyltar på bilar
Läsa in pappersformulär
...
10 / 62
Modellproblem för algoritmutveckling!
Vi har objekt som tillhör 10 klasser
Stor variation mellan objekt som tillhör samma klass
T.ex., stor variation när man skriver tvåor, femmor
Likhet mellan objekt som tillhör olika klasser
T.ex., finns likhet mellan femmor och åttor
11 / 62
Frågeställningar:
Hur representeras en handskriven siffra i en dator?
Hur modellerar vi handskrivna siffror matematiskt?
Hur modellerar vi en viss klass matematiskt?
Hur ser algoritmen ut?
Hur bestämmer vi modellparametrar?
Hur bra är algoritmen/metoden?
Hur utvärderar vi algoritmen?
12 / 62
Betrakta ett enklare(?) problem:
1
Lastbilar med potatisar och morötter (blandade) kommer till
en sorteringsterminal.
Vi vill sortera potatisar från morötter.
1
www.examiner.com/images/blog/EXID7386/images/Potatoes_and_carrots_.jpg, 2014-03-23.
13 / 62
I anläggningen:
1
Potatisar och morötter hamnar på ett rullband.
2
En laserskanner mäter längd och bredd för varje rotfrukt.
3
Rotfrukterna passera också en våg, varvid deras vikt erhålles.
4
Låt en praktikant anteckna data för 20 morötter och 20
potatisar. Beteckna denna mängd för träningsmängd.
5
Låt en praktikant anteckna data för ytterligare 20 morötter
och 20 potatisar. Beteckna denna mängd för testmängd.
6
Precis detta har gjorts för de handskrivna siffrorna!
Träningsmängden används för att bestämma modellparametrar.
Testmängden används för att testa algoritmerna.
14 / 62
Data som erhålles (träningsmängden):
Data för potatis (första 10 av
x (bredd): 6.2 5.7 5.9 6.6
y (höjd) : 5.8 8.7 6.6 6.9
z (vikt) : 2.8 1.8 4.9 2.3
20 mätningar):
7.1 5.9 6.4 5.8
6.4 7.4 6.4 14.4
4.1 4.1 6.2 4.0
Data för morötter (första 10 av 20 mätningar):
x (bredd): 4.6 2.5 4.8 2.5 4.8 4.1 2.7 1.6
y (höjd) : 9.2 9.2 14.1 12.0 9.2 11.3 9.3 11.5
z (vikt) : 2.4 1.5 2.2 0.5 1.3 1.3 2.5 2.0
6.3
2.6
3.6
6.5
0.5
4.3
1.2 2.6
12.9 6.8
1.0 2.0
Data finns att ladda ner från kurshemsidan.
15 / 62
Plotta data i figur: (testa själv i MATLAB)
8
7
6
z (vikt)
5
4
3
2
1
0
15
10
5
x (hojd)
0
10
5
15
y (bredd)
Röd ring = morot
Blå ring = potatis
Potatisar väger något mer än morötter.
16 / 62
Plotta data i figur: (testa själv i MATLAB)
8
z (vikt)
6
4
2
0
15
10
5
x (hojd)
0
0
10
5
15
y (bredd)
Röd ring = morot:
Blå ring = potatis:
smala och långa
bredare och kortare
17 / 62
z (vikt)
2 Nya objekt: potatis eller morot? (testa själv i MATALB)
5
0
15
10
5
x (hojd)
0
0
10
5
15
y (bredd)
Grönt objekt borde vara morot
Magenta objekt borde vara potatis
18 / 62
z (vikt)
2 Nya objekt: potatis eller morot? (testa själv i MATALB)
5
0
15
10
5
x (hojd)
0
0
10
5
15
y (bredd)
Matematisk regel?
19 / 62
z (vikt)
2 Nya objekt: potatis eller morot? (testa själv i MATALB)
5
0
15
10
5
x (hojd)
0
0
10
5
15
y (bredd)
Matematisk regel?
Beräkna avstånd mellan det okända objektet och alla kända
objekt
20 / 62
Frågeställningar och ramverk för analys
Hur representeras en rotfrukt i en dator?
Representera en rotfrukt med dess numeriska värden för bredd,
höjd och vikt!
Hur modellerar vi en rotfrukt matematiskt?
Varje rotfrukt kan beskrivas som en vektor i R3
21 / 62
Frågeställningar och ramverk för analys
Matematik som används?
Avstånd mellan vektorer! Krävs skalärprodukt för detta.
Låt e = (e1 , e2 , e3 ) vara standard ON-bas
u = eX ,
v = eY ,
 
x1
X = x2 
x3
 
y1
Y = y2 
y3
X och Y är motsvarande koordinatmatriser i basen e.
22 / 62
Frågeställningar och ramverk för analys
Matematik som används?
Avstånd mellan vektorer! Krävs skalärprodukt för detta.
Skalärprodukten ges av (standardskalärprodukten!)
 
y1
t

y2  = x1 y1 + x2 y2 + x3 y3
(u|v) = X Y = x1 x2 x3
y3
som inducerar norm (längd) av en vektor
kuk2 = (u|u) = X t X = x1 x1 + x2 x2 + x3 x3
23 / 62
Avstånd mellan vektorer blir
Normen av u = eX blir
v
u 3
uX
√
kuk = x1 x1 + x2 x2 + x3 x3 = t
xi2
i=1
Normen ger i sin tur avstånd mellan två vektorer u och v
Definition
Det euklidiska avståndet mellan vektorer u och v i rummet ges av
v
u 3
uX
ku − vk = t (xi − yi )2
i=1
24 / 62
40 Nya objekt: potatis eller morot? (testa själv i MATALB)
Traningsmangd och testmangd
8
z (vikt)
6
4
2
0
15
15
10
10
5
5
x (hojd)
0
0
y (bredd)
Testa metoden med facit i hand!
Träningsmängd: röda och blåa ringar
Testmängd: gröna och magenta romber
25 / 62
Algoritm 1: Närmaste grannemetoden!
Eller på engelska nearest neighbour method [3].
Träninsfas Modellera varje klass (potatis eller morot) med alla
objekt i träningsmängden.
Testfas
1
2
3
4
5
6
För varje objekt x i testmängden:
Beräkna avståndet mellan x och alla objekt i
träningsmängden
Ta reda på det objekt y∗ ur träningsmängden
som ligger närmast x
Om y∗ är en potatis klassificera x som potatis
Om y∗ är en morot klassificera x som morot
Jämför med facit om resultatet blev rätt!
26 / 62
Kör algoritmen!
Potatis nr 1 ur testmängden.
8
7
6
5
z (vikt)
4
3
2
1
0
15
10
5
x (hojd)
0
0
10
5
15
y (bredd)
Röd ring = morot
Blå ring = potatis
27 / 62
Avstånd
Avstånd mellan potatis nr 1 och alla objekt i träningsmängden
9
8
7
Avstand
6
5
4
3
2
1
0
5
10
15
20
25
Objekt fran traninsgmangd
30
35
40
Första 20 avstånd är till potatisar
Sista 20 avstånd är till morötter
28 / 62
Avstånd
Avstånd mellan potatis nr 1 och alla objekt i träningsmängden
9
8
7
Avstand
6
5
4
3
2
1
0
5
10
15
20
25
Objekt fran traninsgmangd
30
35
40
Första 20 avstånd är till potatisar
Sista 20 avstånd är till morötter
Algoritmen säger: Potatis! JAA
29 / 62
Kör algoritmen!
Morot nr 20 ur testmängden.
8
z (vikt)
6
4
2
0
15
10
15
10
5
5
x (hojd)
0
Röd ring = morot
0
y (bredd)
Blå ring = potatis
30 / 62
Avstånd
Avstånd mellan morot nr 20 och alla objekt i träningsmängden
10
9
8
7
Avstand
6
5
4
3
2
1
0
0
5
10
15
20
25
Objekt fran traninsgmangd
30
35
40
Första 20 avstånd är till potatisar
Sista 20 avstånd är till morötter
31 / 62
Avstånd
Avstånd mellan morot nr 20 och alla objekt i träningsmängden
10
9
8
7
Avstand
6
5
4
3
2
1
0
0
5
10
15
20
25
Objekt fran traninsgmangd
30
35
40
Första 20 avstånd är till potatisar
Sista 20 avstånd är till morötter
Algoritmen säger: Morot! JAA
32 / 62
Kör algoritmen!
Potatis nr 15 ur testmängden.
8
z (vikt)
6
4
2
0
15
10
15
10
5
5
x (hojd)
0
Röd ring = morot
0
y (bredd)
Blå ring = potatis
33 / 62
Avstånd
Avstånd mellan potatis nr 15 och alla objekt i träningsmängden
9
8
7
Avstand
6
5
4
3
2
1
0
5
10
15
20
25
Objekt fran traninsgmangd
30
35
40
Första 20 avstånd är till potatisar
Sista 20 avstånd är till morötter
34 / 62
Avstånd
Avstånd mellan potatis nr 15 och alla objekt i träningsmängden
9
8
7
Avstand
6
5
4
3
2
1
0
5
10
15
20
25
Objekt fran traninsgmangd
30
35
40
Första 20 avstånd är till potatisar
Sista 20 avstånd är till morötter
Algoritmen säger: Morot! Neeeeeejjjjj.....
35 / 62
Resultat för alla 40 objekt i testmängden
Närmaste grannemetoden
gör rätt i 19 av 20 testfall för potatisar
gör rätt i 17 av 20 testfall för morötter
Totalt ger detta 4 fel av 40 försök, 90% rätt
För potatisar 95% rätt
För morötter 85% rätt
36 / 62
Antag algoritmen sätts i drift
Hur bra kommer den att fungera?
Vi förväntar oss överlag 90% rätt.
Förutsättningar får ej ändras
Hur effektiv är algoritmen?
För varje nytt objekt beräknas 40 stycken avståndet
Kan vara dyrt/tidskrävande att beräkna avstånd till alla objekt
i träningsmängden
Varje avståndsberäkningt skulle kunna vara tidskrävande
Träningsmängden kan innehålla många fler objekt än 40.
Minnesåtgång träningsfasen?
Minnesåtgång testfasen?
37 / 62
Algoritm 2: Närmaste medelmetoden!
Eller på engelska nearest mean/centroid classifier [3].
Beräkna medel för varje klass och modellera en
viss klass med dess medel-objekt
Spara endast medel-objekten
Modellen blir en medel-potatis mp och en
medel-morot mm
Träninsfas
Testfas
1
2
3
4
5
6
För varje objekt x i testmängden:
Beräkna avståndet mellan x och alla
medel-objekt
Ta reda på om x är närmast mp eller mm
Om mp är närmast klassificera x som potatis
Om mm är närmast klassificera x som morot
Jämför med facit om resultatet blev rätt!
Notera att för varje okänd objekt, vi beräknar endast två avstånd!
38 / 62
Träningsmängd och medel för varje klass
8
7
6
z (vikt)
5
4
3
2
1
15
0
15
10
10
5
5
0
x (hojd)
Röd ring = morot
0
y (bredd)
Blå ring = potatis
39 / 62
Testmängd och medel för varje klass
8
z (vikt)
6
4
2
0
15
15
10
10
5
5
x (hojd)
Magenta romb = morot
0
0
y (bredd)
Grön romb = potatis
40 / 62
Avstånd till varje medel
12
Potatis−medel
Morot−medel
10
Avstand
8
6
4
2
0
0
5
10
15
20
25
30
Objekt fran testmangd, 1−20 potatis, 21−40 morot
35
40
Första 20 avstånd är för potatisar; Sista 20 är för morötter
41 / 62
Avstånd till varje medel
12
Potatis−medel
Morot−medel
10
Avstand
8
6
4
2
0
0
5
10
15
20
25
30
Objekt fran testmangd, 1−20 potatis, 21−40 morot
35
40
Första 20 avstånd är för potatisar; Sista 20 är för morötter
Alla 20 potatisar blir korrekt klassificerade
42 / 62
Avstånd till varje medel
12
Potatis−medel
Morot−medel
10
Avstand
8
6
4
2
0
0
5
10
15
20
25
30
Objekt fran testmangd, 1−20 potatis, 21−40 morot
35
40
Första 20 avstånd är för potatisar; Sista 20 är för morötter
Alla 20 potatisar blir korrekt klassificerade
17 morötter blir korrekt klassificerade
43 / 62
Algoritm 3: Projektion på underrum
För denna algoritm behöver vi kunna:
Lösa minstakvadratproblem
Bestämma lämpliga underrum som modellerar en viss klass
Singulärvärdesfaktorisering kan användas för båda stegen!
Först relevant matematik:
1
2
3
4
5
minstakvadratproblem
normalekvationer
projektion på underrum
spektralsatsen
singulärvärdesfaktorisering
44 / 62
Minstakvadratanpassning
Minstakvadratanpassning
3.5
3
y(x)
2.5
2
1.5
1
0.5
0
0.5
1
1.5
2
2.5
3
3.5
4
4.5
5
x
ti
yi
1
1
2
2
3
2
4
3
y (t) = m + kt
45 / 62
Minstakvadratanpassning, forts.
ti
yi
1
1
2
2
3
2
4
3
y (t) = m + kt
Ställ upp ekvationerna
m + kt1 = y1
m + kt2 = y2
m + kt3 = y3
m + kt4 = y4

1
1

1
1

 
t1 y1
y2 
t2 
m


=
y3 
t3  k
t4
y4

1
1

1
1

 
1 1
2
2
m


=
2
3 k
4
3
Problemet har ingen lösning! Ingen linje genom punkterna.
46 / 62
Minstakvadratanpassning, forts. 2

1
1

1
1

 
1 1
2
2
m


=
2
3 k
4
3
Lös istället
min kAx − bk
x
där

1
1
A=
1
1

1
2
,
3
4
 
1
2

b=
2 ,
3
m
x=
k
47 / 62
Minstakvadratanpassning, forts. 3
Sats (Minstakvadratproblem, [1, kap. 14])
Låt A vara en m × n matris med m > n, (fler rader än kolonner).
min kAx − bk
x
Om kolonnerna till A är linjärt oberoende, då ges lösningen till
minstakvadratproblemet av normalekvationerna
At Ax ∗ = At b
Alternativt:
x ∗ = (At A)−1 At b
Detta eftersom matrisen At A är inverterbar!
Rita figur i termer av kolonner av A.
48 / 62
Spektralsatsen
Sats (Spektralsatsen, [1, Sats 19.6])
Låt E vara ett euklidiskt rum. Antag att
F :E→E
är symmetrisk och linjär avbildning. Då har E en ON-bas av
egenvektorer till F
Sats (Följdsats av spektralsatsen, [1, Sats 19.7])
Om A är en symmetrisk matris, så finns det en ortogonal matris V
och en diagonal matris Λ så att
A = V ΛV t
⇔
Λ = V t AV .
Kolonner till V är egenvektorer! Diagonalelementen i Λ är
egenvärden! Symmetriska matriser är diagonaliserbara.
I en bas av egenvektorer ges avbildningsmatrisen av Λ
49 / 62
Spektraluppdelning
Sats (Spektraluppdelning, [1, Sats 19.16])
Låt F : E → E vara symmetrisk och linjär avbildning på det
euklidiska rummet E. Låt vidare A vara avbildningsmatrisen för F .
Då har vi faktoriseringen A = V ΛV t Där V = [v1 , . . . , vn ] matris
som består av egenvektorer och


λ1 · · · 0


Λ =  ... . . . ... 
0
···
λn
Faktoriseringen kan skrivas
A = V ΛV t = λ1 v1 v1t + λ2 v2 v2t + · · · + λn vn vnt
Gör detta för en 2 × 2 matris. A är en summa av yttre produkter,
där varje produkt är en projektion på en egenvektor.
50 / 62
Singulärvärdesfaktorisering, [2]
Singular Value Decomposition (SVD)
Sats (SVD)
Varje m × n matris A, kan faktoriseras enligt
A = UΣV T
där
U ∈ Rm×m är ortogonal matris U t U = UU t = I
V ∈ Rn×n
är ortogonal matris V t V = VV t = I
Σ ∈ Rm×n
är en diagonal matris med σ1 , . . . , σn i diagonalen
Det gäller att
σ1 ≥ σ2 ≥ · · · ≥ σn ≥ 0.
Detta är en generalisering av [1, Sats 19.7].
51 / 62
Singulärvärdesfaktorisering, forts.
Sats (SVD)
A = UΣV T
Låt U = (u1 , . . . , um ) och V = (v1 , . . . , vn )
1
U’s kolonner ui kallas för vänster-singulära-vektorer
2
V ’s kolonner vi kallas för höger-singulära-vektorer
3
Diagonalelementen σi i Σ kallas för singulära värden.
Vidare gäller sambandet
Avi = σi ui
Jämför med sambandet för egenvärden och egenvektorer
Avi = λi vi
där A är n × n symmetrisk, vi är egenvektor till A med tillhörande
egenvärde λi
52 / 62
SVD
Illustration av SVD för A med m > n
@0
@@
A
m×n
=
U
m×m
VT
0
m×n
53 / 62
Motsvarigheten till spektralsatsen
Sats (Spektralsatsen, [1, Sats 19.6])
Låt E vara ett euklidiskt rum. Antag att
F :E→E
är symmetrisk och linjär avbildning. Då har E en ON-bas av
egenvektorer till F
Sats (Generalisering av spektralsatsen)
Antag att
F : En → Em
är en linjär avbildning där Em och En är euklidiska rum av
dimensioner m, respektive n. Då har Em och En ON-baser som
består av (vänster och höger) singulära-vektorer till F
I en bas av egenvektorer ges avbildningsmatrisen av Λ
54 / 62
Singulärvärdesuppdelning (motsvarigheten till
spektraluppdelning)
Sats (Spektraluppdelning, [1, Sats 19.16])
Låt vidare A vara avbildningsmatrisen för en linjär avbildning F
F : En → Em
Då har vi faktoriseringen A = UΣV t som kan skrivas (delas upp) i
termer av singulära vektorerna
A = UΣV t = σ1 u1 v1t + σ2 u2 v2t + · · · + σn un vnt
där U = (u1 , . . . , um ), V = (v1 , . . . , vn ), och σi är singulära värden.
Gör detta för en 4 × 2 matris. A är en summa av yttre produkter.
55 / 62
SVD av en matris med full kolumnrang I
A =
1
1
1
1
1
2
3
4
>> [U,S,V] = svd(A)
U =
-0.2195
-0.3833
-0.5472
-0.7110
0.8073
0.3912
-0.0249
-0.4410
0.0236
-0.4393
0.8079
-0.3921
0.5472
-0.7120
-0.2176
0.3824
56 / 62
SVD av en matris med full kolumnrang II
S =
5.7794
0
0
0
0
0.7738
0
0
V =
-0.3220
-0.9467
0.9467
-0.3220
57 / 62
SVD av en matris med linjärt beroende kolonner I
A =
1
1
1
1
1
2
3
4
2
3
4
5
>> [U,S,V] = svd(A)
U =
-0.2524
-0.3990
-0.5457
-0.6923
-0.7977
-0.3752
0.0473
0.4698
-0.4236
0.3060
0.6588
-0.5412
-0.3472
0.7787
-0.5157
0.0843
58 / 62
SVD av en matris med linjärt beroende kolonner II
S =
9.3441
0
0
0
0
0.8290
0
0
0
0
0
0
V =
-0.2022
-0.5840
-0.7862
-0.7911
0.5706
-0.2204
-0.5774
-0.5774
0.5774
59 / 62
Använd SVD för att lösa minstakvadratproblem I
Fall 1: Låt A’s kolonner vara linjärt oberoende


 
1 1
1
1 2
2
x




,
b =  ,
x= 1
A=
1 3
2
x2
1 4
3
Och lös
min kAx − bk
x
60 / 62
Använd SVD för att lösa minstakvadratproblem II
Fall 2: Låt A ha linjärt beroende kolonner


 
1 1 2
1
1 2 3 
2


b=
A=
1 3 4  ,
2 ,
1 4 5
3
 
x1

x = x2 
x3
Och lös
min kAx − bk
x
61 / 62
References I
[1] Baravdish, G.
Linjär algebra TNA002 för ED, KTS, MT.
Linköpings Universitet, 2012.
[2] Eldén, L.
Matrix Methods in Data Mining and Pattern Recognition.
SIAM, 2007.
[3] Hastie, T., Tibshirani, R., and Friedman, J.
The Elements of Statistical Learning.
Springer Series in Statistics. Springer-Verlag, New York, 2001.
62 / 62