ClusteringSolution - グローバル
ClusteringSolution API は、予測インテリジェンスストアで使用されるスクリプト可能なオブジェクトです。
この API には 予測インテリジェンス プラグイン (com.glide.platform_ml) が必要で、 sn_ml 名前空間内で提供されます。
- DatasetDefinition API を使用してデータセットを作成します。
- コンストラクターを使用して、クラスタリングソリューションオブジェクトを作成します。
- ClusteringSolutionStore - add() メソッドを使用して、ソリューション オブジェクトをクラスタリング ソリューション ストアに追加します。
- submitTrainingJob() メソッドを使用してソリューションをトレーニングします。これにより、 ClusteringSolutionVersion API を使用して管理できるオブジェクトのバージョンが作成されます。
使用上のガイドラインについては、「 ML API の使用」を参照してください。
ClusteringSolution:ClusteringSolution (オブジェクト構成)
クラスターソリューションを作成します。
| 名前 | タイプ | 説明 |
|---|---|---|
| 構成 | オブジェクト | の構成プロパティを含む JavaScript オブジェクト ソリューション。 |
| config.algorithmConfig | オブジェクト | 必須。アルゴリズム構成プロパティを含む JavaScript オブジェクト。 プロパティの設定は、 algorithm プロパティに設定された値によって異なります。 |
| config.algorithmConfig.algorithm | 文字列 | ソリューションをエンコードする方法。 有効な値:
クラスタリングの前にデータ内のクラスター数を指定する必要がないため、DBSCANを好むユーザーもいます。 dbscanのプロパティ:
hdbscanのプロパティ:
kmeansのプロパティ: |
| config.algorithmConfig.distanceMetric | 文字列 | DBSCAN アルゴリズムのみ。類似のデータオブジェクトをスキャンするための距離メトリクス。 有効な値: levenshteinDistance |
| config.algorithmConfig.epsilon | 数値 | DBSCAN アルゴリズムのみ。近隣検索半径のサイズを表す 0 〜 1 の 10 進数値。 |
| config.algorithmConfig.minimumNeighbours | 数値 | DBSCAN アルゴリズムのみ。クラスターに含めるためにポイントに必要な近傍の最小数。levenshteinDistance の場合、データセットからポイントが除外されないように、値は 1 である必要があります。 |
| config.algorithmConfig.minimumSamples | 数値 | ポイントがコアポイントであるかどうかを判別するために必要な近傍内のデータサンプルの最小数。 デフォルト:なし |
| config.algorithmConfig.targetCoverage | 数値 | K-means アルゴリズムのみ。互いに類似性の低いレコードを除外するためのパーセンタイルフィールド。 |
| config.clusterConcept | 文字列 | オプション。コンセプトタイプ。概念は、頻度の降順にリストされた一連の単語です。TFIDF ベースのクラスターコンセプトを生成するには、値を tfidf に設定します。概念タイプは、クラスタリング定義 [ml_capability_definition_clustering] テーブルにリストされています。 デフォルト:頻度ベースのクラスターコンセプト |
| config.clusterConceptFieldNames | アレイ | オプション。クラスター概念フィールド名のリスト。これらの値は、クラスターの概念を作成するための外部列であり、クラスターソリューションのトレーニングには使用されません。外部列が指定されている場合、それらの列はクラスターの概念にのみ使用され、クラスターリングソリューショントレーニングには使用されません。クラスターの概念フィールドは、クラスターリング定義 [ml_capability_definition_clustering] テーブルに一覧表示されます。 デフォルト:入力テキスト列はクラスターの概念を生成します |
| config.dataset | オブジェクト | DatasetDefinition オブジェクト名。 |
| config.domainName | 文字列 | オプション。このデータセットに関連付けられたドメイン名。「 ドメインセパレーション」および 予測インテリジェンスを参照してください。 デフォルト:現在のドメイン ( |
| config.groupByFieldName | 文字列 | オプション。 レコードを 1 つ以上のクラスターにグループ化するためのフィールド名。 次のセットアップ例では、各タイプが個別のクラスターにグループ化され、10 個のクラスターがレンダリングされます。
|
| config.groupUnclusteredRecords | ブーリアン | クラスター化されていないレコードを結果でグループ化するかどうかを示すフラグ。 有効な値:
デフォルト値:false |
| config.inputFieldNames | アレイ | 文字列としての入力フィールド名のリスト。モデルは、これらのフィールドを使用して予測を行います。 |
| config.label | 文字列 | 予測タスクを識別します。 |
| config.maxTimeWindowForUpdate | 数値 | オプション。レコードを検索するモデル更新ポイントまでの分数。たとえば、値が 15 の場合、システムは直近 15 分間に作成されたレコードのみを検索します。デフォルトでは、システムはすべてのレコードをスキャンします。 |
| config.minRecordsPerCluster | 数値 | オプション。クラスターで許可するレコードの最小数。値は 2 以上でなければなりません。 デフォルト値:2 |
| config.minRowCount | 文字列 | オプション。トレーニングのためにデータセットに必要なレコードの最小数。 デフォルト:10000 |
| config.processingLanguage | 文字列 | 2 文字の ISO 639-1 言語コード形式の処理言語。 |
| config.stopwords | アレイ | オプション。languageプロパティ設定に基づいてシステムが自動的に生成する文字列のプリセットリスト。詳細については、「 カスタムストップワードリストの作成」を参照してください。 デフォルト:英語のストップワード |
| config.trainingFrequency | 文字列 | モデルを再トレーニングする頻度。
可能な値:
|
| config.updateFrequency | ソリューション定義のモデルを再ビルドする必要がある頻度。
可能な値:
|
次の例は、オブジェクトを作成して ClusteringSolution ストア。この例では、トレーニングのためにオブジェクトを送信する方法も示しています。
try{
var myData = new sn_ml.DatasetDefinition({
'tableName' : 'incident',
'fieldNames' : ['category', 'short_description', 'state', 'description'],
'encodedQuery' : 'activeANYTHING'
});
var mySolution = new sn_ml.ClusteringSolution({
'label': "clustering solution",
'dataset' : myData,
'inputFieldNames':['short_description'],
'groupByFieldName' : 'category',
'algorithmConfig' : {
'algorithm' : 'kmeans',
'targetCoverage' : '90'
}
});
// add solution
var solutionName = sn_ml.ClusteringSolutionStore.add(mySolution);
var solutionVersion = mySolution.submitTrainingJob();
var trainingStatus = solutionVersion.getStatus();
gs.print(JSON.stringify(JSON.parse(trainingStatus), null, 2));
} catch(ex){
gs.print('Exception caught: '+ ex.getMessage());
}
出力:
{
"state": "waiting_for_training",
"percentComplete": "0",
"hasJobEnded": "false"
}
次の例は、「説明」フィールドをクラスターの概念フィールドとして含める方法を示しています。
var myIncidentData = new sn_ml.DatasetDefinition({
'tableName' : 'incident',
'fieldNames' : ['category', 'short_description', 'description'],
});
var mySolution = new sn_ml.ClusteringSolution({
'label': 'clustering_test',
'dataset': myIncidentData,
'inputFieldNames': ['short_description'],
'clusterConceptFieldNames': ['description']
});
var solutionNameFromStore = sn_ml.ClusteringSolutionStore.add(mySolution);
var myClassifier = mySolution.submitTrainingJob();
ClusteringSolution - cancelTrainingJob()
のジョブをキャンセル ソリューションオブジェクト トレーニングのために送信された
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| なし |
次の例は、既存のトレーニングジョブをキャンセルする方法を示しています。
var mySolution = sn_ml.ClusteringSolutionStore.get('ml_sn_global_global_clustering');
mySolution.cancelTrainingJob();
ClusteringSolution:getActiveVersion()
アクティブを取得します ClusteringSolutionVersion オブジェクト。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| オブジェクト | アクティブな ClusteringSolutionVersion オブジェクト。 |
次の例は クラスタリングソリューション ストアからアクティブなバージョンを取得し、そのトレーニングステータスを返す
var mlSolution = sn_ml.ClusteringSolutionStore.get('ml_x_snc_global_global_clustering');
gs.print(JSON.stringify(JSON.parse(mlSolution.getActiveVersion().getStatus()), null, 2));
出力:
{
"state": "solution_complete",
"percentComplete": "100",
"hasJobEnded": "true"
}
ClusteringSolution:getAllVersions()
のすべてのバージョンを取得します クラスタリングソリューション。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| アレイ | ソリューションオブジェクトの既存のバージョン。関連項目 ClusteringSolutionVersion API。 |
次の例は、すべての ClusteringSolution バージョン オブジェクトを取得し、それらに対して getVersionNumber() および getStatus() ソリューション バージョン メソッドを呼び出す方法を示しています。
var mlSolution = sn_ml.ClusteringSolutionStore.get('ml_x_snc_global_global_clustering');
var mlSolutionVersions = mlSolution.getAllVersions();
for (i = 0; i < mlSolutionVersions.length; i++) {
gs.print("Version " + mlSolutionVersions[i].getVersionNumber() + " Status: " + mlSolutionVersions[i].getStatus() +"\n");
};
出力:
Version 3 Status: {"state":"solution_complete","percentComplete":"100","hasJobEnded":"true"}
Version 2 Status: {"state":"solution_complete","percentComplete":"100","hasJobEnded":"true"}
Version 1 Status: {"state":"solution_cancelled","percentComplete":"0","hasJobEnded":"true"}
ClusteringSolution:getLatestVersion()
の最新バージョンを取得します 解決策。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| オブジェクト | ClusteringSolutionVersion の最新バージョンに対応するオブジェクト を ClusteringSolution() に置き換えます。 |
次の例は、ソリューションの最新バージョンを取得し 、そのトレーニングステータスを返す方法を示しています。
var mlSolution = sn_ml.ClusteringSolutionStore.get('ml_x_snc_global_global_clustering');
gs.print(JSON.stringify(JSON.parse(mlSolution.getLatestVersion().getStatus()), null, 2));
出力:
{
"state": "solution_complete",
"percentComplete": "100",
"hasJobEnded": "true"
}
ClusteringSolution:getName()
ストアとのインタラクションに使用するオブジェクトの名前を取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| 文字列 | ソリューションオブジェクトの名前。 |
次の例は、 クラスタリングソリューション データセット情報を更新し、オブジェクトの名前を出力
// Update solution
var myIncidentData = new sn_ml.DatasetDefinition({
'tableName' : 'incident',
'fieldNames' : ['category', 'short_description', 'priority'],
'encodedQuery' : 'activeANYTHING'
});
var eligibleFields = JSON.parse(myIncidentData.getEligibleFields('clustering'));
var myCluster = new sn_ml.ClusteringSolution({
'label': "my clustering solution",
'dataset' : myIncidentData,
'inputFieldNames': eligibleFields['eligibleInputFieldNames'],
'predictedFieldName': 'category'
});
// update solution
sn_ml.ClusteringSolutionStore.update('ml_x_snc_global_global_clustering_solution', myCluster);
// print solution name
gs.print('Solution Name: '+myCluster.getName());
出力:
Solution Name: ml_x_snc_global_global_clustering_solution
ClusteringSolution:getProperties()
ソリューションオブジェクトプロパティを取得します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| オブジェクト | ClusteringSolutionStore 内の Dataset オブジェクトと ClusteringSolution() オブジェクトの詳細の内容。 |
| <Object>.algorithmConfig | アルゴリズム構成プロパティを含む JavaScript オブジェクト。 プロパティの結果は、 algorithm プロパティに設定された値によって異なります。
データタイプ:オブジェクト。 |
| <Object>.algorithmConfig.algorithm | ソリューションをエンコードする方法。 dbscanのプロパティ:
kmeansのプロパティ:
データタイプ:文字列。 |
| <Object>.algorithmConfig.distanceMetric | DBSCAN アルゴリズムのみ。類似のデータオブジェクトをスキャンするための距離メトリクス。 データタイプ:文字列。 |
| <Object>.algorithmConfig.epsilon | DBSCAN アルゴリズムのみ。近隣検索半径のサイズを表す 0 〜 1 の 10 進数値。 データタイプ:数値。 |
| <Object>.algorithmConfig.minimumNeighbours | DBSCAN アルゴリズムのみ。クラスターに含めるためにポイントに必要な近傍の最小数。levenshteinDistance の場合、データセットからポイントが除外されないように、値は 1 である必要があります。 データタイプ:数値。 |
| <Object>.algorithmConfig.targetCoverage | K-means アルゴリズムのみ。互いに類似性の低いレコードを除外するためのパーセンタイルフィールド。 データタイプ:数値。 |
| <Object>.datasetProperties | ソリューションに関連付けられている DatasetDefinition() オブジェクトのプロパティを一覧表示します。
データタイプ:オブジェクト。 |
| <Object>.datasetProperties.tableName | データセットのテーブルの名前。たとえば、「 tableName」:「インシデント」です。 データタイプ:文字列。 |
| <Object>.datasetProperties.fieldNames | 指定されたテーブルのフィールド名を文字列としてリストします。例:"fieldNames" : ["short_description", "priority"]。 データタイプ:アレイ。 |
| <Object>.datasetProperties.fieldNames.fieldDetails | フィールドのプロパティを指定する JavaScript オブジェクトのリスト。
データタイプ:アレイ。 |
| <Object>.datasetProperties.fieldNames.fieldDetails.<object>.名前 | このデータセットを制限する情報のタイプを定義するフィールドの名前。 データタイプ:文字列。 |
| <Object>.datasetProperties.fieldDetails.<object>.タイプ | 機械学習フィールドタイプ。 データタイプ:文字列。 |
| <Object>.datasetProperties.fieldDetails.encodedQuery | 標準の Glide 形式でエンコードされたクエリ文字列。「 エンコードされたクエリ文字列」を参照してください。 データタイプ:文字列。 |
| <Object>.domainName | このデータセットに関連付けられたドメイン名。「 ドメインセパレーション」および 予測インテリジェンスを参照してください。 データタイプ:文字列。 |
| <Object>.groupByFieldName | レコードを 1 つ以上のクラスターにグループ化するためのフィールド名。 データタイプ:文字列 |
| <Object>.inputFieldNames | 文字列としての入力フィールド名のリスト。モデルは、これらのフィールドを使用して予測を行います。 データタイプ:文字列。 |
| <Object>.label | 予測タスクを識別します。
データタイプ:文字列。 |
| <Object>.minRecordsPerCluster | クラスターで許可するレコードの最小数。 データタイプ:数値。 |
| <Object>.name | システムによって割り当てられた名前。 データタイプ:文字列。 |
| <Object>.predictedFieldName | 予測可能性のためにトレーニングするフィールドを識別します。 データタイプ:文字列。 |
| <Object>.processingLanguage | 2 文字の ISO 639-1 言語コード形式の処理言語。 データタイプ:文字列。 |
| <Object>.scope | オブジェクトスコープ。現時点で有効な値は グローバル値のみです。データタイプ:文字列 |
| <Object>.stopwords | オプション。languageプロパティ設定に基づいてシステムが自動的に生成する文字列のプリセットリスト。詳細については、「 カスタムストップワードリストの作成」を参照してください。 データタイプ:アレイ。 |
| <Object>.trainingFrequency | モデルを再トレーニングする頻度。 可能な値:
データタイプ:文字列。 |
| <Object>.updateFrequency | ソリューション定義のモデルを再ビルドする必要がある頻度。 可能な値:
データタイプ:文字列 |
次の例では、 ストア内のソリューションオブジェクトのプロパティを取得し ます。
var myCluster = new sn_ml.ClusteringSolutionStore.get("ml_x_snc_global_global_clustering_solution");
gs.print(JSON.stringify(JSON.parse(myCluster.getProperties()), null, 2));
*** Script: {
"algorithmConfig": {
"algorithm": "kmeans",
"targetCoverage": "90"
},
"datasetProperties": {
"tableName": "incident",
"fieldNames": [
"category",
"short_description",
"state",
"description"
],
"encodedQuery": "activeANYTHING"
},
"domainName": "global",
"groupByFieldName": "category",
"inputFieldNames": [
"short_description"
],
"label": "clustering solution",
"minRecordsPerCluster": 2,
"name": "ml_x_snc_global_global_clustering_solution",
"processingLanguage": "en",
"scope": "global",
"stopwords": [
"Default English Stopwords"
],
"trainingFrequency": "run_once",
"updateFrequency": "do_not_update"
}}ClusteringSolution:getVersion(文字列 version)
ソリューションを取得します 指定されたバージョン番号で。
| 名前 | タイプ | 説明 |
|---|---|---|
| version | 文字列 | ソリューションの既存のバージョン番号。 |
| タイプ | 説明 |
|---|---|
| オブジェクト | ClusteringSolutionVersion API メソッドを呼び出すことができる ClusteringSolution() オブジェクトの指定されたバージョン。 |
次の例は、バージョン番号でソリューションのトレーニングステータスを取得する方法を示しています 。
var mlSolution = sn_ml.ClusteringSolutionStore.get('ml_x_snc_global_global_clustering');
gs.print(JSON.stringify(JSON.parse(mlSolution.getVersion('1').getStatus()), null, 2));
出力:
{
"state": "solution_complete",
"percentComplete": "100",
"hasJobEnded": "true"
}
ClusteringSolution:setActiveVersion(文字列 version)
ストア内の指定されたバージョンのソリューションをアクティブ化します。
| 名前 | タイプ | 説明 |
|---|---|---|
| version | 文字列 | アクティブ化する ClusteringSolution() オブジェクトバージョンの名前。 このバージョンをアクティブ化すると、他のバージョンはすべて非アクティブ化されます。 |
| タイプ | 説明 |
|---|---|
| なし |
次の例は、ストアでソリューションバージョンをアクティブ化する方法を示しています。
sn_ml.ClusteringSolution.setActiveVersion("ml_incident_categorization");
ClusteringSolution:submitTrainingJob()
トレーニングジョブを送信します。
| 名前 | タイプ | 説明 |
|---|---|---|
| なし |
| タイプ | 説明 |
|---|---|
| オブジェクト | ClusteringSolutionVersion に対応するオブジェクト ClusteringSolution トレーニング対象 |
次の例は、データセットを作成し、それをソリューションに適用し、ソリューションをストアに追加して、トレーニングジョブを送信する方法を示しています。
// Create a dataset
var myData = new sn_ml.DatasetDefinition({
'tableName' : 'incident',
'fieldNames' : ['assignment_group', 'short_description', 'description'],
'encodedQuery' : 'activeANYTHING'
});
// Create a solution
var mySolution = new sn_ml.ClusteringSolution({
'label': "my solution definition",
'dataset' : myData,
'predictedFieldName' : 'assignment_group',
'inputFieldNames':['short_description']
});
// Add the solution to the store to later be able to retrieve it.
var my_unique_name = sn_ml.ClusteringSolutionStore.add(mySolution);
// Train the solution - this is a long running job
var myClusterVersion = mySolution.submitTrainingJob();