Categories
Web分析一般

サイトの導線を評価する:応用編1

ちょっと想定外に忙しい日々が続いたため、前回の続きが書けないでいました。
今回は応用編です。最初に宣言しておくと、So What?となる可能性がかなり高い分析です。そのことを踏まえた上で、読んでいただければ幸いです。

前回、導線を評価する際には、「ページレベル」と「セッションレベル」があり、それぞれの分析方法があるというお話をしました。今回はページレベルでの分析をもっとエレガントにする方法について検討します(わかりにくいとしても)。

まずはページ別に取得した導線を一つの表にまとめる作業から始めます。
仮に下記のような単純なプロモーションサイトの解析を想定します。大規模なサイトの場合はページ単位ではなく、コンテンツグループ単位で分析した方が良いでしょう。

前後ページMatrix

前後ページの遷移データは下記ような表にまとめることができます。

この表の見方ですが、表側が前のページ、表頭が次のページという意味で、表側側から右に読んでいって、それぞれの項目の次にどのページを見たのかをまとめたものです。
例えば、index.htmlの次にa.htmlを見たのは20回、b.htmlを見たのは30回という見方です。
表側の「in」はセッションの始め(流入)となったページ、表頭の「out」はセッションの終わり(出口)となった回数を意味しています。「total」は遷移数の合計です。
この表だけでも十分意味のあるデータです。表を見ると、どのページから、どのページへと遷移したのかがわかります。各項目のtotalを母数として、パーセンタイルで表示すれば、どのページの遷移が割合的に多かったのかが簡単にわかるようになります。
ここを出発点として、もうちょっと考えていきましょう。

きょり?

表をよーく見てみると、何かが見えてきます。
遷移数が大きいとは何を意味するのでしょうか?たくさん誘導しているということはページ間の関連が大きいと捉えることができます。つまり、ページ間が内容的に「近い」と言えます。ということは、数学的には数が大きければ大きいほど、距離が近いと言うことが出来ます。距離といえば、MDS(多次元尺度構成法)。MDSを使って、2次元上にグラフ化することができます。

下準備

ただ、ちょっと問題があります。距離が近いということは、数学的には、距離の値が小さいということを意味します。この表では完全に逆になっていて、近ければ近いほど、値が大きくなっています。そこで、各値に逆数を取ることで解決します。遷移数が「0」という場合は距離的に最も遠いと考えられるので「1」と置き換えます。また、各項目間の遷移(対角成分)については、もっとも近いと考えられるので、「0」と置き換えます。ちょっと面倒なので、「in」と「out」のデータは無視します。そうすると、以下の表に変換されます。

Rでゴリゴリ

このデータはまだ距離データにはなっていません。「順」と「逆」のデータを併せ持ってしまっています。距離データとみなすには、三角行列になっていなければなりません。そこで、Rを使って距離データに変換します。ここでは、最もシンプルなユークリッド距離として考えます。

#Excel経由クリップボードデータの読み込み
a <- read.delim("clipboard") #距離を算出 a.d <- dist(a) これだけです。これで距離が算出されました。 あとはMDSを行って、グラフ化しましょう。 #MDSを行う a.cmd <- cmdscale(a.d) #グラフ化する plot(a.cmd, type="n") text(a.cmd, names(a)) できました。

これで、各ページ間の遷移を2次元グラフ上にマッピングすることができました。
So What?なんて、野暮な質問はやめましょう。
まだまだ続きます。

Categories
Web分析一般

サイトの導線を評価する:基本編

ruby+MongoDBで、ログ解析システムを着々と作っておりますが、集計用のスクリプトを書く前に、必要な分析方法について整理します。

おおよそのアクセスログ分析は、うまくデータを変換すれば、一般的なデータマイニングの手法や、多変量解析の手法を応用できると考えています。ただし、一つだけ分析できない重要なことがあります。
それは「サイトの導線」を評価することです。

アクセスログ(というより行動ログ)の特性として、全てのヒットに対して、時間情報を持っているという点が挙げられます。そして、時間の前後関係が重要な意味を持っています。
つまり、一つのデータセット(セッション、もしくはUU)の中に、時系列情報が内包されており、さらにデータ全体の中に時系列情報が含まれているという2重構造になっています。
よく為替や経済データなどで使われる時系列分析では全く対応ができません。

