Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

プロモーションのポートフォリオ最適化をしてみる

More than 1 year has passed since last update.

ドコモ先進技術研究所アドベントカレンダー6日目の記事です。

ドコモの佐藤と申します。この記事では,企業のプロモーションを支援するツールが普及していく中で新たに生まれてくるんじゃないかという課題を取り上げ,その解決方法を考えていく上で金融工学の知見が活用できないかなと,ふと思ったことをつらつらと書かせていただきます。調べが足りていないところや,雑な話になっているところもありますがご容赦ください。

マーケティングオートメーション

 ここ数年,マーケティングオートメーションツール(MAツール)の宣伝を目にする機会が増えています。MAツールとは,企業のプロモーション活動において,人手で行われていた典型的な業務などを自動化し,効率を高めるソフトウェアのことです。代表的な機能としては,あらかじめプロモーションのシナリオを設定し,ユーザの情報やユーザがとったアクションに応じて,広告配信の媒体やクリエイティブを切り替えていくものがあります。例えば,下図のプロモーションシナリオのイメージですと,40代男性のセグメントにはまずメールを送り,メールを開封かつメール内のURLをクリックした場合はWebディスプレイ広告を,メール未開封の場合にはアプリからPUSH通知を配信するといった感じです。このように,MAツールを利用することで,ターゲットユーザおよびそのアクションごとに媒体やクリエイティブを切り替えて,きめ細やかなマーケティングを実施することができます。


MAのイメージ_r2.png

マーケターが直面するかもしれない課題

 MAツールを活用すればプロモーションシナリオの細分化により広告効果が期待できますが,その半面,個々のシナリオに設定できるユーザ数が少なくなってしまう都合上、得られる結果の信頼性が乏しくなってしまいます。例えば,プロモーションの結果として以下のようなClick Through Rate(CTR)とその信頼区間が得られたとします。CTRけ見ると「ターゲット:40代男性,媒体:メール,クリエイティブ:B」のシナリオは良さそうですが,信頼区間まで考えて他シナリオと比較すると,次回のプロモーションをこのシナリオ一択にするのは足踏みしてしまいそうです。さらにシナリオの数が増えていくと,どのシナリオが効果的か見極めが難しくなってくるのではないでしょうか?マーケターの方がプロモーションのPDCAを回す際,こういった意思決定が難しい場面に直面するのではないかと想定し,以降,解決方法を探っていく上での参考までにアプローチの一案を述べていきます。

ターゲット 媒体 クリエイティブ  CTR  CTRの信頼区間
40代男性 メール A 1.0% ±0.5%
40代男性 メール B 2.0% ±1.0%
40代男性 アプリPUSH C 1.5% ±0.3%
40代男性 アプリPUSH D 1.0% ±0.2%

現代ポートフォリオ理論によるアプローチ

 プロモーションの効果には,どうしたって不確実性がつきものかと思います。今回良い結果が出たシナリオが,次も良い結果になるとは限りません。そういった意味で,プロモーションは証券などの投資にも似ているところがあり,複数のシナリオをもとに広告配信を実施することは,ポートフォリオを組んでいるようにも見えます。そこで,少し強引&話が飛んでいますが,結果のバラつきが想定される個々のシナリオを投資商品に見立て,ポートフォリオ最適化を行うことで前述の課題を解決していくことを考えてみます。ポートフォリオ最適化で有名なのは,1990年に経済学者Harry Max Markowitzがノーベル経済学賞を受賞した現代ポートフォリオ理論です。この現代ポートフォリオ理論を参考に,次回のプロモーションでどのシナリオにどれくらい配信すべきかという問題を解くことを試みます。

Markowitzモデル

 現代ポートフォリオ理論の基本的なポートフォリオ最適化方法としてMarkowitzモデルがあります。Markowitzモデルとは,投資家が要求する期待収益率を達成するポートフォリオの中で,最も収益率の分散が小さくなるものを決める方法です。ここで,数式で表現するため,$n$個の金融資産でポートフォリオを組む状況を考えます。金融資産$i (i=1...n)$への投資比率を$w_{i}$とすると,$\sum_{i=1}^{n} w_{i}=1$です。リターンについて,金融資産$i$の収益率を$R_{i}$とすると,ポートフォリオ全体の収益率$R_{p}$は以下となります。
