Sažetak | The paper provides a comparison of compression methods such as Lempel-Ziv-Welch, Huffman, and arithmetic coding applied to different large datasets. Validation is done based on various metrics such as execution time, compression ratio, and information loss in the data when the data differs before and after compression. A machine learning model is also developed based on an autoencoder model. LZW produced results of about 30 percent median compression ratio for all text records and a median of 70 percent for image records. In addition, Huffman coding produced a compression rate of about 40 percent median for text data and a median of 55 percent for image data. Finally, arithmetic coding yielded results of 70 percent median for text compression and 55 percent median for image data compression. The time required was lowest for LZW, followed by Huffman, and worst for arithmetic coding. In addition, autoencoders depend heavily on the encoder and decoder settings, with the best results obtained with a loss of up to 0.0093 per 100 pixels for 8000000 density level setup and 0.094 for 300000 density levels setup |
Sažetak (hrvatski) | Kako se naša ovisnost o elektroničkim medijima eksponencijalno povećava svake godine s napredovanjem digitalnog doba, tako se značajno povećava i potreba za pohranjivanjem golemih količina podataka u digitalnom dobu kojem živimo. Stvaranjem, obrađivanjem i razmjenjivanjem sve veće količine podataka, rješenja za pohranu postaju sve važnija. Ovo ne vrijedi samo za pohranu osobnih datoteka, već i za tvrtke i organizacije koje trebaju pohraniti velike količine podataka za razne svrhe, poput analize, istraživanja i razvoja. Stoga se u ovom radu posvećujemo usporedbama metoda kompresije. Kompresija je proces smanjivanja veličine podataka. Glavni cilj je postići što veći omjer kompresije, dok se istovremeno zadržavaju bitne informacije podataka. Algoritmi kompresije mogu se podijeliti u dvije vrste: (1) bez gubitaka i (2) s gubitkom. Iako su njihova imena opisna, kod kompresije bez gubitaka podataka izlazni podaci moraju biti isti kao i originalni. Kompresija s gubitcima, s druge strane, uklanja nepotrebne bitove, smanjujući veličinu datoteke. Komprimirana datoteka ne može se pretvoriti natrag u izvornu datoteku, zbog gubitka dijela informacija tijekom kompresije. Uspoređena su tri načina kompresije bez gubitaka te je implementiran autoenkoder kao način kompresije s gubitcima. Unutar metodologije pojedinačno smo objasnili svaku od metoda kompresije i njihovu implementaciju: (1) Huffmanova metoda temelji se na frekvenciji ulaznih parametara te postiže efektivnu kompresiju zamjenom originalnih znakova s novo generiranim kodovima. Znakovi češćeg ponavljanja zamijenjeni su kraćim kodom dok su rjeđe ponavljajući znakovi reprezentirani dužim kodom. (2) Lempel-Ziv-Welch radi temeljem izgradnje rječnika u koji se iterativno dodaju znakovi. Kompresija se ostvaruje smanjenjem duljine koda za česte uzorke znakova. (3) Aritmetičko kodiranje temelji se na izračunu matematičke vjerojatnosti za kodiranje ulaznih simbola, svaki se simbol zamjenjuje brojčanom vrijednošću koja predstavlja vjerojatnost pojavljivanja tog simbola. Također, opisan je i autoenkoder kao vrsta neuronske mreže koji se sastoji od dva glavna dijela enkodera i dekodera. Enkoder je odgovoran za smanjivanje dimenzije ulaznih podataka, dok je dekoder odgovoran za vraćanje dimenzije podataka što bliže originalnom. Autoenkoderi se mogu primjenjivati u različite svrhe, poput rekonstrukcije podataka, izvlačenje značajki te generiranje novih podataka. Unutar ovog rada autoenkoder je korišten kao kompresijski autoenkoder. U sljedećem poglavlju opisani su korišteni setovi podataka te način evaluiranja dobivenih rezultata. Setovi su dohvaćeni sa stranice Kaggle, te su ručno evaluirani i pripremljeni kako bi testiranje obuhvatilo što veće razlike unutar ispitivanja. Evaluacija je odrađena ručno usporedbom vremena potrebnih za kompresiju analiziranih podataka, dekompresiju i potrebno vrijeme učenja i usporedbom omjera postotka kompresije. Slijedi prikaz rezultata gdje je moguće vidjeti i zaključiti sljedeće. Svaka metoda kompresije ima svoje prednosti i nedostatke ovisno o setu podataka i načinu korištenja. Kod kompresije malih setova, najbolji rezultat ostvaruje aritmetičko kodiranje s visokim postotkom kompresije od 70 posto i prihvatljivim troškom računanja. Ako je potrebna velika brzina izvođenja, ostale dvije metode pokazale su se kao bolje rješenje. LZW algoritam pokazao se kao najbrže rješenje s nešto lošijom kompresijom, ali je stoga primjenjiv u kompresiji u realnom vremenu, dok se Huffmanov algoritam pokazao kao nisko troškovni, s dobrom kompresijom, odlično primjenjiv u datotekama poput ZIP ili GZIP kompresije. Kod autoenkodera je prikazano da rezultati uvelike ovise o količini treniranja i načinu implementacije autoenkodera. Prilikom korištenja više slojeva ili veće gustoće slojeva rezultati će sadržavati manje gubitke i obrnuto. Zaključno, prikazano je da izbor algoritma uvelike ovisi o zahtjevima aplikacije. Budući rad mogao bi uključivati istraživanje algoritama čak i za veće skupove podataka, hardverske implementacije ovih algoritama ili implementacije za različite slučajeve upotrebe. |