あえて、難しく書きましたが、言いたいことは単純で、
セッションレベルで、ユーザーがどんな順序でページを見ているのかが重要
全体レベルで、日別・週別などのトレンドデータも重要
というだけです。
そして、「サイトの導線」を評価するうえで、前者の情報が特に重要だということです。
後者だけであれば、既存の時系列分析もある程度応用できると思います。

ただし、一般的なウェブアナリストにとっては、このようなことを意識する必要性はほとんどないです。というのも、大抵の解析ツールで意識せずとも両方のデータを抽出できてしまうからです。
(その一方で、データマイニング系の分析は全くといっていいほど、できないですが。。。)
ということで、自分でログ解析システムを作っちゃえと考えているような、ちょっとおかしな人のため(主に自分のため)にサイト導線の評価方法についてまとめます。

データの準備
まずはセッションレベルで、分析できるようにデータの下ごしらえが必要です。
Apacheログのデータをセッションキー(IP+UserAgent)でまとめて、以下のような形式でDB上に保存しています。
cookieでセッション・UUの管理を行っている場合は、cookieをセッションキーとして方が当然良いと思います。

(MongoDBを利用しているので、データ形式はJSONです)

{
“_id” : 【ObjectId】,
“ip_ua” : [【セッションキーの配列】],
“page” : [【ページの配列】 ],
“refer” : [【リファラーの配列】 ],
“time” : [【時間の配列】]
}

”_id”以外のプロパティについては、”time”でソートして、時間順に並び替えています。
たとえば、
トップページ(/) → 会社情報ページ (/about/) → 製品ページ (/product/)
という順番で閲覧したセッションは以下のように保存されます。

{
“_id” : “xxxxxxx”,
“page” : [“/”, “/about/”, “/product/”],
“refer” : [“google.com”, “”, “”],
“time” : [“11:01:10”, “11:01:30”, “11:02:15” ]
}

データ圧縮のため、サイト内のリファラーは削除しています。
“page”だけデータを抜き出すと、SiteCatalystのフルパスレポートと同様なデータになります。
リファラー情報、時間情報も同列で保存しているので、入口別のリファラーや、各ページの滞在時間も取得することができます。当然、セッションの滞在時間も計算できます。
ちなみに、フルパスレポートは組み合わせの爆発が起こるので、パターン数としては膨大なものになります。100ページしかないサイトの場合でも数万パターンに上ることもあります。
それでも、あえて言いますが、生データの状態で上位10パーセント程度は読み込んだほうが良いと思います。実際のユーザーの動きを読み込んで、いかに当初想定していたユーザーシナリオ通りにユーザーが動いていないということを認識すべきです。大体のユーザーの流れがわかった上で、分析を行うと、分析が深まります。

基本的な分析:ページレベル
ページレベルで分析を行う際には、まず前後ページの分析を行うことが第1歩です。
それぞれのページで
・該当ページを閲覧する前にどのページを見ていたか?(前ページ)
・該当ページの次にどのページを閲覧したか?(次ページ)
の2つを明らかにすることが目的です。
主要なインデックスページや、ランディングページを対象とします。

前ページは、サイト内とサイト外の2つのパターンがあり、基本的な考え方としては、

  • 該当ページが、セッションの「入口」となった場合は、リファラーを見て、サイト外からの流入として、計測する
  • 「入口」以外の場合は、ページの閲覧順序を見て、前ページを計測する

という2段階の計測が必要です。全てリファラーだけで完結させようとすると、痛い目に合いますので注意しましょう(理由は今度書きます)。

次ページについては、

  • 該当ページがセッションの「最後のページ」となった場合は、そのページで「離脱」とみなす
  • それ以外は、閲覧順序の次ページを計測する

というパターンになります。もし、JavaScriptで外部リンクのクリックを取得している場合は、離脱の内訳として利用しても良いと思います(数値の辻褄を合わせることは難しいですが)。

アウトプットイメージはこのようになります。

