機械学習における8つの型とは

運用

こんにちは、ガロガロニーです。本日は機械学習を利用して、実用的なビジネス上の価値を実現するための型(ステップ)を紹介します。

機械学習の8つの型

機械学習プロジェクトをうまく進めるためには、8つの型 (ステップ) を押さえることが大切です。それぞれの型について解説していきます。

壱ノ型 データ収集・整備

データ収集・整備は、機械学習プロジェクトを進める上で、最も基礎となる型です。機械学習を活用するために、まずはデータを基幹システム等から定常的に抽出(Extract)し、機械学習モデルのインプットとして利用できるフォーマットに加工(Transform)して、データウェアハウス等に蓄積(Load)できる環境を整備しておく必要があります。このようなプロセスを頭文字を取ってETLといいます。また、大量のデータを分析できる基盤作りも重要です。データ分析基盤は、クラウドベンダーが提供しているソリューションを活用することをお勧めします。例えば、MicrosoftのAzureでは下記のような構成を取り、モダンなデータ分析基盤を構築することができます。

  • ETLツール:Azure Data Factory, Azure Databricks
  • データレイク:Azure Data Lake Storage
  • データウェアハウス:Azure Synapse Analytics
  • BIツール:Microsoft Power BI

機械学習やディープラーニングなどAI技術を活用してビッグデータ解析を行う際には、データ分析基盤が欠かせません。機械学習プロジェクトの成否を分けるになるので、まずは基礎となる壱ノ型を極めましょう。

Building modern data warehouses before Azure Synapse Analytics
Azureで実現できるデータ分析基盤
https://docs.microsoft.com/en-us/learn/modules/design-modern-data-warehouse-using-azure-synapse-analytics/3-define-architecture

弐ノ型 特徴量エンジニアリング

特徴量エンジニアリングは、機械学習​​モデル​のパフォーマンスと​精度​を向上させるために、追加の変数(特徴量)を構築してデータセットに追加することです。弐ノ型は機械学習プロセスにおいて、最も時間を必要とする型の一つとなります。最近は、特徴量エンジニアリング関連のライブラリが充実してきているので、活用していくとよいでしょう。例えば、PFNが提供しているxfeatというライブラリを使えば、効率的に特徴量の選択や作成を支援してくれます。また、AutoFeatというライブラリでは、簡単な特徴量エンジニアリングであれば、自動で行ってくれます。(ただし、線形モデルをベースとしている点は注意が必要です。)これらのライブラリをうまく活用し、効率的に特徴量エンジニアリングを進めていくとよいでしょう。

xfeat_arithmetic_combination
xfeatを使用し特徴量エンジニアリングを効率的に実施する
https://github.com/pfnet-research/xfeat

参ノ型 モデル構築

いよいよ参ノ型はモデル構築です。人に代わってコンピュータにモデルを構築させる型です。モデルのアルゴリズムには様々な種類があり、得意な分野や苦手な分野など特性があります。そのため、分析の目的に応じたアルゴリズムを選択する必要があります。例えば下記のようなイメージです。

  • 教師あり学習(目的変数あり)
    • 識別系:ロジスティック回帰、サポートベクトルマシン
    • 予測系:回帰分析、ニューラルネットワーク
  • 教師なし学習(目的変数なし)
    • 分類系:k-means、協調フィルタリング
    • 圧縮系:主成分分析(PCA)、ローカルリニアエンベディング(LLE)

より詳細にアルゴリズムを検討したい場合は、scikit-learnのアルゴリズムチートシートが参考になるでしょう。データのタイプや解きたいタスクによって、アルゴリズムを選択する際に使うことができます。

アルゴリズムを選択できたら、実際にプログラムに落とし込み、学習済モデルファイルを作成しましょう。モデルの実験は何度も繰り返し行うことが多いですが、MLFlowなどを使って実験管理し、後から結果が再現できるようにしておいてください。(MLFlowについては、こちらでも解説しています。)また、最近ではAutoMLにより自動でモデル構築する手法があるので、うまく利用して効率的にモデルを構築していくと良いでしょう。(AutoMLについても、こちらで解説しています。)

Move mouse over image
scikit learnのアルゴリズムチートシート
https://scikit-learn.org/stable/tutorial/machine_learning_map/

肆ノ型 モデル評価

無事にモデルを構築できたら、次は肆ノ型であるモデル評価を行います。機械学習はこれまでの技術とは性質が大きく異なり、品質を保証することが難しい側面があります。CACE(Changing Anything Changes Everything)の原則というものがあり、入力されるデータが少しでも変わると、予測の振る舞いが変化する可能性があることをいいます。そのため、学習したモデルに対して様々なデータを入力して、予測を行った際にモデル精度が劇的に変化しないか、入念にチェックする必要があります。その他にも検証すべき項目は下記などが挙げられます。

  • 精度:評価指標は適切か、目標精度を達しているか、過学習は起きていないかなど
  • ロバスト性:入力にノイズが存在しても予測に大きな影響はないか
  • 公平性:データの偏りによってモデルに一定のバイアスがかかっていないか
  • 解釈可能性:モデルの予測結果に対する要因を説明できるか

機械学習アプリケーションは、信頼性の問題に悩まされることが多いです。モデルをリリースする際は、少なくとも一つのテストデータに対して精度が良かったから大丈夫と考えないようにし、様々なデータを入力して適切にモデルの評価を行うようにしましょう。

