データ利活用のSQLちょい足し

データ活用・分析の種類と成果

  • 基礎分析
    • レポート
    • 集計
  • 問題解決
    • 検討
    • 課題の発見
  • 価値の想像

    • レコメンド
    • ターゲティング
  • 大きなフロートしては 既存分析 → 問題解決 → 価値の創造: 前半はディレクター、後半はエンジニアの比重が大きい

  • ディレクターはどんなデータが必要かのイメージはできていても、集め方やアルゴリズムまで熟知できていないことがある。
    ゴールの近くにいるエンジニアからディレクターにアクションを起こす
  • 配信システム・検索システム・API保有データがあっても人手による限界 → 自動化、情報の出し分け、数値化や可視化により旬な情報を届ける

目的

  • セグメント・ターゲティング
  • 変化・状態の可視化
  • 自動化・高精度化

セグメント・ターゲティング

  • デシル分析
    • ユーザーを10段階に分けて重要度を分割する
      • ユーザーを購入金額の多い順にソートし、上位10%ずつのグループに割り当てる → ntileウインドウ関数
    • 一回で大金と回数で大金になった人が同一ランクになってしまう
  • RFM分析 Recency、Frequency、Monetary

変化状態の察知

  • おすすめ枠に何を表示するか → 人気や新着はともかく、急上昇やレコメンドは人手対応は難しい → 自動化
  • 旬な情報を届けたりユーザーの状況に応じた施策が検討可能になる

    • 良い状況に変化 売上を伸ばす要員に注目
    • 悪い状況に変化もしくは変化なし 売上が減少する要員に注目
  • ファンチャート

    • ある基準を100として以降の数値の変化を見る
      売上では金額が少ない項目は変化が分かりにくい
      first_valueウインドウ関数
    • カゴ落ちユーザー
      何かをして以降何かを指定ないユーザーの抽出
      カートに入れて購入していないなど

自動化・高精度化

システムの改善はエンジニア以外には難しい

  • 検索システムの高精度化
    • 商品DBと検索システムの連携
      • 同義語辞書: バイト = アルバイトのようなマッピング
      • ユーザー辞書: ビルゲイツという単語で一つの単語であるという定義
    • 検索 → 再検索、検索 → 詳細ページ、検索 → 離脱 といった行動がある
      • 再検索(絞込): 並び順の最適化、同義語辞書への追加
      • 離脱ワード: 辞書で追加可能なワードがあれば対応
    • 検索ワードに辞書の最適化のヒントが有る
      離脱、再検索をしたのは何故? → LAG、LEAD関数で再検索ワードの取得
      • 結果が0件だたったから離脱?
      • 条件を追加して再検索?
      • 全く違うワードで再検索?
  • レコメンドの高精度化
    • リマインド、ランキング、コンテンツベース、レコメンド、パーソナライズレコメンド、・・・
    • DB上では商品ID、ユーザーID、重みがあれば最低限の分析ができる

      商品ID ユーザーID 重み
      AAA U1 1
      BBB U1 1
      AAA U2 1
      CCC U3 1
    • コサイン類似度: 2つのベクトルのなす角、1に近づくほど相関大

行動に移す

  • 会社の動き: トップダウンボトムアップ
    ちょい足し: ボトムアップ → 予算なし、強制力なし
    メリットの説明 小さく始めて効果を可視化して投資回収が成功することを示していく
  • データを武器にする = 組織作り
    小さなところからやってみて効果を可視化して周りを巻き込んでいく

その他

  • MySQL は非対応のSQLもあるので分析系では postgresql のほうがおすすめ
  • 分析系のSQLでは重くなってしまうこともあるが、ユーザーが使う部分でもないので重くなってもまあ良いのでは?
    中間テーブルへの保存なども上手く使い、2回目以降の処理の高速化も考慮しておく