Rの関数定義でNSEを使う(表現式を引数にとれるようにする)

NSEとは NSEとはNon-standard evaluationの略。 関数に対して値を与えるのではなく、表現式(expression)を与えて処理させる方法。 言葉にするとわかりにくいので、具体例で。 NSEを使う局面 やりたいこと たとえばデータフレームcustomer.df内の f_purchaseとdurationという列に対して処理をする関数myfun()を作りたい場合 直感的には myfun(customer.df, f_purchase, duration) という引数の与え方をしたい。これがRのもっとも自然なコーディングである。 たとえば glm(f_purchase ~ duration, data = customer.df, family = binomial()) などと同じである。 これを実現するのがNSEである。 NSEを使わない場合、 myfun(customer.df$f_purchase, customer.df$duration) という指定をせねばならず、引数が増えた場合などさらに「customer.df$」を繰り返すことになり、Rのコーディングとしてイケてない。 NSEはイケてるRっぽいコーディングをする方法の一つなのである。 ちなみにNSEの対義語がSE(Standard evaluation)になる。 NSEの具体的な利用例 RでNS…

Continue reading →

Rでクラスター分析〜距離行列の生成からクラスタリングまで

クラスター分析は 距離行列の生成(類似度行列ではない!) クラスタリングの実行 という流れになる。 それぞれのステップで、採用する 距離の種類 クラスタリングの方法 がチューニング変数となる。 この順に手順を見ていく。 行数、列数の多いビッグデータ向きのデータ形式であるMatrixパッケージに対応した距離行列についても説明する。 距離行列を生成する 類似度行列ではなく距離行列を作る。similarityではなくdistanceを作る。 直感的にはデータから距離の指標(どれだけ離れているか)ではなく類似度(どれだけ近いか)の指標を抽出し、そこからクラスタリングしたいケースが多いのだが、あくまで類似度指標に基づいた距離行列を生成するのである。 通常のdist関数では対応する距離の種類が少ないのでproxyパッケージを使う。 距離行列を生成するメソッドはdist(data, method=”距離の種類”)。 require(proxy) dcos <- proxy::dist(USArrests, method=”cosine”) 戻り値はdistオブジェクト。行列やデータフレームとは異なるので扱いに注意。 distオブジェクトは同じ次元なら加減乗除が可能。たとえばdist1, dist2ともにdistオブジェクトの場合、 dist1 + dist2 dist1 – dist2 d…

Continue reading →

webマーケターが知っておくべきURLの技術的な意味~URLの構造

この記事は連載「webマーケターが抑えておくべき技術」の全 1 ページ中 1 ページ目です。

現在のマーケティング施策ではシステムの話が切り離せない。 CMSがどう動くか データベースサイトの仕組み オーディエンスのセグメンテーションの仕組み など、マーケターもシステム的な知識を持っておくと、仕事が進めやすい。サービス開発の発想も現実的になる。 実はこういった議論はデータベースの論理的な話やシステムの挙動の仕組みに帰着されるもので、技術的な知識というよりエンジニアリングの論理的な考え方がより重要になる。関数の種類やアルゴリズムの数式など、技術にかかわる知識はさほど重要にならないことが多い。 ところがマーケターが直面する実際のタスクの中には考え方だけでは解決しない、技術的な知識が必要になるものが一部ある。特にアドテクという技術を扱う運用などではそういうことがしばしば発生する。 ウェブマスター、広告運用者、マーケターにとって純粋に技術的知識が必要となる分野は多くないが、以下の事項はある程度の深さで知っておくのが望ましいものである。 URL 正規表現 DOM タグ cookie これらについて連載で解説していくが、今回はまずはURLについて説明する。 URLと向き合う必要性 URLはインターネット上でページのありかを特定する文字列。サイト制作、コンテンツ管理の観点のみならず、webマーケターにとってもさまざまな集客施策で直面するものである。 リマーケティング広告を配信する際、訪問…

Continue reading →

タグ管理のポイント、タグマネージャーの種類と導入のメリット

この記事は連載「タグマネジメント完全マニュアル」の全 2 ページ中 1 ページ目です。

