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