language: cn
model_unique_abbr: isolation_based_online_anomalous_trajectory
version: 1.0
identification:
  docker_image_name: isolation_based_online_anomalous_trajectory:1.0
  model_name: 基于频繁序列挖掘的轨迹异常探测
  semantic: anomaly trajectory detection
  description: iBOAT基于孤立森林（Isolation Forest）的概念，通过将轨迹点隔离在一个树结构中，来识别不符合正常轨迹模式的异常轨迹。
  category_application: 诊断型
  category_data:
    - 轨迹数据分析
  keywords:
    - 基于孤立森林的异常检测
    - 隔离
parameter_info:
  parameters:
    - arg_name: all_csv_file
      is_single_en_dash: false
      param_type: input_data
      name: 轨迹点数据
      description: 历史正常的轨迹csv格式数据集，数据中需包含轨迹id、X、Y坐标列
      data_type: csv
      data_semantic: Historically normal trajectory csv dataset
    - arg_name: all_track_id_field
      is_single_en_dash: true
      param_type: param
      name: 历史轨迹集轨迹id字段
      description: id列在输入历史正常轨迹集csv文件中的列名
      data_type: str
      data_semantic: historically normal trajectory csv dataset id field
      param_switches:
        - switch_arg_name: all_csv_file
          switch_arg_value_regex: csv$
          switch_arg_value_examples: [ big_dataset.csv, small_dataset.csv ]
    - arg_name: all_x_field
      is_single_en_dash: true
      param_type: param
      name: 历史正常轨迹数据集X坐标字段
      description: 历史正常轨迹数据集X坐标列在输入文件中的列名
      data_type: str
      data_semantic: historically normal trajectory csv dataset x field
      param_switches:
        - switch_arg_name: all_csv_file
          switch_arg_value_regex: csv$
          switch_arg_value_examples: [big_dataset.csv, small_dataset.csv]
    - arg_name: all_y_field
      is_single_en_dash: true
      param_type: param
      name: 历史正常轨迹数据集Y坐标字段
      description: 历史正常轨迹数据集Y坐标列在输入文件中的列名
      data_type: str
      data_semantic: historically normal trajectory csv dataset y field
      param_switches:
        - switch_arg_name: all_csv_file
          switch_arg_value_regex: csv$
          switch_arg_value_examples: [big_dataset.csv, small_dataset.csv]
    - arg_name: test_csv_file
      is_single_en_dash: false
      param_type: input_data
      name: 轨迹点数据
      description: 测试轨迹csv格式的数据集，数据中需包含轨迹id、X、Y坐标列
      data_type: csv
      data_semantic: Test trajectory CSV dataset
    - arg_name: test_track_id_field
      is_single_en_dash: true
      param_type: param
      name: 测试轨迹集轨迹id字段
      description: id列在输入测试轨迹集csv文件中的列名
      data_type: str
      data_semantic: Test trajectory CSV dataset id field
      param_switches:
        - switch_arg_name: test_csv_file
          switch_arg_value_regex: csv$
          switch_arg_value_examples: [ big_dataset.csv, small_dataset.csv ]
    - arg_name: test_track_id
      is_single_en_dash: true
      param_type: param
      name: 测试轨迹集轨迹id编号
      description: 在输入测试轨迹集csv文件中选择的轨迹id列轨迹编号
      data_type: int
      data_semantic: Select the track ID column track number in the input test track set CSV file
      param_switches:
        - switch_arg_name: test_csv_file
          switch_arg_value_regex: csv$
          switch_arg_value_examples: [ big_dataset.csv, small_dataset.csv ]
    - arg_name: test_x_field
      is_single_en_dash: true
      param_type: param
      name: 测试轨迹数据集X坐标字段
      description: 测试轨迹数据集X坐标列在输入文件中的列名
      data_type: str
      data_semantic: Test trajectory CSV dataset x field
      param_switches:
        - switch_arg_name: test_csv_file
          switch_arg_value_regex: csv$
          switch_arg_value_examples: [big_dataset.csv, small_dataset.csv ]
    - arg_name: test_y_field
      is_single_en_dash: true
      param_type: param
      name: 测试轨迹数据集Y坐标字段
      description: 测试轨迹数据集Y坐标列在输入文件中的列名
      data_type: str
      data_semantic: Test trajectory CSV dataset y field
      param_switches:
        - switch_arg_name: test_csv_file
          switch_arg_value_regex: csv$
          switch_arg_value_examples: [big_dataset.csv, small_dataset.csv ]
    - arg_name: tile_size
      is_single_en_dash: false
      param_type: param
      name: 在轨迹集的地理面积大小范围内创建m行n列网格
      description: 在轨迹集的地理面积大小范围内创建m行n列网格，便于轨迹点与网格进行映射
      data_type: str
      data_semantic: Create a m-row n-column grid within the geographic area of the track set to facilitate the mapping of track points with the grid
      specification:
        default: '[10, 10]'
    - arg_name: threshold
      is_single_en_dash: true
      param_type: param
      name: 轨迹点的支持率阈值
      description: 轨迹点支持率小于阈值（threshold），将该点标记为异常点
      data_type: float
      data_semantic: detect_result
      specification:
        default: 0.04
        range:
          - "[0,1]"

    - arg_name: output
      is_single_en_dash: false
      param_type: output_data
      name: 异常轨迹信息
      description: 输出测试轨迹的情况，包括异常点、异常点比例、轨迹异常得分情况等
      data_type: txt
      data_semantic: detect_result

  groups:
    - group_id: all_ixyid
      group_name: 输入历史正常轨迹集数据的id、X、Y列
      group_param_arg_names:
        - all_csv_file
        - all_track_id_field
        - all_x_field
        - all_y_field
    - group_id: test_ixyid
      group_name: 输入异常轨迹测试集数据的id、X、Y列以及测试轨迹id
      group_param_arg_names:
        - test_csv_file
        - test_track_id_field
        - test_x_field
        - test_y_field
        - test_track_id

