#005 Iris Dataset
Prvi „pravi“ dataset mašinskog učenja
Do sada smo koristili ručno napravljene dataset-ove ili one napravljene uz pomoć random naredbi. Jedan od prvih skupova podataka koji su naučnici koristili predstavlja Iris Dataset. Skoro svi blogovi ili udžbenici koriste ovaj dataset, stoga i mi nećemo napraviti izuzetak. Ovaj skup podataka napravio je statističar Fišer (engl. Fisher (1936.)), a on je takođe dao doprinose i samom razvoju LDA algoritma. Stoga se korisiti i naziv Fisher Linear Discirminant Analysis. Fišer je želeo da na osnovu dužine i širine latica proveri da li je moguće izvršiti klasifikaciju tri vrste iris cveta.
Dakle, u ovom slučaju analiziramo 3 klase, a to su kategorije cveta iris: setosa, versicolor i virginica. Na prethodnoj slici ilustrovane su dimenzije koje se zapravo mere. Tako od svakog cveta dobijamo 4 veličine. Ove dimenzije u mašinskom učenju se zovu obležja (engl. feature-i), a sva četiri podatka zvaćemo vektor obeležja (engl. feature vector).
U Data Science-u, u zavisnosti od problema koji se rešava, potrebno je poznavanje i same tematike (engl. Domain Expertise). Bar neko od članova Data Science tima bi trebalo da je poseduje. Ovde bismo morali da konsultujemo na primer biologe, dok je za Machine Learning primenu u medicini potrebno imati doktore u timu. Sledeći kod učitava Iris dataset.
Pogledamo kako izgleda ovaj dataset. Ovo je veoma važan korak u Data Science-u. Precizan naziv je EDA – Exploratory Data Analysis.
U ovom koraku pokušavamo da shvatimo težinu problema, zavisnost među feature vektorima, da li su svi podaci tačni ili neke vrednosti nedostaju itd.
Prethodni deo koda pokazuje kako možemo da pristupamo samim podacima i da steknemo uvid u njihove brojne vrednosti. Važno je videti i grafički kakve su relacije između ovih feature-a.
Sada mnogo bolje vidimo da je klasa predstavljana plavom bojom “relativno jednostavna” za klasifikaciju. Praktično je linearno separabilna (ako zanemarimo jednu izdvojenu tačku). Već sada možemo zaključiti da bez obzira na ostala obeležja prepoznavanje ove klase neće biti suviše teško. Ipak, cvetovi koji su predstavljeni crvenom i zelenom bojom međusobno se preklapaju.
Trening vs test dataset
Pri analizi ovog skupa pre nego što obučimo naš klasifikator podelićemo ga na trening i test. Ova podela najčešće se vrši u razmeri 80%-20% (ili 70%-30%) u korist trening skupa. Kako se pravi trening skup? S obzirom na to da imamo 150 elemenata, odlučićemo se za 80% za trening i to su cvetovi sa rednim brojevima od 0 do 119 (indeksi u Python kodu). Ali ovo nije ispravan put. U tom slučaju u test skupu bi nam ostali samo elementi iz klase tri. Kada napravimo trening i test skup potrebno je izabrati elemente po slučajnom izboru. Proces podele može se vršiti ručno, ali za sada ćemo koristiti gotovu naredbu: train_test_split().
Vidimo da je sada u vektoru y došlo do permutacije svih elemenata.
Kao što smo ranije objasnili, obučavanje parametara algoritma vršićemo na trening skupu. Još jedna novina je da sada za naš LDA klasifikator problem ne možemo rešiti samo jednom pravom. Ovde imamo tri klase, pa je stoga potrebno generisati tri prave. Još jednom na našu sreću o ovome ne moramo da vodimo računa, jer je u sklearn biblioteci sve predviđeno. Dovoljno je samoda prosledimo naredbi .fit(X_train, y_train) podatke kakvi jesu i obučavanje će se automatski izvršiti.
U jednom izvršavanju ovoga koda dobili smo dosta visoku tačnost: 96.67%. Ovako visoke vrednosti uobičajene su za Iris dataset koji je relativno jednostavan za klasifikaciju. Ovo znači da su klase relativno separabilne. Važno je napomenuti da kada bismo ceo kod ponovo pokrenuli, dobili bi smo drugačiji rezultat. Zašto? Obučavanje parametara LDA klasifikatora zavisi isključivo od trening skupa. U svakom izvršavanju funkcija train_test_split() na slučajan način bira 120 elemenata. Stoga će parametri LDA klasifikatora uvek biti različiti. Takođe, i sam test skup se menja. Neki od elemenata mogu biti “lakši” za klasifikaciju, a drugi “teži”. Ovo zavisi od toga koliko su elementi udaljeni od same granice razdvajanja koju klasifikator isprojektuje. Kada su skupovi dovoljno veliki, u praksi ovo uglavnom ne predstavlja problem jer su oscilacije tačnosti prilikom većeg broja izvršavanja neznatne.