未来の口コミ件数はAIで予測できるのか
目次[非表示]
AIを使って未来の口コミ件数を予測することはできるのでしょうか。
今回は時系列予測AI「Prophet」を使って、Twitterの口コミ量を予測してみます。
来月「ビール」とつぶやかれる件数を予測したい
今回やりたいことは、過去のツイート件数から未来のツイート件数を予測することです。
季節性がある程度ありそうで、キャンペーンやノイズが少なそうなワードとして、今回は夏に投稿が増えそうな「ビール」という言葉を対象としてみたいと思います。
予測に使うデータは、過去10年分のTwitterの日時投稿件数とします。
当ブログの執筆時は2021年5月なので、2021年4月までのデータを元に、予測する期間を2021年5月以降と設定し、実際にどれくらい当たっていたか改めて振り返って検証してみたいと思います。
予測に使うモデル「Prophet」
「Prophet」はFacebookが開発した時系列予測モデルです。
ProphetはPythonやRで実装可能で、Pythonなら下記4行ほどのコードで実装できてしまう非常にシンプルかつ強力な予測ツールです。
神ツールExploratoryでノンプログラミング実装
このProphetですが、データ分析をするための神ツールExploratoryを使うとコーディングも一切必要なく、あっという間に分析できてしまいます。
Exploratoryは無料で使うことができ、データ前処理やグラフなどの可視化だけでなく、機械学習の学習や予測といったプロセスまで一気通貫で実装できてしまう凄いツールです(しかも軽い)。
過去10年間の投稿件数を確認する
今回は「ビール」を検索対象とし、リツイート数などは予測するのが難しいと思われるため、通常の投稿とメンションのみを対象にしていきます。
また企業キャンペーンツイートなどを省き、ある程度純粋な投稿に絞りたいのでハッシュタグを含む投稿は除外対象にしておきます。
日別集計
日別投稿件数を見てみると周期性が確認でき、なんとなく予測できそうなデータであることが分かります。
週次集計
週次で見るとより傾向が分かりやすくなります。
外れ値を確認する
細かく見ていくと、ところどころ急上昇しているスパーク箇所が見受けられます。
2020年1月のスパーク箇所を調べてみると、当初開催予定であった2020年のオリンピックに向けて、アサヒビールさんが怒涛のメンションツイートを実施しておりこのようなグラフになったことが分かりました。
そのため、下記のビールメーカーの投稿を除外した上で、再度集計していきたいと思います。
@asahibeer_jp @Kirin_Brewery @asahibeer_jp @SapporoBeer @PremiumMalts_jp
日時を修正
Twitter APIは日時指定ができますが、日本時間ではなくUTC(協定世界時)が基準となっています。そのため、デイリーデータで投稿件数を取得しようとすると9時間の時差が発生してしまいます。
Prophetでは祝日やイベントなどを加味した分析が可能なため、この9時間の時差が意外と予測誤差に影響を与えてしまうかもしれません。
実際に毎年大晦日の夜7時頃にツイート件数が急増していることが分かりました。
Twitterの投稿件数(count endpoint)には、"day", "hour", "minute"の3種類の時間単位が選べますが、hourで取得した後に9時間ずらすという処理が必要かもしれません。
Prophetで予測
今回誤差指標としては、直感的に分かりやすいMAPE(平均絶対パーセント誤差)を使用していきます。MAPEはある日のツイート数が10,000件だったときの予測値が8,500件の場合、誤差15%という数値が算出されます。
10年間の日時投稿数で学習と予測を実施
青線が実データで、オレンジの線が予測した数値です。年間周期をうまく捉えることができているかと思います。
2020年5月~2021年4月のデータで検証
直近の1年間365日を検証データとして、誤差を算出すると約10%の誤算(MAPE:0.10222695427)となりました。
誤差が10%であれば、このままでもある程度使えそうですが、より精度を上げるためデータを追加していきます。
気象データを追加する
暑い日には「ビール飲みたい!」とツイートされる回数が増えそうな気がします。そこで、学習データに気候データを加えてみて精度が上がるかどうかを検証してみます。
気象データは気象庁のサイトからダウンロードすることができますが、Exploratoryには天候データを一括で取得することもできます。
今回は成田空港で観測された日次の気候データを使って学習データに追加して予測したところ、MAPEが0.091485995447まで改善されました。
気温よりも体感温度が重要?
ここまで気温などの実データで予測を立ててきましたが、実際ビールが飲みたくなるのは気温よりも体感温度(風速や湿度も影響)が重要な気もしてきます。
体感温度はミスナール式といったものなど色々とあるようですが、一例では下記のような式で求められるようです。
体感温度=37 - ( 37 - 気温 ) / ( 0.68 - 0.0014 × 湿度 + 1 / (1.76 + 1.4 × 風速^0.75 ) ) - 0.29 × 気温 × ( 1 - 湿度 / 100 )
この体感温度を特徴量に追加したところMAPEがわずかに改善し、0.091063497067という結果になりました。
MAE(平均絶対誤差)は1,930ほどなので、1日の予測誤差が約2,000件程で、誤差1割未満に収まる計算です。
重要度を可視化
特徴量の重要度
各種気候データが実際にどの程度予測に影響しているかを表す重要度を確認したところ、投稿と相関性の高い変数は、「気温」「週の周期」「露点温度(水分量)」「体感気温」「年周期」という結果となりました。
やはり気温だけでなく、湿度情報なども影響しているようです。
「ビール」はどのタイミングで投稿されやすいのか
投稿数は季節によって変動していたようです。そこで季節ごとの周期性をみていきたいと思います。
年周期
まずは年周期から見ていきます。年周期は1年の中でどの日が投稿されやすいかを表します。一番投稿されやすい時期は暑い夏場の7月後半から8月頭にかけてで、次いで6月中旬に増えていることが分かります。
大晦日はビール消費拡大か
また12月で最後上昇しているのは、大晦日に投稿が急増することが影響しているようです。大晦日に実家などでテレビを見ながら、普段ビールを飲まない層などからの投稿が広がっているのかもしれません。
月周期
月周期を見てみると、最も多いのは給料日の25日と月末にかけてで、また14日にも何故か増えている事も見て取れます。
逆に毎月6日や7日は投稿が減る傾向があり、何かしらの要素が影響していると思われます。
週周期
最後に週周期ですが、週末に投稿される傾向が高いことが分かります。
未来の投稿数を予測する
今回は2021年4月30日までの過去10年間の傾向や祝日・大晦日フラグを利用し、2021年5月以降の「ビール」と投稿される数を予測していきます。
ちなみに外部変数となる気温などの気候データは、未来の未知なデータとなるため、予測には直接使えません(このあたりモヤモヤしますが、当日の気温から当日の需要をリアルタイム予測するような場合などに使えるようです)。
また当日でなくても、「誰かの年齢」「記念日」「イベント開催日」などその当日に確定している未来のデータ、もしくは発生確度の高い事象であれば学習モデルに入れられるかもしれません。
気象庁などでは、AIで未来の気温予測データを公開しているのでそのような「未来の気候予測データ」を組み合わせれば、予測精度の改善が期待できるかもしれません。
2021年5月以降の年間「ビール」投稿数予測
実際の予測値が上記グラフのオレンジラインになります。
6月~8月の予測値は下記のような結果となり、MAPEは0.082055344044という結果となりました。(特徴量を減らしたのにMAPEが改善しているのは、2020年の検証データまで学習に使っているからだと思われます。)
日付 |
「ビール」投稿件数予測 |
|
---|---|---|
2021年6月最小値 |
2021/6/21 |
21,500件 |
2021年6月最大値 |
2021/6/5 |
28,405件 |
2021年7月最小値 |
2021/7/5 |
23,385件 |
2021年7月最大値 |
2021/7/31 |
32,496件 |
2021年8月最小値 |
2021/8/7 |
31,854件 |
2021年8月最大値 |
2021/8/30 |
22,432件 |
果たしてどれくらい当たるでしょうか。
ある程度時期が過ぎたら、再度検証していきたいと思います。
次回はこのビールの投稿から地理データを抜き出して分析していきたいと思います。
※当社では広報活動のサポートの他、Twitterのデータ取得や分析、各種ダッシュボード作成などもサポートしています。お問い合せフォームよりお気軽にお問い合せください。
▼合わせて読みたい