SAMPO/FABの動作と入出力¶
目次¶
1. はじめに¶
本章では、SAMPO/FABの概要として動作と入出力について説明します。
2. SAMPO/FABの動作¶
SAMPO/FABは、分析プロセス設計情報であるSPDと実行設定であるSRCを入力すると、学習(または予測)を実行することができます。
学習または予測を実行した結果は、実行済プロセスとしてプロセスストアと呼ばれるリポジトリに格納します。
3. 入力¶
3.1. 分析対象データ¶
SAMPO/FABは、分析対象データとして行列形式のデータを扱います。 また、分析対象データはCSVファイル、PostgreSQLのテーブル、Pandas DataFrameから読み込むことができます。
下記のデータは、「あやめ」という花の種類の判別分析を行うための分析対象データです。 がく片(sepal)や花弁(petal)の幅や長さとあやめの種類という、5つの属性を持ちます。
データは、UCIのオープンデータである Iris Data Set (https://archive.ics.uci.edu/ml/datasets/iris) を利用しています。
[1]:
import pandas as pd
df = pd.read_csv('./data/iris.csv', na_values='?')
df.head()
[1]:
sepal length in cm | sepal width in cm | petal length in cm | petal width in cm | kind of iris | |
---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | Iris-setosa |
1 | 4.9 | 3.0 | 1.4 | 0.2 | Iris-setosa |
2 | 4.7 | 3.2 | 1.3 | 0.2 | Iris-setosa |
3 | 4.6 | 3.1 | 1.5 | 0.2 | Iris-setosa |
4 | 5.0 | 3.6 | 1.4 | 0.2 | Iris-setosa |
3.2. ASD (属性スキーマ)¶
ASD(Attribute Schema Description) には、分析対象データの各属性の名前やデータ型を定義します。 データ型には、INTEGER (整数型)、REAL (実数型)、NOMINAL (カテゴリ型)、DATA (日付型) があります。
下記のように、scaleが示すデータ型にNOMINALが含まれている場合、domainにカテゴリ値の一覧も定義されます。
[2]:
from sampotools.api import gen_asd_from_pandas_df
asd = gen_asd_from_pandas_df(df)
pd.DataFrame(asd).T[['scale', 'domain']]
[2]:
scale | domain | |
---|---|---|
sepal length in cm | REAL | NaN |
sepal width in cm | REAL | NaN |
petal length in cm | REAL | NaN |
petal width in cm | REAL | NaN |
kind of iris | NOMINAL | [Iris-versicolor, Iris-virginica, Iris-setosa] |
3.3. SPD (SAMPO Process Description)¶
コンポーネントには、主に以下の3種類があります。 - 「データローダーコンポーネント」・・・ CSVファイルやPostgreSQLなどからデータを読み込む - 「属性生成コンポーネント(FD)」・・・ 属性データに特定の操作を行い、新たな属性を生成する - 「予測器コンポーネント」・・・ 学習によるモデル作成やモデルを用いた予測を行う
SPDの記述例:「データローダーコンポーネント」であるDataLoader
でデータを読み込み、「予測器コンポーネント」であるFABHMEBernGateLinearRgComponent
で回帰分析を行う
dl -> rg
---
components:
dl:
component: DataLoader
rg:
component: FABHMEBernGateLinearRgComponent
features: name != 'target'
target: name == 'target'
tree_depth: 3
補足: - コンポーネントには下記のような自動属性設計で使用するコンポーネントもあります。
- 「属性学習コンポーネント(FL)」・・・ 属性生成のパラメーターを自動推定して、属性生成を行う
- 「属性選択コンポーネント(FS)」・・・ 入力データから使用すべき属性を自動推定して選択する
3.4. SRC (SAMPO Run Configuration)¶
learn_example
のようなプロセス名とプロセスタイプを示すtype
を記述します。 またdata_sources
には、path
に分析対象データの格納先を、attr_schema
にASDの格納先情報を記述します。学習用SRCの記述例:CSVファイル形式の学習用データを使って学習を実行
learn_example:
type: learn
data_sources:
dl:
path: data/fabhmerg_learn.csv
attr_schema: data/fabhmerg.asd
予測用SRCの記述例:CSVファイル形式の予測用データと実行済プロセス名learn_example
のモデルを使って予測を実行
predict_example:
type: predict
data_sources:
dl:
path: data/fabhmerg_predict.csv
attr_schema: data/fabhmerg.asd
model_process: learn_example
予測を実行する場合は、上記のようにmodel_process
で予測に使用したいモデルが含まれている実行済プロセス名を指定します。