AIサービスの開発競争-AIエンジニアの活躍に注目!
AI技術における世の中での需要や将来性に注目が集まり、その技術を活用したサービスの開発が現在多くの企業で盛んに行われています。
新しいサービスを開発する際には「目的が実現できそうか」を検証するPoC(概念実証)が行われることが多く、その現場では設計・実装・改善をトータルで自らできるAIエンジニアの活躍が期待されます。
PoCにおける要件の追加・変更
PoCの進行中、当初の目標スコープからの追加・変更が要望されることも多くあります。これは、世の中に今は無いようなサービスを創出しようとしており、どこまで出来るのかをこれから開発・検証しようとしているモノに対して、事前に詳細・正確に目標設定することは難しいためです。また、動くモノの形が現実に見えてきてからサービスの利用イメージが広がり、より適切な、より魅力的な目標スコープが見つかることがあるためです。
一般に、SE業務において作業スコープの管理は品質確保の点からも重要であり、要件の追加・変更のハードルは高くなりがちです。しかし、PoCでは上のような事情もあるため、あくまでもプロジェクトにおける様々な制約の範囲内ですが、挑戦的に取り組むことが腕の見せ所となります。
時系列データの予測モデルを、年次予測から月次予測に変更する
前回記事では、インターネット上に無料で公開されている政府統計データ「e-Stat」を利用して、ディープラーニングを用いた予測モデルを作りました。過去の統計量から、都道府県ごとの現在(または未来)の統計量を予測するモデルです。
本記事で使用したソースコード、データは下のGitHubで公開しています。記事中では説明を省略した部分のソースコードと使用したデータがあり、実際にマシン上で動かしてみることができます。
- 使用したプログラム言語はPython3、ディープラーニング部分にはPythonパッケージのtensorflow/Kerasを使用
- 各データファイル(CSV)は、政府統計の総合窓口(e-Stat)より「住民基本台帳人口移動報告」「住民基本台帳に基づく人口、人口動態及び世帯数調査」「賃金構造基本統計調査」「工業統計調査」「商用統計調査」を加工して作成
今回は、年次データでの時系列予測が形になってきた頃に、時間の粒度を更に詳細化して月次にしたいという要望が起きたとして、これに応えることを題材とします。一般に、時系列データ予測においてデータの粒度(時間、位置範囲など)を細かくするほどそのサービス的な価値は高くなるため、一般的に発生しやすい要望です。
データ前処理の設計
使用するデータには、以下のようにデータの粒度がマチマチであったり、期間に欠損があったりという問題がありました。
これらに対し、データの粒度を月次に合わせ、欠損を補間してモデル学習に使用できるようにデータを加工します。
予測対象(目的変数)とする移動情報は元々月次データですが、予測に使用する周辺情報(説明変数)は年次データであるため、これらを月次にデータ変換します。この変換後のデータは実地調査から得られた現実のデータではなく、加工して作成した疑似データです。サービス目標を達成するためにやむなく疑似データ化していますが、こういった前処理が予測性能を大きく低下させる原因となる可能性もあります。一般に、サービス性の向上(この場合はデータ粒度の詳細化)と予測性能はトレードオフの関係となることが多いため、この後のモデルの学習や評価の際には説明変数データを疑似化したことに留意しておく必要があります。