Machine Learning API の使用
ServiceNow機械学習 (ML) API を使用して、機械学習モデルをトレーニングし、推論を実行します。
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() メソッドを使用して、分類ソリューションストアからソリューションを取得します。