检测地理数据中的异常位置

编辑

如果您的数据包含地理字段,您可以使用机器学习功能来检测异常行为,例如在不寻常位置发生的信用卡交易或具有不寻常来源位置的 Web 请求。

先决条件

编辑

要运行此类异常检测作业,您必须设置机器学习功能。您还必须具有包含空间数据类型的时间序列数据。特别是,您必须具有

纬度和经度必须在 -180 到 180 的范围内,并表示地球表面上的一个点。

此示例使用示例电子商务订单和示例 Web 日志数据集。有关详细信息,请参阅添加示例数据

浏览您的地理数据

编辑

要从机器学习分析中获得最佳结果,您必须了解您的数据。您可以使用机器学习应用程序中的数据可视化器来实现此目的。搜索特定字段或字段类型,例如示例数据集中的 geo-point 字段。您可以查看在特定时间段和样本大小内包含这些字段的文档数量。您还可以查看不同值的数量、示例值列表并在地图上预览它们。例如

A screenshot of a geo_point field in Data Visualizer

创建异常检测作业

编辑

在创建此类作业之前,需要考虑一些限制

  1. 您无法为包含地理功能的异常检测作业创建预测。
  2. 您无法向使用地理功能的检测器添加带有条件的自定义规则

如果这些限制可以接受,请尝试创建一个使用 lat_long 函数来分析您自己的数据或示例数据集的异常检测作业。

要创建使用 lat_long 函数的异常检测作业,在 Kibana 中,您必须单击机器学习 > 异常检测 > 作业页面上的创建作业,然后选择高级作业向导。或者,使用创建异常检测作业 API

例如,创建一个分析示例电子商务订单数据集的作业,以查找相对于每个客户(user ID)的过去行为而言,具有不寻常坐标(geoip.location 值)的订单

A screenshot of creating an anomaly detection job using the eCommerce data in Kibana
API 示例
PUT _ml/anomaly_detectors/ecommerce-geo 
{
  "analysis_config" : {
    "bucket_span":"15m",
    "detectors": [
      {
        "detector_description": "Unusual coordinates by user",
        "function": "lat_long",
        "field_name": "geoip.location",
        "by_field_name": "user"
      }
    ],
    "influencers": [
      "geoip.country_iso_code",
      "day_of_week",
      "category.keyword"
      ]
  },
  "data_description" : {
    "time_field": "order_date"
  },
  "datafeed_config":{ 
    "datafeed_id": "datafeed-ecommerce-geo",
    "indices": ["kibana_sample_data_ecommerce"],
    "query": {
      "bool": {
        "must": [
          {
            "match_all": {}
          }
        ]
      }
    }
  }
}

POST _ml/anomaly_detectors/ecommerce-geo/_open 

POST _ml/datafeeds/datafeed-ecommerce-geo/_start 
{
  "end": "2022-03-22T23:00:00Z"
}

创建异常检测作业。

创建数据馈送。

打开作业。

启动数据馈送。由于示例数据集通常包含晚于当前日期的的时间戳,因此指定数据馈送的适当结束日期是一个好主意。

或者,创建一个分析示例 Web 日志数据集的作业,以检测具有不寻常坐标(geo.coordinates 值)或异常高的传输数据总和(bytes 值)的事件

A screenshot of creating an anomaly detection job using the web logs data in Kibana
API 示例
PUT _ml/anomaly_detectors/weblogs-geo 
{
  "analysis_config" : {
    "bucket_span":"15m",
    "detectors": [
      {
        "detector_description": "Unusual coordinates",
        "function": "lat_long",
        "field_name": "geo.coordinates"
      },
      {
        "function": "high_sum",
        "field_name": "bytes"
      }
    ],
    "influencers": [
      "geo.src",
      "extension.keyword",
      "geo.dest"
    ]
  },
  "data_description" : {
    "time_field": "timestamp",
     "time_format": "epoch_ms"
  },
  "datafeed_config":{ 
    "datafeed_id": "datafeed-weblogs-geo",
    "indices": ["kibana_sample_data_logs"],
    "query": {
      "bool": {
        "must": [
          {
            "match_all": {}
          }
        ]
      }
    }
  }
}

POST _ml/anomaly_detectors/weblogs-geo/_open 

POST _ml/datafeeds/datafeed-weblogs-geo/_start 
{
  "end": "2022-04-15T22:00:00Z"
}

创建异常检测作业。

创建数据馈送。

打开作业。

启动数据馈送。由于示例数据集通常包含晚于当前日期的的时间戳,因此指定数据馈送的适当结束日期是一个好主意。

分析结果

编辑

在异常检测作业处理了一些数据后,您可以在 Kibana 中查看结果。

如果您使用 API 创建作业和数据馈送,则在您按照提示同步必要的已保存对象之前,您无法在 Kibana 中看到它们。

当您在异常浏览器泳道结果中选择包含异常的期间时,您可以看到典型坐标和实际坐标的地图。例如,在电子商务示例数据中,有一个用户具有异常的购物行为

A screenshot of an anomalous event in the eCommerce data in Anomaly Explorer

“典型”值表示先前观察到的位置的聚类中心,该聚类中心最接近当时的“实际”位置。例如,可能有一个中心靠近用户的家,另一个中心靠近用户的工作场所,因为有许多记录与这些不同的位置相关联。

同样,在 Web 日志示例数据中,也有传输数据总和异常高且地理坐标异常的时间段

A screenshot of an anomalous event in the web logs data in Anomaly Explorer

您可以使用主要影响因素值来进一步过滤您的结果,并识别可能的促成因素或行为模式。

您还可以通过单击异常表格中的操作菜单中的在地图中查看,在地图中查看异常。

A screenshot of the anomaly table with the Action menu opened and the "View in Maps" option selected

当您使用自己的数据尝试此类异常检测作业时,可能需要进行一些实验才能找到最佳的存储桶、检测器和影响因素组合,以检测您要寻找的行为类型。

有关异常检测概念的详细信息,请参阅概念。有关可以在异常检测作业中使用的完整功能列表,请参阅功能参考。有关更多异常检测示例,请参阅示例

向地图添加异常图层

编辑

要将异常检测作业的结果集成到地图中,请单击添加图层,然后选择机器学习异常。然后,您必须选择或创建使用 lat_long 函数的异常检测作业。

例如,您可以扩展构建地图以按国家或地区比较指标中的地图示例,以包括一个使用您的 Web 日志异常检测作业的图层

A screenshot of an anomaly within the Maps app

下一步

编辑