Kolejny wpis tak trochę off-topic, nawiązujący do wpisu o grafach.
No i się doigrałem. Próbowałem sobie przypomnieć, jak działało wyszukiwanie różnych zależności, o czym Elsindel pisał w komentarzu do poprzedniego wpisu. Ściągnąłem dość popularny program do dataminingu Weka, wygenerowałem ładne statystyki odwiedzin i do dzieła!
Początkowo chciałem ambitnie sprawdzić zależności pomiędzy wszystkimi podstronami bloga, który właśnie czytacie, ale komputer mi odmówił współpracy grzecznie się zawieszając. Zawsze kochałem Microsoft i jego doskonały system operacyjny (korzystam w tej chwili z komputerów rodziców, którzy Linuxa nie posiadają). Przerzuciłem wszystkie dane na drugi komputer, może inna wersja windows da radę… niestety. Tym razem komputer po prostu się wyłączył.
Asocjacje
Potem postanowiłem ograniczyć się do rozsądnego zestawu podstron. Wybrałem kilka co ciekawszych i popularniejszych wpisów, strony główne wszystkich kategorii, stronę główną jako taką i kilka stron z poprzednimi wpisami — w sumie było ich niecałe 30. Zbadałem zachowanie użytkowników podczas 3330 wizyt (ludzie oczywiście się powtarzają, ale tego nie uwzględniałem — dla uproszczenia i eksperymentu).
Weka, na zupełnie przyzwoitym komputerze (jakiś szybki Centrino, 512MB ramu) konstruowała model przez około 3 minuty.
Wyniki trochę mnie zaskoczyły — część reguł rządzących zachowaniem użytkowników była banalna. Na przykład:
- odwiedzenie czwartej strony historii & odwiedzenie strony głównej → odwiedzenie drugiej strony historii
- odwiedzenie czwartej strony historii & odwiedzenie trzeciej strony historii → odwiedzenie drugiej strony historii
Część była tylko trochę mniej trudna do zgadnięcia, np. jeśli ktoś zobaczył stronę główną, stronę skąd to się wzięło i stronę główną kategorii wszystkie wpisy, to zobaczył też stronę o mnie. Miłe :)
No, ale na część rzeczy bym już nie wpadł. Np. na to, że jeśli ktoś zobaczył kategorię ‘animacje’ i kategorię ‘ramki’ obejrzy też wpisy o czcionkach. Osobiście nie widzę powiązania, ale to fakt.
Niestety Weka nie implementuje (przynajmniej w wersji stabilnej 3.7.0) najciekawszych algorytmów, w których można narzucić konkretne ograniczenia na postać znajdowanych asocjacji, np. wymóc, by znalazły się w nich konkretne klauzule (przydatne gdy chcemy sprawdzić, co powoduje, że ludzie wchodzą na konkretną stronę).
Clustering zwiedzających
Spróbowałem też zrobić clustering, czyli grupowanie osób wchodzących na strony. Zachowanie Was wszystkich jest do siebie niesamowicie zbliżone! Przy próbie podziału (wg identycznych cech, jak powyżej) na dwie grupy algorytmem k-means wyszło, że ludzie różnią się jednym faktem — czy oglądają stronę główną (ponad 50%) czy nie.
Przy pominięciu informacji o obecności na stronie głównej okazuje sie, że najważniejszym czynnikiem dyskryminującym jest to, czy oglądało się wpisy o animacjach. Przy czym tych, którzy oglądali jest ledwie kilka procent. Reszta zachowań jest identyczna (multum ludzi czyta kategorię ekstremalnie głupie, a resztę pomija)!
Clustering do większej ilości grup nie przyniósł istotnie ciekawszych rezultatów — zawsze dzielicie się na jedną dużą grupę (ponad 90%) i kilka malutkich, różniących się faktem zajrzenia do jakiejś kategorii lub nie.
Wnioski z moich eksperymentów są niestety mało ciekawe, ale takie byłyby chyba dla każdego bloga. Zachowanie czytelnika blogów jest bardzo proste — czyta stronę główną lub parę wybranych kategorii lub całość. Zresztą — nie ma zbyt wielkiego pola manewru.
Dużo bardziej interesujące byłoby przyjrzenie się wynikom dla sklepów internetowych lub innych większych serwisów. Możnaby poszukać pod jakimi warunkami ludzie korzystają z pomocy lub co muszą zrobić, by zdecydować sie na zakup towaru. Datamining miałby tu doskonałe pole do popisu.
Dla chcących powtórzyć mój eksperyment na swoich stronach polecam prosty tutorial do Weki, który znalazłem na stronie jakiegoś uniwerku w Kanadzie. Niestety nie jest on związany z tematem, którym się zajmowaliśmy, ale wszystko, czego wam będzie brakować po jego przeczytaniu jest w zakładkach associate lub cluster.
Szukających informacji o algorytmach data-mining odsyłam do publikacji Rakesha Agrawala.