class_docstr: Config class for `BOCPD` (Bayesian Online Change Point Detection).
class_docstr_tok: ["Config","class","for","`","BOCPD","`","(","Bayesian","Online","Change","Point","Detection",")","."]
docstr: :param change_kind: the kind of change points we would like to detect
  :param cp_prior: prior belief probability of how frequently changepoints occur
  :param lag: the maximum amount of delay/lookback (in number of steps) allowed for detecting change points.
      If ``lag`` is ``None``, we will consider the entire history. Note: we do not recommend ``lag = 0``.
  :param min_likelihood: we will discard any hypotheses whose probability of being a change point is
      lower than this threshold. Lower values improve accuracy at the cost of time and space complexity.
  :param max_forecast_steps: the maximum number of steps the model is allowed to forecast. Ignored.
code: def __init__(
      self,
      change_kind: Union[str, ChangeKind] = ChangeKind.Auto,
      cp_prior=1e-2,
      lag=None,
      min_likelihood=1e-16,
      max_forecast_steps=None,
      **kwargs,
  ):
      """
      :param change_kind: the kind of change points we would like to detect
      :param cp_prior: prior belief probability of how frequently changepoints occur
      :param lag: the maximum amount of delay/lookback (in number of steps) allowed for detecting change points.
          If ``lag`` is ``None``, we will consider the entire history. Note: we do not recommend ``lag = 0``.
      :param min_likelihood: we will discard any hypotheses whose probability of being a change point is
          lower than this threshold. Lower values improve accuracy at the cost of time and space complexity.
      :param max_forecast_steps: the maximum number of steps the model is allowed to forecast. Ignored.
      """
      self.change_kind = change_kind
      self.min_likelihood = min_likelihood
      self.cp_prior = (
          cp_prior  # Kats checks [0.001, 0.002, 0.005, 0.01, 0.02]
      )
      self.lag = lag
      super().__init__(max_forecast_steps=max_forecast_steps, **kwargs)
  
imports: import bisect
  import copy
  from enum import Enum
  import logging
  from typing import List, Tuple, Union
  import warnings
  import numpy
  import pandas
  import scipy.sparse
  from scipy.special import logsumexp
  from scipy.stats import norm
  from tqdm import tqdm
  from merlion.models.anomaly.base import NoCalibrationDetectorConfig, DetectorBase
  from merlion.models.anomaly.forecast_based.base import ForecastingDetectorBase
  from merlion.models.forecast.base import ForecasterConfig
  from merlion.plot import Figure
  from merlion.post_process.threshold import AggregateAlarms
  from merlion.utils.conj_priors import ConjPrior, MVNormInvWishart, BayesianMVLinReg
  from merlion.utils.time_series import TimeSeries, UnivariateTimeSeries, to_pd_datetime
label_desc: Use image node_id 1 to create a new BOCPDConfig object from inherited base classes: ForecasterConfig, NoCalibrationDetectorConfig with example: obj = BOCPDConfig(change_kind, cp_prior, lag, min_likelihood, max_forecast_steps)