ELKI: Environment for Developing KDD-Applications Supported by Index-Structures
Data mining research leads to many algorithms for similar tasks. A fair and useful comparison of these algorithms is difficult due to several reasons:
- Implementations of comparison partners are not at hand.
- If implementations of different authors are provided, an evaluation in terms of efficiency is biased to evaluate the efforts of different authors in efficient programming instead of evaluating algorithmic merits.
On the other hand, efficient data management tools like index-structures can show considerable impact on data mining tasks and are therefore useful for a broad variety of algorithms.
In ELKI, data mining algorithms and data management tasks are separated and allow for an independent evaluation. This separation makes ELKI unique among data mining frameworks like Weka or YALE and frameworks for index structures like GiST. At the same time, ELKI is open to arbitrary data types, distance or similarity measures, or file formats. The fundamental approach is the independence of file parsers or database connections, data types, distances, distance functions, and data mining algorithms. Helper classes, e.g. for algebraic or analytic computations are available for all algorithms on equal terms.
With the development and publication of ELKI, we humbly hope to serve the data mining and database research community beneficially. The framework is free for scientific usage ("free" as in "open source", see License for details). In case of application of ELKI in scientific publications, we would appreciate credit in form of a citation of the appropriate publication (see Publications), that is, the publication related to the release of ELKI you were using.
The people behind ELKI are documented on the Team page.
Efficiency Benchmarking with ELKI
Please note: Algorithms in ELKI are not tuned by implementation for individual efficiency but for fair comparability within ELKI. Runtime comparisons of algorithms using ELKI implementations with algorithms using implementations not based on the ELKI framework are likely to produce misleading results. See also Benchmarking.
The ELKI wiki: Tutorials, HowTo-s, Documentation
Here are some pages to start reading at: Tutorial, FAQ, Algorithms, RelatedPublications, InputFormat, DataTypes, DistanceFunctions, DataSets, Development, Parameterization, JavaDoc, Visualization, Benchmarking.
Please note that editing and some contents are only available for logged in users. Logins are available to active contributors only. However, since we appreciate all feedback, you are of course welcome to also contribute contents by email and other means!
Getting ELKI: Download and Citation Policy
There is a list of Publications that accompany the ELKI releases. When using ELKI in your scientific work, you should cite the publication corresponding to the ELKI release you are using, to give credit. This also helps to improve the repeatability of your experiments. We would also appreciate if you contributed your algorithm to ELKI to allow others to reproduce your results and compare with your algorithm (which in turn will likely get you citations). We try to document every publication used for implementing ELKI: the page RelatedPublications is generated from the source code annotations.
Bug Reports and Contact
We also appreciate any comments and suggestions. You can contact the core developers by e-mail:
You can also subscribe the mailing list for users of ELKI via https://tools.rz.ifi.lmu.de/mailman/listinfo/elki-user, to exchange questions and ideas among other users or to get announcements (e.g., new releases, major changes) by the ELKI team.
Our primary "support" medium is this community mailing list. We appreciate if you share experiences and also success stories there that might help other users. This project makes a lot of progress, and information can get outdated rather quickly. If you prefer a web forum, you can try asking at StackOverflow, but you should understand that this is a general (and third-party operated) programming community.
- Extensibility - ELKI has a very modular design. We want to allow arbitrary combinations of data types, distance functions, algorithms, input formats, index structures and evaluations methods
- Contributions - ELKI grows only as fast as people contribute. By having a modular design that allows small contributions such as single distance functions and single algorithms, we can have students and external contributors participate in the progress of ELKI
- Completeness - for an exhaustive comparison of methods, we aim at covering as much published and credited work as we can
- Fairness - It is easy to do an unfair comparison by badly implementing a competitor. We try to implement every method as good as we can, and by publishing the source code allow for external improvements. We try to add all proposed improvements, such as index structures for faster range and kNN queries
- Performance - the modular architecture of ELKI allows optimized versions of algorithms and index structures for acceleration
- Progress - ELKI is changing with every release. To accomodate new features and enhance performance, API breakages are unavoidable. We hope to get a stable API with the 1.0 release, but we are not there yet.