SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

現場のAIエンジニアから学ぶ「時系列データの予測モデルの作り方」

ディープラーニングによる時系列データ予測モデルの問題点を解消する

現場のAIエンジニアから学ぶ「時系列データの予測モデルの作り方」 第4回

  • X ポスト
  • このエントリーをはてなブックマークに追加

 本稿では、NTTテクノクロスでAIエンジニアとして活躍する筆者が、実際にどのようなことを行っていて、どのような苦労があるのかを、実際に動かして試せる「時系列データの予測モデル作成」の題材を通して、4回にわたってお伝えします。最終回となる今回は、これまでに作成した予測モデルを振り返り、時系列データを用いた予測モデルを作成する際に起きやすい問題とその対応方法をお伝えいたします。(編集部)

  • X ポスト
  • このエントリーをはてなブックマークに追加

AIを用いた時系列データ予測-予測モデルの評価

 本連載では、時系列データを用いた予測モデルの作成を題材に、その作成方法を前回まで紹介してきました。

 AIを用いた新規サービス開発におけるPoC(概念実証)において、このように予測モデルをプロトタイプとして作成した際、AIエンジニアには作成した予測モデルが「どのくらい目標としているサービスに適用できそうか」「どのような特徴・問題があるか」「今後どのくらい拡張・改善できそうか」を評価することが求められます。

 連載の最終回となる今回はこれまでに作成した予測モデルを振り返り、時系列データを用いた予測モデルを作成する際に起きやすい問題とその対応方法を、私の経験から紹介します。

時系列データの予測モデルを作成する

 本記事で使用したソースコード、データはGitHubで公開しています。記事中では説明を省略した部分のソースコードと使用したデータがあり、実際にマシン上で動かしてみることができます。

  • 使用したプログラム言語はPython3、ディープラーニング部分にはPythonパッケージのtensorflow/Kerasを使用
  • 各データファイル(CSV)は、政府統計の総合窓口(e-Stat)より「住民基本台帳人口移動報告」「住民基本台帳に基づく人口、人口動態及び世帯数調査」「賃金構造基本統計調査」「工業統計調査」「商用統計調査」を加工して作成

外れ値を予測するときに起きる問題

 第1回で扱った「都道府県ごとの年次転入数を予測するモデル」では、鹿児島県における予測モデルが出力する転入者数の予測値(mig_in_pred)が実際の値(mig_in)を追従している様子から、予測モデルとして成立していると紹介しました。

鹿児島県における予測モデルの転入者数の予測値(mig_in_pred)と実際の値(mig_in)

鹿児島県における予測モデルの転入者数の予測値(mig_in_pred)と実際の値(mig_in)

 それでは、47都道府県のすべてに対して、このような結果になるのでしょうか。以下は東京都の例です。

東京都における予測モデル

東京都における予測モデル

 東京都においては実績値の平均値408,870に対して予測値の平均値24,870と、予測値は実績値を大幅に下回っています。

 以下は都道府県ごとの実績値を箱ひげ図にしたものです。

都道府県ごとの実績値

都道府県ごとの実績値(箱ひげ図)

 飛びぬけて大きな値、つまり外れ値となっているのが東京都です。このことから、データ全体から見て外れ値となる部分を予測することは、予測モデルにとって難しいと考えることができます。

 もう少し都道府県ごとの実績値データを見てみましょう。以下は都道府県ごとの実績値のヒストグラムです。

都道府県ごとの実績値のヒストグラム

都道府県ごとの実績値(ヒストグラム)

 都道府県ごとの実績値は、平均値50,849、中央値26,456となっており、上のグラフの形は右に裾の長い分布となっています。

 実は、年次データの予測モデルでは、東京都以外でも転入者数(目的変数)がある程度大きい都道府県は実績値の大きさに対して予測値がとても小さく、すべての都道府県に対して予測ができているとは言いがたいモデルとなっていました。

 このように、今回題材としたような人の活動や経済的な指標を予測する時系列データ予測では、データの傾向は右に裾の長い分布となることが多く、値が大きく外れ値的な部分の予測が難しい(外れ値について予測値が実績値に対して過少となる)という問題が起きることが多いです。

 このような問題に対する代表的な対応方法として、以下2つを紹介します。

  1. 全体のデータ量を増やすことで、データ量割合が少ない部分もモデルが十分に学習できるようにする。例えば、訓練データの量を5年分から10年分、20年分と増やす。
  2. モデルを分割することで、予測精度を上げたい部分のデータ量割合を増やす。例えば、都道府県ごとに47個のモデルに分割し、東京都のモデルは東京都だけのデータで学習させる。

 ここでは人の活動や経済的な指標の予測では、外れ値に対する予測が難しいことを紹介をしました。この問題は、第2回で紹介した「実績値のピークに対して予測値のピークが追従できていない」という問題と同じ構造です。第2回の「月ごとのデータの偏り」を、今回の「都道府県ごとのデータの偏り」に置き換えられます。このように、問題を同じ構造と捉えることができる場合は、同じ対応方法を試みることができます。

 続いて、時系列データ予測に特有の問題を見てみましょう。

会員登録無料すると、続きをお読みいただけます

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

次のページ
周期的な変動に予測モデルを追従させるときに起きる問題

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
現場のAIエンジニアから学ぶ「時系列データの予測モデルの作り方」連載記事一覧

もっと読む

この記事の著者

阪本 正樹(NTTテクノクロス)(サカモト マサキ)

NTTテクノクロス株式会社 IoTイノベーション事業部 第一ビジネスユニット所属。NTT研究所内でのビッグデータ活用の研究開発に従事し、2012年から顧客企業でのビッグデータ活用、AI技術活用に取組む。NTTテクノクロスでは人にやさしい「みらい」を作るAIファースト活動を拡大中。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/13234 2020/12/18 11:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング