ELKI ( среда для разработки KDD-приложений, поддерживаемых индексными структурами ) — программная среда для добычи данных (KDD, обнаружения знаний в базах данных), разработанная для использования в научных исследованиях и обучении. Первоначально она была создана исследовательским подразделением систем баз данных Мюнхенского университета Людвига-Максимилиана , Германия, под руководством профессора Ганса-Петера Кригеля . Проект продолжился в Техническом университете Дортмунда , Германия. Он направлен на обеспечение разработки и оценки передовых алгоритмов добычи данных и их взаимодействия со структурами индексов баз данных .
Фреймворк ELKI написан на Java и построен на модульной архитектуре. Большинство в настоящее время включенных алгоритмов выполняют кластеризацию , обнаружение выбросов [1] и индексы баз данных . Объектно-ориентированная архитектура позволяет комбинировать произвольные алгоритмы, типы данных, функции расстояния , индексы и меры оценки. Компилятор Java just-in-time оптимизирует все комбинации в одинаковой степени, делая результаты бенчмаркинга более сопоставимыми, если они разделяют большие части кода. При разработке новых алгоритмов или структур индексов существующие компоненты можно легко использовать повторно, а безопасность типов Java обнаруживает множество ошибок программирования во время компиляции.
ELKI — это бесплатный инструмент для анализа данных, в основном сосредоточенный на поиске закономерностей и необычных точек данных без необходимости в метках. Он написан на Java и нацелен на быстроту и способность обрабатывать большие наборы данных с помощью специальных структур. Он создан для исследователей и студентов, чтобы они могли легко добавлять свои собственные методы и сравнивать различные алгоритмы. [2]
ELKI использовался в науке о данных для кластеризации код кашалотов , [3] для кластеризации фонем , [4] для обнаружения аномалий в космических полетах, [5] для перераспределения совместного использования велосипедов , [6] и прогнозирования дорожного движения. [7]
Университетский проект разработан для использования в обучении и исследованиях . Исходный код написан с учетом расширяемости и повторного использования, но также оптимизирован для производительности. Экспериментальная оценка алгоритмов зависит от многих факторов окружающей среды, а детали реализации могут оказывать большое влияние на время выполнения. [8] ELKI нацелен на предоставление общей кодовой базы с сопоставимыми реализациями многих алгоритмов.
Как исследовательский проект, в настоящее время он не предлагает интеграцию с приложениями бизнес-аналитики или интерфейс к общим системам управления базами данных через SQL . Лицензия copyleft ( AGPL ) также может быть препятствием для интеграции в коммерческие продукты; тем не менее, ее можно использовать для оценки алгоритмов перед разработкой собственной реализации для коммерческого продукта. Кроме того, применение алгоритмов требует знаний об их использовании, параметрах и изучения оригинальной литературы. Аудитория — студенты , исследователи , специалисты по данным и инженеры-программисты .
ELKI смоделирован вокруг ядра, вдохновленного базой данных , которое использует вертикальную компоновку данных, которая хранит данные в группах столбцов (аналогично семействам столбцов в базах данных NoSQL ). Это ядро базы данных обеспечивает поиск ближайшего соседа , поиск по диапазону/радиусу и функциональность запроса расстояния с ускорением индекса для широкого спектра мер различия . Алгоритмы, основанные на таких запросах (например, алгоритм k-ближайшего соседа , локальный фактор выброса и DBSCAN ), могут быть легко реализованы и выигрывают от ускорения индекса. Ядро базы данных также обеспечивает быстрые и эффективные по памяти коллекции для коллекций объектов и ассоциативных структур, таких как списки ближайших соседей.
ELKI широко использует интерфейсы Java, так что его можно легко расширить во многих местах. Например, пользовательские типы данных, функции расстояния, структуры индексов, алгоритмы, входные парсеры и выходные модули можно добавлять и комбинировать без изменения существующего кода. Это включает возможность определения пользовательской функции расстояния и использования существующих индексов для ускорения.
ELKI использует архитектуру загрузчика служб , позволяющую публиковать расширения в виде отдельных jar-файлов .
ELKI использует оптимизированные коллекции для повышения производительности, а не стандартный API Java. [9] Например, циклы for пишутся аналогично итераторам C++ :
for ( DBIDIter iter = ids . iter (); iter . valid (); iter . advance ()) { relation . get ( iter ); // Например, получить указанный объект idcollection . add ( iter ); // Например, добавить ссылку на коллекцию DBID }
В отличие от типичных итераторов Java (которые могут перебирать только объекты), это экономит память, поскольку итератор может внутренне использовать примитивные значения для хранения данных. Сокращенная сборка мусора улучшает время выполнения. Оптимизированные библиотеки коллекций, такие как GNU Trove3, Koloboke и fastutil, используют аналогичные оптимизации. ELKI включает структуры данных, такие как коллекции объектов и кучи (например, для поиска ближайшего соседа ), использующие такие оптимизации.
Модуль визуализации использует SVG для масштабируемого графического вывода и Apache Batik для рендеринга пользовательского интерфейса, а также экспорта без потерь в PostScript и PDF для легкого включения в научные публикации в LaTeX . Экспортированные файлы можно редактировать с помощью редакторов SVG, таких как Inkscape . Поскольку используются каскадные таблицы стилей , графический дизайн можно легко переделать. К сожалению, Batik довольно медленный и потребляет много памяти, поэтому визуализации не очень масштабируются для больших наборов данных (для больших наборов данных по умолчанию визуализируется только подвыборка данных).
Версия 0.4, представленная на «Симпозиуме по пространственным и временным базам данных» 2011 года, включавшая различные методы обнаружения пространственных выбросов [10] , получила награду конференции за «лучшую демонстрационную работу».
Выберите включенные алгоритмы: [11]
Версия 0.1 (июль 2008 г.) содержала несколько алгоритмов кластерного анализа и обнаружения аномалий , а также некоторые индексные структуры, такие как R*-дерево . Основное внимание в первом выпуске уделялось алгоритмам кластеризации подпространств и корреляционной кластеризации . [12]
В версии 0.2 (июль 2009 г.) добавлены функциональные возможности для анализа временных рядов , в частности функции расстояния для временных рядов. [13]
Версия 0.3 (март 2010 г.) расширила выбор алгоритмов обнаружения аномалий и модулей визуализации. [14]
В версии 0.4 (сентябрь 2011 г.) добавлены алгоритмы для геоанализа данных и поддержка многореляционных баз данных и индексных структур. [10]
Версия 0.5 (апрель 2012 г.) фокусируется на оценке результатов кластерного анализа , добавляя новые визуализации и некоторые новые алгоритмы. [15]
Версия 0.6 (июнь 2013 г.) представляет новую 3D-адаптацию параллельных координат для визуализации данных, помимо обычных дополнений алгоритмов и индексных структур. [16]
Версия 0.7 (август 2015 г.) добавляет поддержку неопределенных типов данных и алгоритмы для анализа неопределенных данных. [17]
Версия 0.7.5 (февраль 2019 г.) добавляет дополнительные алгоритмы кластеризации, алгоритмы обнаружения аномалий, меры оценки и структуры индексации. [18]
Версия 0.8 (октябрь 2022 г.) добавляет автоматическое создание индекса, сборку мусора и поиск с инкрементным приоритетом, а также множество других алгоритмов, таких как BIRCH . [19]
{{cite journal}}
: CS1 maint: несколько имен: список авторов ( ссылка ){{cite conference}}
: CS1 maint: несколько имен: список авторов ( ссылка ){{cite conference}}
: CS1 maint: несколько имен: список авторов ( ссылка ){{cite conference}}
: CS1 maint: несколько имен: список авторов ( ссылка ){{cite conference}}
: CS1 maint: несколько имен: список авторов ( ссылка ){{cite conference}}
: CS1 maint: несколько имен: список авторов ( ссылка ){{cite conference}}
: CS1 maint: несколько имен: список авторов ( ссылка )