application:
  domain: 轨迹异常检测、数据挖掘
  objective: 异常轨迹检测算法适用于识别移动对象轨迹数据中的异常行为。它的主要应用领域包括：交通堵塞、车辆违规行驶等
  dimension:
  - 二维
  mechanism: 准备轨迹数据，将轨迹点映射到一个网格上。这个网格可以看作是地理空间的离散化表示，用于更方便地处理轨迹数据。算法会根据网格中的历史轨迹数据集中的子轨迹，筛选掉与之不一致的历史轨迹。换句话说，它会删除那些与工作窗口中的子轨迹不相符的历史轨迹。只要工作窗口中子轨迹的支持度高于某个阈值（通常用符号θ表示），一旦子轨迹的支持度下降到低于阈值θ，则说明这个是异常轨迹点，将其保存到异常轨迹窗口中。不断重复上述过程
operation:
  usage: 该算法需要以下参数:历史轨迹集X坐标列(all_x_field)，历史轨迹集Y坐标列(all_y_field)，历史轨迹集id列(all_track_id_field)。测试轨迹X坐标列(test_x_field)，测试轨迹Y坐标列(test_y_field)，测试轨迹id列(test_track_id_field)，测试轨迹id值（test_track_id）
  exec_example:
    - docker run -v $(pwd):/data isolation_based_online_anomalous_trajectory:1.0 --all_csv_file ../data/shenzhen/all_trace.csv --test_csv_file ../data/shenzhen/test_trace.csv -all_track_id_field Id -all_x_field x -all_y_field y -test_track_id_field Id -test_x_field x -test_y_field y -test_track_id 1 --tile_size "(10,12)" -threshold 0.05 --output output.txt
    - docker run -v $(pwd):/data isolation_based_online_anomalous_trajectory:1.0 --all_csv_file ../data/shenzhen/all_trace.csv --test_csv_file ../data/shenzhen/test_trace.csv -all_track_id_field Id -all_x_field x -all_y_field y -test_track_id_field Id -test_x_field x -test_y_field y -test_track_id 1  --output output.txt
  output_display:
    - "得到对应测试轨迹的异常轨迹点、异常轨迹点比例、异常得分,保存在txt文件中,不需要可视化"
technique:
  language:
    - Python
  os:
    - Linux
    - Windows
  dependencies:
    - name: pandas
      version: 1.3.5
source:
  maintainer: Yixun Liu
  organization: Central South University
  contact: 1907269689@qq.com
  integrated_softwares:
    - name: pandas
      version: 1.3.5
      license: MIT
  references:
    - "Chen, C., Zhang, D.Q., Castro, P .S., et al 2013. iBOA T: isolationbased online anomalous trajectory detection. IEEE Transactions on Intelligent Transportation Systems, 14(2): 806–818."
