AIソリューション開発部が行った分析プロジェクトについて紹介します。
はじめに
2020年新卒2人が配属後に取り組んだプロジェクトについて説明します。入社以降完全リモート環境下で、新卒二人(岩田、平田)が効率よくプロジェクトを進めるためにどう工夫したのかが見所です。
執筆者プロフィール
岩田
- 東京本社勤務
- 2020年 新卒入社(入社2年目)
- 学生時代の専攻は理学(地球科学系)
- AIソリューション開発部
- 得意分野は統計分析
平田
- 兵庫からフルリモートで勤務
- 2020年 新卒入社(入社2年目)
- 学生時代の専攻は計算生物学
- AIソリューション開発部
- 得意分野は深層学習/Web開発
プロジェクトの概要
私たち新卒二人が研修を終え、AIソリューション開発部というAI開発やデータ分析を行う部署に配属されて、最初に担当した仕事が媒体別データ分析(ac data analytics)です。
このプロジェクトは、広告運用の品質向上を目指す部署(運用側、Account Quality Design、AQD)と我々の部署AIソリューション開発部が共同で行うプロジェクトです。データ分析による徹底的な定量化によって、複雑な広告運用データを分析し、広告効果の最大化のために必要な検証を行っていく、広告代理店としては欠かせないプロジェクトです。
プロジェクトのおおまかな進行(下図を参照)は、まずは運用側の普段の経験などから、広告データに関して疑問に思うことなどを参考に検証案を提案します。次に、上がってきた案を我々AIソリューション開発部がデータ分析で検証できる仮説へと直します。ここで、仮説の意図として正しいかなどの確認を十分に行い、データの収集や具体的な分析に取りかかります。分析実施後に、分析結果をまとめた資料を運用側に共有します。分析結果に基づいて、実際の広告運用に活かせる点などを確認した後、広告運用への改善効果が大きそうなものはフィジビリ(実行可能かどうかの調査)を実施します。最後に、フィジビリの結果を参考に、広告配信の運用を行っている部署へ展開するか否かの判断が行われます。このような流れのサイクルを一仮説あたりおおよそ3~4週間の間に行っていきます。
分析例
以下では、私たちが行った検証の内、二つを取り上げて紹介します。
広告表示回数の偏りについての検証
確かめたいこと
web広告では、いくつかの広告がひとまとめとして扱われます。これは広告グループなどと呼ばれます。同じ広告グループの中にいくつかのバリエーションを持たせて配信します。広告代理店側で入稿した広告グループ中の各広告は、媒体側でかならずしも均等に配信されるわけではなく、良い広告に多くの配信機会が割り振られるように自動的に調整されるようになっています。つまり、良い広告と、効果の低い広告に差がある広告グループの場合、良い広告に配信機会が多く割り振られます。今回の検証では、この配信機会の偏りを見て、広告グループ内の効果の低い広告を差し替える適切なタイミングについて明らかにすることが目的です。
検証方法
この仮説検証では、まず「特定の広告に配信機会が偏るとは」という定性的な状態を定量的に測れるように指標の設計を行いました。曖昧だった状態が定量的に測れるようになり、特定の広告に配信機会が偏るという状態が、時間・業種などの様々な軸でどう変わるのかを可視化して検証を行いました。可視化を行った段階で示唆が得られたので、分析結果をまとめて運用側へと報告しました。
結果の概略
この仮説検証を通して、明らかになったことの概要を紹介します。まず、配信機会が偏るまでに要した日数を集計した結果、広告グループの半数は3日以内で、特定の広告に配信機会が偏る傾向が確認できました。このことから、広告配信を開始して数日後に効果の低い広告は積極的に差し替えた方が良いという示唆が得られました。また、広告グループ内でどのくらいの広告クリック率の差があれば、特定の広告に配信機会が偏るのかを、クライアントの業界ごとに算出しました。最後に、仮説検証を通して得られた知見を広告の運用に活かせるようにルール作りに取り組みました。
苦労した点など
本仮説の検証にあたり、苦労した点としては、まずは複雑なインターネット広告の仕組みを理解することでした。新卒研修で広告配信のおおまかな流れについては学んだのですが、実際に運用した経験がないため、運用システム上でどういった名前の数値として表現されているのか把握するのが特に苦労しました。完全リモート体制での作業だったので、疑問点はドキュメントを読むか積極的にOJT(TKN氏)に質問をしました。また、我々の行う分析の統計学的な意味や分析の意図を丁寧に説明するのも大変でした。なお、工夫した点としては後述の分析の再現性やレビュー体制の整備などです。
リスティング広告におけるキーワードの品質スコアについての調査
確かめたいこと
品質スコアとは、キーワード単位で付与される広告の品質の目安の指標のことです。 品質スコアが付与されていると、そうでないキーワードよりも比較的CPC(Cost Per Click、クリックあたりのコスト)が低くつく傾向があり、その付与条件を知ることは重要です。 付与条件を知ることで、運用時のクエリ追加の頻度や量を決定する基準を得られる可能性があります。 そこで今回は品質スコアが付与されるための条件はどういうものであるかを過去の配信データを利用し、調査しました。
検証方法
品質スコアがつくまでの条件として、以下の4つについて統計的な分析を行いました。
- 期間
- インプレッション(Imp)数
- クリック数
- 1日あたりのImp
結果の概略
ここでは具体的な数値について言及しませんが、半数以上は配信を行った1日以内に品質スコアが付与されるという結果となりました。 また、Impやクリックについても、1以上あれば品質スコアが付与されることがわかりました。 品質スコア付与のしきい値となるような指標を得ることは難しいことが明らかになりました。
苦労した点など
弊社のDB上では品質スコアの推移を得ることができなかったため、弊社のデータレイクからAWS Glueを用いて、データセット作成を行いました。 非常に大きなデータであるため、計算に用いるデータ量を減らしたり、計算量を工夫したりと、単なるデータ分析の業務では扱う機会が少ないことに取り組むことができました。
技術的に工夫したところ
以下の分析時のつらみはしばしば見られると思います。
- コードの再利用性が低い。使い捨てのコードになる。
- コードを作者以外が読むことができない。
- コードに関する知見共有ができない。
こういった問題を解決するべく実施されたSDGs的活動が、持続可能な分析
です。
具体的にどのような施策を行ったのか、その一部を紹介します。
コードレビューをする
まずはシンプルに、コードレビューを行いました。 これにより、上記の課題に加えて、要件通りの分析が実装できているのか確認できていないという状況を解決することができます。 業務の性質上、一人で作業することが多いですがコードを介したコミュニケーションを行うことができ、 そういう観点でもとても良い取り組みでした。
.ipynb
を使わない
今回分析結果のアウトプットをGoogleSlidesでビジネス向けに作成する必要があったため、
.ipynb
での出力をどこかに記録する必要はありませんでした。
どんなスクリプトの入力があったかだけ記録できればいいため、Visual Studio CodeのPython Interactive Windowというものを利用しました。
これには以下の利点があります。
- formatやlintの際に、
.py
形式なので既存のライブラリがすぐ使える - GitHubでコードレビューできる
- 差分が少ないのでgitが比較的軽い(
.ipynb
だと数十万行くらい差分が発生したりします😅)
以下のように# %%
を書くと次の# %%
までを1つのセルとしてコードを実行する事ができます。
正式名称はわかりませんが、Visual Studio CodeのドキュメントではJupyter-like code cells
と呼ばれているようです。
# %% msg = "Hello World" print(msg) # %% msg = "Hello again" print(msg)
実行するとPython Interactive Windowが開きそこでコードが実行されます。
次の図は実行の様子です。Variable Inspectorなども標準搭載されています。
https://code.visualstudio.com/docs/python/jupyter-support-py
まとめ
この記事では媒体別データ分析
という広告運用データを用いた分析プロジェクトについて紹介しました。また、分析の内容についても解説し、持続可能な分析を行うための技術的な工夫の一部も紹介しました。
Opt Technologies ではエンジニアを募集中です。カジュアル面談も可能ですので、下記リンク先よりお気軽にご応募ください。