機械学習 API の使用
機械学習 (ML) API を使用して ServiceNow 機械学習モデルをトレーニングし、推論を実行します。
ML API を使用すると、ソリューションのトレーニングとソリューションバージョンの管理が可能になります。アクティブなバージョンの取得と設定、トレーニングステータスの監視などを行うことができます。ML API にはエンコーダーも用意されており、用語頻度逆ドキュメント頻度 (TF-IDF) をワードコーパスとして使用できます。予測可能性の推定により、テーブルの列の予測値を評価できます。
ML API クラスの概要
このセクションでは、ML ソリューションをトレーニングし、トレーニング済みソリューションを使用して推論を実行するためのクラスについて簡単に説明します。
- データセット
データセットは ML トレーニングアルゴリズムの入力として使用する、テーブル名、列、および行の選択基準を含むレコードのセット。データセットには実際のデータは含まれません。
詳細については、「 DatasetDefinition」を参照してください。
- ML オブジェクト – ソリューション、エンコーダー、推定値
ML オブジェクトは、データセットに適用する特定のトレーニング構成を定義します。一部の操作は ML オブジェクト間で共通です。ソリューションオブジェクトには、分類、クラスタリング、回帰、および類似性が含まれます。
エンコーダーは、事前にトレーニングされたか、指定した言語データセットに基づいてトレーニングされたテキスト処理オブジェクトです。システムがテキストフィールドをどのように解釈して処理するかを決定するエンコーダーをトレーニングできます。テキストを含む ML ソリューションの場合は、テキストを処理する方法を指定するようにエンコーダーをトレーニングし、 トレーニング済みの エンコーダーをソリューションで使用できます。
PredictabilityEstimate オブジェクトは、データセット内のどのフィールドが予測可能か、およびこの予測可能性の基になっている特徴量を推定します。
- 店舗
ML オブジェクトは、オブジェクトタイプごとに特定のストアに保持されます。各ストア クラスには、追加、取得、更新、および削除操作のメソッドが含まれています。
詳細については、以下を参照してください。- バージョン
トレーニングされた各オブジェクトは、タスクを実行できる新しいバージョンになります。バージョン API を使用してソリューションバージョンを取得し、そのバージョンでタスクを実行します。
まとめ:ML API フロー
ML オブジェクトエンコーダーの要件:
- 類似性 API ソリューションで必須です。
- レーベンシュタイン距離アルゴリズムを使用する場合を除き、クラスタリング API ソリューションで必須です (その場合、エンコーダーは省略可能です)。
- 分類および回帰ソリューションではオプションです。
- 予測可能性の推定には使用できません。
ML API ソリューショントレーニングの開始
このブレークダウンの例に従って、ソリューションを構成およびトレーニングする方法を学習します。
- ソリューションの構成とトレーニング
- DatasetDefinition API を使用してデータセットを定義します。
var myData = new sn_ml.DatasetDefinition({ 'tableName' : 'incident', 'fieldNames' : ['assignment_group', 'short_description', 'description'], 'encodedQuery' : 'activeANYTHING' }); - コンストラクターを使用して、構成内のデータセットを含むソリューションを定義します。
var mySolution = new sn_ml.ClassificationSolution({ 'label': "my solution definition", 'dataset' : myData, 'predictedFieldName' : 'assignment_group', 'inputFieldNames':['short_description'] }); - add() メソッドを使用して、ソリューション定義をストアに追加します。
var my_unique_name = sn_ml.ClassificationSolutionStore.add(mySolution); - submitTrainingJob() メソッドを使用してソリューションをトレーニングします。トレーニングが完了したら、ソリューションバージョン API を使用してトレーニング済みソリューションを管理できます。ソリューションは複数回再トレーニングできます。各トレーニングにより、推論を実行できる新しいソリューション「バージョン」が作成されます。
var myClassifierVersion = mySolution.submitTrainingJob();
- DatasetDefinition API を使用してデータセットを定義します。
- ストア内のすべての分類ソリューションの表示
- ストアの getAllNames() メソッドを使用して、ストアに追加されたすべてのソリューションのリストを表示できます。
gs.print(JSON.stringify(JSON.parse(sn_ml.ClassificationSolutionStore.getAllNames()), null, 2));出力では、ソリューションに
ml_x_snc_global_global_my_solution_definitionという名前が付けられています。バージョン情報を取得するには、後続の例でこの名前を使用します。*** Script: [ "ml_incident_assignment", "ml_x_snc_global_global_my_solution_definition", "ml_incident_categorization" ]
ML API ソリューションバージョンの開始
トレーニング済みソリューションバージョンを管理する方法については、これらの例のブレークダウンに従ってください。
- トレーニングステータスを確認
ストアから分類ソリューションを入手し、バージョンを選択して、そのトレーニングステータスを確認します。トレーニングステータスの確認に使用されるメソッドは、すべての ML オブジェクトタイプに適用できます。
- get() メソッドを使用して、分類ソリューションストアからソリューションを取得します。
// Get the solution created in the previous example from the classification solution store var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_x_snc_global_global_my_solution_definition'); - getLatestVersion() ソリューションメソッドを使用して最新のソリューションバージョンにアクセスし、getStatus() バージョンメソッドを使用してそのトレーニングステータスを取得します。
// Access the latest version of the solution and print its training status gs.print(JSON.stringify(JSON.parse(mlSolution.getLatestVersion().getStatus(), null, 2)));トレーニング完了時の出力:
*** Script: {"state":"solution_complete","percentComplete":"100","hasJobEnded":"true"}
- get() メソッドを使用して、分類ソリューションストアからソリューションを取得します。
- ソリューションバージョンを使用して予測を取得
- ソリューションがトレーニングされたら、トレーニング済みバージョンを取得し、予測を実行します。作成したソリューションをストアから入手します。次に、トレーニング済みバージョンを選択し、トレーニング済みバージョンを予測します。注:エンコーダーと予測可能性の推定では予測を行うことはできません。
- get() メソッドを使用して、分類ソリューションストアからソリューションを取得します。
// Get the solution created in the first example from the classification solution store var mlSolution = sn_ml.ClassificationSolutionStore.get('ml_x_snc_global_global_my_solution_definition'); - GlideRecord API の get() メソッドを使用して、インシデント [incident] テーブルのレコードを提供します。
// single GlideRecord input var input = new GlideRecord("incident"); input.get("<sys_id>"); - オプション。上位 3 つの結果を返し、すべての結果を返すように ClassificationSolutionVersion – predict() メソッド options パラメーターを構成します。
// configure optional parameters var options = {}; options.top_n = 3; options.apply_threshold = false; resultsという変数を宣言し、それを予測ジョブに割り当てます。予測ジョブを実行するには、 ClassificationSolution – getLatestVersion() メソッドを使用して最新のソリューションバージョンを取得し、そのバージョンで ClassificationSolutionVersion – predict() メソッドを呼び出します。var results = mlSolution.getLatestVersion().predict(input, options);- 予測結果出力を出力します。
gs.print(JSON.stringify(JSON.parse(results), null, 2));予測結果の出力例:
*** Script: { "<sys_id>": [ { "confidence": 99, "threshold": 24.75, "predictedValue": "Email", "predictedSysId": "" }, { "confidence": 5.88210244009169, "threshold": 100, "predictedValue": "Email (I/f)", "predictedSysId": "" }, { "confidence": 2.3461203499840932, "threshold": 14.81, "predictedValue": "Authentication", "predictedSysId": "" } ] }
- get() メソッドを使用して、分類ソリューションストアからソリューションを取得します。