poniedziałek, 2 maja 2011

Mamy dane. I co dalej?

Zakładając bloga postanowiłem sobie, że będę starał się wyjaśniać pewne zagadnienia "łopatologicznie", sprowadzając je do najbardziej pierwotnych pojęć. Takich, który każdy, nawet (zgroza!) humanista powinien zrozumieć.

Podejmując temat jakiejkolwiek analizy wypadałoby znać pewne zagadnienia, z dziedziny matematyki na przykład. Ale co tam, jeżeli ktoś jest noga z matmy to ja też postaram się wyjaśnić. Więc po co taki tekst, skoro technik się nie nauczy, a ktoś z poza 'branży' nie potrzebuje? Zdaje się, że chyba wszyscy lubią czytać popularnonaukowe czasopisma, prawda? Więc, miłej zabawy.


1. Mózg, czy komputer?

Do analizowania danych wykorzystuje się mnóstwo różnych metod. Teraz każdy ma dostęp do komputera i wobec tego faktu analiza mnóstwa ilości danych nie nastręcza wielkich trudności i mozolnego liczenia słupków. W pierwszej kolejności analizowanie danych trzeba kojarzyć ze statystyką. Cóż to wszystko nie wygląda dobrze zwłaszcza, że statystyka wiąże się z niezrozumiałymi wzorami, kobylastymi formułami, znakiem sumy* i iloczynu**. Ale nie powinniśmy tej dziedziny sprowadzać do takiej tylko do liczenia różnego rodzaju średniej (bo średnia od średniej potrafi się bardzo różnić), median i odchyleń, choć w wielu dziedzinach jest to absolutnie niezbędne. Analiza danych to również analiza obrazu, dźwięku, zjawisk przyrodniczych i wielu innych, gdzie można za pomocą pewnych narzędzi pokazać różne prawidłowości, których gołym okiem (nieuzbrojonym w aparat matematyczny) nie sposób zauważyć.

Do zauważania takich rzeczy, których nie możemy zauważyć od razu, na przykład z powodu zbyt wielkiej ilości danych, służą przeróżne algorytmy***. Ostatnio, przez ten dostęp do komputerów, karierę robią algorytmy, które pierwotnie zaprojektowano na nasz wzór i podobieństwo. Mam tu na myśli algorytmy sieci neuronowych, algorytmy genetyczne lub te korzystające z logiki rozmytej. Pojęcia te wzięto od obserwacji nas samych:
  1. Sieci neuronowe - w zamierzeniu sztuczna sieć neuronowa miała pracować jak ludzki mózg, a w zasadzie jak neurony połączone synapsami. Żeby nie było - nie jest to jakaś prawdziwa struktura, jak można by pomyśleć. Neurony istnieją jako struktury matematyczne, jakiś rodzaj działania, który oblicza pewne wartości i kieruje je do innego określonego neuronu by obliczoną wartość poddać innemu działaniu. Jest to zatem rodzaj programu komputerowego rozwiązującego pewne rodzaje problemów. Aby taki algorytm zadziałał niezbędny jest etap "nauki". Polega to na pokazaniu pewnego problemu i wskazanie odpowiedniego rozwiązania. Na tej podstawie algorytm jest w stanie rozpoznać inny problem i podać dobre rozwiązanie. 
  2. Algorytmy genetyczne działają na zasadzie doboru naturalnego. Tyle, że tutaj naszym ewoluującym organizmem (populacją) jest jakiś zbiór informacji. Nasz algorytm poszukuje na podstawie podanych informacji i grupy alternatywnych rozwiązań rozwiązania najlepszego.
  3. Logikę być może pamiętacie ze szkoły. Ta logika zakładała, że mamy albo prawdę. albo fałsz. Logika rozmyta zakłada istnienie stanów pośrednich - czyli prawda, półprawda, nie do końca fałsz, raczej prawda. Jeśli postawimy kogoś kto ma 200 cm wzrostu przy kimś, kto ma 160 cm wzrostu, to jedna z tych osób będzie niska, a druga wysoka. Jeżeli do tej grupy dodamy kogoś kto ma 180 cm to jaki on będzie? Niski, czy wysoki? Cóż, będzie średni. Ogólnie nie wkładamy wszystkiego co możemy  porównać do dwóch przeciwstawnych znaczeniowo worków. Niemal zawsze możemy wyróżnić stany pośrednie. I takie właściwości daje rzeczom logika rozmyta.
A po co to komu, zapytacie? Wszystkie te dość nowe sposoby obliczania danych pozwalają na szybkie rozwiązywanie pewnych określonych problemów. Jeżeli jesteście graczami i lubicie gry komputerowe (RPG, strategie lub Simsy), to musicie przyznać, że jedną z najbardziej irytujących sytuacji jest taka, kiedy któraś z postaci nie potrafi znaleźć przejścia, bo się zablokuje. Gdzieś. Oznacza to, że któryś z algorytmów genetycznych zawiódł. Natomiast sztuczne sieci neuronowe wykorzystujecie kiedy wasza cyfrówka stara się rozpoznać uśmiech w kadrze. Lub kiedy Google próbuje rozpoznać jakie wypowiada się słowo do mikrofonu lub podczas tłumaczenia stron www w całości.

2. A jednak matematyka.

Nie możemy zapomnieć o tych bardziej tradycyjnych metodach. Najważniejszymi jest obecnie transformacja Fouriera. Załóżmy, że mamy pewną cechę, która zmienia się w przedziale czasu w sposób jednostajny. Może być to rytm przypływów, ciśnienie krwi. Ogólnie wszystko co zmienia się co jakiś określony czas. Przedstawię o co cho na rysunkach:
Na powyższym wykresie mamy jakiś sygnał. Na poziomej osi mamy czas (w milisekundach), na pionowej wartość sygnału. Wyraźnie widać, że wartość tego sygnału zmienia się w czasie dość regularnie, ale ma pewne odchylenia. Po zastosowaniu transformaty Fouriera otrzymujemy:
  I cóż tu widać? Na poziomej osi mamy częstotliwość, na pionowej wartości. Wyobraźcie sobie, że sygnał z pierwszego obrazka można odtworzyć za pomocą szeregu sinusoid o określonej na drugim rysunku amplitudzie i częstotliwościach.

Pytanie, gdzie tego się używa? Analizy Fouriera oraz analizy falkowej (swego rodzaju uogólnienie Fouriera) używa się przede wszystkim do analizowania sygnałów zmiennych w czasie, ale coraz większe znaczenie ma w kompresji. Mp3, JPEG. Jeżeli znacie te skróty to macie już małe pojęcie po co to wszystko.

 Jak widać, nasza podstawowa internetowa aktywność nie obejdzie się bez Fouriera, bez transformat i tego całego bagna. Na szczęście nie każdy musi wiedzieć, jak to działa. Prawda?


* **znak sumy i iloczynu: ∑ i Π
*** algorytm - ustalony sposób postępowania.

Brak komentarzy:

Prześlij komentarz