Documente Academic
Documente Profesional
Documente Cultură
Tema 1
Autori:
Radu Stochit, oiu
Bogdan Ciobanu
George-Aurelian Popescu
Responsabili corectare:
Andreea Lazăr
Deea Oltean
Bianca Hulubei
Andrei Carapcea
Responsabil checker:
Radu Stochit, oiu
22 Martie, 2020
Figura 1: Diagramă a labirintului.
1.2 Enunt,
În Figura 1 este o diagramă a unui labirint folosit ı̂ntr-un experiment de laborator. Experimentul ı̂ncepe
prin a pune un s, oarece la una dintre cele 10 intersect, ii interioare ale labirintului. După ce s, oarecele iese ı̂n
coridorul exterior (gri), acesta nu se mai poate ı̂ntoarce ı̂n labirint. Când s, oarecele este ı̂ntr-o intersect, ie
interioară, calea pe care alege să meargă este aleatorie. Care este probabilitatea ca s, oarecele să ajungă la
mâncare (coridorul gri de jos) când ı̂ncepe ı̂n intersect, ia i?
Fie probabilitatea câs, tigului (a ajunge la mâncare) ı̂ncepand din intersect, ia i reprezentată de pi . Putem
forma o ecuat, ie liniară folosind pi s, i probabilităt, ile asociate cu intersect, iile vecine intersect, iei i. De exemplu,
ı̂n prima intersect, ie s, oarecele are o probabilitate de 14 să meargă ı̂n dreapta-sus s, i să piardă, o probabilitate de
1 1
4 să meargă ı̂n stânga-sus s, i să piardă, o probabilitate de 4 să meargă ı̂n dreapta-jos (unde are probabilitatea
1
p3 de a câs, tiga) s, i o probabilitate de 4 să meargă ı̂n stânga-jos (unde are probabilitatea p2 de a câs, tiga).
Rezultă următoarea ecuat, ie:
1 1 1 1
p1 = (0) + (0) + p2 + p3
4 4 4 4
.
În mod analog, celelalte nouă probabilităt, i pot fi reprezentate de următorul sistem de ecuat, ii.
1 1 1 1 1
p2 = (0) + p1 + p3 + p4 + p5
5 5 5 5 5
1 1 1 1 1
p3 = (0) + p1 + p2 + p5 + p6
5 5 5 5 5
1
1 1 1 1 1
p4 = (0) + p2 + p5 + p7 + p8
5 5 5 5 5
1 1 1 1 1 1
p5 = p2 + p3 + p4 + p6 + p8 + p9
6 6 6 6 6 6
1 1 1 1 1
p6 = (0) + p3 + p5 + p9 + p1 0
5 5 5 5 5
1 1 1 1
p7 = (0) + (1) + p4 + p8
4 4 4 4
1 1 1 1 1
p8 = (1) + p4 + p5 + p7 + p9
5 5 5 5 5
1 1 1 1 1
p9 = (1) + p5 + p6 + p8 + p10
5 5 5 5 5
1 1 1 1
p10 = (0) + (1) + p6 + p9
4 4 4 4
Rescrierea acestor ecuat, ii ı̂n forma standard produce următorul sistem de 10 ecuat, ii liniare cu 10 necunoscute.
4p1 − p2 − p3 = 0
−p1 + 5p2 − p3 − p4 − p5 = 0
−p1 − p2 + 5p3 − p5 − p6 = 0
−p2 + 5p4 − p5 − p7 − p8 = 0
−p2 − p3 − p4 + 6p5 − p6 − p8 − p9 = 0
−p3 − p5 + 5p6 − p9 − p1 0 = 0
−p4 + 4p7 − p8 = 1
−p4 − p5 − p7 + 5p8 − p9 = 1
−p5 − p6 − p8 + 5p9 − p1 0 = 1
−p6 − p9 + 4p10 = 1
Sistemul se poate scrie ı̂n forma matriceală, după cum se poate vedea mai jos.
4 −1 −1 0 0 0 0 0 0 0
−1 5 −1 −1 −1 0 0 0 0 0
−1 −1 5 0 −1 −1 0 0 0 0
0 −1 0 5 −1 0 −1 −1 0 0
0 −1 −1 −1 6 −1 0 −1 −1 0
A=
0 0 −1 0 −1 5 0 0 −1 −1
0
0 0 −1 0 0 4 −1 0 0
0
0 0 −1 −1 0 −1 5 −1 0
0 0 0 0 −1 −1 0 −1 5 −1
0 0 0 0 0 −1 0 0 −1 4
0
0
0
0
0
b=
0
1
1
1
1
2
Folosind metoda iterativă Jacobi cu o aproximare init, ială p1 = p2 = ... = p10 = 0 găsim după câteva iterat, ii
o aproximare:
p1 = 0.090, p2 = 0.180
p3 = 0.180, p4 = 0.298
p5 = 0.333, p6 = 0.298
p7 = 0.455, p7 = 0.522
p9 = 0.522, p10 = 0.455
Deoarece atât matricea A, cât s, i matricea de iterat, ie GJ folosită pentru metoda Jacobi pot fi matrici rare,
vrem să ret, inem matricea de iterat, ie ı̂n forma CSR (Compressed Sparse Row Format).
Aceasta constă ı̂n:
• values = [1 2 3 4 5 6 7 8 9 10 11 12];
• colind = [1 4 1 2 4 1 3 4 5 3 4 5];
• rowptr = [1 3 6 10 12 13];
Pentru a ı̂nmult, i o matrice A ı̂n forma CSR cu un vector x astfel ı̂ncât y = Ax se poate folosi algoritmul
următor (pe care ı̂l vet, i găsi ı̂n scheletul de cod):
1 function [ y ] = c s r _ m u l t i p l i c a t i o n ( values , colind , rowptr , x )
2 n = length ( x ) ;
3 y = zeros (n , 1) ;
4 for i = 1: n
5 for j = rowptr ( i ) : rowptr ( i +1) - 1
6 y ( i ) = y ( i ) + values ( j ) * x ( colind ( j ) ) ;
7 end
8 end
9 endfunction
3
1.3 Cerint, a
Studentul trebuie să implementeze următoarele funct, ii:
• function [A, b] = generate probabilities system(rows)
– Această funct, ie primes, te ca parametru numărul de rânduri rows > 2 pe care le are diagrama din
Figura 1 s, i returnează sistemul de ecuat, ii reprezentat de matricea A (ı̂n forma sa densă) s, i de
vectorul b.
• function [values, colind, rowptr] = matrix to csr(A)
– Această funct, ie primes, te ca parametru o matrice A (ı̂n forma sa densă) s, i returnează vectorii ce
reprezintă forma sa CSR.
• function [G J, c J] = Jacobi factorization(A, b)
– Această funct, ie primes, te ca parametri o matrice A (ı̂n forma sa densă) s, i un vector b ce reprezintă
un sistem liniar de ecuat, ii s, i returnează matricea de iterat, ie GJ s, i vectorul de iterat, ie cJ reprezen-
tative pentru metoda Jacobi.
2.2 Enunt,
2.2.1 Ce ı̂nseamnă clustering?
Algoritmii de clustering sunt folosit, i pentru a grupa anumite obiecte ı̂n mult, imi separate astfel ı̂ncât fiecare
obiect să aibă mai multe caracteristici ı̂n comun cu obiectele din mult, imea căreia ı̂i apart, ine, decât cu alte
obiecte. În cadrul acestei părt, i, se cere implementarea unui astfel de algoritm denumit K-Means.
4
Figura 2: Select, ia unei anumite componente dintr-o imagine
5
2.2.2 De ce clustering?
Algoritmii de clustering se pot ı̂ntâlni ı̂ntr-o multitudine de aplicat, ii, precum image processing (Figura 2 sau
Figura 3), segmentarea tipurilor de client, i pe grupuri (Figura 5) sau doar găsirea unor grupuri de elemente
cu caracteristici asemănătoare. De obicei, datele pe care dorim să le prelucrăm trebuie proiectate ı̂ntr-un
spat, iu favorabil algoritmului K-means (trebuie codificate numeric).
2.3 Cerint, a
Studentul trebuie să implementeze următoarele funct, ii:
• function [centroids] = clustering pc(points, NC)
– Această funct, ie primes, te ca parametri un vector de puncte D-dimensionale (matrice N ×D) points
s, i numărul de clustere ı̂n care trebuie segmentate punctele N C s, i trebuie să returneze un vector
de puncte centroids ce reprezintă mediile (centrele de masa) ale clusterelor.
– HINT: Forgy initialization, K-Means++
• function [cost] = compute cost pc(points, centroids)
– Această funct, ie primes, te ca parametri un vector de puncte D-dimensionale (matrice N ×D) points
s, i un vector de centroizi centroids s, i returnează costul clustering-ului, adică suma distant, elor
euclidiene de la fiecare punct din points la centroidul clusterului căruia ı̂i apart, ine. Acest cost
trebuie să fie minim.
2.4 Punctaj
Toate funct, iile ce trebuie implementate au punctaj egal. Evaluarea se poate face folosind fis, ierul checker/checker-
part-2/checker part 2.m după ce s-au copiat toate sursele necesare ı̂n checker/checker-part-2/.
6
Figura 5: Clusterig pe 100 de puncte 20-D
• utilizarea funct, ionalităt, ilor limbajului GNU Octave ı̂n mod eficient;
• rezolvarea unui sistem liniar Ax = b printr-o metodă de factorizare ortogonală;
• descoperirea elementelor de bază ale Învăt, ării Automate Supervizate (Supervised ML).
3.2 Enunt,
3.2.1 Histograma RGB
Imaginile pot fi reprezentate ı̂n spat, iul RGB al culorilor, ı̂n care fiecare pixel este definit de un triplet (r,
g, b) care reprezintă intensitatea ros, ului, a verdelui s, i, respectiv, a albastrului. Un mod prin care poate fi
reprezentată distribut, ia culorilor ı̂ntr-o imagine este prin analizarea unei histograme, precum cea din Figura
6. O histogramă măsoară frecvent, a de aparit, ie a pixelilor care au anumite valori pentru r, g sau b. Se observă
că există câte o histogramă separată pentru fiecare dimesniune a spat, iului culorilor (respectiv pentru ros, u,
verde s, i albastru).
Un model folosit frecvent este cel ı̂n care valorile lui r, g, b sunt ı̂ntregi din intervalul [0, 255]. O histograma
pentru R, de exemplu, poate avea 256 de valori pe axa orizontală, caz ı̂n care vom obt, ine pe a i-a verti-
cală numărul de pixeli din component, a R care au valoarea i. Dacă pe axa orizontală există count bins
valori, atunci pe a i-a verticală se va regăsi numărul de pixeli care au valoarea componentei R ı̂n intervalul
256 256 256
[i count bins , i count bins + count bins ). În mod analog se procedează pentru componentele G s, i B ale imaginii.
7
Figura 6: Histograma RGB a unei imagini. (a) Imaginea 250x250 (b) Canalul albastru (c) Canalul verde
(d) Canalul ros, u.
T, inet, i cont de faptul că, spre deosebire de RGB, unde fiecare componentă lua valori ı̂ntre 0 s, i 255, la HSV
domeniile dimensiunilor sunt diferite: H ia valori intre 0 s, i 360, ı̂n timp ce S s, i V iau valori de la 0 la 100. De
aceea, pentru us, urint, ă, e util (dar nu obligatoriu) să normăm valorile lui H, pentru a le aduce ı̂n intervalul
[0, 1].
Algorithm 2: RGB2HSV
R0 ← R/255;
G0 ← G/255;
B 0 ← B/255;
Cmax ← max(R0 , G0 , B 0 );
Cmin ← min(R0 , G0 , B 0 );
∆ ← Cmax − Cmin ;
if ∆ = 0 then
H = 0;
else
if Cmax = R0 then
0
−B 0
H ← 60◦ ( G ∆ mod6);
if Cmax = G0 then
0
−R0
H ← 60◦ ( B ∆ + 2);
if Cmax = B 0 then
0
−G0
H ← 60◦ ( R ∆ + 4);
H
H ← 360 ◦;
if Cmax = 0 then
S = 0;
else
∆
S = Cmax ;
V ← Cmax ;
8
3.2.3 Clasificare poze
Pentru a rezolva problema de clasificare, ne vom folosi de histogramele (RGB sau HSV) imaginilor din se-
tul de date. Vom folosi un model matematic pentru a surprinde distribut, ia datelor s, i pentru a determina
suprafat, a care delimitează clasa pozelor cu pisici. Pentru a folosi acest model, e nevoie ca fiecare imagine să
fie reprezentată printr-un vector de caracteristici (feature vector). În cazul nostru, vom considera că acest
vector este chiar rezultatul ı̂ntors de funct, iile care construiesc histogramele. Astfel, vom avea count bins · 3
caracteristici pentru fiecare imagine. Putem construi o matrice X care cont, ine pe fiecare linie vectorul cu
caracteristici ale unei imagini. Astfel, avem X ∈N ∗M , unde N este numărul total de imagini din setul de
date s, i M este numărul de feature-uri ale unei imagini (M = count bins · 3).
De asemenea, fiecare imagine va avea asociata o etichetă care spune din ce clasă face parte aceasta. În cazul
nostru este vorba doar de două clase: poze cu pisici sau poze fără pisici. Considerăm următoarea codificare:
dacă imaginea cu numărul de ordine i este o poză cu pisici, atunci yi = 1 s, i yi = −1 altfel. Astfel, obt, inem
un vector y cu N elemente care va cont, ine label-urile imaginilor din setul de date.
Modelul pe care ı̂l vom folosi este descris de un vector de parametri notat cu w, care are lungimea egala
cu numărul de caracteristici ale fiecarei poze din setul de date plus 1. Astfel lungimea lui w va fi egala cu
count bins · 3 + 1. Vectorul w descrie modelul imaginilor ı̂n raport cu caracteristicile pe care le-at, i ales voi.
Plecând de la setul de date pe care ı̂l avet, i la dispozit, ie (numit s, i set de ı̂nvăt, are/antrenare), trebuie să
ı̂nvăt, at, i valoarea vectorului w pe care ı̂l vet, i folosi apoi ca să prezicet, i clasa ı̂n care se află o nouă imagine.
Pentru a putea face predict, ii bune, este necesar ca w să descrie bine nu doar imaginile din setul de ı̂nvăt, are,
ci trebuie să poată generaliza ı̂n as, a fel ı̂ncât ı̂mpărt, irea ı̂n clase pe care o modeleaza să rămână valabilă s, i
pentru imagini noi, care nu au fost luate ı̂n considerare la ı̂nvăt, area lui w. Dupa ce w este ı̂nvăt, at, produsul
scalar y = wT · x (unde x este vectorul de caracteristici ale unei imagini) va determina clasa ı̂n care se află
imaginea dată: dacă y ≥ 0 atunci este o poză cu o pisică, altfel nu.
3.3 Cerint, a
Studentul trebuie să implementeze următoarele funct, ii:
• function [sol] = rgbHistogram(path to image, count bins)
– Această funct, ie primes, te ca parametri calea către o imagine path to image s, i un număr de valori
pentru axa orizontală a histogramei count s, i returnează un vector linie sol de lungime count· 3
care reprezintă histograma RGB a pozei de la calea primită ca parametru;
– Această funct, ie primes, te ca parametri calea către o imagine path to image s, i un număr de valori
pentru axa orizontală a histogramei count s, i returnează un vector linie sol de lungime count· 3
care reprezintă histograma HSV a pozei de la calea primită ca parametru;
– HINT: se recomandă modularizarea codului folosind o funct, ie separată care transformă o poză
din format RGB ı̂n format HSV s, i o funct, ie separată care realizează histograma cerută.
9
– Această funct, ie primes, te ca parametru o matrice A (nu neaparat pătratică) s, i returnează o ma-
trice ortogonală Q s, i o matrice superior triunghiulară R obt, inute folosind factorizarea House-
holder.
– Această funct, ie primes, te ca parametru o matrice A (nu neapărat pătratică) superior triunghiulară
s, i un vector coloană b s, i returnează un vector coloană x care este solut, ia sistemului Ax = b.
– Această funct, ie primes, te ca parametri calea către un set de imagini path to dataset, tipul his-
togramei (”RGB” sau ”HSV”) s, i un număr de valori pentru axa orizontală a histogramei countb ins
s, i returnează o matrice de caracteristici X (nu X)
e descrisă mai sus s, i un vector coloană de etichete
y;
– HINT: se recomandă init, ializarea lui X cu dimensiunile sale exacte ı̂n loc de adăugarea iterativă
a unor linii noi ı̂n X.
– Această funct, ie primes, te ca parametri calea către un set de imagini de testare path to testset,
vectorul de parametri ai modelului w, tipul de histogramă evaluată (”RGB” sau ”HSV”) s, i un
număr de valori pentru axa orizontală a histogramei count bins s, i returnează un procentaj real
ı̂ntre 0 s, i 100 al numărului de imagini clasificate corect percentage.
3.4 Punctaj
Evaluarea se poate face folosind fis, ierul checker/checker-part-3/checker part 3.m după ce s-au copiat
toate sursele necesare ı̂n checker/checker-part-3/.
4.2 Enunt,
Deoarece ı̂n cele mai multe cazuri numărul de poze dintr-un set de date este foarte mare, matricea de carac-
teristici X este rău condit, ionată (cond(X) > 1e15) s, i rezolvarea directă sau printr-o factorizare a sistemului
Xw
e = y introduce erori mari de aproximare.
10
În acest caz se foloses, te o metodă numită Gradient Descent care, plecând de la o aproximare aleatorie a
vectorului de parametri w, aproximează succesiv noi valori pentru elementele lui w.
Înainte de a aplica algoritmul de mai sus fiecare coloană din X e ı̂n afară de ultima (cea de 1-uri) trebuie
scalată atât pentru ı̂nvăt, are, cât s, i pentru evaluare, folosind următoarea formulă:
col − mean(col)
col =
std(cold)
.
4.3 Cerint, a
Studentul trebuie să implementeze următoarele funct, ii:
– Această funct, ie primes, te ca parametri calea către un set de imagini de testare path to testset,
vectorul de parametri ai modelului w, tipul de histograma evaluată (”RGB” sau ”HSV”) s, i un
număr de valori pentru axa orizontală a histogramei count bins s, i returnează un procentaj real
ı̂ntre 0 s, i 100 al numărului de imagini clasificate corect percentage.
Studentul poate folosi (s, i i se recomandă) celelalte funct, ii implementate la partea a treia.
Se dores, te o acuratet, e de predict, ie mai mare de 0.6 ı̂ntrucât setul de date este mult mai mare decât la
part-3, iar antrenarea se va face doar pentru 500 de epoci (putet, i vedea ı̂n checker).
4.4 Punctaj
Toate funct, iile ce trebuie implementate au punctaj egal. Evaluarea se poate face folosind fis, ierul checker/checker-
part-4/checker part 4.m după ce s-au copiat toate sursele necesare ı̂n checker/checker-part-4/.
5 Precizări
5.1 Trimiterea temei
Studentul va trimite o arhivă pe vmchecker v2 la Tema 1 care va cont, ine patru directoare:
11
• part-1/ care va cont, ine ı̂năuntrul său sursele implementate pentru partea 1;
• part-2/ care va cont, ine ı̂năuntrul său sursele implementate pentru partea 2;
• part-3/ care va cont, ine ı̂năuntrul său sursele implementate pentru partea 3;
• part-4/ care va cont, ine ı̂năuntrul său sursele implementate pentru partea 4.
Timpul maxim de execut, ie pentru fiecare parte este:
• part-1: 130s
• part-2: 30s
• part-3: 300s
• part-4: 140s
Recomandăm verificarea locală ı̂nainte de a trimite arhive pe vmchecker v2. Putet, i folosi checker-ele pentru
fiecare parte ı̂n modurile descrise la sect, iunile Punctaj sau putet, i verifica ı̂ntreaga temă cu ajutorul fis, ierului
checker. Pentru a verifica ı̂ntreaga temă trebuie să avet, i toate cele patru foldere cu implementările voastre
(part-1, part-2, part-3, part-4), folder-ul checker si executabilul checker ı̂n acelas, i director.
5.2 Punctaj
Se acordă 10p pentru README. Acesta trebuie să cont, ină detaliile implementării, precum s, i eventualele
probleme pe care studentul le-a ı̂ntâlnit pe parcursul rezolvării temei. Feedback-ul este, de asemenea, favor-
abil.
Punctajul total al temei este suma punctajelor celor patru părt, i s, i a punctajului pe README.
5.3 Deadline
Deadline soft: 12.04.2020 23:55 Deadline hard: 17.04.2020 23:55
5.4 Etică
Realizarea temelor de casă va respecta regulamentul cursului de Metode Numerice s, i codul de etică al Univer-
sităt, ii Politehnica din Bucures, ti. Astfel, nu sunt permise colaborările de orice fel ı̂n realizarea temei de casă.
Fiecare student va rezolva singur s, i va trimite propria solut, ie pentru evaluare, asumându-s, i răspunderea
pentru toate variantele trimise spre corectare, care vor fi păstrate pe platforma online a cursului.
Echipa de Metode Numerice, din partea sa, ı̂s, i manifestă ı̂ncrederea ı̂n onoarea student, ilor ı̂nscris, i la curs,
fără a lua măsuri de precaut, ie neobis, nuite s, i nerezonabile pentru a preveni formele de necinste ce pot apărea.
Echipa responsabilă pentru această temă de casă va oferi suport academic pe site-ul de curs, printr-un in-
strument de tip forum, disponibil pe toate perioada de realizare a temei.
Astfel, orice abatere, de orice fel, de la aceste reguli, demonstrată de către echipa responsabilă a temei de
casă, va duce la anularea punctajului pentru temele de casă s, i pentru laborator. Pentru orice probleme de
etică identificate, vă rugăm contactat, i responsabilul temei de casă s, i titularul de curs.
12