Table of Contents
Úkol 6 - Web usage mining
- Zpracoval: Tomáš Borovička.
- Po 18:00
- LS 2011
Zadání
Popis dat
Archiv obsahuje následující data:
clicks.csv
- LocalID - interní identifikátor události
- PageID - identifikátor zobrazené stránky
- VisitID - identifikátor session
- PageName - relativní uri navštívené stránky
- CatName, CatID - typ stránky(Navigace), obecnější granularita
- ExtCat,ExtCatID - typ stránky (Obsah), konkrétnější granularita
- TopicName, TopicID - téma stránky (VHT = vysokohorská turistika)
- TimeOnPage - čas na stránce v sekundách. Na poslední stránce v session se předpokládá 30s. Údaj je zaokrouhlen na půlminutové bloky.
- PageScore - váha stránky odvozená od času na stránce o a pořadí stránky v clickstreamu t podle heuristiky
(ln(o)+1)*t
- SequenceNumber - pořadí stránky v clickstreamu
visitors.csv
- VisitID - identifikátor session
- Referrer - anonymizované označení odkazující domény
- Den - den započetí návštěvy
- Hodina - hodina započetí návštěvy
- Delka_sekundy - délka návštěvy v sekundách (součet hodnot TimeOnPage v řádcích se stejným VistiID v clicks.csv)
- Delka_pocetstranek - počet navštívených stránek během návštěvy (počet řádků se stejným VistiID v clicks.csv)
search_engine_map.csv
- Referrer - anonymizované označení odkazující domény
- Typ_Odkazovace - typ odkazující domény
Úkoly
Předzpracování dat
- Navrhněte vhodnou reprezentaci dat pro následné dolování asociačních pravidel a shlukovou analýzu (clustering).
- Vytvořte dva soubory, kde každý řádek bude reprezentovat jedno sezení (session) a sloupce budou obsahovat data vhodná pro daný typ úlohy.
- V případě váhové funkce zvolte mezi binární, agregovaným časem, nebo agregovaným PageScore.
- Odstraňte příliš krátké návštěvy (
Delka_pocetstranek ⇐2
). - Navrhněte a použijte další metody na pročištění dat.
- Identifikujte měkké konverze: zobrazení stránky se slevami (
n_sleva.asp
) a s informacemi o přihlášení (jak_se_prihlasit.htm
), pojištění (n_pojistenick.asp
) a informacemi o CK (n_kdojsme.asp
). - Identifikujte tvrdé konverze: zobrazení stránky
n_prihlaska.asp
,n_katalog.asp
(předpokládejte, že stránka se zobrazuje po úspěšně odeslané přihlášce / žádosti o katalog).
Dolování dat
- Pokuste se v datech nalézt zajímavá asociační pravidla, která se vztahují ke konverzi (konsekvent).
- Pokuste se v datech nalézt shluky návštěvníků s podobným profilem (shlukujte především podle atributu TopicName).
Pro dolování dat je preferovaným nástrojem Weka.
Shlukování
Předzpracování dat
- Pro předzpracování dat, stejně jako pro následné dolování dat jsem použil program Rapid Miner.
- pomocí bloku “Select Attributes” vybereme atributy, které budeme dále zpracovávat
- 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
- další blok “Replace missing” nahradí chybějící atributy nulou
- blok “Agregate” agreguje do jednoho řádku (VisitID) všechny témata, které uživatel navšívil
- 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í)
- další bloky už jen upravují výstup, “Select Attributes” vybere atributy, “Rename Attributes” přejmenovává atributy
Shlukování
Výsledky
Cluster 0 | Cluster 1 | Cluster 2 | Cluster 3 | Cluster 4 | Cluster 5 | Cluster 6 | Cluster 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.
- Cluster 0: Poznávací zájezdy s ubytováním, Turistika
- Cluster 1: Obecné, Poznávací zájezdy s ubytováním, Pobyty s výlety, Poznávací zájezdy s lechkou turistikou
- Cluster 2: Obecné, Turistika, Poznávací zájezdy s ubytováním, Lastminute
- Clusetr 3: Obecné
- Clusetr 4: Obecné, Horská turistika, Vysokohorská turistika, Last minute, Expedice náročné
- Clusetr 5: Černá hora, Korsika, Obecné
- Clusetr 6: Lastminute, Obecné, Lyže, Exotika
- Clusetr 7: Obecné, Exotika, Expedice náročné
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
- Pro předzpracování dat, stejně jako pro následné dolování dat jsem použil program Rapid Miner.
- 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”)
- odfiltrujeme návštěvy, kde je počet zhlédnutých stránek < 3 → jsou nezajimavé pro asociační pravidla
- vytvoříme si sloupce pro měkké a tvrdé konverze “Generate Attributes”
- agregujeme (podle VisitID), metriky, které nás zajímají
- 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
- Pro tvorbu asociačních pravidel jsem použil “FP-Growth” a “Create Association Rules”
- min supprot: 0.01
- min confidence: 0.2
Výsledky
Premises | Conclusion | Support | Confidence |
---|---|---|---|
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.