Algorytm grupowania danych typu kwantyzacji wektorów

Podobne dokumenty
Algorytm grupowania danych typu kwantyzacji wektorów

Co to jest grupowanie


Uczenie sieci radialnych (RBF)

Optymalizacja ciągła

Algorytm wstecznej propagacji błędów dla sieci RBF Michał Bereta

Oprogramowanie Systemów Obrazowania SIECI NEURONOWE

Zastosowanie metod eksploracji danych Data Mining w badaniach ekonomicznych SAS Enterprise Miner. rok akademicki 2014/2015

Wstęp do sieci neuronowych, wykład 07 Uczenie nienadzorowane cd.

SPOTKANIE 6: Klasteryzacja: K-Means, Expectation Maximization

Seminarium IO. Zastosowanie wielorojowej metody PSO w Dynamic Vehicle Routing Problem. Michał Okulewicz

Metody systemowe i decyzyjne w informatyce

Rozpoznawanie obrazów

Podstawy Sztucznej Inteligencji (PSZT)

ALGORYTMICZNA I STATYSTYCZNA ANALIZA DANYCH

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

Naszym zadaniem jest rozpatrzenie związków między wierszami macierzy reprezentującej poziomy ekspresji poszczególnych genów.

Matlab, zajęcia 3. Jeszcze jeden przykład metoda eliminacji Gaussa dla macierzy 3 na 3

Sztuczne sieci neuronowe. Krzysztof A. Cyran POLITECHNIKA ŚLĄSKA Instytut Informatyki, p. 335

Zrównoleglona optymalizacja stochastyczna na dużych zbiorach danych

Uczenie sieci typu MLP

Optymalizacja systemów

Zastosowania sieci neuronowych

ALGORYTMICZNA I STATYSTYCZNA ANALIZA DANYCH

Metody sztucznej inteligencji Zadanie 3: (1) klasteryzacja samoorganizująca się mapa Kohonena, (2) aproksymacja sieć RBF.

Testowanie modeli predykcyjnych

Metody systemowe i decyzyjne w informatyce

Rozpoznawanie obrazów

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

Zad. 3: Układ równań liniowych

Optymalizacja systemów

Wstęp. Regresja logistyczna. Spis treści. Hipoteza. powrót

Elementy inteligencji obliczeniowej

Matlab podstawy + testowanie dokładności modeli inteligencji obliczeniowej

Sieci Kohonena Grupowanie

Metody systemowe i decyzyjne w informatyce

Kompresja danych Streszczenie Studia Dzienne Wykład 10,

Obliczenia iteracyjne

Zadanie 5 - Algorytmy genetyczne (optymalizacja)

Zastosowania sieci neuronowych

Ćwiczenie 3. MatLab: Algebra liniowa. Rozwiązywanie układów liniowych

Seminarium IO. Zastosowanie metody PSO w Dynamic Vehicle Routing Problem (kontynuacja) Michał Okulewicz

Elementy statystyki wielowymiarowej

Podstawy OpenCL część 2

1. Grupowanie Algorytmy grupowania:

Laboratorium MATLA. Ćwiczenie 4. Debugowanie. Efektywności kodu. Wektoryzacja.

Algorytmy wyznaczania centralności w sieci Szymon Szylko

Algorytmy rozpoznawania obrazów. 11. Analiza skupień. dr inż. Urszula Libal. Politechnika Wrocławska

Lekcja 5: Sieć Kohonena i sieć ART

Ćwiczenie 3. Iteracja, proste metody obliczeniowe

Laboratorium Metod Optymalizacji

Niezwykłe tablice Poznane typy danych pozwalają przechowywać pojedyncze liczby. Dzięki tablicom zgromadzimy wiele wartości w jednym miejscu.

Wstęp do sieci neuronowych, wykład 03 Warstwy RBF, jednostka Adaline.

Podstawy Programowania C++

Napisz program wypisujący na standardowym wyjściu następujący napis: Napis zawierający różne dziwne znaczki // \ \$ &%.

Eksploracja danych. Grupowanie. Wprowadzanie Definicja problemu Klasyfikacja metod grupowania Grupowanie hierarchiczne. Grupowanie wykład 1

Kolejny krok iteracji polega na tym, że przechodzimy do następnego wierzchołka, znajdującego się na jednej krawędzi z odnalezionym już punktem, w

Wstęp do sieci neuronowych, wykład 10 Sieci rekurencyjne. Autoasocjator Hopfielda

Hierarchiczna analiza skupień

Według raportu ISO z 1988 roku algorytm JPEG składa się z następujących kroków: 0.5, = V i, j. /Q i, j

