algorytmy grupowania

background image

Algorytm grupowania danych typu kwantyzacji wektorów

Wst

ę

p

Definicja problemu: Typowe, rozważane dotychczas problemy koncentrowały się na
nauczeniu na podstawie zbioru treningowego i zbioru etykiet klasyfikacji wzorców, które
należały do jednej z kilku kategorii (np. automatyczne przypisywanie odpowiedniego gatunku
kwiatów). Innym typem często spotykanych problemów jest znalezienie w danych
treningowych charakterystycznych grup cechujących się pewnymi podobnymi
właściwościami, przy czym nie mamy wstępnej informacji o przynależności danego wektora
do danej kategorii. Informacje o kategoriach w tym przypadku są niedostępne.
Przykładem zastosowania metod klasteryzacji danych jest problem znajdywania grup
podobnych dokumentów zwracanych przez wyszukiwarkę. (np.

http://clusty.com/

)

Algorytm VQ

Algorytm VQ (Victor quantization) działa podobnie do algorytmu LVQ, w którym pominięto
część odpowiadającą za karanie pozostawiając jedynie część nagradzającą (w zależności od
etykiety klasy). Takie rozwiązanie powoduje że wektory kodujące podążają za jednorodnymi
grupami danych.
Optymalizacja wektorów kodujących odbywa się 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

l_w.

Opis algorytmu

Uczenie

1.

Wylosuj położenie

l_w neuronów - w tym celu najlepiej jest wykorzystać istniejące

już wektory danych i losowo wybrać ze zbioru danych wektory których położenie
będzie inicjowało położenie neuronów

2.

Iteracyjnie

l-razy

Dla każdego wektora treningowego

Znajdź najbliższy wektor kodujący (dla danej metryki)
Dokonaj aktualizacji położenia (wag) neuronu zgodnie z zależnością (1)

Dokonaj aktualizacji wsp.

α

wg. zależności (2)

Testowanie (określanie przynależności danego wektora testowego do danej grupy)

1.

Ponumeruj wektory kodujące

2.

Dla każdego wektora testowego

background image

a.

Policz odległości pomiędzy wektorem testowym a wszystkimi neuronami
(wektorami kodującymi)

b.

Znajdź neuron leżący najbliżej wektora testowego (min(odległości(x,y)))

c.

Przypisz numer najbliższego wektora kodującego do danego wektora
testowego

W matlabie

1.

Wczytaj dane

2.

Dokonaj standaryzacji / normalizacji danych

3.

Wywołaj funkcję res=vq(tr);

Funkcja:

function res=vq(tr,l_w,d_t,l_it)
%uczenie
% l_w – wektor opisuj

ą

cy liczb

ę

wektorów koduj

ą

cych

% d_t – typ funkcji odległo

ś

ci

% l_it – liczba iteracji

P=[];
%Inicjowanie poło

ż

enia wektorów koduj

ą

cych

rp = randperm(size(tr,1));
rp = rp(1:l_w);
P=[P ; tr(rp,:)];

%uczenie
for i=1:l_it

%dla ka

ż

dego wektora treningowego

%policz odległo

ś

ci wektora treningowego do wszystkich

wektorów koduj

ą

cych

d = odległo

ść

mi

ę

dzy tr(i,:) a wszystkimi wektorami P

% znajd

ż

najbli

ż

szy wektor koduj

ą

cy

[min_d,min_id] = min(d);
%min_d – minimalna odległo

ść

%min_id – indeks najbli

ż

ej le

żą

cego wektora koduj

ą

cego

%dokonaj aktualizacji najbli

ż

szego wektora koduj

ą

cego

(wekotra o indeksie min_id) wg. zale

ż

no

ś

ci (1)

%zmodyfikuj wsp. uczenia wg. zalezno

ś

ci (2)

end;

%testowanie
res = zeros(size(tr,1),1);
for i=1:size(tr,1)

d = odległo

ś

ci wektora tr(i,:) do wszystkich wektorów

koduj

ą

cych P

%znajd

ź

najbli

ż

ej le

żą

cy wektor do wekora tr(i,:)

[min_d,min_id] = min(d);

%min_d – minimalna odległo

ść

%min_id – indeks najbli

ż

ej le

żą

cego wektora koduj

ą

cego

res(i) = min_id;

end;

background image

Algorytm k-

ś

rtednich (k-means)

Jest wiele odmian algorytmu k-średnich, jego najczęściej spotykana wersja działa na zasadzie
wsadowej (batch) tzn. że najpierw tworzona jest tablica/macierz przynależności

U o

wymiarach:

l_w x l_n gdzie l_w to liczba klasterów, l_n – to liczba wektorów danych.

