1. SAMPO/FABとsklearn-fabの主な差異

本章では、SAMPO/FABとsklearn-fabの主な差異を示します。

SAMPO/FABは、分析を行うための一連の機能(データの前処理、学習および予測の実行、モデルバリデーション、等)を独自に有しています。 一方、sklearn-fabは異種混合学習を利用するために必須のestimatorを除き、scikit-learnpandasなどのOSSライブラリを使用することを前提とした構成になっています。

ユースケース実現方法の比較

一般的な分析のユースケースについて、SAMPO/FABとsklearn-fabにおける実現方法は以下になります。

ユースケース実現方法の比較

ユースケース

SAMPO/FAB

sklearn-fab

データの前処理

  • Feature Descriptor

OSSライブラリを使用

分析手順の設計

  • SPD

  • SRC

学習、予測の実行

SAMPO API

  • run関数

sklearn-fab API

  • fit関数

  • predict関数

モデルバリデーション

SAMPO API

  • ProcessResultLoaderクラス

  • save_gate_tree関数

sklearn-fab API

  • export_gate_tree_dot関数

  • estimatorのcomps_アトリビュート

OSSライブラリを使用

ベストモデル選択

SAMPO API

  • session_run関数

OSSライブラリを使用

OSSライブラリを使用

モデル永続化

SAMPO API

  • process_store

OSSライブラリを使用

SAMPO/FAB独自機能について

SAMPO/FABは独自機能をもっており、以下のように、sklearn-fabには存在しないものや概念が異なるものがあります。

ASD(Attribute Schema Description)

  • ASDは、分析対象データの各属性の名前やデータ型を記述したものです。

  • sklearn-fabでは、学習や予測で入力するデータ(numpy.ndarraypandas.DataFrame)のdtypeなどがASDの概念に近いものになります。そのため、sklearn-fabはASDを必要とせず、ASDの関連機能も存在しません。

SPD(SAMPO Process Description)

  • SPDは、属性生成や分析を行うコンポーネントを組み合わせ、学習(または予測)を行うプロセスを記述したものです。

  • sklearn.pipeline.Pipelineと同じ概念になります。

SRC(SAMPO Run Configuration)

  • SRCは、実行内容(学習、または予測)の定義、使用データや属性情報の選択など、実行設定情報を記述したものです。

  • sklearn-fabでは、使用データ選択が同じ概念になります。

process_store(プロセスストア)

  • process_storeは、モデル、使用データ、予測結果など、分析関連の様々な情報を一括管理するものです。

  • sklearn-fabでは、それらの情報を保持する仕組みは存在しないため、OSSライブラリ等を用いてユーザーが個別に管理する必要があります。

学習器の比較

SAMPO/FABとsklearn-fabが有する学習器を比較したのが以下になります。sklearn-fabでは、SAMPO/FABにおいて使用頻度が高い学習器が実装されています。

学習器の比較

予測種別

門関数

予測式

SAMPO/FAB

sklearn-fab

回帰

単変数

線形

FABHMEBernGateLinearRg Component

SklearnFABBernGateLinearRegressor

回帰

単変数

非線形

FABHMEBernGateBSplineRg Component

なし

回帰

多変数

線形

FABHMELogitGateLinearRg Component

なし

回帰

多変数

非線形

FABHMELogitGateBSplineRg Component

なし

分類(単クラス)

単変数

線形

FABHMEBernGateLinearCl Component

SklearnFABBernGateLinearClassifier

分類(単クラス)

単変数

非線形

FABHMEBernGateBSplineCl Component

なし

分類(単クラス)

多変数

線形

FABHMELogitGateLinearCl Component

なし

分類(単クラス)

多変数

非線形

FABHMELogitGateBSplineCl Component

なし

分類(多クラス)

単変数

線形

FABHMEBernGateLinearMultiCl Component

SklearnFABBernGateSoftmaxClassifier

学習器に与えるパラメーターの比較

SAMPO/FABとsklearn-fabについて、学習器に与えるパラメーターの差異を比較したのが以下になります。差異として、名称が異なるパラメーターいずれかのみに存在するパラメーターがあります。 以下では、SAMPO/FABを基準として、sklearn-fabではパラメーターがどのように変更されたかを示します。

パラメーターの比較(回帰、単変数門、線形の学習器)

変更点

FABHMEBernGateLinearRg Component

SklearnFABBernGateLinearRegressor

備考

名称および指定方法の変更

gate_features

gate_feature_ids

※1

名称および指定方法の変更

comp_features

comp_feature_ids

※1

名称および指定方法の変更

comp_mandatory_features

comp_mandatory_feature_ids

※1

名称および指定方法の変更

comp_positive_features

comp_positive_feature_ids

※1

名称および指定方法の変更

comp_negative_features

comp_negative_feature_ids

※1

削除

standardize_target

※2

パラメーターの比較(分類、単変数門、線形の学習器)

変更点

FABHMEBernGateLinearCl Component

SklearnFABBernGateLinearClassifier

備考

名称および指定方法の変更

gate_features

gate_feature_ids

※1

名称および指定方法の変更

comp_features

comp_feature_ids

※1

名称および指定方法の変更

comp_mandatory_features

comp_mandatory_feature_ids

※1

名称および指定方法の変更

comp_positive_features

comp_positive_feature_ids

※1

名称および指定方法の変更

comp_negative_features

comp_negative_feature_ids

※1

削除

positive_label

パラメーターの比較(分類(多クラス)、単変数門、線形の学習器)

変更点

FABHMEBernGateLinearMultiCl Component

SklearnFABBernGateSoftmaxClassifier

備考

名称および指定方法の変更

gate_features

gate_feature_ids

※1

名称および指定方法の変更

comp_features

comp_feature_ids

※1

名称および指定方法の変更

comp_mandatory_features

comp_mandatory_feature_ids

※1

※1: 学習器パラメーターは、それぞれ以下のように指定します。

SAMPO/FAB

  • SAMPO/FABのFAB componentに対し、SPDのOperatorsやMatching Functions等を使用して属性名を指定

sklearn-fab

  • sklearn-fabのestimatorに対し、学習実行時に属性のIDをリスト形式で指定

※2: standardize_target

sklearn-fabでは、ユーザーが必要に応じて、目的変数を標準化します。