機械学習パイプライン構築ツールのkedroを触ったときにkedroのデータ構成の意味が気になったので調べてみた。
kedroのデフォルトの設定でプロジェクトを作成するとdata
配下がこんな構成になっている。
data ├── 01_raw ├── 02_intermediate ├── 03_primary ├── 04_feature ├── 05_model_input ├── 06_models ├── 07_model_output └── 08_reporting
なんとなくわかるけど、それぞれどんな時に使うのを想定しているのかが気になった。
まずは公式のドキュメントを見てみる。
ここに書いてあった。
- Raw: パイプライン処理のスタート地点で、基本変更しないデータ。作業する際唯一の真となるソースとなる。ケースバイケースだけど大体は型付けがされていないデータとなる。(例: csvデータ)
- Intermediate: オプショナルなデータで、Rawデータから型付けを行ったデータ。(例: 文字列データを想定した型の表現へ変換する)
- Primary: Raw/Intermediateデータからクレンジング/変換/ラングリングされたドメイン固有データ。特徴量エンジニアリングの入力として使う。
※ドメイン固有データ: 業界の専門用語などが入ったままでデータ分析用に処理されていないデータ - Feature: Primaryデータから抽出された特徴量を含む分析用のデータ。データ分析による特徴ごとにグループ化され、共通の次元に保存される。
- Model input: 全特徴量を共通の次元に持った分析用のデータで、分析中のプロジェクトの場合は分析した日時に対し特徴量の変更履歴を追跡できるようにする。
- Models: 学習済みモデルのデータ。
- Model output: Model inputからモデルによって得られた分析用データ。
- Reporting: Primary/Feature/Model input/Model outputをまとめたレポートデータで、ダッシュボードや構成された何らかの形式にて使用される。これによってデータを再定義せずにデータの混合や追加の定義、パフォーマンス向上、プレゼンテーション層の置き換えを行う必要性をカプセル化してなくす。
また、ここのサイトにユースケースも含めて詳しく書いてあったので参考にした。
以上まとめてみると各データの役目とパイプライン処理との関係は以下のようになると理解した。