Coder Social home page Coder Social logo

a-poliakov / discords_discovery Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 137.62 MB

Поиск диссонансов временного ряда

C++ 87.16% C 12.02% CMake 0.82%
parallel-computing xeon-phi vectorized-computation discords-discovery c openmp-parallelization

discords_discovery's Introduction

Поиск диссонансов временного ряда

Разработка параллельного алгоритма поиска диссонансов во временном ряде для многоядерных систем Intel Xeon Phi и NVIDIA GPGPU

Описание:

Временным рядом называется последовательность значений, описывающих проте- кающий во времени процесс, измеренных в последовательные моменты времени, обычно через равные промежутки. Временные ряды используются в самых различных областях (техника, экономика, медицина, банковское дело и др. [1]) , и описывают различные процессы, протекающие во времени (ежедневные изменение цены на акции, курсы валют, изменения объемов продаж, годового объема производства и др. [2]) . На данный момент хорошо изучена задача поиска тенденций, характерных для данного временного ряда. Относительно новой и мало исследованной является задача обнаружения диссонансов временного ряда.

logo

Один из подходов поиска аномалий временного ряда, предложенный Е. Кеохом (E. Keogh) в 2005 году является поиск диссонансов (discords) [3] . Диссонансом временного ряда называется подпоследовательность временного ряда, максимально сильно отлича- ющаяся от остальных подпоследовательностей. Диссонансы временного ряда – самые необычные подпоследовательности ряда.

Используемые технологии:
C++, OpenMP, icc compiler, OpenACC

Датасеты:

  • ECG606 (2600 элементов) - ссылка. Данные ЭКГ.
  • ecg_kaggle (60 000 элементов) - ссылка. Данные ЭКГ.
  • SCD1M (1 миллион элементов) и SCD10M (10 миллионов элементов) - ссылка. Синтетически сгенерированные случайные данные (600 examples of control charts synthetically generated by the process in Alcock and Manolopoulos (1999)) - UCI Archive
  • LMS (50 миллионов элементов) - данные прокатного стана
  • Random Walk (1млн и 10млн элементов) - сгенерированный датасет - ссылка.

Алгоритмы

Полный перебор (Brute Force):

  • Найти все попарные расстояния и максимум их минимумов
  • Неприемлемо ввиду сложности 𝑂(𝑁^2)

Наивный алгоритм на основе матрицы расстояний

Реализация алгоритма.

Строится матрица расстояний всех подпоследовательностей временного ряда со всеми другими подпоследовательностями временного ряда. Затем находятся минимумы расстояний в каждой из строк. Среди всех минимумов находится максимальное значение - это и будет диссонанс.

см. исходный код здесь

см. модульные и функциональные тесты здесь

Схема и псевдокод.

Модульная и файловая структура.

Последовательный HOTSAX:

Для ускорения поиска диссонанса используется упорядочивание итераций цикла с помощью двух вспомогательных структур данных: префиксное дерево с цепочками индексов начала подпоследовательностей и таблица слов со столбцом, содержащим количество вхождений слова. Находятся строковые аппроксимации всех подпоследовательностей, которые добавляются в индекс слов. По SAX представлениям строится префиксное дерево, в листья которого добавляются индексы начала подпоследовательностей.

Пример реализации алгоритма HOTSAX в библиотеке jmotif можно посмотреть здесь

logo

Параллельный HOTSAX алгоритм

Реализация алгоритма для Intel Xeon Phi (OpenMP).

см. исходный код здесь

см. модульные и функциональные тесты здесь

Реализация алгоритма для GPU NVIDIA (OpenACC).

Реализация алгоритма для GPU NVIDIA использует технологию декларативного распараллеливания OpenACC (используется версия 2 с компилятором PGI).

Возможны два варианта сборки проекта:

  • из IDE Clion от JetBrains с использованием CMake (удобно, но официально не поддерживает компилятор PGI)
  • из командной строки используя make-файл

см. исходный код здесь

Схема и псевдокод.

Модульная и файловая структура.

Литература

[1] Keogh E.J., et al. Finding the most unusual time series subsequence: algorithms and applications. Knowl. Inf. Syst. 2007. vol. 11, no. 1. pp. 1–27.

[2] Keogh, E., Lin, J., Fu, A., HOT SAX: Efficiently finding the most unusual time series subsequence, In Proc. ICDM (2005)

[3] Huang, T., Zhu, Y., Mao, Y., Li, X., Liu, M., Wu, Y., ... & Dobbie, G. (2016). Parallel Discord Discovery. In Advances in Knowledge Discovery and Data Mining (pp. 233-244). Springer International Publishing.

discords_discovery's People

Contributors

a-poliakov avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.