PRZYSPIESZENIE KNN. Ulepszone metody indeksowania przestrzeni danych: R-drzewo, R*-drzewo, SS-drzewo, SR-drzewo.

Podobne dokumenty
Przyspieszenie knn. Plan wykładu. Klasyfikacja w oparciu o przykładach. Algorytm klasyfikacji. Funkcja odległoci

Tadeusz Pankowski

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

CLUSTERING II. Efektywne metody grupowania danych

Wysokość drzewa Głębokość węzła

Definicja pliku kratowego

Przykładowe B+ drzewo

Podstawy Informatyki. Metody dostępu do danych

Algorytmy i Struktury Danych

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:

R-drzewa. Realizowane funkcje: Struktura węzłów R-drzewa

CLUSTERING. Metody grupowania danych

SYSTEMY UCZĄCE SIĘ WYKŁAD 4. DRZEWA REGRESYJNE, INDUKCJA REGUŁ. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska

ALGORYTMY I STRUKTURY DANYCH

< K (2) = ( Adams, John ), P (2) = adres bloku 2 > < K (1) = ( Aaron, Ed ), P (1) = adres bloku 1 >

Porządek symetryczny: right(x)

Algorytmy i Struktury Danych, 9. ćwiczenia

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium 7. 2 Drzewa poszukiwań binarnych

Drzewa poszukiwań binarnych

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Plan wykładu. Klucz wyszukiwania. Pojęcie indeksu BAZY DANYCH. Pojęcie indeksu - rodzaje indeksów Metody implementacji indeksów.

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.

Drzewa ćwiartek (ang. Quadtree) i R-drzewa (ang. R-tree)

Algorytmy i struktury danych. Co dziś? Tytułem przypomnienia metoda dziel i zwyciężaj. Wykład VIII Elementarne techniki algorytmiczne

Wykład 2. Drzewa poszukiwań binarnych (BST)

Drzewa poszukiwań binarnych

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Luty 2001 Algorytmy (4) 2000/2001

Sortowanie. Bartman Jacek Algorytmy i struktury

Wyk lad 7: Drzewa decyzyjne dla dużych zbiorów danych

PODSTAWY BAZ DANYCH Wykład 6 4. Metody Implementacji Baz Danych

Wykład 6. Drzewa poszukiwań binarnych (BST)

Struktury Danych i Złożoność Obliczeniowa

Drzewa czerwono-czarne.

Modelowanie hierarchicznych struktur w relacyjnych bazach danych

Algorytmy i. Wykład 5: Drzewa. Dr inż. Paweł Kasprowski

B jest globalnym pokryciem zbioru {d} wtedy i tylko wtedy, gdy {d} zależy od B i nie istnieje B T takie, że {d} zależy od B ;

Drzewa spinające MST dla grafów ważonych Maksymalne drzewo spinające Drzewo Steinera. Wykład 6. Drzewa cz. II

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Hierarchiczna analiza skupień

Bazy danych - BD. Indeksy. Wykład przygotował: Robert Wrembel. BD wykład 7 (1)

PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

SYSTEMY UCZĄCE SIĘ WYKŁAD 3. DRZEWA DECYZYJNE. Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska.

Elementy modelowania matematycznego

Agnieszka Nowak Brzezińska

BAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza

Podstawy Informatyki. Wykład 6. Struktury danych

Algorytmy i struktury danych

Teoretyczne podstawy informatyki

Sortowanie bąbelkowe

Klasyfikatory: k-nn oraz naiwny Bayesa. Agnieszka Nowak Brzezińska Wykład IV

Znajdowanie wyjścia z labiryntu

Sztuczna Inteligencja Projekt

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

Algorytmy i Struktury Danych, 2. ćwiczenia

Programowanie w VB Proste algorytmy sortowania

1. Nagłówek funkcji: int funkcja(void); wskazuje na to, że ta funkcja. 2. Schemat blokowy przedstawia algorytm obliczania

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

PLANIMETRIA CZYLI GEOMETRIA PŁASZCZYZNY CZ. 1

Arkusz maturalny nr 2 poziom podstawowy ZADANIA ZAMKNIĘTE. Rozwiązania. Wartość bezwzględna jest odległością na osi liczbowej.

Algorytmy metaheurystyczne Wykład 11. Piotr Syga

PRZEDMIOTOWE ZASADY OCENIANIA I WYMAGANIA EDUKACYJNE Z MATEMATYKI Klasa 3


