モデルインサイトフレームワークを使用したモデルの最適化
モデルインサイトフレームワークは、データサイエンティストが実験に基づいて最適な機械学習モデルをすばやく十分な情報に基づいて選択で Data Science Workspace るツールを提供します。 このフレームワークにより、機械学習ワークフローの速度と効果だけでなく、データサイエンティストによる使いやすさも向上します。これは、モデルの調整を支援するために、機械学習アルゴリズムのタイプごとにデフォルトのテンプレートを提供することによっておこなわれます。結果的に、データサイエンティストと市民データサイエンティストは、エンドカスタマーに対してより適切なモデル最適化の決定をおこなうことができます。
指標とは
モデルの実装とトレーニングの後、データサイエンティストが実行する次の手順は、モデルのパフォーマンスを確認することです。様々な指標を使用して、モデルが他のモデルと比較してどの程度効果的かが確認されます。使用される指標の例を次に示します。
- 分類の正確性
- カーブ下の領域
- 混同行列
- 分類レポート
レシピコードの設定
現在、モデルインサイトフレームワークは次のランタイムをサポートしています。
レシピのコード例は、recipes の experience-platform-dsw-reference リポジトリーにあります。このリポジトリーの特定のファイルは、このチュートリアル全体で参照されます。
Scala scala
指標をレシピに取り込む方法は 2 つあります。1 つは SDK が提供するデフォルトの評価指標を使用すること、もう 1 つはカスタム評価指標を作成することです。
Scala のデフォルト評価指標
デフォルトの評価は、分類アルゴリズムの一部として計算されます。現在実装されている評価演算子のデフォルト値を次に示します。
evaluation.classcom.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluatorcom.adobe.platform.ml.impl.DefaultMultiClassificationEvaluatorcom.adobe.platform.ml.impl.RecommendationsEvaluatorエバリュエーターは、recipe フォルダー内の application.properties ファイルのレシピで定義できます。DefaultBinaryClassificationEvaluator を有効にするコード例を以下に示します。
evaluation.class=com.adobe.platform.ml.impl.DefaultBinaryClassificationEvaluator
evaluation.labelColumn=label
evaluation.predictionColumn=prediction
training.evaluate=true
エバリュエータークラスが有効になると、トレーニング中に多数の指標がデフォルトで計算されます。デフォルトの指標は、application.properties に次の行を追加して宣言できます。
evaluation.metrics.com=com.adobe.platform.ml.impl.Constants.DEFAULT
特定の指標は、evaluation.metrics.com の値を変更することで有効にできます。次の例では、F-Score 指標が有効になっています。
evaluation.metrics=com.adobe.platform.ml.impl.Constants.FSCORE
次の表に、各クラスのデフォルト指標を示します。また、evaluation.metric 列の値を使用して、特定の指標を有効にすることもできます。
evaluator.classevaluation.metricDefaultBinaryClassificationEvaluator- リコール
- 混同行列
- Fスコア
- 正解率
- レシーバー動作特性
- レシーバー動作特性の領域
PRECISION-
RECALL-
CONFUSION_MATRIX-
FSCORE-
ACCURACY-
ROC-
AUROCDefaultMultiClassificationEvaluator- リコール
- 混同行列
- Fスコア
- 正解率
- レシーバー動作特性
- レシーバー動作特性の領域
PRECISION-
RECALL-
CONFUSION_MATRIX-
FSCORE-
ACCURACY-
ROC-
AUROCRecommendationsEvaluator- 正規割引累積利益
- 平均逆数ランク
- 指標 K
MEAN_AVERAGE_PRECISION-
NDCG-
MRR-
METRIC_KScala のカスタム評価指標
カスタムエバリュエーターは、Evaluator.scala ファイルで MLEvaluator.scala のインターフェイスを拡張することで提供できます。この例の Evaluator.scala ファイルで 、カスタム split() と evaluate() 関数を定義します。split() 関数は、データを 8 の比率でランダムに分割し :2evaluate() 関数は、MAPE、MAE、RMSE の 3 つの指標を定義して返します。
MLMetric クラスの場合、新しい "measures" を作成するときに valueType に MLMetric を使用しないでください。使用すると、指標がカスタム評価指標テーブルに入力されません。metrics.add(new MLMetric("MAPE", mape, "double"))以下は実行しないでください。
metrics.add(new MLMetric("MAPE", mape, "measures"))レシピで定義した後は、レシピで有効にします。これは、プロジェクトの resources フォルダーの application.properties ファイルで実行されます。ここでは、evaluation.class が Evaluator.scala で定義された Evaluator に設定されます。
evaluation.class=com.adobe.platform.ml.Evaluator
Data Science Workspace では、ユーザーは実験ページの「評価指標」タブでインサイトを確認できます。
Python/Tensorflow pythontensorflow
現時点では、Python または Tensorflow のデフォルトの評価指標はありません。 したがって、Python または Tensorflow の評価指標を取得するには、カスタム評価指標を作成する必要があります。 これは、Evaluator クラスを実装することで実行できます。
Python のカスタム評価指標
カスタム評価指標の場合、評価基準に実装する必要がある主なメソッドは split() と evaluate() の 2 つです。
Python の場合、これらのメソッドは、 クラスの evaluator.pyEvaluator で定義されます。 Evaluator の例については、evaluator.py リンクを参照してください。
Python で評価指標を作成するには、evaluate() メソッドと split() メソッドを実装する必要があります。
evaluate() メソッドは、name、value、valueType プロパティを持つ指標オブジェクトの配列を含む指標オブジェクトを返します。
split() メソッドの目的は、データを入力し、トレーニングとテスト用のデータセットを出力することです。この例では、split() メソッドは DataSetReader SDK を使用してデータを入力し、関連のない列を削除してデータをクリーンアップします。ここから、データ内既存の生の特徴から追加の特徴が作成されます。
split() メソッドは、トレーニングとテストのデータフレームを返します。これは、pipeline() メソッドで、ML モデルのトレーニングとテストで使用されます。
Tensorflow のカスタム評価指標
Tensorflow の場合、Python と同様に、evaluate() クラスのメソッド split() および Evaluator を実装する必要があります。 evaluate() については指標を返し、split() はトレーニングとテストのデータセットを返す必要があります。
from ml.runtime.python.Interfaces.AbstractEvaluator import AbstractEvaluator
class Evaluator(AbstractEvaluator):
def __init__(self):
print ("initiate")
def evaluate(self, data=[], model={}, config={}):
return metrics
def split(self, config={}):
return 'train', 'test'
R r
現時点では、R のデフォルトの評価指標はありません。したがって、R の評価指標を取得するには、レシピの一部として applicationEvaluator クラスを定義する必要があります。
R のカスタム評価指標
applicationEvaluator の主な目的は、指標のキーと値のペアを含む JSON オブジェクトを返すことです。
この applicationEvaluator.R は、例として使用できます。この例では、applicationEvaluator が 3 つのよく知られたセクションに分かれています。
- データの読み込み
- データの準備と特徴量エンジニアリング
- 保存されたモデルの取得と評価
データは、まず、retail.config.json で定義されているようにソースからデータセットに読み込まれます。その後、データが消去され、機械学習モデルに合わせて設計されます。最後に、モデルはデータセットを使用して予測をおこなうために使用され、予測値と実際の値から指標が計算されます。この場合、MAPE、MAE、RMSE が定義され、metrics オブジェクト内で返されます。
事前に作成された指標とビジュアライゼーショングラフの使用
Sensei Model Insights Framework では、機械学習アルゴリズムのタイプごとに 1 つのデフォルトテンプレートをサポートします。 次の表に、一般的な高レベルの機械学習アルゴリズムクラスと、対応する評価指標およびビジュアライゼーションを示します。
- MAPE
- MASE
- MAE
- Precision-recall
- 精度
- F スコア(具体的にはF1、F2)
- AUC
- ROC
— 各クラス:
— precision-recall accuracy
- Fスコア(特にF1、F2)
- RI(ランド指数)、ARI(調整ランド指数)
— 均質性スコア、完全性スコア、V-measure
-FMI(Fowlkes-Mallows 指数) —
純度
— Jaccard 係数
— シルエット係数
- CHI(Calinski-Harabaz 係数)
- DBI(Davies–Bouldin 係数)
— ダンインデックス
- 正規割引累積利益
- 平均逆数ランク
- 指標 K