머신 러닝 API 사용
ML(Machine Learning) API를 사용하여 ServiceNow Machine Learning 모델을 학습시키고 추론을 실행합니다.
ML API를 사용하면 솔루션을 교육하고 솔루션 버전을 관리할 수 있습니다. 활성 버전을 가져와 설정하고, 교육 상태를 모니터링하는 등의 작업을 수행할 수 있습니다. ML API는 TF-IDF(term frequency-inverse document frequency)를 단어 말뭉치로 사용할 수 있는 인코더도 제공합니다. 예측 가능성 예상치를 사용하면 테이블 열의 예측 값을 평가할 수 있습니다.
ML API 클래스 개요
이 섹션에서는 ML 솔루션을 훈련하고 훈련된 솔루션으로 추론을 실행하기 위한 클래스를 간략하게 설명합니다.
- 데이터 세트
데이터 세트는 ML 교육 알고리즘에 대한 입력으로 사용할 테이블 이름, 열 및 행 선택 기준을 포함한 기록 세트입니다. 데이터 세트에는 실제 데이터가 포함되지 않습니다.
자세한 내용은 DatasetDefinition 단원을 참조하십시오.
- ML 객체 – 솔루션, 인코더 및 추정치
ML 객체는 데이터 세트에 적용할 특정 교육 구성을 정의합니다. 일부 작업은 ML 객체에서 공통적입니다. 솔루션 객체에는 분류, 클러스터링, 회귀 및 유사성이 포함됩니다.
인코더는 사용자가 제공하는 언어 데이터 세트를 기반으로 미리 학습되거나 학습된 텍스트 처리 개체입니다. 시스템이 텍스트 필드를 해석하고 처리하는 방법을 결정하는 인코더를 학습시킬 수 있습니다. 텍스트가 포함된 ML 솔루션의 경우 인코더를 학습시켜 텍스트를 처리하고 솔루션에서 학습된 인코더를 사용하는 방법을 지정할 수 있습니다.
PredictabilityEstimate 객체는 데이터 세트에서 예측 가능한 필드와 이러한 예측 가능성의 기반이 되는 기능을 추정합니다.
자세한 내용은 다음을 참조하십시오.- 스토어
ML 객체는 각 객체 유형에 대한 특정 저장소에서 유지 관리됩니다. 각 저장소 클래스에는 추가, 가져오기, 업데이트 및 삭제 작업에 대한 메서드가 포함되어 있습니다.
- 버전
학습된 각 객체는 작업을 실행할 수 있는 새 버전을 생성합니다. 버전 API를 사용하여 솔루션 버전을 가져오고 작업을 실행합니다.
종합하기: ML API 흐름
ML 객체 인코더 요구 사항:
- 유사성 API 솔루션에 필요합니다.
- Levenshtein 거리 알고리즘을 사용하지 않는 한 클러스터링 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를 사용하여 데이터 세트를 정의합니다.
- 매장에 있는 모든 분류 솔루션 보기
- 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 객체 유형에 적용할 수 있습니다.
- 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() 메서드를 사용하여 분류 솔루션 저장소에서 솔루션을 가져옵니다.