Table of Contents

Úkol 6 - Web usage mining

Zadání

Popis dat

Archiv obsahuje následující data:

clicks.csv
visitors.csv
search_engine_map.csv

Úkoly

Předzpracování dat

Dolování dat

Pro dolování dat je preferovaným nástrojem Weka.

Shlukování

Předzpracování dat

Prepare data for clustering

  1. pomocí bloku “Select Attributes” vybereme atributy, které budeme dále zpracovávat
  2. blok “Pivot” vytvoří pivot tabulku podle TopicName - to vytvoří sloupec pro každý TopicName, metriku jsem zvolil TimeOnPage, ale nezáleží na ni, jelikož se nakonec stejně nebere v potaz
  3. další blok “Replace missing” nahradí chybějící atributy nulou
  4. blok “Agregate” agreguje do jednoho řádku (VisitID) všechny témata, které uživatel navšívil
  5. jelikož mě nazajímají hodnoty v agregaci, ale pouze zda uživatel byl nebo nebyl v tématu, pomocí “Numerical to Binominal” převedu hodnoty na true/false a jelikož shlukování pracuje pouze s numerical daty, převedu zpět na 0/1 pomocí “Nominal tu Numerical” (njspíš by to celé šlo i diskretizací)
  6. další bloky už jen upravují výstup, “Select Attributes” vybere atributy, “Rename Attributes” přejmenovává atributy

Shlukování

Výsledky

Cluster 0Cluster 1Cluster 2Cluster 3Cluster 4Cluster 5Cluster 6Cluster 7
Obecne 0.000 0.837 1.000 1.000 0.864 0.354 0.657 0.379
Turistika 0.163 0.271 1.000 0.000 0.158 0.044 0.030 0.051
Horska turistika 0.076 0.199 0.118 0.000 0.998 0.048 0.014 0.014
VHT 0.038 0.041 0.032 0.014 0.355 0.003 0.030 0.042
Voda 0.029 0.034 0.033 0.010 0.061 0.007 0.022 0.013
Rafting 0.022 0.014 0.027 0.011 0.061 0.010 0.019 0.007
Exotika 0.000 0.110 0.128 0.000 0.118 0.010 0.107 1.000
Neni 0.060 0.947 0.057 0.010 0.067 0.010 0.063 0.038
Korsika 0.042 0.168 0.073 0.037 0.056 0.109 0.073 0.022
Pobyty s vylety 0.052 0.290 0.034 0.023 0.021 0.068 0.036 0.018
Hotelbusy 0.013 0.141 0.069 0.011 0.035 0.048 0.029 0.018
Lastminute 0.000 0.218 0.147 0.000 0.198 0.027 1.000 0.046
Poznavaci zajezdy U 0.211 0.475 0.178 0.057 0.041 0.044 0.089 0.057
Expedice Narocne 0.041 0.070 0.055 0.015 0.174 0.024 0.076 0.114
Lyze 0.067 0.019 0.009 0.016 0.098 0.020 0.136 0.011
Lipari 0.025 0.141 0.040 0.024 0.021 0.058 0.057 0.022
Cyklo 0.051 0.072 0.054 0.033 0.083 0.048 0.066 0.020
Bulharsko 0.040 0.077 0.018 0.033 0.032 0.088 0.055 0.013
Poznavaci zajezdy LT 0.048 0.700 0.043 0.007 0.015 0.112 0.014 0.008
Skolni zajezdy 0.018 0.014 0.006 0.005 0.012 0.010 0.009 0.002
Ubytovani a doprava 0.024 0.043 0.011 0.012 0.015 0.054 0.043 0.005
Pobytove 0.035 0.158 0.019 0.033 0.018 0.071 0.077 0.019
Horolezecka skola 0.008 0.012 0.005 0.007 0.135 0.003 0.016 0.006
Nezjisten 0.026 0.005 0.007 0.003 0.008 0.003 0.005 0.007
Cerna Hora 0.000 0.070 0.022 0.000 0.024 1.000 0.022 0.001
Alpy 0.028 0.177 0.012 0.007 0.070 0.031 0.025 0.007
Golf 0.011 0.007 0.005 0.005 0.003 0.007 0.016 0.002


Ze shluků můžeme vyvodit jaká témata uživatele spojují. Jako směrodatná data jsem vybíral TOP 5 navštěvovaných témat ve shluku a zároveň téma navštívilo více než 10% navštěvníků ze shluku.

Závěry

Výsledky odpovídají co bychom očekávali, zjímavé shluky jsou například: Clusetr 4, kde vidíme že uživatele spojují témata Horská turistika, Vysokohorská turistika, Last minute, Expedice náročné. Další zajímavým shlukem je Cluster 1, kde uživatele spojují témata Poznávací zájezdy s ubytováním, Pobyty s výlety, Poznávací zájezdy s lechkou turistikou.

Asociační pravidla

