データサイエンティスト養成読本

データサイエンティスト養成読本

データサイエンティスト養成読本 [ビッグデータ時代のビジネスを支えるデータ分析力が身につく! ] (Software Design plus)

データサイエンティスト養成読本 [ビッグデータ時代のビジネスを支えるデータ分析力が身につく! ] (Software Design plus)

読了

特集2 マーケティング分析本格入門

p.94 続き

  • 広告戦略を立てる
    • 広告効果測定モデル
      • KPI(Key Performance Indicator)
    • 予測モデルには回帰モデルがよく使われる
      • 線形型
      • 逓減型
    • 線形型
      • GRP が1増えると売上が β だけ増加する、などという単純モデル
      • R言語では lm 関数にそのまま放り込むだけ
    • 逓減型
      • 線形ではなく、増加が鈍化しているような現実的な推移を想定
      • lm 関数で目的変数と説明変数を対数変換することで構築
# 利用する仮想データの読み込み
library(ggplot2)
library(scales)

grp.data <- read.csv("grp.csv", header = T)
head(grp.data)

ggplot(grp.data, aes(x = grp, y = amount)) +
  geom_point() +
  scale_y_continuous(label = comma, limits = c(0, 360000)) +
  ylab("売上") +
  xlab("GRP") +
  theme_bw(16)

# 線形型モデルの構築
ggplot(grp.data, aes(x = grp, y = amount)) +
  geom_point() +
  scale_y_continuous(label = comma, limits = c(0, 360000)) +
  ylab("売上") +
  xlab("GRP") +
  geom_smooth(method = "lm")
  theme_bw(16)

fit <- lm(amount ~ grp, data = grp.data)

summary(fit)

# 逓減型モデルの構築
fit <- lm(log(amount) ~ log(grp), data = grp.data)

summary(fit)

fit.data <- data.frame(grp = grp.data$grp, amount = exp(fit$fitted.values))
ggplot(grp.data, aes(x = grp, y = amount)) +
  geom_point() +
  geom_line(data = fit.data, aes(x = grp, y = amount)) +
  scale_y_continuous(label = comma, limits = c(0, 360000)) +
  ylab("売上") +
  xlab("GRP") +
  theme_bw(16)

f:id:yossk:20150430103852j:plain f:id:yossk:20150430103906j:plain

  • Web サイトを改善して売上を伸ばす
    • A/B テストと誤差
      • 2つ、もしくは複数のバージョンのWebページを出し分け、一番成績が良いページを決定するためのテスト
      • ランダム化比較実験
    • 検定
      • A と B の差が意味のある差かどうかを判定する検定という解析手法を使って判断
      • コンバージョン率を判定するような場合にはカイ二乗検定を使う
        • A と B のパターンの違いとコンバージョンするかしないかとの間に関連性があるかを調べる
        • p-value が重要
        • p-value は実際には何の違いが無くても得られたデータくらいの差が発生する確率を表す
        • 5% 以下の場合は意味のある差として見なす
        • 件数が少ないと誤差が大きくなり、件数が多くなると誤差が小さくなる
    • 多変量テスト
      • サイトを構成する画像やテキストなdの構成要素の組み合わせを出し分け、 各要素がコンバージョンにどの程度影響しているのかを明らかにするためのテスト
      • 統計学では実験計画法
      • マーケティングリサーチではコンジョイント分析
# 直交表の作成
install.packages("conjoint")
library(conjoint)

experiment <- expand.grid(
  imgA = c("ImageA1", "ImageA2"),
  imgB = c("ImageB1", "ImageB2"),
  txtA = c("TextA1", "TextA2"),
  txtB = c("TextB1", "TextB2")
)

design.ort <- caFactorialDesign(data = experiment, type = "orthogonal")
design.ort

# 仮想のテスト結果データの読み込み
web.test.data <- read.csv("web_test_sample.csv", header = T)
head(web.test.data)

# ロジスティック回帰モデルの構築
fit <- step(glm(cv ~ ., data = web.test.data[, -1], family = binomial))
summary(fit)

# logistic.display の実行
install.packages("epicalc")
library(epicalc)
logistic.display(fit, simplified = T)

紙面と同じ結果にはならなかった。仮想データの読み込み結果以降が全部違う。最後はエラーが出る。

> logistic.display(fit, simplified = T)
 以下にエラー coeff[, 1] :  次元数が正しくありません

第2章 mixi における大規模データマイニング事例

  • インタレストターゲティング
    • mixi 内の情報からユーザの興味・関心(インタレスト)情報を取得し、その興味にあった広告をユーザに表示する
  • 旧インタレストターゲティング
  • 新インタレストターゲティング
    • 広告商品作成プロセスからクラスリングを無くす
    • Hadoop を利用した想定インプレッション算出
    • 解析環境
    • データベーススナップショット
      • 設定ファイルに従い、DB の負荷が低い時間帯に取得
    • データ解析ワークフローフレームワーク Honey
      • データベーススナップショットで取得されたデータの取り込み
      • 集計処理の実行
      • Perl のコード上で実現
    • Hive + Mahout
    • Mahout 採用の理由
  • ツールやライブラリに任せられることは任せ、より本質的な部分に注力する

第3章 ソーシャルメディアネットワーク分析

  • ノード(人)とエッジ(人と人との繋がり)
  • ネットワークの方向
    • 有向ネットワーク(Twitter など)
    • 無向ネットワーク(Facebook など)
  • エッジリスト
  • R パッケージ
  • ホモフィリー
    • 似たもの同士が集まり易い、類は友を呼ぶ傾向のこと
  • AUC
    • 分析結果のあてはまりの良さを調べる方法
    • the area under the receiver operating characteristic curve : ROC 曲線下面積

特別記事 Fluentd 入門

  • 以下の問題を解決
    • 回収に長い時間が必要
    • データが解析可能になるまでに長い時間が必要
    • ネットワークの帯域の消費
    • 処理の不安定さ
  • 利点
    • JSON 形式
    • プラグインによる拡張
    • 導入が簡単
    • ログの損失を出さない工夫
      • バッファ機能
      • ファイルの読み取り位置
      • 可用性
  • アーキテクチャ
  • 使い方
    • gem 版
      • 最新の機能を利用できる
    • td-agent
      • 導入が簡単
  • fluent-agent-lite
    • 他のプロセスが書き出したログファイルを順次読み込んで別の Fluetnd に送信するという処理に特化したツール
  • 活用方法
    • ログ収集
    • 統計 + 可視化
    • 検知/通知
  • システム構成
    • fowarder
    • aggregator
    • worker
    • serializer
    • watcher

特別企画 データ分析のためにこれだけは覚えておきたい基礎知識

第1章 SQL入門

  • スタースキーマ
    • 売上や在庫データを指すトランザクションが格納されたファクトテーブル
    • 商品名や顧客データのような個別の要素を指すマスタデータを格納するディメンションテーブル
  • R から SQL を実行する
  • python
    • urllib2
    • BeautifulSoup

感想

本格的にやるなら、統計の勉強、R の勉強しないといけないなと感じた。 どのような世界なのか、感じるには充分な書籍だった。