SHOEISHA iD

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

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

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

ディープラーニングを用いた時系列データの予測モデルの作り方

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


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

 本稿では、NTTテクノクロスでAIエンジニアとして活躍する筆者が、実際にどのようなことを行っていて、どのような苦労があるのかを、実際に動かして試せる「時系列データの予測モデル作成」の題材を通して、4回にわたってお伝えします。第1回では、プロトタイプで想定するサービスが作れるかを検証するPoC(概念実証)の辺りをお伝えします。(編集部)

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

AI技術の全盛期到来――その現場で働くAIエンジニアに求められるものは?

 データを活用したさまざまなサービスや技術をAIと称し、今やAIという言葉をニュースで目にしない日はないのではないでしょうか。AIサービス・技術を支えるAI人材の数は全世界で30万人、実際の需要規模は100万人とも言われています。

 一方でサービスや技術を早く世の中に出すというスピード競争とコスト観点から、実際に現場で働くAIエンジニアには、どのようにデータを処理すべきか考えて設計し、コードを実装してデータ処理して結果を出す、という即戦力が求められます。

 本記事では、AIサービス開発に参画するAIエンジニアの仕事例として「時系列データの予測モデル作成」を4回の連載で紹介します。現実の時系列データを集めてきてデータ分析をしようとすると、どのような苦労があるか、私の経験からお伝えします。

時系列データをディープラーニングで予測するモデルを作ってみる

 インターネット上に無料で公開されている政府統計データ「e-Stat」を利用して、ディープラーニングを用いて予測モデルを作ることにします。過去の統計量から、都道府県ごとの現在(または未来)の統計量を予測するモデルとします。

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

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

 このような、サンプルデータを用いてプロトタイプのソースコードを作成し、想定するサービスや技術が作れるかという検証は、AIサービスを開発する初期段階でPoC(概念実証)としてよく行われています。

収集したデータとモデルの設計

 以下のような、人の長期的な動向に関係がありそうなデータを集めてきたとします。

政府統計コード 政府統計名 データ粒度 データ範囲 列数 行数 列内容
0 00000000(※) 都道府県一覧 都道府県 全国 2 47 都道府県(prefecture),都道府県ID(prefecture_id)
1 00200523 住民基本台帳人口移動報告 都道府県* 全国*200504-201908 5 8131 日時(datetime),都道府県(prefecture),転入者(mig_in),転出者(mig_out),県内移動者(mig_internal)
2 00200241 住民基本台帳に基づく人口、人口動態及び世帯数調査 都道府県*年 全国*2000-2019 6 940 日時(datetime),都道府県(prefecture),男性人口(pop_male),女性人口(pop_female),人口合計(pop_sum),世帯数(pop_households)
3 00450091 賃金構造基本統計調査 都道府県*年 全国*2008-2018 6 517 日時(datetime),都道府県(prefecture),労働者平均年齢(wag_age),労働者の平均月給(wag_salary),労働者平均賞与(wag_bonus),労働者人数(wag_workers)
4 00550010 工業統計調査 都道府県*年 全国*2000-2018(欠損年あり) 7 752 日時(datetime),都道府県(prefecture),工業事業所数(idt_offices),工業従業員数(idt_employees),工業給与総額(idt_salaries),工業原材料総額(idt_costs),工業出荷総額(idt_sales)
5 00550020 商業統計調査 都道府県*年 全国*1982-2014(概ね3年間隔) 5 564 日時(datetime),都道府県(prefecture),卸小売事業所数(ret_offices),卸小売従業員数(ret_employees),卸小売商品販売額(ret_sales)

 現実のプロジェクトでは事前に技術開発する目標を定め、目的を表現できるような周辺データを計画的に集めますが、ここでは本記事執筆のために任意に集めました。

 モデルの設計(目標)が、今年の住民基本台帳人口移動報告にある都道府県別の転入者数(mig_in)を、前年のすべてのデータを用いて予測する、というものであったとします。前年のデータから今年を予測するという部分は、今年のデータから来年を予測する、と置き換えても同じです。

データ前処理の設計

 実際に集めた現実のデータは、インターネットで機械学習用に公開されているデータのようにキレイに整っていて、すぐに学習器に掛けられるということはありません。機械学習用の公開データは公開する人がデータを整形してから公開してくれているためです。このようなデータ分析や機械学習器に適した形にデータを整える作業・処理は、データの前処理と呼ばれます。

 今回集めたデータは、以下のようにデータの粒度がマチマチであったり、期間に欠損があったりという、キレイなデータを前提とする学習器に対しては問題があります。図はクリックまたはタップすると、拡大画像がポップアップ表示されます(以下同様)。

 これらに対し、データ粒度を合わせ、欠損を補間して使用したいとします。まずは最もシンプルに、データ全体から見て情報粒度を最大のもの(年次データ)に合わせ、データ期間を共通部分に合わせるという前処理設計にします。

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

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

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

メールバックナンバー

次のページ
データ前処理の実装

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

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

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング