ELKI (auch auf GitHub ) ist ein Open-Source-Projekt für Data Mining und Data Science. Es ist einzigartig in Bezug auf seine modulare Architektur: Sie können Algorithmen, Abstandsfunktionen und Indizes für die Beschleunigung mit sehr wenigen Einschränkungen kombinieren (natürlich können Algorithmen, die keine Abstände verwenden, nicht mit Abständen kombiniert werden). Dies ist aus Effizienzgründen nicht der einfachste Code. Beim Data Mining müssen Sie vorsichtig mit dem Arbeitsspeicher ArrayList<Integer>
umgehen. Wenn Sie Skalierbarkeit wünschen , ist die Verwendung ein absolutes Muss.
Aufgrund der modularen Architektur ist es einfach, nur kleine Module wie eine einzelne Distanzfunktion oder einen Algorithmus beizutragen.
Wir führen eine Liste mit Ideen für Data Mining-Projekte , die grob nach Schwierigkeitsgraden geordnet sind. Die meisten Projekte sind die Implementierung einer Variante eines Algorithmus. ELKI zielt darauf ab, vergleichende Studien von Algorithmen zu ermöglichen, daher versuchen wir, jede Kombination zuzulassen und auch Varianten von Algorithmen abzudecken. Zum Beispiel haben wir mit k-means nicht nur den Lloyds-Algorithmus, sondern 10 Varianten des allgemeinen k-means-Themas. Über 220 Artikel wurden (zumindest teilweise) in ELKI neu implementiert.
Indem wir alles im selben Tool implementieren, erhalten wir viel vergleichbarere Ergebnisse. Wenn Sie R für das Benchmarking verwenden, vergleichen Sie normalerweise Äpfel und Orangen. k-means in R selbst ist eigentlich ein altes Fortran-Programm und sehr schnell. k-means in R aber im "flexclust" -Paket ist 100x langsamer, weil es in echtem R-Code geschrieben ist. Vertraue also keinem Benchmark in R ... auch neigen R-Module dazu, inkompatibel zu sein, daher kannst du oft nicht den Abstand A von Modul A mit Algorithmus B von Modul B verwenden. In ELKI versuchen wir, so viel Code wie möglich zu teilen Implementierungsübergreifend möglich, um solche Artefakte zu reduzieren (es wird natürlich nie möglich sein, einen zu 100% fairen Benchmark zu haben - es gibt immer Raum für Optimierungen), aber auch, um das einfache Kombinieren von Modulen zu ermöglichen.
Sie könnten mit etwas Kleinem wie der Hartigan & Wong-Variante mit k-Mitteln beginnen und dann mit sphärischen k-Mitteln fortfahren (die für spärliche Daten gedacht sind, bei denen verschiedene Leistungsoptimierungen erforderlich sein können) und mit einer besseren Unterstützung für kategoriale Daten fortfahren. oder Hinzufügen von Indizierungsfunktionen.
Ich würde auch gerne eine bessere Benutzeroberfläche für ELKI sehen , aber das ist eine große Anstrengung.