subota, 20 aprila, 2024
Slobodni profesionalac

Programski jezik R i njegova primena u nauci o podacima (2. deo)

Autor: Nadica Miljković

Prvi koraci …

Programski jezik R i RStudio tj. IDE (eng. Integrated Development Environment) za R nisu autistična okruženja, tj. u R-u je relativno kompleksno programirati bez pristupa Internetu. Koliko god da je help obiman, detaljan i jasno napisan, Internet raspolaže velikim brojem tutorijala, pitanja, odgovora na pitanja, foruma, kurseva, otvorenih knjiga i drugih multimedijalnih materijala da je bez njega znatno teže i iskusnim programerima, a kamoli početnicima. R je modularan tj. ako su Vam potrebne specifične funkcije, onda Vam je potreban i specifičan paket koji je potrebno preuzeti sa Interneta. Iako je verovatno najgora noćna mora svakoga ko drži ili sluša kurs instalacija programa na početku kursa, ja to radim od kad sam počela da držim R. Razlog je jednostavan: programski jezik R je jednostavan za instalaciju (za razliku od vlasničkog softvera kao što su LabVju (eng. LabView) i Matlab gde instalacija traje jako dugo), R se može instalirati za par minuta. Najčešće korišćen GUI za rad u programskom jeziku R je RStudio. Ako bi smo insistirali na poređenju rada u R-u i u Pajtonu, ovo bi bila velika prednost R-a, jer u Pajtonu uopšte nije jednostavno odabrati odgovarajući GUI, a Autorka teksta je imala niz problema u radu sa njima. Takođe, RStudio se instalira u roku od par minuta i otprilike za oko 5 minuta polaznici kursa su podesili sve što im je potrebno na svojim računarima da bi se bavili naukom o podacima i da bi napisali svoj prvi kod. Za više detalja pogledati R for Data Science kurs koji je održan u oktobru 2018. godine u okviru PSSOH konferencije, ali i na Filozofskom fakultetu Univerziteta u Beogradu u novembru 2018. godine.

Istorija R-a

Ako se ja pitam, jedna od velikih mana R-a je njegovo ime. Nastao je na osnovama programskog jezika C (koji je kreiran u Belovim laboratorijama 1976. godine). C jezik je jednostavno nazvan po statistici (eng. statistics), pa su kreatori Ros Ihaka (eng. Ross Ihaka) i Robert Džentlmen (eng. Robert Gentleman) krstili programski jezik R početnim slovom svojih imena. Problem koji ja imam sa ovim imenom je pretraga. Ako u bilo kom pretraživaču probate da koristite slovo „R“, ubrzo ćete se predomisliti i umesto „R“ kucaćete „R programming“ ili na srpskom „R programski jezik“. R postoji već 25 godina (od 1995. godine je objavljen pod GNU licencom), ali je njegova rasprostranjenost kod nas veća tek u zadnjih par godina. Dodatno, postoji nedoumica sa imenom programskog jezika R-a na srpskom jeziku. Postoje 4 opcije za izgovor i sve su validne (1) američko /ɑr/, (2) britansko ɑː(r) (da bi se uočila razlika pogledati npr. britanski i američki izgovor za reč car), (3) srpsko R ili (4) latinično ER. Ja koristim prvi naziv, jer je najčešće u upotrebi, ali stvar je izbora.

