머신 러닝 API 사용

  • 릴리스 버전: Zurich
  • 업데이트 날짜 2025년 07월 31일
  • 소요 시간: 12분
  • ML(Machine Learning) API를 사용하여 ServiceNow Machine Learning 모델을 학습시키고 추론을 실행합니다.

    ML API를 사용하면 솔루션을 교육하고 솔루션 버전을 관리할 수 있습니다. 활성 버전을 가져와 설정하고, 교육 상태를 모니터링하는 등의 작업을 수행할 수 있습니다. ML API는 TF-IDF(term frequency-inverse document frequency)를 단어 말뭉치로 사용할 수 있는 인코더도 제공합니다. 예측 가능성 예상치를 사용하면 테이블 열의 예측 값을 평가할 수 있습니다.

    주:
    예측 인텔리전스 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 솔루션에 필요합니다.
    • Levenshtein 거리 알고리즘을 사용하지 않는 한 클러스터링 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();
    매장에 있는 모든 분류 솔루션 보기
    store 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": ""
          }
        ]
      }