Zadanie 1. Suma silni (11 pkt)

Algorytmy klasteryzacji jako metoda dyskretyzacji w algorytmach eksploracji danych. Łukasz Przybyłek, Jakub Niwa Studenckie Koło Naukowe BRAINS

//warunki początkowe m=500; T=30; c=0.4; t=linspace(0,t,m); y0=[-2.5;2.5];

Zaprojektować i zaimplementować algorytm realizujący następujące zadanie.

Sztuczna Inteligencja Tematy projektów Sieci Neuronowe

Co to są drzewa decyzji

Metody Sztucznej Inteligencji II

Programowanie - wykład 4

Wprowadzenie do programowania w języku Visual Basic. Podstawowe instrukcje języka

Wykład 5. Metoda eliminacji Gaussa

Wstęp do sieci neuronowych, wykład 9 Sieci rekurencyjne. Autoasocjator Hopfielda

Wstęp do sieci neuronowych, wykład 10 Sieci rekurencyjne. Autoasocjator Hopfielda

SIECI REKURENCYJNE SIECI HOPFIELDA

lekcja 8a Gry komputerowe MasterMind

1 Programowanie w matlabie - skrypty i funkcje

Wstęp do sieci neuronowych, wykład 8 Uczenie nienadzorowane.

Data Mining Wykład 4. Plan wykładu

1.7. Eksploracja danych: pogłębianie, przeszukiwanie i wyławianie

Metody systemowe i decyzyjne w informatyce

Zadanie 3: Liczenie winogron

Inteligentne systemy decyzyjne: Uczenie maszynowe sztuczne sieci neuronowe

WYKŁAD 9 METODY ZMIENNEJ METRYKI

Podstawy programowania Laboratorium. Ćwiczenie 2 Programowanie strukturalne podstawowe rodzaje instrukcji

WYDZIAŁ ELEKTROTECHNIKI, AUTOMATYKI I INFORMATYKI INSTYTUT AUTOMATYKI I INFORMATYKI KIERUNEK AUTOMATYKA I ROBOTYKA STUDIA STACJONARNE I STOPNIA

Programowanie w języku Python. Grażyna Koba

Automatyczne wyodrębnianie reguł

Rozdział 17. Zarządzanie współbieżnością zadania

Zagadnienia optymalizacji i aproksymacji. Sieci neuronowe.

Def. Kod jednoznacznie definiowalny Def. Kod przedrostkowy Def. Kod optymalny. Przykłady kodów. Kody optymalne

TEORETYCZNE PODSTAWY INFORMATYKI

do MATLABa programowanie WYKŁAD Piotr Ciskowski

3. Macierze i Układy Równań Liniowych

Optymalizacja systemów

6. Pętle while. Przykłady

Management Systems in Production Engineering No 3(23), 2016

Asocjacyjna reprezentacja danych i wnioskowanie

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Wstęp do programowania

Sieci neuronowe - projekt

Metody przeszukiwania

Transkrypt:

