Univariate driftdetectie

Monitoring Machine Learning in Python

Hakim Elakhrass

CEO and co-founder

Wat is univariate driftdetectie?

De afbeelding toont de monitoringworkflow en waar de univariate methode daarin past.

Monitoring Machine Learning in Python

Univariate methoden

  • Jensen–Shannon-afstand – zowel categorisch als continu
  • Hellinger – categorisch en continu
  • Wasserstein – alleen continu
  • Kolmogorov–Smirnov – alleen continu

  • L-infiniteit – alleen categorisch

  • Chi-kwadraat – alleen categorisch

1 https://nannyml.readthedocs.io/en/stable/how_it_works/univariate_drift_comparison.html
Monitoring Machine Learning in Python

Code-implementatie

# Intialize the univariate drift calculator
uv_calc = nannyml.UnivariateDriftCalculator(
    continuous_methods=['wasserstein', 'hellinger'],
    categorical_methods=['jensen_shannon', 'l_infinity', 'chi2'],
    column_names=feature_column_names,
    timestamp_column_name='timestamp',
    chunk_period='d'
    )
# Fit, calculate and plot the results
uv_calc.fit(reference)
uv_results = uv_calc.calculate(analysis)
uv_results.plot().show()
Monitoring Machine Learning in Python

Filteren

  • Op basis van kolomnamen
  • Op basis van univariate methoden
# Filter the univariate results
filtered_figure = uv_results.filter(column_names=['trip_distance', 'fare_amount'], 
            methods=['jensen_shannon'])

# Plot the filtered results
filtered_figure.show().plot()
Monitoring Machine Learning in Python

Alert count-ranker

  • Rangschik features op aantal alerts
# Initialize the alert count ranker
alert_count_ranker = nannyml.AlertCountRanker()
alert_count_ranked_results = alert_count_ranker.rank(
    uv_results,
    only_drifting=False)
# Display the results
display(alert_count_ranked_results)

De afbeelding toont een dataframe met het aantal alerts per feature.

Monitoring Machine Learning in Python

Correlatie-ranker

  • Rangschikt features op correlatie met absolute prestatieveranderingen
# Initialize the correlation ranker
correlation_ranker = nannyml.CorrelationRanker()
correlation_ranker.fit(perf_results.filter(period='reference'))
correlation_ranked_results = correlation_ranker.rank(uv_results, perf_results)

# Display the results
display(correlation_ranked_results)

De afbeelding toont een dataframe met de Pearson-correlatie en p-waarde per feature.

Monitoring Machine Learning in Python

Distributie van een feature monitoren

  • Geeft betere inzichten en meer uitlegbaarheid
# Create distribution plots
distribution_results = uv_results.plot(kind='distribution')

# Show the plots
distribution_results.show()
Monitoring Machine Learning in Python

Distributiegrafiek van features

 

De afbeelding toont distributiegrafieken voor continue en categorische features.

Monitoring Machine Learning in Python

Laten we oefenen!

Monitoring Machine Learning in Python

Preparing Video For Download...