17
17
<a href =" https://frouros.readthedocs.io/ " >
18
18
<img src="https://readthedocs.org/projects/frouros/badge/?version=latest" alt="documentation"/>
19
19
</a >
20
+ <!-- Downloads -->
21
+ <a href =" https://pepy.tech/project/frouros " >
22
+ <img src="https://static.pepy.tech/badge/frouros/month" alt="downloads"/>
23
+ </a >
20
24
<!-- PyPI -->
21
25
<a href =" https://pypi.org/project/frouros " >
22
26
<img src="https://img.shields.io/pypi/v/frouros.svg?label=release&color=blue" alt="pypi">
@@ -187,9 +191,147 @@ pip install frouros
187
191
188
192
## 🕵🏻♂️️ Drift detection methods
189
193
190
- The currently implemented detectors are listed in the following diagram.
191
-
192
- ![ Detectors diagram] ( /images/detectors.png )
194
+ The currently implemented detectors are listed in the following table.
195
+
196
+ <table >
197
+ <thead >
198
+ <tr >
199
+ <th>Drift detector</th>
200
+ <th>Type</th>
201
+ <th>Family</th>
202
+ <th>Method</th>
203
+ <th>Reference</th>
204
+ </tr >
205
+ </thead >
206
+ <tbody >
207
+ <tr >
208
+ <td rowspan="12">Concept drift</td>
209
+ <td rowspan="12">Streaming</td>
210
+ <td rowspan="3">CUMSUM</td>
211
+ <td>CUMSUM</td>
212
+ <td><a href="https://doi.org/10.2307/2333009">Page (1954)</a></td>
213
+ </tr >
214
+ <tr >
215
+ <td>Geometric moving average</td>
216
+ <td><a href="https://doi.org/10.2307/1266443">Roberts (1959)</a></td>
217
+ </tr >
218
+ <tr >
219
+ <td>Page Hinkley</td>
220
+ <td><a href="https://doi.org/10.2307/2333009">Page (1954)</a></td>
221
+ </tr >
222
+ <tr >
223
+ <td rowspan="6">Statistical process control</td>
224
+ <td>DDM</td>
225
+ <td><a href="https://doi.org/10.1007/978-3-540-28645-5_29">Gama et al. (2004)</a></td>
226
+ </tr >
227
+ <tr >
228
+ <td>ECDD-WT</td>
229
+ <td><a href="https://doi.org/10.1016/j.patrec.2011.08.019">Ross et al. (2012)</a></td>
230
+ </tr >
231
+ <tr >
232
+ <td>EDDM</td>
233
+ <td><a href="https://www.researchgate.net/publication/245999704_Early_Drift_Detection_Method">Baena-Garcıa et al. (2006)</a></td>
234
+ </tr >
235
+ <tr >
236
+ <td>HDDM-A</td>
237
+ <td><a href="https://doi.org/10.1109/TKDE.2014.2345382">Frias-Blanco et al. (2014)</a></td>
238
+ </tr >
239
+ <tr >
240
+ <td>HDDM-W</td>
241
+ <td><a href="https://doi.org/10.1109/TKDE.2014.2345382">Frias-Blanco et al. (2014)</a></td>
242
+ </tr >
243
+ <tr >
244
+ <td>RDDM</td>
245
+ <td><a href="https://doi.org/10.1016/j.eswa.2017.08.023">Barros et al. (2017)</a></td>
246
+ </tr >
247
+ <tr >
248
+ <td rowspan="3">Window based</td>
249
+ <td>ADWIN</td>
250
+ <td><a href="https://doi.org/10.1137/1.9781611972771.42">Bifet and Gavalda (2007)</a></td>
251
+ </tr >
252
+ <tr >
253
+ <td>KSWIN</td>
254
+ <td><a href="https://doi.org/10.1016/j.neucom.2019.11.111">Raab et al. (2020)</a></td>
255
+ </tr >
256
+ <tr >
257
+ <td>STEPD</td>
258
+ <td><a href="https://doi.org/10.1007/978-3-540-75488-6_27">Nishida and Yamauchi (2007)</a></td>
259
+ </tr >
260
+ <tr >
261
+ <td rowspan="14">Data drift</td>
262
+ <td rowspan="12">Batch</td>
263
+ <td rowspan="8">Distance based</td>
264
+ <td>Bhattacharyya distance</td>
265
+ <td><a href="https://www.jstor.org/stable/25047882">Bhattacharyya (1946)</a></td>
266
+ </tr >
267
+ <tr >
268
+ <td>Earth Mover's distance</td>
269
+ <td><a href="https://doi.org/10.1023/A:1026543900054">Rubner et al. (2000)</a></td>
270
+ </tr >
271
+ <tr >
272
+ <td>Hellinger distance</td>
273
+ <td><a href="https://doi.org/10.1515/CRLL.1909.136.210">Hellinger (1909)</a></td>
274
+ </tr >
275
+ <tr >
276
+ <td>Histogram intersection normalized complement</td>
277
+ <td><a href="https://doi.org/10.1007/BF00130487">Swain and Ballard (1991)</a></td>
278
+ </tr >
279
+ <tr >
280
+ <td>Jensen-Shannon distance</td>
281
+ <td><a href="https://doi.org/10.1109/18.61115">Lin (1991)</a></td>
282
+ </tr >
283
+ <tr >
284
+ <td>Kullback-Leibler divergence</td>
285
+ <td><a href="https://doi.org/10.1214/aoms/1177729694">Kullback and Leibler (1951)</a></td>
286
+ </tr >
287
+ <tr >
288
+ <td>MMD</td>
289
+ <td><a href="https://dl.acm.org/doi/10.5555/2188385.2188410">Gretton et al. (2012)</a></td>
290
+ </tr >
291
+ <tr >
292
+ <td>PSI</td>
293
+ <td><a href="https://doi.org/10.1057/jors.2008.144">Wu and Olson (2010)</a></td>
294
+ </tr >
295
+ <tr >
296
+ <td rowspan="4">Statistical test</td>
297
+ <td>Chi-square test</td>
298
+ <td><a href="https://doi.org/10.1080/14786440009463897">Pearson (1900)</a></td>
299
+ </tr >
300
+ <tr >
301
+ <td>Cramér-von Mises test</td>
302
+ <td><a href="https://doi.org/10.1080/03461238.1928.10416862">Cramér (1902)</a></td>
303
+ </tr >
304
+ <tr >
305
+ <td>Kolmogorov-Smirnov test</td>
306
+ <td><a href="https://doi.org/10.2307/2280095">Massey Jr (1951)</a></td>
307
+ </tr >
308
+ <tr >
309
+ <td>Welch's T-Test</td>
310
+ <td><a href="https://doi.org/10.2307/2332510">Welch (1947)</a></td>
311
+ </tr >
312
+ <tr >
313
+ <td rowspan="2">Streaming</td>
314
+ <td>Distance based</td>
315
+ <td>MMD</td>
316
+ <td><a href="https://dl.acm.org/doi/10.5555/2188385.2188410">Gretton et al. (2012)</a></td>
317
+ </tr >
318
+ <tr >
319
+ <td>Statistical test</td>
320
+ <td>Incremental Kolmogorov-Smirnov test</td>
321
+ <td><a href="https://doi.org/10.1145/2939672.2939836">dos Reis et al. (2016)</a></td>
322
+ </tr >
323
+ </tbody >
324
+ </table >
325
+
326
+ ## ✅ Who is using Frouros?
327
+
328
+ Frouros is actively being used by the following projects to implement drift
329
+ detection in machine learning pipelines:
330
+
331
+ * [ AI4EOSC] ( https://ai4eosc.eu ) .
332
+ * [ iMagine] ( https://imagine-ai.eu ) .
333
+
334
+ If you want your project listed here, do not hesitate to send us a pull request.
193
335
194
336
## 👍 Contributing
195
337
@@ -210,4 +352,8 @@ Although Frouros paper is still in preprint, if you want to cite it you can use
210
352
211
353
## 📝 License
212
354
213
- Frouros is an open-source software licensed under the [ BSD-3-Clause license] ( https://github.com/IFCA/frouros/blob/main/LICENSE ) .
355
+ Frouros is an open-source software licensed under the [ BSD-3-Clause license] ( https://github.com/IFCA/frouros/blob/main/LICENSE ) .
356
+
357
+ ## 🙏 Acknowledgements
358
+
359
+ Frouros has received funding from the Agencia Estatal de Investigación, Unidad de Excelencia María de Maeztu, ref. MDM-2017-0765.
0 commit comments