シンプルでわかりやすいモデルとなるので、あまり詳しくない人に対しても有効です。
ポイントとしては、このモデルに対して、「フィルター」をかけることができるようにすることが重要です。ランディングページを分析する場合は、「入口ページ」となった場合のみのデータは是非みたいところです。当然ユーザーのセグメント(新規・再訪など)ごとにデータが見れると素敵です。

■基本的な分析:セッションレベル
セッションレベルでの分析で、特に重要なものは事前に設定した直線的なシナリオに対しての検証です。入力フォーム関連の導線分析でよく使われます。いわゆるコンバージョンファネルです。

これもシンプルでわかりやすいモデルですが、集計方法に注意が必要です。
集計方法は2通りあります。

    A. 単純に各ページのセッション数を測定
    B. ページ閲覧順序を考慮して測定

Aの方法を採用する場合は、測定対象とするページが、完全に直線的なナビゲーション構成になっている必要があります。測定途中のページで、対象ページ以外から多くの流入がある場合は、計測の意味が全くなくなります。

Bの方法は、対象ページをチェックポイントとして指定し、指定したとおりの「順序」で通過した場合のみ、計測するという方法です。通常はこちらの集計方法を採用します。
「順序」というのがポイントで、同じ順序であれば、間に別のページを通っていても良いという考え方です。

たとえば、チェックポイントを
A → B → C → D
とした場合、
A → B → X → C → A → X
という場合には
A → Bと、B → C という遷移のみ有効としてカウントされます。

B → A → C
という場合は、指定した順序通りになっていないので、全てカウントされません。
B → A → C → B
という場合には、A → Bへは指定順序通りなのでカウントされます。

一見、シンプルでわかりやすいのですが、数値を正確に説明しようとすると苦労するという、ありがちがな分析方法ではあります。

■ 導線分析の応用に向けて
ここまでは、多くの解析ツールで既に実装されており、今更な感じがあります。ただ、結果のわかりやすさと、分析の意味を考えると、どうしても必要な機能になります。というか、これだけで十分といえば十分です。
でも、ここではやめません。次回以降、別の分析方法について考えます。ここから先は、詳しくない人に説明しても全く理解されません。完全に自己満足の世界です。

Categories
Web分析一般

GPSデータを可視化する

GPS機能を使って取得したデータをビジュアルする方法を考えています。
データの規模感によって、どういう風に見せるのが一番いいのかは全然違うと思いますが、
規模が大きい場合はヒートマップが一番わかりやすいかなと思って、簡単にできそうなライブラリを調べてみました。
結果、どれもイマイチかなー。
自分で作るかなーって感じです。。。。。

Density Mapping in Google Maps with HeatMapAPI

Heat mapを作るJavaScript API

Google Maps + ヒートマップ – 學而時習之
まとめ+簡単にヒートマップ画像を作るプログラム

Create a Heat Map with Your Own Data (& Embed on Your Site!)

シンプルでよさげだがもう動かない。。。。

HeatMapAPI.com

機能としては良さそうなんだけど、意味がわからない

gheat – Google Code

http://www.moongift.jp/2008/11/gheat/

良いのだけど、Pythonのサーバ立てなくちゃいけなそうなので、きつい

Heatmap Studio

なぜか全部リダイレクトされて、トップページしか見れない。。。。。

Categories
Web分析一般

大きなPDCAと小さなPDCA

最近はどの企業もサイトリニューアルの際、PDCAプラニングをしてきてくれというオーダーがあります。Webサイトは作りっぱなしではダメで、効果測定に基づいて、「カイゼン」をしていきましょうというのが広まってきました。

しかし、「PDCA」という言葉が単に、効果測定してチューニングしていきましょうという意味だけで使われている傾向があります。一度作った後の「チューニング」という意味でのPDCAサイクルに加え、もう一つ重要なサイクルがあります。次期サイトリニューアルまでのPDCAサイクルです。つまり、サイトを作成した後の運用フェーズにおけるチューニングという意味でのPDCAサイクルと、次期リニューアルまでという長いフェーズでのPDCAサイクルの2種類のPDCAサイクルがあります。私は前者を小さなPDCA、後者を大きなPDCAと呼び明確に区別しています。

