You are on page 1of 13

2023

Predicia calitii vinului cu ajutorul u

ALEXANDRA-ANA-CAMELIA BOTH
Cuprins
Introducere.................................................................................................................................................2
Setul de date...............................................................................................................................................3
Arbori de decizie.........................................................................................................................................4
Bagging........................................................................................................................................................7
Bagging with CARET....................................................................................................................................8
Random Forest..........................................................................................................................................10
Concluzii....................................................................................................................................................12
Introducere

Vinul este una dintre cele mai vechi și mai apreciate băuturi din lume, având o importanță
culturală și economică semnificativă. Analizarea și înțelegerea factorilor care influențează
calitatea vinului pot aduce informații valoroase pentru producătorii, distribuitorii și consumatorii
de vin. Calitatea vinului este evaluată de experți în degustarea vinului, care își exprimă opiniile și
preferințele personale în evaluarea senzorială. Acest aspect subiectiv adaugă o dimensiune
interesantă în analiza și predicția calității vinului și poate oferi oportunitatea de a explora
discrepanțele între evaluările experților și predicțiile algoritmilor.

În acest proiect, ne propunem să explorăm și să comparăm trei metode de învățare


automată pentru a prezice calitatea vinului. Vom utiliza arbori de decizie, metoda Bagging și
metoda Random Forest pentru a dezvolta modele de predicție bazate pe setul de date "Wine
Quality" (Calitatea vinului).

Scopul nostru în acest proiect este să răspundem acestor trei întrebări:

1. Care sunt cele mai importante caracteristici chimice care influențează calitatea
vinului?
2. Există o relație între concentrația de alcool și calitatea vinului?
3. Există caracteristici chimice care prezic în mod independent calitatea vinului sau
există combinații specifice de caracteristici care sunt mai relevante pentru
prezicerea calității?

Pe lângă a găsi răspuns la cele trei întrebări de mai sus ne propunem să comparăm performanța
acestor trei metode în predicția calității vinului pe baza unor caracteristici precum aciditatea,
concentrația de alcool, pH-ul și altele. Vom evalua și compara acuratețea și stabilitatea modelelor
obținute prin intermediul acestor metode.
Setul de date
Setul de date este luat de pe kaggle si este disponibil la adresa
https://www.kaggle.com/datasets/uciml/red-wine-quality-cortez-et-al-2009.

Autorul a furnizat informații specifice despre setul de date pe care îl vom utiliza în acest
proiect. Acest set de date este centrat pe variantele roșii ale vinului portughez "Vinho Verde".
Vinho Verde este o denumire controlată pentru vinurile produse în regiunea portugheză cu același
nume și se caracterizează prin prospețime, aciditate vibrantă și note fructate.

Setul de date cuprinde informații despre diverse caracteristici chimice ale acestor vinuri,
cum ar fi nivelul de aciditate, concentrația de alcool, pH-ul, nivelul de zahăr și altele. Aceste
caracteristici sunt esențiale în evaluarea și clasificarea calității vinului.

Am început analiza prin încărcarea setului de date în RStudio și am observat ca are 1599
de instanțe și 12 variabile. Apoi am făcut o vizualizare a atributelor numerice, în graficele de mai
jos apar toate variabilele deoarece toate sunt numerice

Densitatea atributelor numerice


Pe baza acestei vizualizări am decis să păstrăm toate variabilele din setul de date,
considerându-le importante pentru analiza noastă. Pentru continuarea analizei a fost necesară
împărțirea setului de date în setul de antrenament (70%) și setul de test (30%) pentru a putea
antrena și evalua modelul în mod corespunzător, asigurând în același timp o evaluare obiectivă a
performanței acestuia pe date noi.

Împărțirea setului de date

Arbori de decizie
Primul arbore pe care l-am creat a fost cel cu setările implicite. Pentru obținerea acestui
arbore, programul a făcut cross-validation, unde a selectat valoarea optimă a parametrului α (cost
complexity) pentru a minimiza suma dintre suma pătratelor erorilor (SSE) și produsul dintre α și
numărul de noduri terminale din arbore (|T|).

Cea mai mică valoare a {SSE + α|


T|} se obține în punctul în care α
este 0.021 și numărul de noduri
terminale este 5.

Arborele rezultat a fost următorul:


Pe baza acestui arbore am putut trage următoarele concluzii:

 Valoarea variabilei „alcohol” este cel mai important factor în determinarea calității
vinului.
 Variabilele „sulphates” și „volatile.acidity” sunt și ele relevante în evaluarea calității
vinului.

Dacă ignorăm costul complexității și ne dorim un arbore mai detaliat și mai complex, am
crescut arborele de decizie până când am obținut o valoare zero pentru parametrul alpha. În
rezultat, am obținut un arbore extins care acoperă o varietate mai mare de condiții și ramuri de
decizie.