Algorytm grupowania danych typu kwantyzacji wektorów Wstęp Definicja problemu: Typowe, problemem często spotykanym w zagadnieniach eksploracji danych (ang. data mining) jest zagadnienie grupowania danych lub klasteryzacji. Polega ono na odnalezieniu w zbiorze danych X składającym się z n-wektorów X = [x 1, x 2 x n ] zbioru obiektów podobnych. Zagadnienie to jest problemem nietrywialnym i wymagającym zbudowania odpowiedniej heurystyki. W tym celu opracowano szereg podejść pozwalających na odnalezienie klastrów/podgrup danych. Poniżej zostaną omówione dwa wybrane algorytmy należące do grupy metod tzw. minimalizacji skalarnego współczynnika jakości. Idea ich działania sprowadza się do minimalizacji funkcji celu jest to więc to problem optymalizacyjny. W celu zdefiniowania odpowiednich algorytmów / metod opracowano szereg rozwiązań w tym wywodzące się z obszaru statystyki jak algorytm k-średnich, czy też z grupy sieci neuronowych jak np. algorytm kwantyzacji wektorów VQ. W rzeczywistości obydwa starają się minimalizować wariancję w poszczególnych grupach reprezentowanych przez środki klastrów centroidy zwane również prototypami, wektorami referencyjnymi czy też wektory kodujące. Przykładem zastosowania metod klasteryzacji danych jest problem znajdywania grup podobnych dokumentów zwracanych przez wyszukiwarkę. (np. http://clusty.com/ ), czy też odnajdywanie ludzi o podobnych preferencjach / zainteresowaniach co poprawia skuteczność reklamy. Algorytm VQ Algorytm VQ (Victor quantization) został opracowany przez T Kohonenna całość to optymalizacja funkcji kosztu poprzez tzw. gradient stochastyczny. Algorytm rozpoczyna od wylosowania k wektorów kodujących potencjalnych środków klastrów, które następnie iteracyjnie zmieniają swoje położenie. Całość procedury odbywa się poprzez adaptację położenia wektora kodującego p i po prezentacji x j tego wektora danych wg. zależności: i i j i p p x p (1) Gdzie - współczynnik uczenia p i i-ty wektor kodujący leżący najbliżej wektora treningowego x j Wartości powinny być aktualizowane wg. zależności 1 po każdej iteracji algorytmu. Algorytm VQ do działania wymaga zdefiniowania odpowiednich wartości 0 oraz liczby wektorów kodujących k. Opis algorytmu Uczenie 1. Wylosuj położenie k neuronów (prototypów) - w tym celu najlepiej jest wykorzystać funkcję P = inicializacja(x,k)

2. Iteracyjnie z-razy Dla każdego wektora treningowego Znajdź najbliższy wektor kodujący czyli dla danego x i znajdź najbliższych wektor z P Dokonaj aktualizacji położenia (wag) neuronu zgodnie z zależnością (1) Dokonaj aktualizacji wsp. wg. zależności (2) 1. Ponumeruj wektory kodujące od 1:k 2. Dla każdego wektora zbioru danych a. Policz odległości pomiędzy wektorem danych x i a wszystkimi neuronami (wektorami kodującymi) b. Znajdź neuron leżący najbliżej wektora danych (min(odległości2(x i,p j ))) c. Przypisz numer najbliższego wektora kodującego do danego wektora testowego W matlabie 1. Uruchom skrypt zad2_vq.m, w celu jego poprawnego działania musisz zaimplementować funkcję vq.m Funkcja: function [C,P] = vq( X, k ) %Funkcja słuzy do wykonania klasteryzacji w oparciu o algorytm kwantyzacji wektorów VQ %Parametrami wejściowymi funkcji są X - macierz, w której kolejne %wiersze to kolejne rekordy danych, k-oznacza liczbę klastrów do %znalesienia. C- to kolumna zawierająca przydział kolejnych wektorów %z X do odpowiednich klastrów numerowanych od 1:k %Przykład: % X = [1 1; % 1 2; % 5 5; % 6 5; % 5 6]; % k=2; % C = vq(x,k); % wówczas % C=[1; % 1; % 2]; %bo pierwsze dwa punkty leżą obok sibie, podobnie kolejne 3 %stałe: z = 100; alpha = 0.01; P = inicializacja(x,k); [n,m]=size(x); %gdzie n - liczba wektorów, m-liczba kolumn %============== Wyznaczanie położenia środków klastró ================= for a=1:z %dla każdego wektora treningowego %policz odległości wektora treningowego do wszystkich wektorów kodujących

%d = odległość między X(i,:) a wszystkimi wektorami P możesz tutaj %wykorzystać funkcję odleglosc2() % znajdż najbliższy wektor kodujący %dokonaj aktualizacji najbliższego wektora kodującego (wekotra o indeksie min_id) wg. zależności (1) %zmodyfikuj wsp. uczenia wg. zalezności (2) %=============== Przydzielenie wektorów zbioru danych do klastrów C = zeros(n,1); %Rezerwacja pamięci przeznaczonej na wyniki for i=1:n %Znajdź numer wektora kodującego, który leży najbliżej wekora X(i,:) %Przypisz numer wektora kodującego do zmiennej C zawierajacej %informację o przynależności danego wektora do klastra C(i) = min_id; Algorytm k-śrtednich (k-means) Jest wiele odmian algorytmu k-średnich, jego najczęściej spotykana wersja działa na zasadzie wsadowej (batch) tzn. najpierw tworzona jest tablica/macierz przynależności U o wymiarach: n x m gdzie m to liczba klasterów, n to liczba wektorów danych. Macierz ta ma postać binarną tzn. przyjmuje wartości 1 jeśli dany wektor danych należy dodanego klastra oraz 0 jeśli dany wektor danych do danego klastra nie należy. p p 1 2 p3 x1 0 1 0 x 2 1 0 0 x 3 1 0 0 x4 0 0 1 x 0 1 0 5 Każdy wiersz powyższej macierzy powinien spełniać zależność iż suma elementów wiersza musi być mniejsza od liczby wektorów danych. l_ n U ji, l _ n j 1, l _ w i 1 Takie ograniczenie pozwala zabezpieczyć się aby pojedynczy klaster nie zagarnął wszystkich wektorów danych. Drugie ograniczenie służy zapewnieniu by dany wektor przynależał dokładnie do jednej grupy, a sprowadza się ono do zależności l_ w U ji, i 1, l _ n j 1 Algorytm k-średnich działa na zasadzie realizacji dwóch kroków 1) wyznaczenia położenia środków centrów klasterów P na podstawie macierzy U 2) aktualizacji macierzy U na podstawie nowych środków centrów P W poniższym kodzie algorytmu kśrednich brakuje implementacji powyższych dwóch funkcji. Uzupełnij go o brakujące funkcję i wykonaj pozostałe zadania laboratoryjne Opis algorytmu Uczenie 1. Losowo wygeneruj macierz podziału U 2. Na podstawie macierzy U wyznacz środki klastrów 1

