Skip to content

Commit df7f9c1

Browse files
author
Jaime Céspedes Sisniega
authored
Merge pull request #187 from IFCA/fix_readme
Improve readme with additional info
2 parents e524a95 + 7db3ef9 commit df7f9c1

File tree

3 files changed

+150
-4
lines changed

3 files changed

+150
-4
lines changed

README.md

Lines changed: 150 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,10 @@
1717
<a href="https://frouros.readthedocs.io/">
1818
<img src="https://readthedocs.org/projects/frouros/badge/?version=latest" alt="documentation"/>
1919
</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>
2024
<!-- PyPI -->
2125
<a href="https://pypi.org/project/frouros">
2226
<img src="https://img.shields.io/pypi/v/frouros.svg?label=release&color=blue" alt="pypi">
@@ -187,9 +191,147 @@ pip install frouros
187191

188192
## 🕵🏻‍♂️️ Drift detection methods
189193

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.
193335

194336
## 👍 Contributing
195337

@@ -210,4 +352,8 @@ Although Frouros paper is still in preprint, if you want to cite it you can use
210352

211353
## 📝 License
212354

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.

docs/source/images/detectors.png

-88 KB
Binary file not shown.

images/detectors.png

-88 KB
Binary file not shown.

0 commit comments

Comments
 (0)