Broj paketa na CRAN-u zabeležen na početku letnjeg semestra u školskim 2016/17., 2017/18. i 2018/19. godinama na ETF-u za potrebe TOBS predmeta. R kod koji omogućava prikaz ovog grafika (sa osama i naslovom na engleskom jeziku je dostupan online na: https://github.com/NadicaSm/simpleRgraph, pristupljeno 18.03.2019.)

U početku, R se koristio samo za statistička proračunavanja (ista primena kao programski jezik C). Vremenom primena R-a je porasla i sada se R koristi najviše za analizu podataka, mašinsko učenje, vizuelizaciju i bioinformatiku. Generalno, javnost (i stručna i šira) nije upoznata sa činjenicom da je R slobodan softver. Ovaj tekst nema za cilj da čitateljke i čitaoce upoznaje sa razlikama i sličnostima slobodnog softvera i softvera otvorenog koda, ali bi trebalo spomenuti da postoji verzija R-a koju je Majkrosoft preradio i otvoreno je dostupna (programski jezik otvorenog koda) pod nazivom Majkrosoft R Open. Repozitorijum paketa se kao pandan slobodnom R-u (CRAN) naziva MRAN4 (od Microsoft R Application Network). Repozitorijumi su mesta na kojima se nalaze različiti R paketi. Za one koji nisu upoznati sa terminom paketa (u nekim programskim jezicima uobičajeni nazivi su alatke, biblioteke i sl.) to su skupovi funkcija koje su fokusirane na rešavanje odgovarajućih zadataka, ali mogu sadržati i podatke. Primer paketa sa funkcijama je dplur5 paket koji omogućava efikasan rad sa data frejmovima tj. tabelarnim podacima u R-u. Za razliku od dplur paketa koji sadrži isključivo alate i funkcije, ISwP6 paket sadrži samo podatke. Naravno, CRAN nije jedino mesto gde se mogu naći odgovarajući paketi. Programski jezik R je vrlo popularan u bioinformatici i to zahvaljujući Biokondaktor (eng. Bioconductor) projektu koji služi za razmenu programa i njihovu primenu, pa sajt ovog projekta sadrži niz slobodno dostupnih paketa. Dodatno, lični repozitorijumi na platformama kao što su GitHab i BitBaket sadrže veliki broj paketa. Moj savet svima koji preuzimaju pakete iz neproverenih izvora je da to rade kada se od njih očekuje instant rezultat koji ne mora da bude ni tačan ni robustan. U suprotnom, poželjno je proveriti detaljno preuzeti kod, testirati ga i po potrebi napisati sopstveni kod.

Prednosti R-a

Činjenica da je R slobodan softver je prednost sama po sebi. Čak i za one koji nisu pobornici filozofije slobodnog softvera ili ih ona ne zanima. Razlozi, između ostalog, uključuju cenu i veliku i aktivnu zajednicu u odnosu na druge komercijalne varijante (npr. SPSS, Matlab). U Beogradu ima par grupa koje su aktivne na teritoriji cele Srbije kao na primer Data sciencezajednica u Srbiji i R-Ladies u Beogradu. Organizacija i predusretljivost svih u zajednici, u Srbiji i na globalnom nivou, je za svaku pohvalu. Generalno, čak i za one koji ne žele nikoga da upoznaju postoji opcija, a to je zadivljujuće velika količina informacija, tutorijala i knjiga koja je na raspolaganju na Internetu. Taj broj je i dalje u porastu. Na primer, broj paketa tokom februara za tri godine 2017, 2018 i 2019 sa CRAN – je prikazan na Sl. 1. Za trenutni broj paketa pogledati na sledećem linku. R kod za grafik sa Sl. 1 je dostupan na GitHab stranici.

Mane R-a

Objekti u R-u su smešteni u memoriju računara tj. ako veličina učitanih podataka bude veća od otprilike polovine RA (eng. Random Access) memorije na računaru onda može nastati problem sa skladištenjem. O ovome se puno priča u R zajednici, pa su neka od ponuđenih rešenja: (1) obezbediti “dovoljno veliki” RAM na računaru (postoji i sjajan članak na temu poređenja brzine rasta podataka i Rama iz 2015. godine), (2) rad na serverima tzv. “oblacima” omogućava da se prevaziđe problem sa memorijom (npr. moguće je koristiti Hadup Apači) ili (3) rad sa specijalizovanim paketima koji omogućavaju upravljanje memorijom (npr. bigmemory paket). Pored navednih, postoji i jednostavna metoda koja se sastoji iz toga da se u R-u pročita deo fajla i da se proceni memorija koja je potrebna za smeštanje podataka, pa da se onda primeni odgovarajuća metoda manipulacije podacima. Druga mana R-a je ujedno i njegova vrlina, tj. činjenica da se radi o slobodnom softveru. Ako želite da radite nešto što niko ranije nije radio u R-u, onda neće postojati ni paket ni kod od kog bi ste mogli da krenete, već ćete morati sami da ih napišete.