機械学習 API の使用

  • リリースバージョン: Yokohama
  • 更新日 2025年01月30日
  • 所要時間:13分
  • 機械学習 (ML) API を使用して ServiceNow 機械学習モデルをトレーニングし、推論を実行します。

    ML API を使用すると、ソリューションのトレーニングとソリューションバージョンの管理が可能になります。アクティブなバージョンの取得と設定、トレーニングステータスの監視などを行うことができます。ML API にはエンコーダーも用意されており、用語頻度逆ドキュメント頻度 (TF-IDF) をワードコーパスとして使用できます。予測可能性の推定により、テーブルの列の予測値を評価できます。

    注:
    予測インテリジェンス 実行された API 実行されます。このリリース以降は、ACL を使用してアクセス権を付与します。詳細については、「Query ACLs」を参照してください。

    ML API クラスの概要

    このセクションでは、ML ソリューションをトレーニングし、トレーニング済みソリューションを使用して推論を実行するためのクラスについて簡単に説明します。

    データセット

    データセットは ML トレーニングアルゴリズムの入力として使用する、テーブル名、列、および行の選択基準を含むレコードのセット。データセットには実際のデータは含まれません。

    詳細については、「 DatasetDefinition」を参照してください。

    ML オブジェクト – ソリューション、エンコーダー、推定値

    ML オブジェクトは、データセットに適用する特定のトレーニング構成を定義します。一部の操作は ML オブジェクト間で共通です。ソリューションオブジェクトには、分類、クラスタリング、回帰、および類似性が含まれます。

    エンコーダーは、事前にトレーニングされたか、指定した言語データセットに基づいてトレーニングされたテキスト処理オブジェクトです。システムがテキストフィールドをどのように解釈して処理するかを決定するエンコーダーをトレーニングできます。テキストを含む ML ソリューションの場合は、テキストを処理する方法を指定するようにエンコーダーをトレーニングし、 トレーニング済みの エンコーダーをソリューションで使用できます。

    PredictabilityEstimate オブジェクトは、データセット内のどのフィールドが予測可能か、およびこの予測可能性の基になっている特徴量を推定します。

    店舗

    ML オブジェクトは、オブジェクトタイプごとに特定のストアに保持されます。各ストア クラスには、追加、取得、更新、および削除操作のメソッドが含まれています。

    バージョン

    トレーニングされた各オブジェクトは、タスクを実行できる新しいバージョンになります。バージョン API を使用してソリューションバージョンを取得し、そのバージョンでタスクを実行します。

    まとめ:ML API フロー

    次のフローを使用して、ソリューション、エンコーダー、予測可能性の推定を構成およびトレーニングできます。
    図 : 1. ML API フロー – ソリューション、エンコーダー、見積もりのトレーニング
    この画像は、データセットの定義、ML オブジェクトの作成、ML オブジェクトのストアへの追加、ML オブジェクトのトレーニングまでの API フローを示しています。
    注:
    エンコーダー定義は複数のデータセット定義をサポートしますが、トレーニング フローは同じです。
    エンコーダーを使用してソリューションをトレーニングするには、最初にエンコーダーを作成してから、ソリューション構成にエンコーダーを含めます。
    図 : 2. ML API フロー – エンコーダーを使用したソリューション API トレーニング
    この画像は、データセットの定義から、既存のエンコーダーを指定するソリューション オブジェクトの作成、ストアへのソリューションの追加、ソリューションのトレーニングまでの API フローを示しています。

    ML オブジェクトエンコーダーの要件:

    • 類似性 API ソリューションで必須です。
    • レーベンシュタイン距離アルゴリズムを使用する場合を除き、クラスタリング API ソリューションで必須です (その場合、エンコーダーは省略可能です)。
    • 分類および回帰ソリューションではオプションです。
    • 予測可能性の推定には使用できません。

    ML API ソリューショントレーニングの開始

    このブレークダウンの例に従って、ソリューションを構成およびトレーニングする方法を学習します。

    ソリューションの構成とトレーニング
    この画像は、データセットの定義、分類ソリューション オブジェクトの作成、ストアへのソリューションの追加、ソリューションのトレーニングまでの API フローを示しています。
    1. DatasetDefinition API を使用してデータセットを定義します。
      var myData = new sn_ml.DatasetDefinition({
      
        'tableName' : 'incident',
        'fieldNames' : ['assignment_group', 'short_description', 'description'],
        'encodedQuery' : 'activeANYTHING'
      
      });
    2. コンストラクターを使用して、構成内のデータセットを含むソリューションを定義します。
      var mySolution = new sn_ml.ClassificationSolution({
      
        'label': "my solution definition",
        'dataset' : myData,
        'predictedFieldName' : 'assignment_group',
        'inputFieldNames':['short_description']
      
      });
    3. add() メソッドを使用して、ソリューション定義をストアに追加します。
      var my_unique_name = sn_ml.ClassificationSolutionStore.add(mySolution);
    4. submitTrainingJob() メソッドを使用してソリューションをトレーニングします。トレーニングが完了したら、ソリューションバージョン API を使用してトレーニング済みソリューションを管理できます。ソリューションは複数回再トレーニングできます。各トレーニングにより、推論を実行できる新しいソリューション「バージョン」が作成されます。
      var myClassifierVersion = mySolution.submitTrainingJob();
    ストア内のすべての分類ソリューションの表示
    ストアの 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 オブジェクトタイプに適用できます。

    この画像は、ストア内の分類ソリューションへのアクセス、ソリューションバージョンの選択、トレーニングステータスの確認までの API フローを示しています。
    1. 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');
    2. 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)));

      トレーニング完了時の出力:

    ソリューションバージョンを使用して予測を取得
    ソリューションがトレーニングされたら、トレーニング済みバージョンを取得し、予測を実行します。作成したソリューションをストアから入手します。次に、トレーニング済みバージョンを選択し、トレーニング済みバージョンを予測します。この画像は、ストア内の分類ソリューションへのアクセス、ソリューションバージョンの選択、予測入力データの取得までの API フローを示しています。
    注:
    エンコーダーと予測可能性の推定では予測を行うことはできません。
    1. 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');
    2. GlideRecord API の get() メソッドを使用して、インシデント [incident] テーブルのレコードを提供します。
      // single GlideRecord input
      var input = new GlideRecord("incident");
      input.get("<sys_id>");
    3. オプション。上位 3 つの結果を返し、すべての結果を返すように ClassificationSolutionVersion – predict() メソッド options パラメーターを構成します。
      // configure optional parameters
      var options = {};
      options.top_n = 3;
      options.apply_threshold = false;
    4. results という変数を宣言し、それを予測ジョブに割り当てます。予測ジョブを実行するには、 ClassificationSolution – getLatestVersion() メソッドを使用して最新のソリューションバージョンを取得し、そのバージョンで ClassificationSolutionVersion – predict() メソッドを呼び出します。
      var results = mlSolution.getLatestVersion().predict(input, options);
    5. 予測結果出力を出力します。
      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": ""
          }
        ]
      }