昨今Googleタグマネージャ(GTM)やYahoo!タグマネージャー(YTM)など無料で使えるタグマネージャーが現れ、タグマネジメントが一般化してきている。ではそもそもタグマネジメントとは何か。タグマネージャは変われどタグマネジメントの考え方は基本的にどのツールを使っても同じ。その基本を説明するとともに、後半では無料で最もお手軽に使えるGoogleタグマネージャの設定方法の解説をする。 タグマネジメントとは 「タグマネジメント」とはその名の通りwebサイトに設置するタグの一元管理である。 では管理すべきタグにはどんなものがあるのか。 アクセス解析ツールのタグ 広告のタグ コンバージョンタグ リマーケティングタグ 接客ツール(チャットなど)のタグ ABテストツールのタグ などがある。 ある程度web施策の程度が進んでいくと、これらのタグを複数、それぞれ異なるページに設置する必要が出てくる。どのタグをどんな条件で設置したか管理し、使わなくなったタグは削除するなどの運用を徹底しておかないと、後になって同じ目的のタグを設置したとか、ページの表示の不具合の原因が古いタグにあったとか、そういった事態が発生する。 担当者が変わった際などには当然「どこにどのタグをどんな目的で設置したか」を伝えておく必要はあるし、自分で設置した場合でも過去のタグの所在は覚えていないことが多くなる。 そのため改めて…

Continue reading →

Rにおける代表的な一般化線形モデル(GLM)の実装ライブラリまとめ

一般化線形モデル(GLM)は統計解析のフレームワークとしてとにかく便利。 Rでもビルトインの関数から拡張までさまざまなライブラリから提供されている機能だが、 さまざまなライブラリがありすぎてどれを使えばいいのかわかりにくいのと、 さらに一般化線形モデル(GLM)自体にもいろいろな亜種があるため、 どの手法をどのライブラリの関数で実装すればいいかわからなくなる。 そこでRに実装されている代表的なGLM系の関数と特徴についてまとめてみた。 一般化線形モデルのおさらい 一般化線形モデルとは $$ y = g^{-1}(\alpha + \beta_1 x_1 + \beta_2 x_2 + … + \beta_i x_i) + \epsilon $$ で指定されるモデル。 一般化線形モデルを決定するのは 誤差項 $\epsilon$ の分布→目的変数の分布から決まる 線形予測子 $\alpha + \beta_1 x_1 + \beta_2 x_2 + … + \beta_i x_i$ →最初に考えるモデル式(説明変数の組み合わせ) リンク関数 $g()$(線形予測子と推定値の関係式)→誤差項の分布から大体決まる の3つ。 手順は モデル式(の候補)を洗い出す→パラメータを推定する→モデルを評価する モデルの評価は anova(fit)でモデル自体が有意かどうかを…

Continue reading →

メディアサイトのアクセス解析と重要な指標、コンテンツ分析の着眼点

旧来からあるニュースメディアなどのサイトに加え、雑誌もwebメディアを持つようになってきている。また最近ではオウンドメディアも乱立しているなど、数多くのメディアサイトがひしめき合っている。 こういったサイトではお問い合わせ、資料請求といった目先のコンバージョンがない。会員登録などはあったとしても、サイト全体のゴールというほどの位置づけではない。 こういった目先のコンバージョンポイントのないメディアサイトのアクセス解析で考慮することを解説する。 メディアサイトの分析で考慮すること メディアサイトのイシュー メディアサイトの運用の主眼はPV数を増やすことに置かれていることが多い。 それ以外ではユーザ数を増やす、滞在時間を上げる、会員数を増やすなどである。 それを実現するためのサイト内での施策は コンテンツ 何がウケるのか、どんな記事を書いたらいいのか UI 基本的にページ遷移させることに主眼 メニュー等共通パーツ テンプレートごと 記事ごと リンク ページ分割 キャンペーンや広告(タイアップ)の企画 オウンドメディアの場合、将来のコンバージョンにつながるユーザの獲得ということが重要になる。 とはいえメディアである。メディアとしての役割が果たせないとわざわざオウンドメディア施策をやる意味はないので、上記のことは考慮しなければならない。 ページの分類 メディアサイトの構造はどうなっているの…

Continue reading →

Googleタグマネージャーの設定をExcelにエクスポートするツール

GTMのバックアップ用のJSONファイルからExcelファイルに設定(変数、トリガー、タグ)の一覧を出力するツールを作った。 とりあえずPythonで作ったスクリプトを実行可能なexeファイルにしたものを配布する。 ダウンロード Googleタグマネージャー設定エクスポートツール Ver0.01 ダウンロード Windows(64bit)対応 使い方 GTMからコンテナのJSONを取得する GTMのコンテナの管理画面から以下の手順でJSONファイルを取得する。 1. 2. 実行 ダウンロードしたファイルを解凍すると、readGtmContainer.exeというファイルが生成される。 コマンドラインプロンプトから readGtmContainer.exe JSONファイル名 で、同じディレクトリに「コンテナID.xlsx」という名前のExcelファイルが出力される。 ※現時点でweb版のコンテナのみ対応

