インフルエンサーAPI

1つ以上のインフルエンサーの異常検出ジョブ結果を取得します。

リクエスト

GET _ml/anomaly_detectors/<job_id>/results/influencers

前提条件

  1. ## 説明
  2. インフルエンサーは、異常に寄与した、または責任があるエンティティです。インフルエンサーの結果は、ジョブ設定で`````influencer_field_name`````が指定されている場合にのみ利用可能です。
  3. ## パスパラメータ
  4. - `````<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で、これは未設定であり、結果は特定のタイムスタンプに制限されません。

リクエストボディ

リクエストボディ内でクエリパラメータを指定することもできます。例外はfromsizeで、代わりにpageを使用します:

  • page
    1. - `````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

  1. resp = client.ml.get_influencers(
  2. job_id="high_sum_total_sales",
  3. sort="influencer_score",
  4. desc=True,
  5. )
  6. print(resp)

Ruby

  1. response = client.ml.get_influencers(
  2. job_id: 'high_sum_total_sales',
  3. body: {
  4. sort: 'influencer_score',
  5. desc: true
  6. }
  7. )
  8. puts response

Js

  1. const response = await client.ml.getInfluencers({
  2. job_id: "high_sum_total_sales",
  3. sort: "influencer_score",
  4. desc: true,
  5. });
  6. console.log(response);

コンソール

  1. GET _ml/anomaly_detectors/high_sum_total_sales/results/influencers
  2. {
  3. "sort": "influencer_score",
  4. "desc": true
  5. }

この例では、APIは次の情報を返します。インフルエンサーのスコアに基づいて降順にソートされています。

Js

  1. {
  2. "count": 189,
  3. "influencers": [
  4. {
  5. "job_id": "high_sum_total_sales",
  6. "result_type": "influencer",
  7. "influencer_field_name": "customer_full_name.keyword",
  8. "influencer_field_value": "Wagdi Shaw",
  9. "customer_full_name.keyword" : "Wagdi Shaw",
  10. "influencer_score": 99.02493,
  11. "initial_influencer_score" : 94.67233079580171,
  12. "probability" : 1.4784807245686567E-10,
  13. "bucket_span" : 3600,
  14. "is_interim" : false,
  15. "timestamp" : 1574661600000
  16. },
  17. ...
  18. ]
  19. }