Grafika komputerowa Wykład 6 Krzywe, powierzchnie, bryły

Algorytmy i struktury danych. Wykład 6 Tablice rozproszone cz. 2

Bazy danych. Andrzej Łachwa, UJ, /15

prowadzący dr ADRIAN HORZYK /~horzyk tel.: Konsultacje paw. D-13/325

Grupowanie Witold Andrzejewski, Politechnika Poznańska, Wydział Informatyki 201/633

Algorytmy zrandomizowane

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel

Eksploracja Danych. wykład 4. Sebastian Zając. 10 maja 2017 WMP.SNŚ UKSW. Sebastian Zając (WMP.SNŚ UKSW) Eksploracja Danych 10 maja / 18

Wybrane algorytmy tablicowe

BAZY DANYCH. Microsoft Access. Adrian Horzyk OPTYMALIZACJA BAZY DANYCH I TWORZENIE INDEKSÓW. Akademia Górniczo-Hutnicza

Indeksy. Wprowadzenie. Indeksy jednopoziomowe indeks podstawowy indeks zgrupowany indeks wtórny. Indeksy wielopoziomowe

WYKŁAD 11 Uczenie maszynowe drzewa decyzyjne

Data Mining Wykład 9. Analiza skupień (grupowanie) Grupowanie hierarchiczne O-Cluster. Plan wykładu. Sformułowanie problemu

SAS wybrane elementy. DATA MINING Część III. Seweryn Kowalski 2006

ALGORYTMY I STRUKTURY DANYCH

Rekurencja. Dla rozwiązania danego problemu, algorytm wywołuje sam siebie przy rozwiązywaniu podobnych podproblemów. Przykład: silnia: n! = n(n-1)!

Lekcja 5: Sieć Kohonena i sieć ART

Lista 4. Kamil Matuszewski 10 maja 2016

Sortowanie. Kolejki priorytetowe i algorytm Heapsort Dynamiczny problem sortowania:

Lista liniowa dwukierunkowa

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

Listy, kolejki, stosy

Zadanie 1. Test (6 pkt) Zaznacz znakiem X w odpowiedniej kolumnie P lub F, która odpowiedź jest prawdziwa, a która fałszywa.

ZESPÓŁ SZKÓŁ W OBRZYCKU

WYKŁAD 12. Analiza obrazu Wyznaczanie parametrów ruchu obiektów

Definicja. Ciąg wejściowy: Funkcja uporządkowująca: Sortowanie polega na: a 1, a 2,, a n-1, a n. f(a 1 ) f(a 2 ) f(a n )

Algorytmy decyzyjne będące alternatywą dla sieci neuronowych

Struktury Danych i Złożoność Obliczeniowa

Algorytmy i Struktury Danych. Co dziś? Drzewo decyzyjne. Wykład IV Sortowania cd. Elementarne struktury danych

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

Algorytmy klasyfikacji

Sztuczna inteligencja : Algorytm KNN

Transkrypt:

PRZYSPIESZENIE KNN Ulepszone metody indeksowania przestrzeni danych: R-drzewo, R*-drzewo, SS-drzewo, SR-drzewo.

Plan wykładu Klasyfikacja w oparciu o przykładach Problem indeksowania przestrzeni obiektów Struktura przestrzeni obiektów R-tree Operacje na R drzewie Insert Delete Search Wyszukiwania k najbliższych sąsiadów w oparciu o R- drzewie Ulepszenia

Klasyfikacja w oparciu o przykładach IBL: k najbliższych sąsiadów Reguły decyzyjne

Algorytm klasyfikacji Wejście: Tablica decyzyjna D, nowy obiekt x q Wyjście: Klasa decyzyjna, do której należy x q (czyli Dec(x q )) Parametry: k - liczba sąsiadów, funkcja odległości d Krok 1: Szukaj w zbiorze D, k najbliżej położonych obiektów {x 1, x 2,..., x k } Krok 2: Wyznacz klasę dla x q na podstawie Dec(x 1 ), Dec(x 2 ),..., Dec(x k )