Continue reading →

Rで決定木分析(rpartによるCARTとrangerによるランダムフォレスト)

準備 決定木(decision tree)分析をする際、まず目的変数の種類とアルゴリズムを決定する。 アルゴリズム CART CHAID ID3 / C4.5 / C5.0 目的変数の型 目的変数の型によって扱いが変わる 質的変数(2値変数):分類木→目的変数が0/1, T/Fの場合はas.factor()でfactor型にデータ変換しておく 量的変数:回帰木 survivalオブジェクト (生起を表す2カラム) CARTはすべて対応、C4.5/C5.0は質的変数のみ ここではCARTアルゴリズムでツリーモデルを生成するrpartと、ランダムフォレストrangerを中心に説明する。 データセットと前処理 Default of Credit Card Clients Dataset データセットの主な留意点 30000行25変数 最初の列が識別子(ID)→除外 3列目SEX, 4列目EDUCATION, 5列目MARRIAGEがカテゴリ変数→factorに変換 最終列default.payment.next.monthが目的変数で0/1の値をとる。 それ以外は数値型変数なので型変換の必要なし 以上の処理をしたデータのうち80%を学習データ、20%をテストデータとして分割する。 require(data.table) data.dt <- fread(“UCI_Credit_Ca…

Continue reading →

【プロ向け】アクセス解析の設定前チェックリストとGoogleアナリティクス設定手順

Googleアナリティクスの設定を効率化するために、 管理画面を見る前に決めておくべき項目のチェックリスト Googleアナリティクスの管理画面での設定作業の手順 設定内容を一覧で出力するツール を紹介する。設定内容の出力は初期設定時に限らず、現状のアカウントの設定状況を把握する上でも役に立つだろう。 Googleアナリティクス設定前チェックリスト Googleアナリティクスの管理画面にログインする前に決めておくべき要件で、 Googleアナリティクスに限らない、アクセス解析の要件定義である。 これを決めずに管理画面を見るのは時間の無駄。 このチェックリストを完成させるのに時間を割こう。 重要度:高 工数に影響するもの (8) 計測対象 どのドメイン どのディレクトリ クロスドメイントラッキングの有無 おおよそのページ数 タグマネージャ経由でタグを設置するかどうか。その場合GTMかどうか。 タグを設置できない階層があるかどうか デバイス別のコンテンツ表示仕様 レスポンシブデザインかどうか。そうでない場合、PCとモバイルでページが1対1対応するかどうか タブレットの扱いはどうか デバイスによってタイトルが異なるか URLの変化しないページ遷移(主にコンバージョン遷移。フォームと確認画面等、同じURLでページの内容が変わる箇所があるかどうか) コンバージョンポイントの名称とURL一覧(…

Continue reading →

GA/GTMを使った際に見えなくなるトラッカーを呼び出して処理を実行する

GoogleアナリティクスとGoogleタグマネージャーのマニアックな話題。 通常GoogleアナリティクスをGoogleタグマネージャーを使って設置すると、GAのビーコンを呼び出す際のトラッカー名はGTMによってランダムな名前のものが割り当てられる。 たとえばこんな「gtm1463146770599」形式のものである。 そうなると生成したトラッカーそのものを使って何らかの処理をすることが難しい。 GTMの設定の中で固定のトラッカー名を付与すればこの問題は発生しないが、大人の事情でGTMの設定権限を与えられていない場合もある。 生成したトラッカーからさまざまな情報を取得したり、その情報に基づいて何らかの処理を行ったりしたい場合にどうすればいいか。 そのプロパティで新たにトラッカーを作り直してもいい(ga(‘create’, ‘プロパティID’, ‘auto’)する)ケースはある。たとえばイベントをsendするのは新規トラッカーでも問題はない。 ただトラッカーに(ヒット単位の)カスタムディメンションが設定されており、そのカスタムディメンションを使って何らかの処理をしたい場合などは新規のトラッカーでは無理である。 GAのトラッカーオブジェクトはどこにあるのか windowオブジェクトの中にあるwindow.gaがGAのトラッカーやメソッドを含むGAのすべてを保持したオブジェクトになる。…

Continue reading →