Předzpracování dat

  1. nejdříve bylo data potřeba sjoinovat (je nutné nastavit parametr id, podle kterého se joinuje, ten může být jen jeden, proto používám “Set Role”)
  2. odfiltrujeme návštěvy, kde je počet zhlédnutých stránek < 3 → jsou nezajimavé pro asociační pravidla
  3. vytvoříme si sloupce pro měkké a tvrdé konverze “Generate Attributes”
  4. agregujeme (podle VisitID), metriky, které nás zajímají
  5. provedeme diskretizaci a převedeme atributy, které nás zajímají do binomiální podoby (podmínka pro vytváření asoc. pravidel)

Asociační pravidla

Výsledky

PremisesConclusionSupportConfidence
Tvrdé konverze
sum(TimeOnPage) = range1 [-∞ - 135], maximum(Delka_pocetstranek) = range2 [3.500 - 4.500]Konverze_tvrde 0.011973 0.319797
sum(TimeOnPage) = range1 [-∞ - 135], maximum(Delka_pocetstranek) = range3 [4.500 - 6.500]sum(PageScore) = range1 [-∞ - 194], Konverze_tvrde 0.011022 0.3625
sum(TimeOnPage) = range1 [-∞ - 135], maximum(Delka_pocetstranek) = range4 [6.500 - ∞]sum(PageScore) = range1 [-∞ - 194], Konverze_tvrde 0.013493 0.405714
sum(PageScore) = range1 [-∞ - 194], maximum(Delka_pocetstranek) = range3 [4.500 - 6.500]Konverze_tvrde 0.011022 0.449612
sum(PageScore) = range1 [-∞ - 194], maximum(Delka_pocetstranek) = range3 [4.500 - 6.500]sum(TimeOnPage) = range1 [-∞ - 135], Konverze_tvrde 0.011022 0.449612
sum(TimeOnPage) = range1 [-∞ - 135], sum(PageScore) = range1 [-∞ - 194], maximum(Delka_pocetstranek) = range3 [4.500 - 6.500]Konverze_tvrde 0.011022 0.449612
sum(TimeOnPage) = range1 [-∞ - 135], maximum(Delka_pocetstranek) = range3 [4.500 - 6.500]Konverze_tvrde 0.013683 0.45
sum(TimeOnPage) = range1 [-∞ - 135], sum(PageScore) = range2 [194 - 429.500]Konverze_tvrde 0.014633 0.458333
sum(PageScore) = range1 [-∞ - 194], maximum(Delka_pocetstranek) = range4 [6.500 - ∞]sum(TimeOnPage) = range1 [-∞ - 135], Konverze_tvrde 0.013493 0.577236
sum(TimeOnPage) = range1 [-∞ - 135], maximum(Delka_pocetstranek) = range4 [6.500 - ∞]Konverze_tvrde 0.019384 0.582857
sum(PageScore) = range1 [-∞ - 194], maximum(Delka_pocetstranek) = range4 [6.500 - ∞]Konverze_tvrde 0.013683 0.585366
sum(TimeOnPage) = range1 [-∞ - 135], sum(PageScore) = range1 [-∞ - 194], maximum(Delka_pocetstranek) = range4 [6.500 - ∞]Konverze_tvrde 0.013493 0.586777
Měkké konverze
sum(TimeOnPage) = range1 [-∞ - 135], maximum(Delka_pocetstranek) = range2 [3.500 - 4.500]Konverze_mekke 0.010832 0.28934
sum(TimeOnPage) = range1 [-∞ - 135], maximum(Delka_pocetstranek) = range4 [6.500 - ∞]Konverze_mekke 0.013873 0.417143
sum(TimeOnPage) = range1 [-∞ - 135], maximum(Delka_pocetstranek) = range3 [4.500 - 6.500]sum(PageScore) = range1 [-∞ - 194], Konverze_mekke 0.012733 0.41875
sum(TimeOnPage) = range1 [-∞ - 135], maximum(Delka_pocetstranek) = range3 [4.500 - 6.500]Konverze_mekke 0.014823 0.4875
sum(PageScore) = range1 [-∞ - 194], maximum(Delka_pocetstranek) = range3 [4.500 - 6.500]Konverze_mekke 0.012733 0.51938
sum(PageScore) = range1 [-∞ - 194], maximum(Delka_pocetstranek) = range3 [4.500 - 6.500]sum(TimeOnPage) = range1 [-∞ - 135], Konverze_mekke 0.012733 0.51938
sum(TimeOnPage) = range1 [-∞ - 135], sum(PageScore) = range1 [-∞ - 194], maximum(Delka_pocetstranek) = range3 [4.500 - 6.500]Konverze_mekke 0.012733 0.51938

Závěr

Ve výsledku můžeme vidět několik zajímavých asociačních pravidel vedoucích ke konverzím, například je vidět, že čím více stránek u6ivatel navštíví, tím větší je pravděpodobnost konverze (měkké i tvrdé). Například je vidět, že pokud uživatel navštívil více než 6 stránek, udělal z 60% tvrdou konverzi a z 50% měkkou konverzi. Zajimavé také může být, že 60% uživatelů, kteří strávili na stránkách méně než 135 vteřin a zároveň zhlédli více než šest stránek udělalo tvrdou konverzi. Jinak jsou mnou získaná asociační pravidla nepříliš zajímavá a chtělo by to lépe předzpracovat vstupní data.