インフルエンサーAPI
1つ以上のインフルエンサーの異常検出ジョブ結果を取得します。
リクエスト
GET _ml/anomaly_detectors/<job_id>/results/influencers
前提条件
## 説明
インフルエンサーは、異常に寄与した、または責任があるエンティティです。インフルエンサーの結果は、ジョブ設定で`````influencer_field_name`````が指定されている場合にのみ利用可能です。
## パスパラメータ
- `````<job_id>
- (必須、文字列)異常検出ジョブの識別子。
クエリパラメータ
desc
- (オプション、Boolean)trueの場合、結果は降順にソートされます。
end
- (オプション、文字列)この時刻よりも早いタイムスタンプを持つインフルエンサーを返します。デフォルトは
-1
で、これは未設定であり、結果は特定のタイムスタンプに制限されません。 exclude_interim
- (オプション、Boolean)
true
の場合、出力は中間結果を除外します。デフォルトはfalse
で、これは中間結果が含まれることを意味します。 from
- (オプション、整数)指定された数のインフルエンサーをスキップします。デフォルトは
0
です。 influencer_score
- (オプション、double)この値以上の異常スコアを持つインフルエンサーを返します。デフォルトは
0.0
です。 size
- (オプション、整数)取得するインフルエンサーの最大数を指定します。デフォルトは
100
です。 sort
- (オプション、文字列)要求されたインフルエンサーのソートフィールドを指定します。デフォルトでは、インフルエンサーは
influencer_score
値でソートされます。 start
- (オプション、文字列)この時刻以降のタイムスタンプを持つインフルエンサーを返します。デフォルトは
-1
で、これは未設定であり、結果は特定のタイムスタンプに制限されません。
リクエストボディ
リクエストボディ内でクエリパラメータを指定することもできます。例外はfrom
とsize
で、代わりにpage
を使用します:
page
- `````from
- (オプション、整数)指定された数のインフルエンサーをスキップします。デフォルトは
0
です。 size
- (オプション、整数)取得するインフルエンサーの最大数を指定します。デフォルトは
100
です。
レスポンスボディ
APIは、次のプロパティを持つインフルエンサーオブジェクトの配列を返します:
bucket_span
- (数値)バケットの長さ(秒単位)。この値は、ジョブで指定された
bucket_span
と一致します。 influencer_score
- (数値)0-100の範囲の正規化スコアで、これはこのバケット内のインフルエンサーの確率に基づいています。
initial_influencer_score
とは異なり、この値は新しいデータが分析されるときに再正規化プロセスによって更新されます。 influencer_field_name
- (文字列)インフルエンサーのフィールド名。
influencer_field_value
- (文字列)異常に影響を与えた、寄与した、または責任があるエンティティ。
initial_influencer_score
- (数値)0-100の範囲の正規化スコアで、これは検出器全体で集約されたインフルエンサーの確率に基づいています。これは、バケットが処理された時点で計算された初期値です。
is_interim
- (Boolean)
true
の場合、これは中間結果です。言い換えれば、結果は部分的な入力データに基づいて計算されます。 job_id
- (文字列)異常検出ジョブの識別子。
probability
- (数値)インフルエンサーがこの行動を持つ確率で、範囲は0から1です。例えば、0.0000109783。この値は300桁以上の高精度で保持できるため、
influencer_score
は人間が読みやすく、親しみやすい解釈として提供されます。 result_type
- (文字列)内部。この値は常に
influencer
に設定されます。 timestamp
- (日付)これらの結果が計算されたバケットの開始時刻。
追加のインフルエンサーのプロパティは、分析されるフィールドに応じて追加されます。例えば、user_name
をインフルエンサーとして分析している場合、結果ドキュメントにフィールドuser_name
が追加されます。この情報により、異常結果をより簡単にフィルタリングできます。
例
Python
resp = client.ml.get_influencers(
job_id="high_sum_total_sales",
sort="influencer_score",
desc=True,
)
print(resp)
Ruby
response = client.ml.get_influencers(
job_id: 'high_sum_total_sales',
body: {
sort: 'influencer_score',
desc: true
}
)
puts response
Js
const response = await client.ml.getInfluencers({
job_id: "high_sum_total_sales",
sort: "influencer_score",
desc: true,
});
console.log(response);
コンソール
GET _ml/anomaly_detectors/high_sum_total_sales/results/influencers
{
"sort": "influencer_score",
"desc": true
}
この例では、APIは次の情報を返します。インフルエンサーのスコアに基づいて降順にソートされています。
Js
{
"count": 189,
"influencers": [
{
"job_id": "high_sum_total_sales",
"result_type": "influencer",
"influencer_field_name": "customer_full_name.keyword",
"influencer_field_value": "Wagdi Shaw",
"customer_full_name.keyword" : "Wagdi Shaw",
"influencer_score": 99.02493,
"initial_influencer_score" : 94.67233079580171,
"probability" : 1.4784807245686567E-10,
"bucket_span" : 3600,
"is_interim" : false,
"timestamp" : 1574661600000
},
...
]
}