![]() Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Двокаскадна декомпозиція простору
Підхід з декомпозицією всього простору n -вимірних даних полягає в поділі всіх координат на частини і побудови гіперкубів. Фактично рознесення значень точок n -вимірного простору у відповідний гіперкуб вимагає попереднього опрацювання даних, а саме сортування значень вибірки за всіма координатами. Для декомпозиції простору використовуємо двокаскадну кластеризацію. Розбиваємо вхідну множину ключів Q (Q 1, Q 2, Q 3, … QN)на p підмножин O 1(Q 1, Q 2, Q 3, … Qz), O 2(Qz+ 1, Q z +2, Q z +3, … Qt), …, Op (Qt +1, Q t +2, Qt+ 3, … QN). До кожної з підмножин, застосуємо алгоритм кластеризації, утворивши множини відповідних кластерів K 1(k 1, k 2, k 3, …), K 2(ks, ks +1, ks +2, …), …, Kp (kr, kr +1, kr +2, …), де k 1, k 2, …, ki,... – кластери, ключі в яких відносяться до відповідних підмножин O 1, O 2, …, Op. Утворимо множину кластерів 1-го каскаду кластеризації K об’єднанням (2.20). Застосуємо до цієї множини алгоритм кластеризації, розглядаючи кожен з кластерів k 1, k 2, …, ki,... як базовий, тобто листок деревазгортання. В результаті сформується множина кластерів 1-го каскаду. Таким чином отримуємо двокаскадну декомпозицію простору. Схема поділу та згортання зображена на рис. 2.10.
Рис. 2.10. Двокаскадне дерево формування кластерів Нехай простір складаєтсься із s n -вимірних даних: C = C (a, b, …, z). Вимірність а поділимо на n частин, b – на m частин,..., вимірність z – на k частин. Поділ простору за вимірностями на частини за параметрами n, m, …, k позначимо вектором розбиття l = (n, m, …, k). Схематично поділ тривимірного простору зображено на рис. 2.11. Рис. 2.11. Схема поділу тривимірного простору на куби
Використаємо два способи поділу простору: гіперкуби різних розмірів, але з однаковою кількістю значень даних; другий – на гіперкуби з неконтрольованими кількостями значеннями даних, але контрольованими розмірами сторін, що задаються користувачем. На рис. 2.12 схематично зображено поділ двовимірного простору: а – вхідна множина, б – гіперкуби із однаковою кількістю точок, в – поділ за значеннями по кожній координаті. а б в Рис. 2.12. Схема поділу двовимірного простору На рис. 2.12, а зображено простір що складається із 20000 2-вимірних точок, згенерованих за нормальним законом розподілу. На рис. 2.12, б вектор розбиття l = (2, 2) дає гіперкуби (прямокутники у 2-вимірному просторі) із однаковою кількістю точок, але різних за розмірами. На рис. 2.12, в цей же вектор розбиття та поділ координатних проміжків на рівні частини дає однакові гіперкуби. На рис. 2.12, б – кожна підмножина (кожен квадрант) містить по 5000 точок. На рис. 2.12, в червоним кольором позначено 4540 точок, зеленим – 2030, синім – 11350, темносинім – 2080. Складність алгоритму збільшується на сортування вибірки за всіма координатами, тобто стає рівною: O (p ∙ ni 3) + p ∙ O (N 2). Приведемо алгоритм поділу гіперкуба на куби із однаковою кількістю точок: Крок 0. Отримати вектор l = (n, m, …, k) розбиття гіперкуба за його вимірностями a, b, …, z; i = 0; множина C – вхідна множина. Крок 1. Обчислити count = [ s / l 0]. Крок 2. Якщо l 0 = 1 то перейти на крок 7, інакше на крок 3. Крок 3. Посортувати множину С за i -вимірністю. Крок 4. j = 0. Поки j < l 0: Крок 5. Поки кількість точок у Ctj не рівна count, перенести точку із множини С у Ctj, якщо С = Крок 6. Перенести всі точки із множини С у Ctj. Крок 7. Додати до множини Сt множину С. Крок 8. Видалити зі списку l перший елемент l 0. Крок 9. Якщо l = Множина Сt містить підмножини проміжних результатів поділу гіперкуба. Множина Сres містить шукані підмножини розбиття гіперкуба. Крок 6 додає { s / l 0} точок до останньої підмножини у Сt. У випадку коли необхідно поділити гіперкуб на куби за значеннями точок по кожній вимірності, поданий вище алгоритм зміниться в наступному кроці: Крок 5. minMaxValue = C 0, i + Cs -1, i. Поки координата точки Сі ≤ [(i + 1) ∙ minMaxValue / l 0], перенести точку із множини С у Ctj, якщо С =
|