Professional Documents
Culture Documents
ProiectBD Wine
ProiectBD Wine
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.
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
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|).
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:
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.
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.
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.
Î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.
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:
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
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.