Jump to content

Connect SuperML | Leeroopedia MCP: Equip your AI agents with best practices, code verification, and debugging knowledge. Powered by Leeroo — building Organizational Superintelligence. Contact us at founders@leeroo.com.

Implementation:Online ml River Drift DummyDriftDetector

From Leeroopedia


Knowledge Sources
Domains Online_Learning, Concept_Drift, Drift_Detection, Baseline
Last Updated 2026-02-08 16:00 GMT

Overview

A baseline drift detector that generates pseudo drift signals either at fixed intervals or with random probability based on a sigmoid function.

Description

DummyDriftDetector provides two strategies for generating drift signals independent of actual data characteristics. The fixed mode triggers drift every t_0 samples with an optional warm-up period to avoid synchronized resets in ensembles. The random mode uses a sigmoid function to define drift probability, reaching 0.5 at t_0 and approaching 1.0 at t_0 + w/2. The dynamic_cloning parameter enables different seeds and warm-up periods for each clone, preventing synchronized behavior in ensemble settings. This detector is useful as a baseline or for simulating periodic model refreshes.

Usage

Use DummyDriftDetector as a baseline to evaluate whether actual drift detectors provide value beyond periodic resets. Also useful in ensemble methods to implement periodic model refreshes without actual drift detection, or for ablation studies to separate drift detection impact from other algorithm components.

Code Reference

Source Location

Signature

class DummyDriftDetector(base.DriftDetector):
    def __init__(
        self,
        trigger_method: str = "fixed",
        t_0: int = 300,
        w: int = 0,
        dynamic_cloning: bool = False,
        seed: int | None = None,
    ):
        ...

Import

from river import drift

I/O Contract

Parameter Type Description
trigger_method str (default: "fixed") "fixed" or "random" trigger strategy
t_0 int (default: 300) Reference point for triggers
w int (default: 0) Warm-up period (fixed) or probability width (random)
dynamic_cloning bool (default: False) Change seed/w on each clone
seed int (optional) Random seed for reproducibility

Usage Examples

import random
from river import drift

rng = random.Random(42)
data = [rng.gauss(0, 1) for _ in range(1000)]

# Fixed triggers every 500 samples
ptrigger = drift.DummyDriftDetector(t_0=500, seed=42)
for i, v in enumerate(data):
    ptrigger.update(v)
    if ptrigger.drift_detected:
        print(f"Drift detected at instance {i}.")
# Output:
# Drift detected at instance 499.
# Drift detected at instance 999.

# Random triggers with sigmoid probability
rtrigger = drift.DummyDriftDetector(
    trigger_method="random",
    t_0=500,
    w=100,
    dynamic_cloning=True,
    seed=42
)
for i, v in enumerate(data):
    rtrigger.update(v)
    if rtrigger.drift_detected:
        print(f"Drift detected at instance {i}.")

# Use in ensemble to avoid synchronized resets
from river import forest

model = forest.ARFClassifier(
    drift_detector=drift.DummyDriftDetector(
        trigger_method="fixed",
        t_0=500,
        w=100,
        dynamic_cloning=True
    )
)

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment