Czy możliwe jest rozpoznawanie tego czy grzyby są jadalne czy trujące za pomocą komputera? W dobie palmtopów i innych programowalnych urządzeń mobilnych to może być niegłupie pytanie. Nietrudno sobie wyobrazić program w którym wybieramy wartości cech charakterystycznych interesującego nas egzemplarza a program daje nam odpowiedź czy warto go wrzucić do koszyka. Ten projekt ukierunkowany jest na zbadanie populacji grzybów pod kątem znalezienia zależności między obserwowalnymi cechami grzybów a tym czy są jadalne czay nie.
Do badania królestwa grzybów zastosowałem kilka metod takich jak:
Celem zastosowania sieci neuronowych jest sprawdzenie na jakim poziomie kształtuje się wspomniana rozpoznawalność. Można na tej podstawie stwierdzić czy zbiór jest trudny, czyli czy grzyby jadalne mają wspólne cechy których brak trującym i na odwrót. Metoda składowych głównych pozwala na redukcję wymiarowości danych, można dzięki temu przeprowadzić prostą wizualizację. Mapy Kohonena są natomiast najsilniejszym narzędziem, które pokaże dokładnie jak kształtuje się rozkład cech wśród badanej populacji.
Jako dane posłużył mi zbiór mushrooms z UC Irvine's Department of Information & Computer Science. Jest to zbiór 8124 grzybów identyfikowanych przez 23 cechy takie jak kolor kapelusza, środowisko naturalne czy zapach. Dane mają postać tabeli z kolumnami odpowiadającymi poszczególnym cechom i znakowymi wartościami pól typu 'f','g'.
Do tworzenia sieci neuronowych użyłem pakietu netlab Iana Nabneya, natomiast mapy Kohonena są wykonane w SOM Toolbox pochodzącym z helsińskiej politechniki. Oba pakiety działają pod kontrolą Matlaba.
Jak się okazało dane w takiej postaci nie nadają się jako wejście do pakietów Matlaba, gdyż traktują one znaki jako ich reprezentacje liczbowe. I tak sieć się uczy że 'g' jest w jakiś sposób pomiędzy 'f' i 'h' co w tym przypadku nie ma większego sensu i prowadzi do obniżenia jakości otrzymywanych wyników. Aby uniknąć tego rozbiłem tablicę na 117 kolumn zawierających już tylko dane zerojedynkowe, co się okazało być dobrym pomysłem.
rys.1 procent poprawnej klasyfikacji za pomocą sieci GLM w zależności od rozmiaru próbki uczącej
rys.2 procent poprawnej klasyfikacji za pomocą sieci MLP w zależności od rozmiaru próbki uczącej
Sieci GLM jak i MLP posiadają w warstwie wejściowej po 116 neuronów i po jednym w warstwie wyjściowej. Sieć MLP posiada dodatkowo 11 neuronów w warstwie ukrytej (zgodnie z regułą piramidy geometrycznej [2]). Jak widać obie sieci są w stanie nauczyć się rozpoznawania naszego zbioru. Inaczej jednak wygląda wykres rozpoznawalności od próbki testowej. Jest wprawdzie zbieżny w obydwóch przypadkach do 98%. ale sieć GLM szybciej zaczyna poprawnie pracować. Należy dodać że dane nie są rozłożone równomiernie i w przedziale <1,1000> więcej jest grzybów jadalnych. Znaczny spadek rozpoznawalności jest spowodowany agresywnym algorytmem szkolenia, który zbyt mocno modyfikuje wagi neuronów, po napotykaniu odstających osobników.
Pomimo że mamy 117 kolumn w naszej macierzy jej rząd wynosi 86, czyli można za pomocą liniowej zamiany zmiennych zredukować liczbę kolumn do 86. Nie da się bardziej. Ale pytanie brzmi czy nie można zrezygnować z kilku procent dokładności, jeżeli miałoby to zaowocować znaczną redukcją wymiarowości danych. W tym momencie przychodzi z pomocą metoda głównych składowych. Dzięki PCA możemy wyliczyć nowe składowe będące kombinacją liniową starych i ich udział procentowy w odwzorowaniu oryginalnej macierzy. Dla tablicy z grzybami przedstawia się to następująco. sn oznacza n-tą z kolei składową.
składowa | s1 | s2 | s3 | s4 | s5 | s6 | s7 | s8 | s9 | s10 | s11 | s12 | s13 | s14 | s15 | s16 | s17 |
% | 43.88 | 14.38 | 8.27 | 6.13 | 3.52 | 3.05 | 2.79 | 2.34 | 2.05 | 2.02 | 1.67 | 1.49 | 1.29 | 1.24 | 1.17 | 1.02 | 0.98 |
suma % | 43.88 | 58.26 | 66.53 | 72.66 | 76.17 | 79.23 | 82.02 | 84.37 | 86.42 | 88.44 | 90.12 | 91.61 | 92.90 | 94.15 | 95.32 | 96.35 | 97.33 |
Jak widać już kilka pierwszych składowych oddaje znaczny procent informacji, świadczy to o redundancji informacji. Znajdowane są zależności w stylu: jeśli grzyb jest żółty to z dużym prawdopodobieństwem ma blaszki, i dzięki temu że to prawdopodobieństwo jest wysokie możemy tracąc niewiele na dokładności zrezygnować z jednej z tych cech.
Spróbujmy teraz zobaczyć jaką informację niosą nam trzy pierwsze składowe główne. Ich analiza ma tą przyjemną własność że da się przedstawić na trójwymiarowym wykresie.
rys.3 wykres 3 składowych głównych, czerwone kropki - grzyby trujące, niebieskie - jadalne
Jak widać na powyższym rysunku zbiory grzybów jadaalnych i trujących pokrywaja się w niektórych miejscach. W ten spobób objawia się utracona przy redukcji wymiarowości informacja. Ale i tak po wyraźnym odseparowaniu większej części zbiorów można stwierdzić że wymiarowość danych jest istotnie mniejsza niż zakładana.
Co w przypadku gdy zależności między składowymi nie są liniowe? Metoda PCA wiele w takim przypadku nie pomoże. Są co prawda również nieliniowe przekształcenia, z tym że są dużo bardziej wymagające obliczeniowo a już metoda PCA dla całej próbki danych wymaga powyżej 512MB pamięci i kilku minut obliczeń. Dużo lepszym i szybszym rozwiązaniem okazują się mapy Kohonena. Są one bardzo silnym narzędziem pozwalającym obejrzeć strukturę wielowymiarowego zbioru danych. Mapy Kohonena są to maty neuronów rozpięte w wielowymiarowej przestrzeni. Podczas procesu kształtowania mapy neurony przyciągają się do grup osobników i zostają ich reprezentantami. Na mapie U-matrix neuronom przyporządkowane zostają sześciokąty (co drugi jest przyporządkowany, pozostałe są puste), po czym kolorami oznaczana jest odległość między nimi powstała w procesie kształtowania. Dzięki temu zabiegowi rozłożona w wielowymiarowej przestrzeni mapa daje się łatwo zobrazować na płaszczyźnie dając ciekawe wyniki.
rys.4 wizualizacja U-matrix P-grzyby trujące, E-jadalne.
Jak widać na tym wykresie grzyby układają się w oddzielone od siebie klastry ze względu na jadalność. Kolor ciemny oznacza dużą odległość, czyli różnicę cech osobników leżących po obu stronach ciemnego obszaru.
Okazuje się że grzyby są dość prostym zbiorem i można nauczyć maszynę rozróżniania osobników trujących od jadalnych. Problemem może być to że scharakteryzowane tutaj cechy to cechy typowych osobników danych gatunków, zatem gdy trafimy na bardziej oryginalny egzemplarz komputer może zawieść. Tak samo problematyczna jest kwestia czy 95% to wystarczająca skuteczność. Jak dla mnie szansa bycia zatrutym w 1/20 przypadków to trochę sporo.