小さなPDCA

サイトを作りっぱなしで、そのままにしておいてはもったい無いです。指標をきちんと定義して測定し、ボトルネックを改善していく努力をして初めて、効果を産むWEBサイトになることができます。

どんなにうまくサイトを設計したとしても、「完璧」なサイトを作ることはほぼ不可能です。低コストで追加・修正ができるというWEB(HTML)のメリットを活かして、日々改善していくことが重要です。

そのためには、適切な指標を定義し、ウォッチする箇所を明確にしておく必要があります。できれば、コンバージョンに対して影響力の強い箇所を特定して、A/Bテストなどを続けていくことが望ましいです。

大きなPDCA

サイトを作成してから年月が経ってくると、小さな「カイゼン」だけでは対処できない問題が出てきます。

・市場動向の変化

・ユーザー意識の変化

・WEB技術の変化

などに対応していくには、運用チューニングだけでは不可能です。サイトのリニューアルが必要です。

サイトリニューアルをする際には、日々のチューニングとは違うレベルでの分析が必要になります。

・WEBがどのような目的で使われているのか

・どのような人がサイトを使っているのか

・現状サイトのどの部分が大きな問題となっているのか

といった現状分析に加え、

・ビジネスゴールの設定

・セグメント、ターゲットの決定

・ターゲットユーザーのニーズ分析

などを行い、サイト戦略を詰めていきます。

どちらのPDCAも重要

短期プロモーションサイトを除くと、最近はさすがにPDCAなんかどうでもいいというクライアントはなくなってきました。しかし、逆に(小さな)PDCAを回して、サイトをカイゼンしていくんだから、サイトの設計は、短期間で作ってくれというクライアントも増えてきました。

もちろん、納期・予算との兼ね合いもあるので、全ての案件で大規模な調査・分析をすることは不可能です。しかし、サイト設計時に的を得た設計をしていないと、いくら小さなPDCAを回しても、的を外れたまま、あまり効果の出ない改善にしかなりません。

小さなPDCAは明確なマーケティングプラン(大きなPDCA)があって初めて成り立つものです。この点を疎かにすると、どんなにカイゼンしても、効果を産むサイトに生まれ変わることはありません。

Categories
Web分析一般

アクセス解析を難しくしているもの

アクセス解析は簡単?

アクセス解析は難しいと思われがちですが、現実的に行っているデータ処理は、さほど難しいことをしていません。というよりも、データ分析でよく用いられている統計的手法は一切使用していないことがほとんどです(それもどうかと思いますが)。

普通のアクセス解析ツールでは、データマイニング・多変量解析的な手法を提供しているツールはほとんどありません。決定木やニューラルネットワークはもちろん、K-meansすら提供していません。それどころか、中央値や標準偏差などのごく一般的な統計指標もほとんど提供されていません。アクセス解析ツールで行っている演算は、足し算/引き算、平均値くらいしかありません。

では、アクセス解析は簡単か?というと、そうとも言い切れません。

何がアクセス解析を難しくしているのか

何がアクセス解析を難しくしているのでしょうか?以下の3つの要因があると考えています。

1.余計なデータが多すぎる

DWHを構築する場合は、必要なデータを取捨選択した後、レポート化するのが普通です。データマイニングをするときも、一度データクレンジングをして、必要なデータのみ引っ張ってくることが普通です。

しかし、多くのアクセス解析ツールは取れるデータは、とりあえず集めておけ!というスタンスで作られています。これは、アクセス解析をする目的が多岐に渡ることも影響しています。

もともとアクセス解析は、エラーの検出や不正アクセスの検出など、システムの維持・改善の目的で使用されてきました。徐々にマーケティングにも活用することができることがわかり、アクセス解析ツールの進展もあって、今の形になっています。

また、サイト制作の技術的な側面でもアクセス解析は有効です。例えば、利用しているブラウザ・OSの種類/バージョン、画面の解像度、ブラウザの実際の幅などサイトを制作する上で非常に参考になります。

ただし、マーケティング的な視点で考えると、上記の技術的なデータはほとんど役に立ちません(全くではないところが、また微妙なんですが・・・)。マーケティング的には役に立たないデータが大量にあって、どれを見ればいいのかわからなくなってしまっているというところが難しくさせている要因の一つです。

2.どのデータを見ればいいのかわからない

アクセス解析において、どのデータを見ればいいのかを考えることは非常に難しいです。なぜなら、各サイトによって、サイトの性格が違いすぎるからです。同じデータを同じ基準で見ればいいというサイトは存在しません。

ECサイト、コーポレートサイト、ブログ、どれも見るべきデータは異なります。そして、取り扱っている製品、ユーザー層、サイトの構造によっても、見るべきデータ、データの解釈は異なってきます。

たとえ、競合企業の同じようなコーポレートサイトだとしても、KPIとするべき指標が変わってくる場合も数多くあります。

アクセス解析には、これだけ見ておけば大丈夫!という基本となる指標は存在しません。サイトの性格(EC、コーポレートサイトなど)ごとに無理やり、共通指標を決めたところで、どう解釈すればいいのかはサイトによって大きく異なります。

例えば、直帰率(Avinash Kaushikが一番お気に入りの指標!)が20%だという結果から、何が言えるでしょうか?20%という数値だけで、それが良いのか悪いのかは全く判断できません。過去のデータと比べて初めて、「良くなった」、「悪くなった」と言うことができます。

共通指標・共通基準がない(作れない)ことがアクセス解析を難しくしている要因の一つです。

3.基本指標が複雑

アクセス解析で基本となる「指標」が複数あることも事態を複雑にしています。

よく用いられる指標(メジャー)は以下の通りです。

・PV

・インスタンス(件数、インプレッション)

・金額

・セッション(ビジット、訪問回数)

・ユニークユーザー(UU、ビジター、訪問者数)

・滞在時間

上の3つ(PV、インスタンス、金額)は自由に合計・分解ができます。

「全ページの合計PV」と「サイト全体のPV」は一致します。

当然、「全カテゴリの売上金額」と「サイト全体の売上金額」は一致します。

(もちろん、カテゴリ間に重複などが無い場合のみです)

しかし、セッションとUUは合計することができない指標です。

「全ページのセッション数の合計」と「サイト全体のセッション数」は一致しません。

当然、UUも同じです(なぜだかわからない人はセッション、UUの定義を確認しましょう)。

しかも、セッション、UUは解析ツールによって、定義が微妙に異なっています。

そして、滞在時間も問題山積みの指標です(詳細はいずれ)。

基本となる指標が数多くある上に、指標によって、できそうでできなかったり、ツールによって定義や名前が違ったりしていることが普通になってしまっていることがアクセス解析を難しくしています。

Categories
Web分析一般

ウェブ分析≠アクセスログ解析

Web Analytics(ウェブ分析)といえば、アクセスログ解析というイメージになってしまってはいますが、そんなことは全くありません。

ウェブを分析するという目的で使われている手法は大きく以下の4つに分類されます。

1.ウェブ利用分析

ウェブサイトがどのような使われ方をされているのかを分析する方法です。アクセスログ解析は、ここに分類されます。一部、ネット視聴率もここに分類されます。

2.サイトユーザー分析

ウェブサイトのユーザーを分析する方法です。ユーザーテストやアイトラッキングなどの方法に加えて、アンケート調査、FGI、デプスインタビューなど従来のマーケティングリサーチの手法も駆使して、調査・分析を行います。

3.ウェブコンテンツ分析

ウェブに掲載されているコンテンツを分析します。

UGC(CGM)型のサイトで、どのような書き込みがされているのかをテキストマイニングして分析することが主な手法です。

SEO用のキーワード利用調査もここに含まれます。

HTTPのヘッダ情報を収集して、競合サイトの更新日時(頻度)などを調べることもあります。

4.ウェブリンク分析

どのページがどのページにリンクしているのかを調べ、リンク構造を分析します。GoogelのPageRankはリンク分析の代表格です。

アクセスログ解析だけでいいの?

ウェブサイトを分析して、何が知りたいのか?によって、分析方法は変わります。

