$30 off During Our Annual Pro Sale. View Details »

GISや因果推論でビジネス課題を解決:GO Inc. データアナリストによる実践事例

GISや因果推論でビジネス課題を解決:GO Inc. データアナリストによる実践事例

GO TechTalk #26 で発表した資料です。

■ YouTube
https://youtu.be/VMXRmeDHTHg?si=mQ19DgaK6Kmwf3aJ

■ connpass
https://jtx.connpass.com/event/314784/

GO Inc. dev

May 21, 2024
Tweet

More Decks by GO Inc. dev

Other Decks in Technology

Transcript

  1. © GO Inc. 3 自己紹介 GO株式会社 AI技術開発部 分析グループ / 島田

    哲朗 ユーザ分析・デジタルマーケティングをメインに組織の意志決定を進化させるため、機 械学習、計算統計学、ベイズ統計学、統計的因果推論に関心を持つ 2012年よりAccentureで通信・金融・アパレル・小売クライアントのセールスマーケテ ィング部門でデータ分析をサポートしたのち、2017年から株式会社トレタにて飲食店 の予約データ分析に従事 2019年からDeNAのオートモーティブ事業本部でタクシー配車アプリ『MOV』の分析 を担当し、事業統合によりGO株式会社(旧・Mobility Technologies)に転籍
  2. © GO Inc. 5 分析グループの役割 § 事業戦略の意思決定をデータ分析で主導する プロダクト機能評価 BIツール PdM本部

    データ インテリジェンス部 AI技術開発部 分析グループ 経営計画 機能変更時のシミュレーション CLTV 依頼主 依頼内容 担当 統計的因果推論 機械学習 統計・数理モデル 時空間モデル ベイズモデル シミュレーション • 経営 • 事業推進 • マーケ • 渉外 • PdM 専門性 SQL BI DWH リサーチ 分析環境構築 ユーザーリサーチ ユニットエコノミクス タクシー供給戦略 広告効果測定
  3. © GO Inc. 6 今日はGISや因果推論を活用した事例 § 『GO』が保持する位置情報データをGIS(地理情報シス テム)で処理し、時には因果推論を使って課題を解決 © kepler.gl

    © Mapbox © OpenStreetMap cotributors 佐竹さん GISでできるビジネス分析 秋月さん 因果推論とGISを マーケティング分析に活用
  4. © GO Inc. 8 自己紹介 GO株式会社 AI技術開発部 分析グループ / 佐竹

    功次 メーカー、受託分析会社にて、クライアントのデータ分析に基づく意思決定支援 に従事。 2022年にGO株式会社(旧・Mobility Technologies)に中途入社し、タクシー アプリ『GO』のユーザー分析、施策効果の検証などの業務を担当。ビジネスの 意思決定支援のための機械学習の活用や統計的因果推論への関心が高い。
  5. © GO Inc. 9 タクシーアプリ『GO』のビジネス課題とは? § ある場所と時間にどの程度タクシーがあれば良いか? タクシーに乗れる比率の改善 § 駅周辺でタクシーが捕まり、アプリ利用が多い場所はどこか?

    駅周辺の引き込みスポットの設置 § 特定の施設付近でアプリ利用があったのか判別したい 屋外広告によるアプリ利用促進の効果検証 などなど、時空間の情報を組み合わせて取り扱うことが多いです
  6. © GO Inc. 10 GISについて § 地理情報システム GIS:Geographic Information System

    o 地理的位置を手がかりに、位置に関する情報を持ったデータ(空 間データ)を総合的に管理・加工し、視覚的に表示し、高度な分 析や迅速な判断を可能にする技術 出典:GISとは・・・ | 国土地理院 (gsi.go.jp) 言い換えると 時間や場所の情報を地図上に可視化することで、 場所同士の関係性や違いをよりわかりやすく
  7. © GO Inc. 11 タクシーアプリ『GO』とGISデータ § タクシーアプリ『GO』で取り扱うGISデータ o タクシーの位置情報 o

    ユーザーがタクシーを呼んだ場所 o 道路や交差点など o タクシーの営業エリア o etc.
  8. © GO Inc. 12 アジェンダ § GISデータの表現方法 o 行政区ポリゴン、地域メッシュ、H3など目的に合わせた表現 o

    『GO』の分析ではH3を重視 o 『GO』ではH3をBigQueryで利用 § BigQueryを用いたGISデータ処理 § 可視化の方法 o 『GO』ではH3が利用できるkepler.glを重視 § 事例紹介 o 事例1:タクシーに乗れる比率の改善 o 事例2:駅周辺の引き込みスポットの設置 § まとめ
  9. © GO Inc. ポイントデータ ラインデータ 14 GISデータの表現方法 行政区ポリゴン H3 地域メッシュ

    © kepler.gl © Mapbox © OpenStreetMap cotributors (x, y) (x1, y1) (x2, y2) ポリゴン(面)データ (x1, y1) (x2, y2) (x3, y3) GISデータの基礎表現 ポリゴン、メッシュ、H3で区分し地図上に表現 出典: ・『GO』アプリの地理空間データを扱う工夫 ・H3 | kepler.gl
  10. © GO Inc. 15 GISデータの表現方法 ポイントデータ ラインデータ 行政区ポリゴン H3 地域メッシュ

    © kepler.gl © Mapbox © OpenStreetMap cotributors (x, y) (x1, y1) (x2, y2) ポリゴン(面)データ (x1, y1) (x2, y2) (x3, y3) GISデータの基礎表現 ポリゴン、メッシュ、H3で区分し地図上に表現 出典: ・『GO』アプリの地理空間データを扱う工夫 ・H3 | kepler.gl GISデータを利用する際、ポイントやラインは利用しづらい • データサイズが大きくなる • 可視化した際に見づらい • ある地域のアプリの利用傾向を把握したい、などの統計分析に向かない 分析では、ポリゴン、メッシュ、H3など、利用しやすい表現で取り扱う
  11. © GO Inc. 16 行政区ポリゴン § 都道府県や市区町村などを行政区画別に表現 o 対象は全国 o

    国土数値情報 | 行政区域データからダウンロード o Shapefile形式※等で提供 o 以下の用途などで利用 § 配車エリアの判定 § 市区町村別の需給集計 § etc. © kepler.gl © Mapbox © OpenStreetMap cotributors ※形式の詳細は以下参照 https://www.zenrin.co.jp/product/article/Shapefile-benefits/index.html
  12. © GO Inc. 17 H3(Hexagonal hierarchical geospatial indexing system) §

    Uber社開発の地理空間インデックスシステム o グリットを六角形で分割 § 近接するグリットの中心までの距離が均等 § 四角形で分割する場合と比較し、エリア特性を均一に評価できる 出典: https://h3geo.org/ https://www.uber.com/en-JP/blog/h3/ 四角形で分割 六角形で分割
  13. © GO Inc. 18 『GO』の分析ではH3を重視 § H3を重視する理由 o 近接するグリットの中心までの距離が均等 §

    グリット間やエリア特性を均一に評価できる § タクシーの移動をデータで扱う場合の距離等を求める時に適当 o 分析用途に応じてグリットの大小をきめ細かく変更できる § 地域メッシュと比較し、サイズ変化がきめ細かい § 階層構造でサイズを0〜15まで変更可能 上記含め、その他の理由は以下を参照: 『GO』アプリの地理空間データを扱う工夫 p24「『GO』でのH3の活用」
  14. © GO Inc. 21 BigQueryの地理関数(Geography functions) § 緯度経度のパラメータからポイントやラインを作成 § GEOGRAPHYと呼ばれる空間データ型を取り扱う

    参考:https://cloud.google.com/bigquery/docs/reference/standard-sql/geography_functions • ST_GEOPOINT 経度と緯度のパラメータからポイントを作成し、 GEOGRAPHY型で返す • ST_DISTANCE 2 つのGEOGRAPHYの間の最短距離をメートル単位で返す ST_GEOGPOINT(longitude, latitude) ST_DISTANCE(geography_1, geography_2[, use_spheroid]) geography_1 geography_2 距離d[m] geography ポイント 複数のGEOGRAPHY型の値を他のパラメータとして利用
  15. © GO Inc. 22 H3の変換を行うUDF(ユーザ定義関数) § CARTO社がBigQueryでH3の処理を行うUDFを公開 参考:https://docs.carto.com/data-and-analysis/analytics-toolbox-for-bigquery/sql-reference/h3 SELECT `carto-os`.carto.H3_FROMLONGLAT(-3.7038,

    40.4168, 4); -- 84390cbffffffff ←h3インデックス • H3へ変換 H3_FROMLONGLAT H3_FROMLONGLAT(longitude FLOAT64, latitude FLOAT64, resolution INT64) → h3index STRING 緯度経度のFLOAT64と指定したresolution(0〜15)からh3インデックスを返す • 境界ポリゴン H3_BOUNDARY H3_BOUNDARY(h3index STRING) → shape GEOGRAPHY H3インデックスから、境界のポリゴンを返す サンプルはリージョンがUSの場合 SELECT `carto-os`.carto.H3_BOUNDARY('84390cbffffffff'); -- POLYGON((-3.57692743539573 40.6134385959352 … ※BigQueryのUDFとしてSQLまたはJavascriptなどが提供されている
  16. © GO Inc. 24 可視化方法 § 有料で使えるツール o ArcGIS o

    ZENRIN GIS § 無料で使えるツール o QGIS o Kepler.gl § BigQueryと連携して利用 o BigQuery Geo Viz o Looker Studio タクシーアプリ『GO』の分析において、H3のセル単位でそのまま可視化で きる等の理由からkepler.glを用いるケースが多い 参考:https://cloud.google.com/bigquery/docs/geospatial-visualize?hl=ja
  17. © GO Inc. 25 kepler.glを用いた可視化 § Uber社開発の地理情報可視化ツール § H3インデックスをカラムとして渡すことで可視化できる §

    Jupyter Notebookでコードベースの可視化もできる 出典:https://docs.kepler.gl/docs/keplergl-jupyter © kepler.gl © Mapbox © OpenStreetMap cotributors Jupyter Notebookでの可視化例 右図で利用したcsvデータ H3インデックスのカラム
  18. © GO Inc. 26 kepler.glを用いた可視化 § 時間推移のアニメーションも簡単に作成できる o GOで見たい情報 §

    タクシーの動き § 局所的な需要 § etc. © kepler.gl © Mapbox © OpenStreetMap cotributors
  19. © GO Inc. 28 事例1:タクシーに乗れる比率の改善 § いつどこでタクシーが足りないのか、アプリで配車できるタクシーが どの程度あればタクシーに乗れる比率が改善するか? • 例えば通勤時などにタクシーが乗りづらい傾向

    • 局所的に乗りづらい場所も可視化により特定できる タクシーに乗れる比率をH3ごとに算出 (赤色になるほど乗りづらい場所) タクシーに乗れる比率の目標に対して、アプリで配車 できるタクシーがどの程度必要か※を推定 ※タクシーの営業可能なエリア全体での車両数 © kepler.gl © Mapbox © OpenStreetMap cotributors
  20. © GO Inc. § 駅周辺ではタクシーアプリ『GO』での配車禁止エリア※があります § 一方で利用者も多いため、配車禁止エリアに引き込みスポット設置 し、タクシーに乗れるユーザーも増加! 30 事例2:駅周辺の引き込みスポットの設置

    © kepler.gl © Mapbox © OpenStreetMap cotributors 可視化その2 配車依頼数が多い場所を可視化し、利用が多く、タクシーが 捕まりやすい場所に引き込みスポットを設置 緑点が濃く集まっている 箇所が利用が多い 可視化その1 配車禁止エリアでの利用判定のため、 エリア判定のポリゴンを可視化 黒枠が配車禁止エリア ※タクシー乗り場などに対し各駅ごとに独自ルールがあり、 それらに配慮して禁止エリアを設定
  21. © GO Inc. 31 まとめ § タクシーアプリ『GO』ではGISを用いることで解決でき る課題が数多くあります o GISをBigQueryを用いて加工し、H3インデックスで可視化

    課題 GISの活用方法 事例1:タクシーに乗れる比率の改善 特定の地域における需要量と乗れない比率 を可視化し、必要台数を地域別に推定 事例2:駅周辺の引き込みスポットの設置 駅周辺でタクシーが捕まりやすい場所を可 視化し、引き込みスポットとして設定
  22. © GO Inc. 03 | 32 © GO Inc. 因果推論とGISを

    マーケティング分析に活用
  23. © GO Inc. 33 自己紹介 GO株式会社 AI技術開発部 分析グループ / 秋月

    達樹 工場勤務から海外駐在を経験したのち、SIerと広告事業においてデータ分析や機 械学習エンジニアリングを担当。 2021年4月にGO株式会社(旧・Mobility Technologies)に中途入社し、タクシ ーアプリ『GO』のユーザー、乗務員に関する分析や施策効果の検証、経営上の 意思決定に関与する分析業務を担当。組織・個人の抱える課題や仮説をデータに よって定量化する手法に関心をもつ。
  24. © GO Inc. 34 事例紹介 § 屋外広告を設置しその施設周辺でのアプリ利用回数がどのぐらい増えたのか を分析した時の事例を紹介 屋外広告設置後 屋外広告設置前

    屋外広告を設置したことで利用回数が◯件増えた! この時のアプリ利用回数への影響を定量的に推定したい。
  25. © GO Inc. 35 分析上考慮しなければならないこと § 広告が与えるアプリ利用回数への影響(効果量)を計測する場合 単純な前後比較をすると誤った解釈をしてしまう可能性がある 広告設置開始 時間経過

    若干上がっているように見えるが、 広告の影響以外にも天気やイベント、 公共交通の影響等の影響を受けてい る可能性がある アプリ利用回数
  26. © GO Inc. 36 分析方針について § 屋外広告を設置する施設と類似する施設を探し比較対象施設を設定 § 類似とは施設の規模、施設周辺でのアプリの利用回数が近く、施設同士が近くに存在する事 §

    広告設置施設と比較対象施設での利用回数を比較して効果量を推定する 広告設置 施設 比較対象 施設 前後差分 屋外広告設置前 屋外広告設置後 100件 100件 105件 120件 この差分を効果量 として推定したい +20件 +5件
  27. © GO Inc. 37 DID(差分の差分法)で効果量を求める § 広告設置をしなかったら比較対象施設と並行に推移をする仮定 (並行トレンド仮定)を置いて効果量を推定する § DIDは重回帰の交互作用項の係数として効果量を求めることができる

    y = β! + β" T + β# S + β$ (T ( S) + ϵ 介⼊ : 広告設置施設 コントロール : ⽐較対象施設 アプリ利用回数 時間経過 広告設置開始 (介入) 推定したい 効果量 介入群の介入がなかった場合の推移をコントロール 群の推移を参考に想定値を作る。 実際の値と想定値の差分を推定することで効果量を 表現する。
  28. © GO Inc. § statsmodelsを利用することで係数と95%信頼区間を取得する事ができる 38 DIDを実行する事で得られる結果 ⽇付 Unit(施設名) 結果(y)

    2024-05-20 A 10 2024-05-21 A 15 2024-05-20 B 20 # Import Package import pandas as pd import statsmodels.api as sm ## 広告設置後のデータにフラグを立てる df[‘b1'] = (df.ts_day >= '2024-05-21').astype('int’) ## 広告設置施設にフラグを立てる df[‘b2'] = (df.unit == 'A').astype('int') ## 広告設置後 * 広告設置施設の交互作用項を作る ## この特徴量で出てくる回帰係数が効果量となる df[‘effect'] = df.b1 * df.b2 ## 線形回帰を実行する x = df.loc[:,[‘b1’,b2’,effect’]] x = sm.add_constant(x) y = df.loc[:,['y']] model = sm.OLS(y, x) res = model.fit() 0 1 2 3 4 5 推定結果 効果量の推定 結果の可視化 95%信頼 区間 上限 : 3.64 下限 : 1.44 係数 : 2.54 真の効果量は分からないため区間推定をした上で 有意差の判定や分析結果の解釈を行う必要がある
  29. © GO Inc. 39 分析手順 ①データ集計 ②設置前効果検証 ③設置後効果検証 GISポリゴンを準備しデータ を集計する

    得られる効果の頑健性をチ ェックする 広告設置による効果を推定 する
  30. © GO Inc. 40 分析対象となるポリゴンの設定 § 施設周辺のアプリ利用を捕捉するためにGISポリゴンを設定する Kepler.glで必要な範囲のポリゴンを マウス操作で定義 SELECT

    ST_GEOGFROMGEOJSON( """{ 'type': 'Polygon’, 'coordinates': [ [ [139.76475767054816,35.68167989557063], [139.76899624307535,35.68062531715443], [139.76982359206661,35.681793623782255], [139.76899624307535,35.68221751841838], [139.76959448003805,35.68392341308572], ... ] ] }""" ) AS polygon 設定したポリゴンのGeometry情報を BigQueryで取り扱えるように変換 selectツールの機能を使って集計対象とし たい範囲の頂点を選択しポリゴンを設定 © kepler.gl © Mapbox © OpenStreetMap cotributors ①データ 集計 ②設置前 効果検証 ③設置後 効果検証 ※…実際の広告設置場所ではありません 緯度経度を調べてpolygonを作る必要がなく geojsonを貼り付けるだけで作業が終わる Google earthやgoogle mapなどでも 同様のことができるが、自社データとの 相性が良いためkeplerを利用する
  31. © GO Inc. 41 ポリゴンを利用したデータ集計 § アプリ利用時の位置情報データと作成したGISポリゴンを利用して アプリ利用データを集計 範囲内のアプリ利用を特定 アプリ利用回数を集計

    Geography関数を利用して、設定したポ リゴン内に含まれるアプリ利用を特定 範囲内のアプリ利用回数を集計し以降の 分析に利用する © kepler.gl © Mapbox © OpenStreetMap cotributors アプリ利用回数 時間経過 ①データ 集計 ②設置前 効果検証 ③設置後 効果検証 ※…実際の広告設置場所ではありません
  32. © GO Inc. 42 プラセボ検証 § 屋外広告を設置していない期間のデータでDIDによる効果推定を実施 § 設置していない期間の効果量を推定すると得られる結果は0に近しくなる §

    このような検証を一般的にプラセボ(プラシーボ)検証と呼ぶ アプリ利用回数 時間経過 広告設置開始 A’ A • A’とAの期間を利用してDIDの効果 推定を実施(プラセボ検証) • プラセボ検証の結果が0に近いと、 実際の効果推定で出てくる結果の頑 健性が高いことが分かる プラセボ検証期間 ①データ 集計 ②設置前 効果検証 ③設置後 効果検証
  33. © GO Inc. 43 プラセボ検証の結果 § プラセボ検証による推定効果量は0に近い値が得られた § 実際の推定時に得られる結果の頑健性が高いことが分かった -0.3

    -0.05 0.2 0.45 プラセボ検証で得られた結果 推定効果量 : 0.143 95%信頼区間 : -0.177 ~ 0.463 プラセボ検証による結果は0に近い値が出てきた 実際の効果推定時に得られる結果の頑健性が高い ことが期待できる。 (実際のプラセボ検証は期間をズラして複数回実施 することが推奨される) ※…数字はダミーです 上限 : 0.468 下限 :-0.182 係数 : 0.143 ①データ 集計 ②設置前 効果検証 ③設置後 効果検証
  34. © GO Inc. 44 広告効果の推定 § 広告設置をした期間のデータを利用して広告効果の効果検証を行う アプリ利用回数 時間経過 A

    B ①データ 集計 ②設置前 効果検証 ③設置後 効果検証 ・AとBの期間を利用してDIDの効果推定 を実施 ・広告による効果がある場合、推定結果 は0より大きくなる 広告設置開始 プラセボ検証期間
  35. © GO Inc. 45 広告効果の推定で得られた結果 § 広告効果は大きくポジティブな影響がある結果にはならなかった § 下限信頼区間が0を下回っており分析結果が有意であるとは言い辛い -0.3

    -0.05 0.2 0.45 広告効果の推定で得られた結果 推定効果量 : 0.162 95%信頼区間 : -0.127 ~ 0.451 広告効果の推定結果は有意に効果があったとは言 い辛い、DID以外にもいくつかの手法を利用して 同様の推定を行ってみたが結果としては同じよう な内容となった。 ※…数字はダミーです 上限 : 0.451 下限 :-0.127 係数 : 0.162 ①データ 集計 ②設置前 効果検証 ③設置後 効果検証