$$R_{p}=\sum_{i=1}^{n} w_{i}R_{i}$$
リスク(分散)については,金融資産$i$の標準偏差を$\sigma_{i}$,金融資産$i$と金融資産$j$の収益率の相関係数を$\rho_{ij}$とすると,ポートフォリオ全体の収益率の分散$\sigma_{p}^2$は以下のように表わされます。
$$\sigma_{p}^2=\sum_{i=1}^{n}\sum_{j=1}^{n}w_{i}w_{j}\rho_{ij}\sigma_{i}\sigma_{j}$$
Markowitzモデルでは,収益率がある値(ここでは$R_{th}$とします)以上になるような制約条件を前提とし,ポートフォリオ全体のリスク(分散)を最小化をするような金融資産の投資比率を求めます。すなわち,以下の最小化問題を解いていきます。
$$min. \ \sigma_{p}^{2}\
\qquad s.t. \quad R_{p}\geq R_{th},\quad \sum_{i=1}^{n} w_{i}=1,\quad w_{i}\geq0\ (i=1...n)
$$

一例として実験

 具体的なイメージのため,公開されている匿名企業の広告配信結果のデータをもとに,計算例を示していきます。

データ準備

 kaggleで公開されているSales Conversion Optimizationというデータセットを対象とします。このデータセットは,匿名企業によるSNS広告の配信結果で,広告IDごとにインプレッション数やクリック数およびコンバージョン数などが格納されたものです。このデータセットをキャンペーンID・ユーザの性別ごとに集計すると,以下のようになります。

scenario xyz_campaign_id gender Impressions Clicks Total_Conversion Spent CTR CVR CPA
1 916 F 197081 52 20 69.85 0.000264 0.38462 3.493
2 916 M 285844 61 38 79.86 0.000213 0.62295 2.102
3 936 F 6290206 1633 302 2380.36 0.000260 0.18494 7.882
4 936 M 1837981 351 235 513.01 0.000191 0.66952 2.183
5 1178 F 108375560 22193 1322 32052.41 0.000205 0.05957 24.245
6 1178 M 96448156 13875 1347 23609.74 0.000144 0.09708 17.528

 項目の説明のため,Sales Conversion Optimizationに記載された内容を転記します。

xyz_campaign_id: an ID associated with each ad campaign of XYZ company.
gender: gender of the person to whim the add is shown
Impressions: the number of times the ad was shown.
Clicks: number of clicks on for that ad.
Spent: Amount paid by company xyz to Facebook, to show that ad.
Total conversion: Total number of people who enquired about the product after seeing the ad.

また上の表は,あらかじめデータセットにあった項目の他,効果測定でよく使われる指標としてCTR,Conversion Rate(CVR),Cost Per Acquisition(CPA)を計算してあります。計算方法はそれぞれCTR=Clicks/Impressions,CVR=Total conversion/Clicks,CPA=Spent/Total conversionです。CTRとCVRを見ると,scenario.2とscenario.4に投資したいところですが,scenario.2は件数が少ないのが気になるし,男性だけに配信するのも気になるしで,次のプロモーションでどのscenarioにどれくらいの割合でユーザを設定すべきかは,自明には定まらないのではないのではないかと思います。

Markowitzモデルの適用

 上述のデータについてCTR×CVRを「期待獲得率」とし,その14日分の平均,標準偏差,相関係数をそれぞれMarkowitzモデルの収益率$R_{i}$,$\sigma_{i}$,$\rho_{ij}$とみなして計算すると,下記表のようになります。実務で同じようなことをやる際は,目標CPAや配信可能数といった制約を加味したり,目的関数が変わってきたりすることなど考えられますが,今回は単純にMarkowitzモデルを適用してみます。標準偏差や相関係数を求めるサンプル数が少ないことや,1日あたりのコンバージョン件数が少ないことに抵抗もありますが,まずは動きを確認していくため手続きを進めます。