「よく見られたページ」や、「出稿した広告の費用対効果」だけを知りたいのであれば、アクセスログ解析だけで十分です。

しかし、「どのようなユーザーが使っているのか?」、「なぜコンバージョンが伸びないのか?」を調べるためには、アクセスログ解析では不十分です。様々な手法を駆使して、調査・分析をする必要があります。

分析をする上で最も重要なことは、「分析の目的を明確にする」ことです。目的を明確化すると、目的達成のための分析方法はおのずと決定されます。

ログ解析ツールを導入すると、分析周りは全部OK(しかも分析もせずに導入だけで!)という考えは捨てた方が良いです。ログ解析ツールは非常に強力ですが、全てをまかなえるものではありません。

目的に即した方法で、適切な分析をしないと、アクショナブルな分析にはなりません。

Categories
Web分析一般

イカの哲学

amazonより

哲学者波多野一郎が1965年に出版した「イカの哲学」の全文を収録。中沢新一がその思想を分析し、新しい平和学を提唱する。イカが人間とコミュニケーションがとれたら、という発想から、本質的な意味での世界平和を説く。

だそうです。

特攻隊やシベリヤ抑留で大変な思いをした著者がアメリカ留学中、イカ獲りのバイトをしていて、イカの実存に気付く。実存を意識することによって、イカとのコミュニケーションを意識するようになる。これを発展させて、遠い異国に住む人の実存を知ることこそが重要だと悟る。それは安易なヒューマニズムとは異なる。中沢はいつもの対称性理論(?)を用いて、これを発展させて、平和理論へと論を進める。
ま、どうでもいいですけど。この「イカの実存」という考えが、なんかWEB構築の世界に通じるなって思った。WEB構築の教科書みたいな本を見てると、大抵はきちんと調査して、ユーザーモデリングして、ペルソナ作って、エクスペリエンスフローを作って、それに基づいてWEBサイトを構築するみたいなことが書かれている。
でも、そんなこと理想論で、実現できている会社はほとんどないし、やっているとしても、ちゃんとやっている会社の極一部のプロジェクトだけだ。(ここら辺は詳しいので、間違いがない)
なにより前段にあるべき、調査をしてからのユーザーモデリングが全くできていない。完全に妄想で形だけのペルソナを作っているだけだ。妄想では実存に気付くことはできない。波多野がイカの実存に気付いたのは、イカと共に長い時間を過ごしたからだ。ユーザーのことを知ったフリをするだけでは、ユーザーの実存に気付くことができない。実存に気付くには、実際に触れあって、よく理解することが重要だ。そうすることでユーザーと本当の創造的/想像的コミュニケーションが取ることができる。
それは安易なユーザー中心デザインなんかじゃない。それこそが本当の意味でのユーザーエクスペリエンスデザインだ。ユーザーの経験を無視したデザインはデザイナーの思い上がりでしかない。ユーザーの経験をデザインするには何より、ユーザーの実存を知らなければならない。
なぜ創造的/想像的コミュニケーションという言葉を使ったかというと、ユーザーは解決策を出すことができないからだ。解決策を出すのはデザイナーであり、マーケターである。デザイナーとユーザーの想像上の会話こそ、WEB構築に最も求められるものだ。創造的/想像的コミュニケーションの基になるのが、ユーザーの実存だ。それは単純なユーザーサーベイだけでは見つからない。
もちろんサーベイも重要だが。「観察」が一番のキーだと思う。実際に話を聞くのもいいんだけど、実際にコミュニケーションを取ると、ユーザーの社会を大きく崩す。ユーザーの社会に深く入って、観察する。そして実存を感じる。
人間がコミュニケーションを取る相手は人間だけではない。イカもそうだし、機械だってそうだ。重要なのは人と会話しようが、イカと会話しようが、彼は想像界を生きているということだ。そういう意味では人もイカも同じだ。
同じじゃないという主張がヒューマニズムでしかない。知った気になって、自分の主張を強制しているだけだ。ネットの奥にいる人はイカだ。イカの実存に気付くには、イカと本当に向き合う必要がある。ユーザーとの良い関係を築くWEBサイトを作るには、このことが一番重要だなと思う。