Macierz ta ma postać binarną tzn. przyjmuje wartości 1 jeśli dany wektor danych należy do
grupy związanej z danym wektorem kodującym oraz 0 jeśli dany wektor danych nie należy do
danej grupy (danego wektora kodującego).

1

2

3

4

5

x

x

x

x

x

1

2

3

0

1

1

0

0

1

0

0

0

1

0

0

0

1

0

p

p

p

Każdy wiersz powyższej macierzy powinien spełniać zależność iż suma elementów wiersza

musi być mniejsza od liczby wektorów danych.

[

]

_

,

1, _

1

_

l n

j i

j

l w

i

U

l

n

=

<

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

[

]

_

,

1, _

1

1

l w

j i

i

l n

j

U

=

=

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

Opis algorytmu

Uczenie

1.

Zainicjuj położenie centrów P

2.

Dokonaj aktualizacji macierzy U, (przypisz dane do odpowiednich środków klasterów
P)

3.

Wyznacz położenia środków klasterów - oblicz wartość średnią z wszystkich
przypadków należących do danego klastera

4.

Porównaj położenia środków centrów klastra z poprzedniej iteracji i obecnej. Jeśli nie
uległy zmianie to koniec

5.

Idź do 2

W matlabie

4.

Wczytaj dane

5.

Dokonaj standaryzacji / normalizacji danych

6.

Wywołaj funkcję res=ksrednich(tr);

Funkcja:

function res=ksrednich(tr,l_w,d_t)
%uczenie
% l_w – wektor opisuj

ą

cy liczb

ę

wektorów koduj

ą

cych

% d_t – typ funkcji odległo

ś

ci

l_n = size(tr,1);
%zainicjowanie macierzy U
U = false(l_w,l_n); %
%Inicjowanie poło

ż

enia wektorów koduj

ą

cych

rp = randperm(size(tr,1));

background image

rp = rp(1:l_w);
P=[P ; tr(rp,:)];

%uczenie
While false

% policz odległo

ść

pomi

ę

dzy wszystkimi

ś

rodkami klasterów,

a wszystkimi wektorami treningowymi

d = odległo

ść

(P,tr)

%dla ka

ż

dego wektora treningowego znajd

ź

najbli

ż

sze

centrum klastera
[min_d,min_id] = min(d);

%min_d – wektor opisuj

ą

cy minimalna odległo

ść

od

ś

rodka

centrum
%min_id – wektor indeksów najbli

ż

ej le

żą

cych

ś

rodków

centrów klasterów
%Dokonaj aktualizacji macierzy przynale

ż

no

ś

ci

for i=1:l_n

U(min_id(i),i) = 1;

end;
%Dokonaj aktualizacji

ś

rodków centrów P

for i=1:l_w

P(i,:)=mean(tr(U(i,:),:))

end;
%dodaj warunek zako

ń

czenia procesu uczenia

end

%testowanie
res = zeros(size(tr,1),1);
for i=1:size(tr,1)

d = odległo

ś

ci wektora tr(i,:) do wszystkich wektorów

koduj

ą

cych P

%znajd

ź

najbli

ż

ej le

żą

cy wektor do wekora tr(i,:)

[min_d,min_id] = min(d);

%min_d – minimalna odległo

ść

%min_id – indeks najbli

ż

ej le

żą

cego wektora koduj

ą

cego

res(i) = min_id;

end;

Zadanie:

1.

Wczytaj zbiór danych Iris

2.

Pomiń informacje o etykietach (usuń ostatnią kolumnę data(:,end)=[])

3.

Wykonaj obliczenia tylko dla dwóch atrybutów i-tegi i j-tego vq(data(:,[i j],…),
ksrednich(data(:,[i j],…))

4.

Do reprezentacji wyników wykorzystaj funkcję plot_clust(data,res)

Gdzie:

Data – zbiór danych uczących

Res – wynik klasteryzacji

5.

Zbadaj wpływ funkcji odległości na jakość uczenia algorytmu VQ

6.

Zbadaj wpływ liczby wektorów kodujących na jakość klasteryzacji


Wyszukiwarka

Podobne podstrony:
Dariusz Mazur Algorytm grupowania oparty o łancuch reguł dyskryminacyjnych
Układy Napędowe oraz algorytmy sterowania w bioprotezach
5 Algorytmy
5 Algorytmy wyznaczania dyskretnej transformaty Fouriera (CPS)
Indywidualne a grupowe podejmowanie decyzji 3
Tętniak aorty brzusznej algorytm
a dusza grupowa
Algorytmy rastrowe
Algorytmy genetyczne
Teorie algorytmow genetycznych prezentacja
Algorytmy tekstowe
Algorytmy i struktury danych Wykład 1 Reprezentacja informacji w komputerze
ALGORYTM EUKLIDESA
Procesy grupowe

więcej podobnych podstron