scenario 期待獲得率 標準偏差 相関係数vs.1 相関係数vs.2 相関係数vs.3 相関係数vs.4 相関係数vs.5 相関係数vs.6
1 0.000230 0.000244 1.0000 0.21976 0.15209 -0.1770 -0.29034 0.17917
2 0.000151 0.000077 0.2198 1.00000 -0.11095 -0.4748 0.01683 0.26947
3 0.000056 0.000028 0.1521 -0.11095 1.00000 -0.3145 -0.10922 0.04412
4 0.000207 0.000140 -0.1770 -0.47476 -0.31454 1.0000 -0.30154 -0.39635
5 0.000012 0.000003 -0.2903 0.01683 -0.10922 -0.3015 1.00000 -0.02869
6 0.000014 0.000003 0.1792 0.26947 0.04412 -0.3963 -0.02869 1.00000

 上記表の値をMarkowitzモデルに代入します。$R_{th}$はパラメータとして変化させ,それぞれの$R_{th}$についてMarkowitzモデルを求解してポートフォリオを求め,その標準偏差を取得します。そして「期待獲得率」と標準偏差の関係をプロットし,ポートフォリオ選択の参考として使われる効率的フロンティア曲線を下図のように描きます。「期待獲得率」が高くなるようにしていけば,標準偏差も大きくなっていく関係が見て取れます。標準偏差が小さく「期待獲得率」が大きいポートフォリオ,すなわち下図の左上ほど効率の良いポートフォリオですが,「効率的フロンティア曲線」を超えるようなポートフォリオは存在しません。また,効率的フロンティアを下回るポートフォリオは合理的ではありません。
効率的フロンティア曲線.png

 例として,下図の3つのポートフォリオを見てみます。Aはすべてのscenarioに同じ投資比率を設定する「当配分ポートフォリオ」,Bは少し賢く投資比率を設定するものとして$w_{i}=R_{i}/\sum_{i=1}^{n}R_{i}$とする「期待獲得率に応じたポートフォリオ」,Cは効率的フロンティア曲線上の「効率的なポートフォリオ」とします。効率的フロンティア曲線の図上にプロットすると,それぞれ点A,B,Cのようになりますが,A,Bは効率的フロンティア曲線を下回っているため合理的ではありません。Bの「期待獲得率に応じたポートフォリオ」を選ぶのであれば,期待獲得率が同程度で標準偏差の低いCの「効率的ポートフォリオ」を採用した方が良い場合もあるでしょう。少し定量的には,点Bの「期待獲得率」と標準偏差との差は0.018-0.0060=0.012[%]なのに対し,点Cは0.017-0.0033=0.014[%]となるため,点Cの方が「期待獲得率」が低くなりすぎることはなさそうです。このように効率的フロンティア曲線を描き,許容できるリスクを考慮しつつ最大のリターンを発揮するポートフォリオ選択方法は,プロモーションの意思決定においても参考になるところかなと考えています。

ポートフォリオ群.png

最後に

 MAツールを使うことで細かいセグメントに合わせたプロモーションが容易となりますが,効果が期待できる反面,次にどのシナリオをどのくらい使うべきか見極めが難しくなるのではと考えています。そこで,マーケターの意思決定を支援する方法を考えていく上で,現代ポートフォリオ理論が参考にならないかなと思い,Markowitzモデルとプロモーション結果に当てはめた計算例を紹介させていただきました。そのままMarkowitzモデルを当てはめていくことは適切ではないと思いますが,結果の分散を考慮することや,効率的フロンティア曲線に基づくポートフォリオ選択方法などは,プロモーションのPDCAを回す上で参考になるのではないかと考えています。最後に念のため,ドコモの商材のプロモーションがこの記事の内容で行われている訳ではありませんのでご承知おきください。

参考文献

nttdocomo-tech
NTTドコモ R&DのOrganaizationアカウントです。 自然言語処理,画像処理,ビッグデータ解析,機械学習,クラウド,IoT,無線通信など幅広いトピックを扱う予定です。
https://www.nttdocomo.co.jp/corporate/technology/rd/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away