catch-img

未来の口コミ件数はAIで予測できるのか


目次[非表示]

  1. 来月「ビール」とつぶやかれる件数を予測したい
  2. 予測に使うモデル「Prophet」
    1. 神ツールExploratoryでノンプログラミング実装
  3. 過去10年間の投稿件数を確認する
    1. 日別集計
    2. 週次集計
    3. 外れ値を確認する
    4. 日時を修正
  4. Prophetで予測
  5. 気象データを追加する
    1. 気温よりも体感温度が重要?
    2. 重要度を可視化
  6. 「ビール」はどのタイミングで投稿されやすいのか
    1. 年周期
      1. 大晦日はビール消費拡大か
    2. 月周期
    3. 週周期
  7. 未来の投稿数を予測する

AIを使って未来の口コミ件数を予測することはできるのでしょうか。

今回は時系列予測AI「Prophet」を使って、Twitterの口コミ量を予測してみます。

来月「ビール」とつぶやかれる件数を予測したい

今回やりたいことは、過去のツイート件数から未来のツイート件数を予測することです。

季節性がある程度ありそうで、キャンペーンやノイズが少なそうなワードとして、今回は夏に投稿が増えそうな「ビール」という言葉を対象としてみたいと思います。

予測に使うデータは、過去10年分のTwitterの日時投稿件数とします。

当ブログの執筆時は2021年5月なので、2021年4月までのデータを元に、予測する期間を2021年5月以降と設定し、実際にどれくらい当たっていたか改めて振り返って検証してみたいと思います。

予測に使うモデル「Prophet」

「Prophet」はFacebookが開発した時系列予測モデルです。

ProphetはPythonやRで実装可能で、Pythonなら下記4行ほどのコードで実装できてしまう非常にシンプルかつ強力な予測ツールです。

import pandas as pd
from fbprophet import Prophet

m = Prophet(df)
m.fit(df)
future = m.make_future_dataframe(periods=30)
forecast = m.predict(future)

神ツール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時間ずらすという処理が必要かもしれません。

import datetime

df["timePriods_jp"] = df["timePriods"] + datetime.timedelta(hours=+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の位置情報を取得し地理別傾向を分析する【ジオタグ分析】 | 広報・PR支援の株式会社ガーオン Twitter上で「ビール」と呟かれたデータを使い地理データを分析してみます。 広報・PR支援の株式会社ガーオン

※当社では広報活動のサポートの他、Twitterのデータ取得や分析、各種ダッシュボード作成などもサポートしています。お問い合せフォームよりお気軽にお問い合せください。


▼合わせて読みたい

  【難解!?】Twitter APIを使って投稿データを収集する方法 | 広報・PR支援の株式会社ガーオン Twitter Search APIを非エンジニアの方にも、なるべく分かりやすく解説し、全体概要や費用などを解説した上で、具体的なデータ取得方法まで解説していきたいと思います。 広報・PR支援の株式会社ガーオン


  【ML-Ask】感情分析AIは実際に使えるのか検証してみる | 広報・PR支援の株式会社ガーオン 朝日新聞の記事にも使われている「ML-Ask」という感情分析モデルを実際に使ってみて検証していきたいと思います。 広報・PR支援の株式会社ガーオン


  朝日新聞の要約AIはヤフートピックスの夢を見るか ~ディープラーニングを用いた令和時代のプレスリリースの作り方~ | 広報・PR支援の株式会社ガーオン 朝日新聞の記事データをもとに開発されたという、ディープラーニングを活用した自動要約生成APIをご紹介します。 広報・PR支援の株式会社ガーオン
  ソーシャルデータから読み解くボヘミアンラプソディの口コミ形成とメディア露出効果 | 広報・PR支援の株式会社ガーオン ボヘミアン・ラプソディの大ヒットにはSNSやテレビはどのような影響を与えていたのでしょうか。YouTubeとの相乗効果も合わせて検証します。 広報・PR支援の株式会社ガーオン
  Amazonの人工知能を使ってSNS等の口コミを感情分析する方法 | 広報・PR支援の株式会社ガーオン アマゾンの自然言語処理サービス Amazon Comprehendを使って口コミを分析してみます。 広報・PR支援の株式会社ガーオン
  【記事に繋がる】プレスリリースの書き方・送り方 | 広報・PR支援の株式会社ガーオン プレスリリースの書き方の”コツ”をPRプランナーがわかりやすく解説します。プレスリリースとはの解説から、7つのポイントや、6W5Hの使い方の他、広報PRにオススメの具体的なツールの紹介や、ヤフーニュースに掲載してもらうポイントを解説します。 広報・PR支援の株式会社ガーオン




関連記事

広報・PRやプレスリリースまわりでお困りのことはございませんか?
多数の企業サポートを行ってきた当社が解決いたします。
お気軽にお問合せください。