- Speaker(s)
- Marcin Wojnarski
- Affiliation
- Uniwersytet Warszawski
- Date
- May 9, 2014, 2:15 p.m.
- Room
-
room 5820
- Seminar
- Seminarium badawcze Zakładu Logiki: Wnioskowania aproksymacyjne w eksploracji danych
W referacie przedstawię dwie nowe technologie przetwarzania danych -
"Data Pipes" oraz "DAST" - które opracowałem w ostatnich latach na potrzeby realizowanych przeze mnie projektów. Obie są już częściowo zaimplementowane w języku Python i dostępne w wersjach 'alpha' na github. Zapraszam do korzystania z nich - ułatwią implementację algorytmów i eksperymentów data mining, a feedback od użytkowników będzie pomocą dla mnie, aby je dopracować i uzupełnić dokumentację.
1) "Data Pipes"
(https://github.com/mwojnars/nifty/blob/master/data/pipes.py) to modułowa architektura i biblioteka komponentów do strumieniowego przetwarzania danych, która po raz pierwszy pozwala programistom data
mining łatwo konstruować dowolnie skomplikowane schematy przetwarzania danych, złożone z dowolnej liczby atomowych operacji i algorytmów, zachowując jednocześnie skalowalność: algorytmy mogą przetwarzać dowolnie duże zbiory danych - również przekraczające rozmiar pamięci - w sposób tak samo efektywny jak zbiory małe. Jest to możliwe dzięki strumieniowemu transferowi danych między operatorami, który usuwa konieczność materializacji pełnych zbiorów na wejściu/wyjściu każdego operatora (jak to ma miejsce w innych bibliotekach data mining).
Biblioteka Data Pipes wykorzystuje te same pomysły, które legły u podstaw biblioteki Debellor, pisanej przeze mnie kilka lat temu w języku
Java. Jest jednak o wiele bardziej rozwinięta i dopracowana, zarówno pod
względem ogólnej architektury, jak i dostępnych już teraz standardowych komponentów - Debellor zawierał najwyżej 20% tego, co jest dostępne obecnie w Data Pipes.
2) "DAST" (DAta STorage,
https://github.com/mwojnars/nifty/blob/master/data/dast.py) to nowy format przechowywania i serializacji danych, szczególnie danych
strukturalnych (nie tylko płaskich) i obiektowych (dowolne klasy definiowane przez użytkownika), którego składnia jest wzorowana na
bardzo udanej i wygodnej strukturze języka Python, z hierarchią danych kodową przez indentację bloków tekstu. DAST jest formatem znacznie
wygodniejszym w zastosowaniach data mining niż CSV, JSON, XML, czy formaty serializacji danych (Java, Python pickle). Spełnia on kilka
istotnych warunków, których nie spełnia łącznie żaden z tych popularnych formatów:
- Jest formatem tekstowym, przy tym bardzo czytelnym (w odróżnieniu od XML). Pozwala na podgląd i ręczną edycję zawartości, co bardzo ułatwia analizowanie zbiorów danych i kontrolę poprawności algorytmów, które te dane wygenerowały.
- Pozwala zapisywać (serializować) dane obiektowe, tzn. instancje dowolnych klas - w przeciwieństwie do JSON czy CSV. Sposób kodowania
obiektów jest zestandaryzowany i teoretycznie pozwala nawet na deserializację obiektów w innym języku programowania niż ten, który wykonał serializację.
- Pozwala serializować w sposób czytelny hierarchie obiektów o wielu poziomach zagnieżdżenia.
- Pliki mają postać listy obiektów, a nie pojedynczego obiektu jak np. w Python pickle. Lista ta może być dopisywana i odczytywana strumieniowo, co pozwala przechowywać duże ilości danych, przy zachowaniu skalowalności algorytmów, które będą później z tych danych korzystały.
Jedynie YAML posiada podobne właściwości, ale również on jest z kilku powodów mniej wygodny niż DAST. Oczywiście, DAST pozwala serializować nie tylko zbiory danych, ale też modele, co jest równie częstym wymaganiem w eksploracji danych.