インタレストカテゴリとは
Googleではオンラインでの活動や購買行動からユーザーの興味・関心を推測して、ユーザーを分類しています。
この分類は「インタレストカテゴリ」と呼ばれています。
Googleアナリティクスでは、インタレストカテゴリには「アフィニティ カテゴリ」、「購買意向の強いセグメント」、「他のカテゴリ」の 3種類があります。
今回はこの中で「購買意向の強いセグメント」(interestInMarketCategory)を使うことにします。
インタレストカテゴリは階層型の分類をベースにしていますが、Googleアナリティクスでこれを平坦にしています。
たとえばカテゴリが次のような階層になっている場合、
- ソフトウェア
- インターネット ソフトウェア
- インターネット クライアントおよびブラウザ
- インターネット ソフトウェア
Googleアナリティクスでは、次のように表示されます。
- ソフトウェア
- ソフトウェア / インターネット ソフトウェア
- ソフトウェア / インターネット ソフトウェア / インターネット クライアント、ブラウザ
つまり、「ソフトウェア / インターネット ソフトウェア / インターネット クライアント、ブラウザ」のカテゴリに分類されたセッションは、「ソフトウェア / インターネット ソフトウェア」カテゴリと「ソフトウェア」カテゴリにも分類されます(ユーザー属性とインタレスト カテゴリについて - アナリティクス ヘルプ)。
あまり細かく分類しすぎると見るのが大変になるため、今回は階層のトップのカテゴリのみを使用することにします。
分析
属するセグメントが違えば見るページも違うだろうということで、RGA パッケージを使って、interestInMarketCategory と landingPagePath ごとの newusers のデータを取得しました。
各セグメントのユーザーが、なにを入り口にこのブログにアクセスしたのかを知ることで、ユーザーの好みを推測し、新規ユーザー獲得のヒントにしようというわけです。
以下はランディングページごとの新規ユーザー数の棒グラフです。
これを見ただけでどのユーザー層がどのページに関心を持っているか推測するのは難しそうなので、もう少し工夫します。
各ページにランディングしたユーザー数をユーザーの総数で割る処理を、各セグメントごとに行いスケールをあわせてやります。
この「各ページにランディングしたユーザー数をユーザーの総数で割った値」を「入り口率」と呼ぶことにします。
入り口率を縦軸に、ランディングページを横軸にとり、セグメントごとに色分けして線でつなぐことで、セグメントごとのランディング傾向を把握します。
こういうのを平行座標プロットといいます。
普通の折れ線グラフの線は推移を表すものですが、平行座標プロットでの線は「同じセグメントですよ」ということを知らせるために引きます。
心眼を働かせると、ピンクの "Sports & Fitness"と、紫の "Gifts & Occasions"が特徴的な動きをしてることがわかります。
そこで interestInMarketCategory を "Sports & Fitness"と "Gifts & Occasions"と、その他("Other")に再編してしまいましょう。
"Other"のユーザーがよくアクセスしているのに "Sports & Fitness"や "Gifts & Occasions"のユーザーがアクセスしないランディングページや、その逆を探します。
そのためには "Sports & Fitness"や "Gifts & Occasions"のユーザーの入り口率から "Other"のユーザーの入り口率を、ランディングページごとに引いてやります。
今回は差の絶対値が 0.1 を超えた場合を、「大きな差」と判断することにしました。
結果、大きな差が出たランディングページは、以下でした。
Category | landingPagePath | 入り口率 | Other との差 |
---|---|---|---|
Sports & Fitness | /entry/2015/01/15/073029 | 0.34 | 0.21 |
Gifts & Occasions | /entry/2015/01/17/064522 | 0.17 | 0.11 |
ここまでの集計&プロットを実行する R のコードは以下の通りです。
library(RGA)library(tidyr)library(dplyr)library(cowplot) authorize() prof <-list_profiles() dat_ga <-get_ga(profileId = prof$id[1], start.date ="2016-07-01", end.date ="2016-12-20", dimensions ="ga:interestInMarketCategory,ga:landingPagePath", metrics ="ga:newusers")#カテゴリ名に / が入っていないのがトップカテゴリ primary <-dat_ga %>% dplyr::filter(!grepl("/",interestInMarketCategory))%>% group_by(interestInMarketCategory)%>% mutate(ratio=newusers/sum(newusers))%>% ungroup() ggplot(primary)+ geom_bar(aes(x=landingPagePath,y=newusers),stat ="identity")+ facet_wrap(~ interestInMarketCategory)+ coord_flip()+ theme(axis.ticks.y=element_blank(),axis.text.y=element_blank()) ggplot(primary,aes(x=landingPagePath,y=ratio,group=interestInMarketCategory, colour=interestInMarketCategory))+ geom_line()+ geom_point()+ theme(axis.ticks.x=element_blank(),axis.text.x=element_blank()) unique(primary$interestInMarketCategory) myclass <-primary %>% mutate(class=ifelse(interestInMarketCategory=="Sports & Fitness"| interestInMarketCategory=="Gifts & Occasions", interestInMarketCategory,"Other"))%>% group_by(class,landingPagePath)%>% summarise(newusers=sum(newusers))%>% group_by(class)%>% mutate(ratio=newusers/sum(newusers))%>% ungroup() myclass2 <-myclass %>% select(-newusers)%>% spread(landingPagePath,ratio,fill=0)%>% gather(landingPagePath,ratio,-class)%>% group_by(landingPagePath)%>% mutate(resid = ratio-ratio[class=="Other"])%>% ungroup() myclass2 %>% dplyr::filter(class=="Sports & Fitness")%>% arrange(desc(abs(resid)))%>% dplyr::filter(abs(resid)>=0.1) myclass2 %>% dplyr::filter(class=="Gifts & Occasions")%>% arrange(desc(abs(resid)))%>% dplyr::filter(abs(resid)>=0.1)
アマゾンアフィリエイトのコーナー
全然関係ないけど最近買った本です。
まだ読んでないのでおもしろいかわかりませんが、みんなも買ってくれ。
- 作者: A.E.コッパード,Alfred Edgar Coppard,西崎憲
- 出版社/メーカー:筑摩書房
- 発売日: 2014/09/10
- メディア:文庫
- この商品を含むブログ (10件) を見る
- 作者:最果タヒ
- 出版社/メーカー:河出書房新社
- 発売日: 2016/07/15
- メディア:Kindle版
- この商品を含むブログを見る
付録
混合多項分布を使ってモデルベースのクラスタリングをしても、"Sports & Fitness"と "Gifts & Occasions"とその他に分類されました。
library(mixtools) primary_wide <-primary %>% select(-ratio)%>% spread(landingPagePath,newusers,fill =0) fit_k3 <-multmixEM(as.matrix(primary_wide[,-c(1:2)]),k=3) primary2 <-primary_wide %>% mutate(class=apply(fit_k3$posterior,1,which.max))%>% gather(landingPagePath,newusers,-interestInMarketCategory,-class) ggplot(primary2)+ geom_bar(aes(x=landingPagePath,y=newusers,fill=factor(class)),stat ="identity")+ facet_wrap(~ interestInMarketCategory,scale="free_y")+ theme(axis.ticks.x=element_blank(),axis.text.x=element_blank())+ labs(fill="class")