Home

Awesome

MIDAS

This is an implementation of MIDAS - edge stream anomaly detection but implemented in Go.

For more information about how it works, please checkout the resources section.

Usage and installation

Read the docs

Checkout the examples folder for detailed instructions

import (
	"github.com/steve0hh/midas"
	"fmt"
)

func main () {
	src := []int{2,2,3,3,5,5,7,11,1,2}
	dst := []int{3,3,4,4,9,9,73,74,75,76}
	times := []int{1,1,2,2,2,2,2,2,2,2}


	// using function to score the edges
	midasAnormScore := midas.Midas(src, dst, times, 2, 769)
	midasRAnormScore := midas.MidasR(src, dst, times, 2, 769, 0.6)

	fmt.Println(midasAnormScore)
	fmt.Println(midasRAnormScore)

	// using sklearn FitPredict api for midas
	m := midas.NewMidasModel(2, 769, 9460)
	fmt.Println(m.FitPredict(2,3,1))
	fmt.Println(m.FitPredict(2,3,1))
	fmt.Println(m.FitPredict(3,4,2))

	// using sklearn FitPredict api for midasR
	mr := midas.NewMidasRModel(2, 769, 9460, 0.6)
	fmt.Println(mr.FitPredict(2,3,1))
	fmt.Println(mr.FitPredict(2,3,1))
	fmt.Println(mr.FitPredict(3,4,2))
}

Resources

Citation

If you use this code for your research, please consider citing the original paper.

@article{bhatia2019midas,
  title={MIDAS: Microcluster-Based Detector of Anomalies in Edge Streams},
  author={Bhatia, Siddharth and Hooi, Bryan and Yoon, Minji and Shin, Kijung and Faloutsos, Christos},
  journal={arXiv preprint arXiv:1911.04464},
  year={2019}
}

Contributing

Everyone is encouraged to help improve this project. Here are a few ways you can help:

TODOs