伍ノ型 デプロイ

伍ノ型であるデプロイとは、無事に評価まで終えた学習済みモデルをリリースし、本番システムから使える状態にすることを指します。モデルをデプロイする際には基本的にDockerコンテナイメージを使うケースが多いです。Dockerを使うことで、モデルを本番システムに移行しやすくなり、環境の違いなどを気にせずデプロイできます。デプロイ方式は大きく二つあり、「モデルインイメージパターン」と「モデルロードパターン」があります。両者の違いはサーバイメージにモデルを含めるかどうかですが、それぞれ利点・欠点があります。状況に応じてパターンを選ぶと良いでしょう。

  • モデルインイメージパターン
    • 利点:サーバとモデルを一つにまとめることができ、管理が容易
    • 欠点:モデルファイルが入るため、イメージサイズが大きくなりやすい
  • モデルロードパターン
    • 利点:イメージが軽量になり、モデルを分離することで応用性が向上
    • 欠点:バージョニングの不一致が起こる可能性がある
モデルインイメージパターンとモデルロードパターン
https://www.slideshare.net/yusukeshibui/machine-learning-cicd-with-oss

陸ノ型 サービング

陸ノ型のサービングは、デプロイしたモデルの予測機能を利用者側に提供することを指します。予測機能の提供パターンはタスクによって様々ですが、よく使われるパターンとしては、REST API等でエンドポイントを用意し、外部からWeb APIを呼び出して予測機能を提供する方法や、バッチシステムとして過去のデータをまとめて推論し予測結果を提供する方法などがあります。

サービング機能を提供するOSSシステムに、TensorFlow Servingがあります。TensorFlow Servingを使うことで、Tensorflowのsaved modelをWeb APIとして稼働させたり、バッチシステムとして動かすこともできます。

tfサービングアーキテクチャ図
TensorFlow Servingのアーキテクチャ
https://www.tensorflow.org/tfx/serving/architecture

漆ノ型 モニタリング

無事にモデルのサービングができても、それで終わりというわけではありません。機械学習で継続的にビジネス価値を生み出していくために、漆ノ型であるモニタリングを実施する必要があります。機械学習モデルの予測が期待した精度を実現できているか、最新のデータは学習時に利用したデータから大きな変化がないか等を確認しなければなりません。モニタリングを行う上で、決めておかないといけないこととしては、下記が挙げられます。

  • 予測結果と実績値の両方のデータを収集し、精度を算出できるようにする。
  • 機械学習に利用した過去データと、現時点で予測に利用しているデータの両方を収集し、傾向や分布を比較できるようにする。
  • 業務担当者、データ分析者、システム運用者などの全関係者がモニタリングできる仕組みを用意する。例えば、BI(Business Intelligence)ツールなどで可視化して公開できるようにする。
  • 精度の正常範囲異常時の対応フローや体制を決めておく。

BIツールとしては、Microsoft Power BIなどが候補となります。クラウドサービスであるAzureと相性が良く、様々なデータを分析・可視化することができます。

Azure
Microsoft Power BIによる可視化
https://docs.microsoft.com/ja-jp/power-bi/connect-data/service-azure-and-power-bi

捌ノ型 モデル改善

機械学習モデルの運用を続けていくと、必ず予測のズレや精度の劣化が発生します。環境は日々変化しており、その変化に応じて発生するデータも変わり、過去にない特異的なデータが新たに発生したり、データの傾向が大きく変わったりするためです。そこで、業務環境やデータの変化に合わせ、モデルを改善する捌ノ型が必要になります。モデル改善パターンはいくつかありますが、改善にかかる時間費用、そして、システムへの影響度を考慮して実施することが大切です。費用対効果を考えながら、継続的にモデルをアップデートしていきましょう。

時間費用システム影響
1.直近の学習データの投入
2.パラメータのチューニング
3.アルゴリズムの変更
4.新しい種類のデータ追加・変更
モデル改善パターンごとの負荷や影響

9つ目の型とは

8つの型は繰り返すことで円環を成し、9つ目の型になります。これを機械学習ライフサイクル(Machine Learning Life Cycle)といいます。モデルは一度リリースすれば終わりではありません。継続してビジネス価値を発揮するために、本番システムでの頻繁な更新を含む複雑なライフサイクルを実施する必要があります。

機械学習プロジェクトに携わる人は、機械学習の8つの型を全て習得し、すべての型を繋げて繰り出す奥義:玖ノ型「機械学習ライフサイクル」を実現しましょう。

奥義:玖ノ型「機械学習ライフサイクル」

まとめ

本日は機械学習を利用して、実用的なビジネス上の価値を実現するための型(ステップ)を紹介しました。紹介した機械学習の8つの型は下記のとおりです。

  • 壱ノ型 データ収集・整備
  • 弐ノ型 特徴量エンジニアリング
  • 参ノ型 モデル構築
  • 肆ノ型 モデル評価
  • 伍ノ型 デプロイ
  • 陸ノ型 サービング
  • 漆ノ型 モニタリング
  • 捌ノ型 モデル改善

そして、 8つの型は繰り返すことで円環を成して9つ目の型になり、 奥義:玖ノ型 「機械学習ライフサイクル」が完成します。機械学習ライフサイクルに興味がある方は、ぜひ参考にしてみてください。それではまた!

コメント

タイトルとURLをコピーしました