Deși este un arbore mult mai mare decât cel inițial, cu mult mai multe split-uri eroarea
(SSE) nu se modifică, nu se duce mai jos față de cea de la primul arbore.

Pentru a controla acest arbore de decizie și a-l găsi pe cel optim avem nevoie de
parametrii minsplit (numărul minim de instanțe dintr-un subgrup pentru a continua împărțirea
acestuia - implicit este 20) si maxdepth (numărul maxim de noduri interne din arbore dintre
rădăcina și frunze - implicit este 30). Am realizat un hyper-grid care a generat toate posibilitățile
în ceea ce privește valorile minsplit, cuprinse între 5 și 20, și valorile maxdepth, cuprinse între 5
și 15.
Astfel am identificat combinația optimă de parametri, care asigură cea mai bună performanță a
modelului. Prin evaluarea diferitelor valori pentru minsplit, maxdepth și cp, am determinat
combinația care minimizează eroarea și maximizează acuratețea predicțiilor.

Prin setarea acestor parametrii am obținut cel mai bun arbore de decizie:

Comparând erorile de predicție obținute pentru trei modele diferite, avem următoarele rezultate:

 Modelul m1: eroarea de predicție este de aproximativ 0.651854.


 Modelul m2: eroarea de predicție este de aproximativ 0.6723099.
 Modelul optimal_tree: eroarea de predicție este de aproximativ 0.6434363.

Pe baza acestor rezultate, putem spune că modelul optimal_tree are cea mai mică eroare
de predicție, urmat de modelul m1 și apoi de modelul m2. Prin urmare, modelul optimal_tree are
o performanță mai bună decât celelalte două modele în ceea ce privește capacitatea sa de a
estima calitatea vinurilor.
Bagging

În continuare, am folosit metoda bagging pentru a combina predicțiile multiple ale unui
ansamblu de modele de învățare și a obține o predicție finală mai precisă și mai robustă. Am
aplicat metoda bagging pe setul de date "wine_train" pentru a prezice calitatea vinului ("quality")
folosind toate celelalte variabile disponibile în setul de date. Parametrul "coob = TRUE" indică
faptul că am utilizat metoda de bootstrap out-of-bag pentru a evalua performanța modelului.

Am aplicat metoda de bagging pe setul de date "wine_train" și l-am împărțit în mod


implicit în 25 de părți distincte (bags). În urma acestui proces, am obținut o estimare a erorii
medii (root mean squared error) de 0.6594. Este important de menționat că această valoare este
mai mare decât cea obținută anterior în cazul modelului "optimal_tree".

Vom continua să explorăm cum se modifică eroarea medie pătratică (RMSE) în funcție de
numărul de părți distincte (bags) folosite în metoda de bagging. Am construit un grafic cu
valorile din "ntree" pe axa x și erorile RMSE corespunzătoare pe axa y, folosind funcția "plot":

Din grafic rezulta că cea mai mică valoare a RMSE-ului se obține atunci când setul de
date se împarte in 45 de părți, am folosit, de asemenea, si funcția „which.min(rmse)” pentru a
găsi indexul care corespunde celei mai mici valori a RMSE din vectorul rmse. Apoi, am folosit
ntree[min_rmse_index] pentru a obține numărul optim de "bags" (optimal_ntree) corespunzător
valorii minime a RMSE.

Cu 45 bag-uri, am obținut o eroare RMSE de 0.6568 pe setul de date de antrenament, mai


mică decât eroarea RMSE de 0.6594 obținută pentru 25 de bag-uri. Acest rezultat indică o
performanță relativ mai bună a modelului cu 45.

Bagging with CARET

Cu ajutorul metodei Bagging în biblioteca CARET, putem aplica o tehnică de control al


învățării numită cross-validation. În acest caz, setul de antrenament este împărțit în 10 părți, iar
bagging-ul este aplicat de 10 ori pe fiecare parte. Ca rezultat, obținem un model mediu, care este
evaluat folosind partea rămasă neutilizată în antrenament. Această abordare permite o evaluare
mai robustă a performanței modelului și ajută la reducerea potențialelor variații ale rezultatelor
obținute prin bagging. Mai întâi, am definit un obiect fitControl care specifică metoda de control
a învățării, în acest caz fiind cross-validation cu 10 fold-uri.

După antrenare, rezultatele sunt stocate în variabila bagged_cv. Prin această metodă am
obținut un RMSE de 0.6494633, mai mic decât cele obținute anterior.
Pentru a evalua importanța caracteristicilor, se utilizează funcția varImp pentru a obține
măsura de importanță a fiecărei caracteristici în cadrul modelului de bagging. Apoi, se utilizează
funcția plot pentru a vizualiza grafic cele mai importante 5 de caracteristici.

Conform rezultatelor obținute prin metoda de bagging cu caret, se constată că variabila


"volatile acidity" are cea mai mare importanță în reducerea erorii de predicție în cadrul
modelului de baggin. În contrast, în cazul arborelui de decizie simplu, se constată că variabila
"alcohol" a fost identificată ca fiind cea mai importantă, fiind plasată în vârful arborelui.

În urma predicției pe setul de test, a fost obținut rezultatul RMSE (rata de eroare medie
pătratică) de 0.5972631. Acest rezultat este mai mic decât RMSE-ul obținut pe setul de
antrenament, ceea ce indică faptul că modelul are o performanță mai bună în ceea ce privește
predicția pe setul de test.

Am creat un grafic ce evidențiază diferența dintre predicțiile obținute și valorile reale,


predicțiile sunt reprezentate cu puncte albastre, iar valorile reale sunt reprezentate cu puncte
roșii. Apoi am creat un grafic pentru a vedea diferența lor.
Primul grafic evidențiază diferența dintre valorile reale (reprezentate de punctele roșii),
predominant situate la 5 și 6, și predicțiile (reprezentate de punctele albastre), care, deși nu sunt
numere întregi, sunt concentrare în jurul acestor valori, sugerând o aproximare a modelelor
utilizate.

De asemenea, în al doilea grafic, punctele nu sunt distribuite în jurul valorii zero,


indicând faptul că diferențele dintre valorile prezise și valorile reale nu sunt uniforme sau
concentrate în jurul valorii zero. Aceasta poate însemna că modelul poate face predicții
imprecise.

Random Forest

Cu metoda Random Forest se selectează numărul de arbori care vor fi construiți (ntrees).
Pentru fiecare arbore, se generează un eșantion de bootstrap din setul de antrenament și se
construiește un arbore CART pe acest eșantion. La fiecare pas de împărțire a setului de
antrenament, se selectează în mod aleatoriu m variabile din totalul de p variabile independente.
Se alege cea mai bună împărțire folosind setul de m variabile candidat și se realizează împărțirea
nodului arborelui. Algoritmul se oprește folosind un criteriu obișnuit.
Am utilizat metoda Random Forest pentru a construi un model de predicție bazat pe setul
de date wine_train. Scopul modelului a fost să prezică variabila quality (calitatea) în funcție de
alte variabile disponibile în setul de date.

Analizând cele doua imagini rezultă că am folosit un model Random Forest de regresie cu 500 de
arbori și că în procesul de construire a acestora au fost testate 3 variabile la fiecare divizare a
arborelui. Valorile raportate sunt:

 Mean of squared residuals (media reziduurilor pătrate) este de 0.3631979. Valoarea


obținută aici este cea mai mică în comparație cu valorile obținute prin metodele utilizate
anterior.
 % Var explained (% variație explicată) este 46.78. Modelul de regresie (random forest)
poate explica aproximativ 46.78% din variația variabilei "quality".
 Observăm că eroarea modelului de regresie aleatorie încetează să scadă în jurul valorii de
300. Prin urmare, putem considera că acest număr de arbori reprezintă o valoare
acceptabilă.

Am utilizat funcția which.min pentru a găsi numărul de arbori (360) care a obținut cea
mai mică valoare a erorii pătratice medii (MSE) în modelul m1_rf. Apoi, am calculat eroarea
pătratică medie rădăcinată (RMSE) corespunzătoare acestei valori minime de MSE, care a fost
de aproximativ 0.601299.
Concluzii
Pe baza metodelor utilizate și rezultatelor obținute, am ajuns la următoarele concluzii finale cu
privire la întrebările inițiale:

1. Care sunt cele mai importante caracteristici chimice care influențează calitatea
vinului?
Cea mai importantă caracteristică chimică care influențează calitatea vinului,
conform modelelor m1, m2 și optimal_tree a fost variabila „alcohol” care a fost plasată în
vârful arborilor de decizi în toate cele trei cazuri. În ceea ce privește metoda bagging,
variabila "volatile acidity" are cea mai mare importanță în reducerea erorii de predicție în
cadrul modelului

2. Există o relație între concentrația de alcool și calitatea vinului?


Bazându-ne pe informațiile aflate prin aplicarea celor 3 modele, există indicii că
variabila „alcohol” (concentrația de alcool) poate fi un factor important în determinarea
calității vinului, însă predicția calității vinului nu se poate face doar pe baza acestei
variabile.

3. Există caracteristici chimice care prezic în mod independent calitatea vinului sau
există combinații specifice de caracteristici care sunt mai relevante pentru
prezicerea calității?
Variabilele chimice, cum ar fi conținutul de alcool, aciditatea volatilă, sulfatul și
dioxidul total de sulf, sunt considerate factori importanți în evaluarea calității vinului.
Deși niciuna dintre aceste caracteristici nu poate oferi în mod independent o predicție
precisă a calității, combinația lor poate furniza indicii mai relevante pentru determinarea
acesteia.

You might also like