3. Dokonaj aktualizacji macierzy U, (przypisz dane do odpowiednich środków klasterów P) 4. Porównaj postać macierzy podziału U. Jeśli nie uległy zmianie to koniec 5. Idź do 2 W matlabie 1. Uruchom skrypt zad1_ksredich.m, w celu jego poprawnego działania musisz zaimplementować funkcję ksrednich.m Funkcja: function [C,P] = ksrednich(x,k) %Funkcja powinna dokonać analizy skupień na danych "X". W jej wyniku ma %powstać "k" klastrów. Wektor "C" oznacza przynalezność do danego klastra, natomiast P to zbiór wektorów określających położenie środków klastrów %Przykład: % data = [1 1; % 1 2; % 5 5; % 6 5; % 5 6]; % k=2; % C = ksrednich(data,k); % %wówczas % C=[1; % 1; % 2]; %bo pierwsze dwa punkty leżą obok sibie, podobnie kolejne 3 %Przydatne funkcje: % d = odleglosc2(x,y) %funkcja wyznacza dległość między dwoma wektorami x % i y %Przydatne funkcje: % d = odleglosc2(x,y) %funkcja wyznacza dległość między dwoma wektorami x % i y % [n,m]=size(data); %gdzie n - liczba wektorów, m-liczba kolumn %stałe: U = inicializacja(x,k); maxiteracji = 20; %============== Wyznaczanie położenia środków klastrów for i = 1 : maxiteracji P = obliczp(x,u); oldu = U; U = obliczu(x,p); if all(all(u == oldu)), %Zakończ pętlę jeśli macierz podziału nie ulega zmianie break

%=============== Przydzielenie wektorów zbioru danych do klastrów n = size(x,1); C = zeros(n,1); for i=1:n id = find(u(:,i)); C(i) = id; end %Koniec funkcji ksrednich function U = obliczu(x,p) %Napisz funkcję obliczającą macierz przynależności U end %Koniec funkcji obliczu function P = obliczp(x,u) %Napisz funkcję obliczającą aktualne środki klastrów end %Koniec funkcji obliczp function U = inicializacja(x,k) n = size(x,1); r = randperm(n); U = false(k,n); for i=1:k U(i,r(i:k:n)) = true; end %Koniec funkcji inicjalizacja Standaryzacja Standaryzacja jest standardową procedurą poprzedzającą działanie większości algorytmów eksploracji danych. Polega ona na doprowadzeniu do sytuacji, w której każda kolumna (zmienna/echa) ma średnią = 0 i odchylenie std. = 1. Innymi słowy dla każdej kolumny X(:,i) należy wyznaczyć średnią za pomocą funkcji mean() oraz odchylenie standardowe za pomocą funkcji std() a następnie dokonać transformacji Gdzie - oznacza średnią - oznacza odchylenie standardowe Zadanie: 1. Zaimplementuj algorytm VQ 2. Zaimplementuj algorytm ksrednich 3. Do weryfikacji użyj odpowiednich skryptów zad1 /zad2, które testują wyniki klasteryzacji i wyświetlają je w postaci wykresu. 4. Uruchom skrypt zad3 i zapisz wyniki dla różnych wartości parametru k UWAGA spróbuj uruchomić skrypt kilka razy dla tej samej wartości parametru k (dla k około 5) czy są różnice i jakie jest ich źródło

5. Uruchom skrypt zad3 dla k=2 i dokonaj interpretacji wyników skomentuj uzyskany wynik. 6. Dla algorytmu VQ umieść na końcu pętli: for a=1:z moduł rysujący trajektorię zmiany położenia wektorów kodujących. 7. Dokonaj poprawy działania algorytmu poprze wstępną standaryzację danych. W tym celu uruchom zad4, który wykonuje skrypt zad3z uwzględnieniem wspomnianej standaryzacji. Czy wyniki uległy poprawie?