Профилирование данных — это процесс извлечения дополнительной информации о данных. В первом приближении под дополнительной информацией может пониматься такая метаинформация как автор, дата создания, размер занимаемой памяти. Однако помимо этого данные могут содержать неочевидные зависимости и закономерности, сокрытые в них. О выявлении такого рода информации из данных и будет идти речь в данной работе.
Профилирование является частой задачей у людей, работающих с массивами данных. Выявленные зависимости могут представлять ценность для довольно широкого круга людей. Некоторые примеры приведены ниже:
• Специалисты по машинному обучению.
Перед обучением алгоритма, решающего некую задачу, данные для обучения необходимо подготовить. Одно из важных действий — определение параметров, которые являются производными от других параметров. Такие параметры стоит исключать из обучающей выборки, ведь они не несут новой полезной информации об объекте. Их наличие только увеличит количество потребляемой памяти, время обучения, а также повысит шансы переобучения.
• Люди, работающие с финансовыми данными.
Проверка или получение гипотезы из финансовых данных могут быть очень полезны с точки зрения бизнеса. Например, найденная зависимость “если покупатель приобретает наушники, то он приобретает и микрофон” может указать на то, что целесообразно размещать указанные товары физически ближе друг к другу в магазинах техники, или же продавать наушники со встроенным микрофоном.
• Учёные, работающие с экспериментальными данными.
Автоматическое нахождение зависимости в данных может натолкнуть на формулирование гипотезы, открытие нового закона или по крайней мере указать направление для дальнейшего исследования.
Функциональные зависимости хорошо изучены для таблиц. Их описание можно найти в любом учебнике по базам данных...
Результаты работы:
• Выявлена наиболее ресурсозатратная часть наивного алгоритма валидации.
• Выполнен обзор существующих подходов к оптимизации выявленной части и выбран наиболее релевантный.
• Спроектирован и реализован быстрый алгоритм валидации на основе выбранного подхода.
• Произведено сравнение базового и быстрого алгоритмов валидации.
Код этой работы доступен на GitHub.
По теме данной работы была написана статья “FastGFDs: Efficient Validation of Graph Functional Dependencies with Desbordante”, которая была доложена на конференции FRUCT’23.