Funkcja odległości Niech każdy obiekt x będzie zdefiniowany wektorem wartości: <a 1 (x),...,a k (x)> Odległość Euklidesowa: Dla atrybutów symbolicznych a i : Atrybuty rzeczywiste: Unormować p i p a a p i a Euclid y x d w y x d y x d y x d i i i 1/ 2, ), ( ;, ), ( ) ( ) ( 1 ) ( ) ( 0, y a x a y a x a y x d i i i i a i

Zadania w klasyfikatorach knn Funkcja odległość Szukanie k najbliższych sąsiadów Strategia głosowanie

Wyszukiwanie k najbliższych sąsiadów Tablica danych: Sekwencyjne poszukiwanie: O(n) (n liczba obiektów w zbiorze D) Zindeksowany zbiór danych: Struktura: Obiekty są prezentowane jako punkty w przestrzeni R n Przestrzeń obiektów jest podzielona na małe fragmenty Fragmenty są zapamiętane w strukturze drzewiastym Wyszukiwanie: Przeglądaj drzewo i wybieraj fragmenty, gdzie mogą zawierać najbliższych sąsiadów dla danego obiektu Szukać w znalezionych fragmentach najbliższych sąsiadów Czas wyszukiwania: O(logn)

Podział przestrzeni obiektów Przestrzeń obiektów pokryta jest przez n- wymiarowe prostokąty (niekoniecznie rozłączne). Prostokąty są minimalne (MBR - Minimum Bounding Rectangle) Opis prostokąta: I = {[a 1, b 1 ],...,[a n, b n ]}

Struktura R-drzewa Drzewo zrównoważone Węzeł wewnętrzny zawiera klucze (opis prostokąta I) i wskaźniki do synów Węzeł zewnętrzny zawiera listę obiektów zawierających się w odpowiednim prostokącie (I, wskaźnik do syna) Figure 1 Collections of Rectangles (I, lista obiektów)

Własności R - drzewa Korzeń ma co najmniej dwóch synów Każdy węzeł wewnętrzny ma pomiędzy m a M synów Każdy liść zawiera pomiędzy m a M obiektów Wszystkie liście znajdują się na jednym poziomie drzewa m: minimalna liczba rozgałęzienia w węźle M: maksymalna liczba rozgałęzienia w węźle 2 m M Węzeł przepełniony: zawiera więcej niż M rekordów (kluczy) Węzeł niedomiarowy: zawiera mniej niż m rekordów

Operacje na drzewie Wstawianie (insert) Usuwanie (delete) Wyszukiwanie (search)

Wstawianie obiektu do drzewa Wejście: T dane R-drzewo, x new nowy obiekt do wstawiania Wyjście: R-drzewo T zawierające obiekt x new

Wstawianie obiektu do drzewa Wejście: T R-drzewo, x new obiekt do wstawiania Wyjście: T z obiektem x new Algorytm Insert: Krok 1. Wybieraj odpowiedni liść L do wstawiania x new używając ChooseLeaf Krok 2. Jeśli jest miejsce w L, wstaw x new w L wpp. 2.1 Wstaw x new w L 2.2 Podziel L na L 1 i L 2 2.3 Modyfikuj drzewo używając AdjustTree Krok 3. Jeśli korzeń musi być podzielony, utwórz nowy korzeń, którego synami są dwie części poprzedniego korzenia

Funkcja ChooseLeaf Wejście: T: R - drzewo, x new - obiekt do wstawiania Wyjście: odpowiedni liść L dla x new (funkcja rekurencyjna) Krok 1. L korzeń(t) Krok 2. if L jest liściem return L; else // L jest węzłem wewnętrznym wybierz prostokąt F k L leżący najbliżej obiektu x new Jeśli takich jest kilka, wybierz najmniejszy prostokąt Krok 3. Zastosuj ChooseLeaf dla F k

Funkcja AdjustTree Zadania: Poszerzyć istniejące prostokąty, żeby zawierały nowy obiekt Podzielić duże węzły na mniejsze, jeśli zawierają więcej niż M elementów Wejście: T: drzewo, L liść, od którego drzewo ma być modyfikowane Wyjście: T spełniające ograniczenia R-drzewa

Funkcja AdjustTree Funkcja AdjustTree(L) Krok 1. ActiveNode L Krok 2. if ActiveNode jest korzeniem stop else P = ActiveNode.Parent(); Powiększ prostokąt w P związany z ActiveNode, żeby zawierał on wszystkie prostokąty w ActiveNode; Krok 3. if P zawiera więcej niż M elementów SpliteNode (P); AdjustTree (P.Parent());

Funkcja Splite Zadanie: Podzielić przepełniony węzeł na dwa nowe węzły Kryterium: Nowe powstające prostokąty są małe Dobry podział Zły podział

Funkcja Splite (c.d.) Idea: Wybierz rdzenia nowych grup: wybierz dwa najdalej położone prostokąty i wstaw je do różnych węzłów Rozdziel pozostałe elementy: wstaw p do tej grupy, która wymaga najmniejszego powiększania, aby zawierała p rdzenia

Algorytm Splite Wejście: Węzeł w zawiera M+1 elementów Wyjście: Dwa węzły, każdy zawiera pomiędzy m a M elementów Krok 1: Wybierz rdzenia grup i wstaw je do dwóch nowych węzłów Krok 2: repeat przydziel elementy until wszystkie elementy są przydzielone do grup lub jedna grupa ma m (lub M+1-m) elementów Krok 3: dołącz pozostałe elementy do drugiej grupy

Usuwanie obiektu z drzewa

Algorytm usuwania obiektu Wejście:T: R - drzewo, x - obiekt do usuwania Wyjście: T : drzewo bez x Krok 1: Szukaj liścia L, który zawiera x (używając FindLeaf) Krok 2: Usuń x z L Krok 3: Modyfikuj drzewo używając CondenseTree Krok 4: Jeśli korzeń zawiera tylko jednego syna, usuń stary korzeń, syn będzie korzeniem.

Funkcja FindLeaf Wejście:T: R-drzewo, x: obiekt Wyjście: liść, który zawiera x Krok 1: Jeśli T jest liściem zwracaj T Krok 2: Dla każdego syna T.s, jeśli prostokąt zawiera x to FindLeaf(T.s) Krok 3: Jeśli T jest liściem, sprawdź, czy w nim x występuje. Jeśli tak, zwracaj T

Funkcja CondenseTree Wejście:T: R - drzewo, L liść, od którego drzewo ma być poprawione Wyjście: T: skondensowane drzewo Krok 1: N = L; Jeśli N nie jest korzeniem P = N.Parent() Krok 2: if N zawiera mniej niż m synów usuń N z drzewa zapisz wszystkie elementy N na liście Q Krok 3: if N jest dobry zmniejsz prostokąt w N, żeby prostokąt w N był MBR Krok 4: N = P; goto Krok 1 Krok 5: Wstaw wszystkie elementy Q do drzewa.

Wyszukiwanie k najbliższych sąsiadów za pomocą R- drzewa

MBR Minimal Bounding Rectangle MBR jest n-wymiarowym prostokątem używanym w R-drzewie, który ogranicza obiekty. Własność MBR: Każda ściana prostokąta zawiera co najmniej jeden punkt bazy danych.

Własność MBR

Funkcje odległości używane do wyszukiwania k-nn MINDIST (p, R): minimalna odległość punktu p do prostokąta R. MINDIST(p, R) = min or d(p,o) Własności: Jeśli p znajduje się wewnątrz prostokąta, to MINDIST(p,R) = 0 Dla każdego odr, MINDIST(p, R) d(p,o)

Funkcje odległości używane do wyszukiwania k-nn MINMAXDIST (p, R) jest minimalna odległość punktu p do najdalszych punktów ścian prostokąta R Jeśli d*(p,s) oznacza odległość p do najdalszego punktu ściany S, to Własność: MINMAXDIST (p, R) = min S:ściana R d*(p,s) Istnieje obiekt w R, którego odległość do p jest mniejsza niż MINMAXDIST odr d(p,o) MINMAXDIST(p, R)

MINDIST & MINMAXDIST MINDIST(p,R) <= NN(p) <= MINMAXDIST(p,R)

Algorytm szukanie najbliższego sąsiada Idea: Przeglądaj drzewo od korzenia w dół. Dla każdego węzła usuń rozgałęzienia, które nie powinny zawierać najbliższego sąsiada Jeśli doidziesz do liścia, szukaj w nim najbliższego sąsiada.

Usuwanie zbędnych rogałęzień Zasada 1: Prostokąt R nie zawiera najbliższego sąsiada dla p (więc będzie usuwany) jeśli istnieje prostokąt R taki, że: MINDIST(p,R ) > MINMAXDIST(p,R) Zasada 2: Obiekt o nie jest najbliższym sąsiadem p jeśli istnieje prostokąt R taki, że d(p,o) > MINIMAXDIST(p,R) Zasada 3: Prostokąt R nie zawiera najbliższego sąsiada punktu p jeśli istnieje obiekt o taki, że MINDIST(p,R) > d(p,o)

MINDIST vs MINMAXDIST R R p MINDIST Zasada 1 MINMAXDIST R p d(p,o) o Zasada 2 MINMAXDIST R MINDIST p o Zasada 3

NN Search Algorithm Krok 1: Inicjalizuj odległość do najbliższego sąsiada = ; Krok 2: Obchodź drzewo od korzenia w dół. Przy każdym nieodwiedzonym węźle t sortuj prostokąty zapisane w t rosnąco względem MINDIST i zapisz jego synów w liście ABL (Active Branch List) Krok 3: Usuń z ABL zbędne rozgałęzienia stosując strategie przycinania 1 i 2. Krok 4: Dla każdego węzła t z ABL rekurencyjnie szukaj najbliższego sąsiada p; Usuń węzeł t z ABL Krok 5: Jeśli węzeł jest liściem, poszukaj najbliższego sąsiada. Aktualizuj odległość do najbliższego sąsiada. Krok 6: Po powrocie z rekursji skorzystaj z zasady przycinania 3 w celu usunięcia niezbędnych rozgałęzień Krok 7: Jeśli ABL = zwróć najbliższego sąsiada.

Ulepszanie Tylko zasada przycinania 3 jest stosowana; Tylko MINDIST jest potrzebny; Przycinanie tylko gdy nowy sąsiad jest znaleziony

Szukanie k najbliższych sąsiadów Zapamiętać k aktualnych sąsiadów w uporządkowanym buforze (wg. rosnącej odległości sąsiada od punktu p) Przycinanie względem najdalszego punktu na liście

Modyfikacje R-drzew R*- tree: Modyfikacja operacja insert, zmniejsza część wspólną między regionami SS tree: przestrzeń obiektów jest pokryta sferami Zaleta: prostszy opis Wada: regiony zachodzą się SR tree: kombinacja R-tree i SS tree X tree: regiony nie mają częsci wspólnej

R*-DRZEWO Struktura i główne operacje

Struktura R*-drzewa Podobieństwo do R - drzewa: Używa prostokątów MBR (Minimal Bounding Rectangle) do grupowania punktów w przestrzeni danych Drzewo ma wszelkie własności jak R-tree (ograniczenia na liczbę rozgałęzień,...) Różnica: ulepszony wariant R-drzewa Minimalizuje części wspólne między prostokątami (regionami) na jednym poziomie drzewa Minimalizuje pola (objętości) prostokątów (regionów) Minimalizuje wielkość drzewa

Struktura R* - drzewa (c.d.)- Modyfikacje Modyfikacja operacji Insert: Optymalna heurystyka podziału węzła (inna kryterium oceny jakości podziału) Nowa operacja do rekonstrukcji drzewa: wymuszone wstawianie (forced re-insert)

Podstawowe oznaczenia Pole prostokąta (objętość prostopadłościanu): area(r) Obwód prostokąta (powierzchnia prostopadłościanu): margin(r) Pokrycie (overlap): prostokątami w węźle t: overlap ( R ) areark. gdzie R 1, R 2,...,R p są i1, rekordami ki węzła t p k Rectangle Ri. Rectangle

Pojęcia podstawowe Ilustracja Area(R) Margin(R) overlap(r)

Podstawowe operacje na prostokątach Powiększanie prostokąta: (enlargement(r,x)) Zwiększać prostokąt R minimalnie, żeby pokrywać obiekt x x R Enlargement(R,x)

Podstawowe operacje na drzewach Wstawianie (insert) Usuwanie (delete) Wyszukiwanie (search)

Wstawianie Ogólny schemat: Szukaj liścia do wstawiania (ChooseLeaf(x) ) Wstaw nowy obiekt Modyfikuj drzewo

ChooseLeaf Idea Przeglądaj drzewo top-down: W każdym węźle wewnętrznym: wybierz poddrzewo zawierające prostokąt, który wymaga najmniejszego powiększenia, żeby pokrywać nowy obiekt W każdym węźle zewnętrznym (liść): wybierz prostokąt, który po powiększaniu ma najmniejsze pokrycie (overlap) z innymi prostokątami tego samego liścia

ChooseLeaf Ilustracja (7,5;70) (7,5;70) (7,5;70) Liść znaleziony przez R * drzewo Liść znaleziony przez R drzewo

Funkcja ChooseLeaf Wejście: T: R* - drzewo, x - obiekt do wstawiania Wyjście: odpowiedni liść L dla x Krok 1. L korzeń(t) Krok 2. if L jest liściem wybierz prostokąt R taki, że enlargement (R,x) ma najmniejszą część wspólną z innymi prostokątami w tym liściu; else // L jest węzłem wewnętrznym wybierz syna S, który jest związany z prostokątem R o najmniejszym enlargement (R,x) Krok 3. Zastosuj ChooseLeaf dla S

Modyfikuj drzewo Ogólny schemat Jeśli liść L nie jest przepełniony to Powiększ prostokąt w L, do którego nowy obiekt był wstawiany Rekurencyjnie powiększ wszystkie prostokąty w przodkach L, żeby zawierały prostokąty w liściu L. Jeśli liść L jest przepełniony to Podziel liść L na 2 liście L 1 i L 2 lub Wykonuj re-insert dla części prostokątów w L W sposób rekurencyjny modyfikuj ojca L

Podzielić przepełniony węzeł - Idea Krok 1: Wybierz oś S, względem której podział ma być wykonywany Krok 2: Wybierz na osi S najlepszy podział Krok 3: Podziel obiekty

Oceny jakości podziału Niech P oznacza podział zbioru prostokątów S na dwa rozłączne podzbiory S 1 i S 2 bb(s i ): najmniejszy prostokąt zawierający S i area-value(p) = area[bb(s 1 )] + area[bb(s 2 )] margin-value(p) = margin[bb(s 1 )] + margin[bb(s 2 )] overlap-value(p) = area[bb(s 1 ) bb(s 2 )] Podział P jest dobry, jeśli wartości area, margin i overlap są małe

Algorytm wyboru osi Krok 1: Dla każdej osi X Uporządkuj prostokąty względem X Oblicz wartość margin-value(x): suma margin-value wszystkich podziałów na X Krok 2: Wybierz oś o najmniejszej wartości margin-value margin-value(x) = = margin-value(p 1 )+margin-value(p 2 )+margin-value(p 3 ) P 1 P 2 P 3 X

Algorytm wyboru miejsca podziału Dla wybranej osi X Dla każdego podziału P na X oblicz overlap-value(p) Wybierz podział o najmniejszej wartości overlap-value Jeśli istnieje kilka podziałów o najmniejszej wartości overlap-value, wybierz ten z najmniejszą area-value R 4 R 1 R 2 R 3 P 1 P 2 P 3 overlap-value(p 2 )

Rekonstrukcja drzewa W R-drzewie: regiony są niezmienne podczas wstawiania obiektu (chyba że jest podzielony na dwa regiony); Wada: utworzone na początku prostokąty są optymalne dla pierwszych obiektów, ale nie są optymalne dla nowych wstawianych obiektów Potrzeba narzędzi do rekonstrukcji drzewa R*-tree proponuje operację wymuszonego wstawiania (forced reinsert)

Wstawianie z rekonstrukcją - Ilustracja m = 2, M = 5 Regiony przed wstawianiem R drzewo: regiony po wstawianiu R* -drzewo: regiony po wstawianiu

Idea algorytmu reinsert (Przy wstawianiu nowego obiektu) Jeśli węzeł t jest przepełniony (ma M+1 synów) i t nie był reorganizowany to Krok 1: wytnij p synów węzła t Krok 2: zmniejsz prostokąt w t tak, żeby nadal zawierał pozostałych synów Krok 3: wstaw z powrotem prostokąty związane z wybranymi synami.

Algorytm reinsert Dla przepełnionego węzła t (ma M+1 synów): Krok 1: Dla każdego syna s, oblicz odległość środka prostokąta związanego z s do środka prostokąta w t Krok 2: Uporządkuj malejąco synów względem odległości od swojego środka do środka prostokąta w t Krok 3: Wybierz p pierwszych synów na liście Krok 4: Usuń je i zmniejsz prostokąt w t Krok 5: Wstaw z powrotem p usuniętych prostokątów

Reinsert - Ilustracja Regiony przed operacją reinsert Obiekty wybrane do ponownego wstawiania, p=3 Regiony po operacji reinsert

Ocena R * -drzewa R*- drzewo jest stabilny wobec złośliwych danych Średni koszt wstawiania i usuwania na R*-drzewie jest niższy niż na R- drzewie Czas wyszukiwania jest szybszy niż na R-drzewie

SS-DRZEWO Struktura i główne operacje

Struktura SS-drzewo Podobna struktura do R-drzewa Regiony są kołami Opis regionu: para (środek, promień) środek: środek ciężkości figury tworzonej przez środki kół zapisanych w synach promień: odległość do najdalszego koła zapisanego w synach.

Struktura SS-drzewo

Algorytm Insert Krok 1. Szukaj liścia L do wstawiania Krok 2. Wstaw nowy obiekt x do L Krok 3. Modyfikuj drzewo (*od liścia L do korzenia*) 3.1 Jeśli zbadany węzeł t nie jest przepełniony Powiększ promień w t 3.2 Jeśli węzeł t jest przepełniony i t nie był rekonstruowany re-insert (t) 3.3 Jeśli t jest przepełniony i t był rekonstruowany splite (t)

Algorytm podziału: Splite Cel: Podziel zbiór kół na dwa podzbiory, których koła ograniczające mają małe promienie i jak najmniej zachodzą się na siebie Krok 1: Wybierz oś S, względem której podział ma być wykonywany Krok 2: Wybierz na osi S najlepszy podział Krok 3: Podziel obiekty

Ocena podziału Niech X będzie osią współrzędnych Niech S będzie zbiorem kół variance(s,x) = odległość między środkami dwóch najdalszych kół na osi X Niech P oznacza podział zbioru kół S na dwa rozłączne podzbiory S 1 i S 2 variance(p) = variance(s 1 )+variance(s 2 ) Podział P jest dobry jeśli variance(p) jest minimalny

Wybór osi Dla każdej osi X Uporządkuj koła względem X Oblicz odległość najdalszych koł na osi X. ozn. variance(x) Wybierz oś z największą wartością variance variance(x) X

Szukanie miejsca podziału Dla wybranej osi X Dla każdego podziału P na X oblicz variance(p) Wybieraj podział o najmniejszej wartości variance najlepszy podział P 1 P 2 P 3 X

Ocena SS -drzewa Zaleta: Mała informacja potrzebna do opisu koła niż prostokata Średnica koła zwiększa się dość wolno względem wzrostu wymiaru danych (liczby atrybutów) szybki czas wyszukiwania w jednym regionie. Wada: Koło ma większą objętość niż prostokąt większa część wspólna z innymi kołami (more overlap)

SR-DRZEWO Struktura i główne operacje

Obserwacja Prostokąty dzielą przestrzeń danych na regiony o małej objętości, ale mają one dużą średnicę niż koło Koła dzielą przestrzeń danych na regiony o małej średnicy, ale ich objętości są większe niż prostokąty Rozwiązanie: kombinacja prostokątów i kół SR - drzewo

Struktura SR - drzewa Podobna struktura do R-drzewa Region jest przecięciem koła i prostokąta Opis regionu: para (prostokąt, koło) Prostokąt : I =[(a 1,b 1 ),...,(a k,b k )] Koło: (środek, promień)

Algorytm: Insert Prostokąt jest aktualizowany tak jak w R*- drzewie Koło węźle t jest aktualizowane: (C 1,...,C k koła związane z synami t ) Środek: gdzie C i : koło związane z i-tym synem Środek koła C i.x i : i-ta współrzędna środka koła C i C i.w: liczba obiektów zawartych w kole C i

Algorytm Insert (c.d.) Promień: d s : maksymalna odległość środka koła w węźle t do kół w synach d r : maksymalna odległość środka koła w węźle t do prostokątów w synach Promień r

Szukanie najbliższego sąsiada Odległość d punktu P do regionu zapisanego w węźle C k jest definiowana: d s. : minimalna odległość punktu P do koła w węźle C k d r : minimalna odległość punktu P do prostokąta w węźle C k x d r d s P d = max(d s.,d r )

Ocena SR-drzewa Zaleta: Zmniejsza i objętość i średnicę regionu w porównaniu z R*-drzewem i SS-drzewem Czas wyszukiwania krótszy niż SS-drzewo i R*-drzewo Wada: Koszt budowania SR-drzewa jest większy niż SSdrzewa. Rozmiar węzła większy od rozmiaru węzła SS-drzewa i R*-drzewa

Podsumowanie R*-drzewo: ulepszony wariant R-drzewa Nowa heurystyka dla optymalizacji podziału -> modyfikacja w funkcji splite Nowa operacja rekonstrukcji drzewa: re-insert SS-drzewo: regiony są kołami SR-drzewo: regiony są przecięcem prostokąta i koła