機械学習 API の使用
ServiceNow Machine Learning (ML) API を使用して、機械学習モデルをトレーニングし、推論を実行します。
ML API を使用すると、ソリューションのトレーニングとバージョンの管理が可能になります。アクティブなバージョンの取得と設定、トレーニングステータスの監視などを行うことができます。ML API には、用語周波数逆ドキュメント頻度 (TF-IDF) をワードコーパスとして使用できるエンコーダーも用意されています。予測可能性の推定により、テーブル列の予測値を評価できます。
ML API クラスの概要
このセクションでは、ML ソリューションをトレーニングし、トレーニング済みソリューションを使用して推論を実行するためのクラスについて簡単に説明します。
- データセット
データセットは ML トレーニングアルゴリズムの入力として使用する、テーブル名、列、行選択基準を含む一連のレコード。データセットには実際のデータは含まれていません。
詳細については、「 DatasetDefinition」を参照してください。
- ML オブジェクト – ソリューション、エンコーダー、推定
ML オブジェクトは、データセットに適用する特定のトレーニング構成を定義します。一部の操作は ML オブジェクト全体で共通です。ソリューションオブジェクトには、分類、クラスタリング、回帰、類似性が含まれます。
エンコーダーは、事前にトレーニングされたテキスト処理オブジェクト、または提供された言語データセットに基づいてトレーニングされたテキスト処理オブジェクトです。システムがテキストフィールドをどのように解釈して処理するかを決定するエンコーダーをトレーニングできます。テキストを含む ML ソリューションの場合、エンコーダーをトレーニングして、テキストの処理方法を指定し、トレーニング済みエンコーダーをソリューションで使用できます。
PredictabilityEstimate オブジェクトは、データセット内のどのフィールドが予測可能であるか、およびこの予測可能性の基になっている特徴量を推定します。
詳細については、以下を参照してください。- 店舗
ML オブジェクトは、オブジェクトタイプごとに特定のストアで維持されます。各ストアクラスには、追加、取得、更新、および削除操作のメソッドが含まれています。
詳細については、以下を参照してください。- バージョン
トレーニングされた各オブジェクトは、タスクを実行できる新しいバージョンになります。バージョン API を使用して、ソリューションバージョンを取得し、そのバージョンでタスクを実行します。
まとめ:ML API フロー
- データセットの定義 (DatasetDefinition)
- ML オブジェクト (Solution/Encoder/PredictabilityEstimate) の作成
- ストアに追加 (ストア)
- トレーニング (Solution/Encoder/PredictabilityEstimate)
- エンコーダー (エンコーダー) を作成する
- データセットの定義 (DatasetDefinition)
- エンコーダーを指定してソリューションを作成 (ソリューション)
- ストアに追加 (SolutionStore)
- トレーニング (ソリューション)
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() version メソッドを使用してそのトレーニングステータスを取得します。
// 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>"); - オプション。ClassificationSolutionVersion – predict() メソッドoptionsパラメーターを設定して、上位 3 つの結果を返し、すべての結果を返します。
// 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() メソッドを使用して、分類ソリューションストアからソリューションを取得します。