A prototípus-alapú klaszterező eljárások az adatobjektumok
egyszintű particionálását állítják elő. Számos ilyen módszer létezik, de
a két legfontosabb a
A
A
8.1. algoritmus.
Alapvető
|
1: Válasszunk ki
2:repeat 3: Hozzunk létre
4: Számoljuk újra mindegyik klaszter középpontját 5: until a középpontok nem változnak |
A 8.3. (a) ábrán látható első lépésben adatpontokat választunk
ki középpontnak, amelyek mindegyike egy-egy nagyobb ponthalmazba esik.
Ebben a példában az átlagok lesznek a középpontok. Miután minden
pontot hozzárendeltük valamelyik középponthoz, frissítjük a
középpontokat. Az ábrák ismét minden lépés kezdeti középpontjait,
valamint a már hozzájuk rendelt pontokat mutatják. A második lépésben
a pontokat az újraszámolt középpontokhoz rendeljük, és a középpontok
újbóli frissítése következik. A második, harmadik, valamint negyedik
lépések (8.3. (b), (c) és (d) ábrák) során a középpontok közül kettő
az ábra alsó részén elhelyezkedő, két kisebb pontcsoport felé mozdul
el. Amikor a
Bizonyos szomszédsági függvények és középpont-típusok
kombinációja esetén a
A továbbiakban az alapvető
Pontok legközelebbi középponthoz rendelése
Ahhoz, hogy egy pontot a legközelebbi középponthoz tudjunk
rendelni, szükségünk van egy olyan közelségi (távolsági) mértékre,
amely mennyiségileg határozza meg a ``közelség'' fogalmát a vizsgált
speciális adatoknál. Az euklideszi (
A
Középpontok és célfüggvények
Az algoritmus negyedik lépését elég általánosan úgy fogalmaztuk meg, hogy ``újraszámoljuk a klaszterek középpontjait'', mivel a középpont számításának módja változhat a közelségi mértéktől és a klaszterezés céljától függően. A klaszterezés célját jellemzően egy célfüggvény fejezi ki, amely a pontok egymás közötti vagy a pontok és a középpont közötti közelségtől (távolságtól) függ, például minimalizáljuk a pontok és a hozzájuk legközelebbi középpont négyzetes távolságának az összegét. Ezt két példával szemléltetjük. A lényeg azonban az, hogy amint meghatároztunk egy közelségi mértéket és egy célfüggvényt, a középpont, melyet választanunk kell, gyakran matematikailag meghatározható. A matematikai részleteket a 8.2.6. szakaszban adjuk meg, itt egy nem matematikai tárgyalást nyújtunk.
Adatok az euklideszi térben
Tekintsünk olyan adatokat, amelyek közelségi mértéke az
euklideszi távolság. Célfüggvényként, amely egy klaszterezés minőségét
méri, a négyzetes hibák összegét
(SSE -- sum
of the squared error) használjuk. Más szavakkal, minden
pont esetén kiszámoljuk a hibát, azaz a legközelebbi középponttól mért
euklideszi távolságot, majd a négyzetes hibák teljes összegét vesszük.
A
8.1. táblázat - Jelölések táblázata
Szimbólum | Leírás |
| Egy objektum |
| Az
|
| A
|
| Az összes pont középpontja |
| Az
|
| Az adathalmazban található objektumok száma |
| A klaszterek száma |
ahol
Ezen feltételek mellett megmutatható (lásd a 8.2.6. szakaszban),
hogy a a négyzetes hibaösszeget minimalizáló középpont az átlag. A
8.1. táblázat jelöléseivel az
Szemléltetésképpen egy, három kétdimenziós pontot (úgymint
A
Dokumentum adatok
Annak szemléltetésére, hogy a
Az általános eset
Számos olyan választás van a közelségi függvényre, a középpontra
és a célfüggvényre, amelyeket az alapvető
A táblázat utolsó sorában a Bregman divergencia (2.4.5. szakasz)
valójában közelségi mértékek egy osztálya, amely magába foglalja a
négyzetes euklideszi távolságot (
8.2. táblázat -
Közelségi függvény | Középpont | Célfüggvény |
Manhattan (
| medián | Minimalizáljuk az objektumok és
klaszterközéppontjaik
|
Négyzetes euklideszi (L
| átlag | Minimalizáljuk az objektumok és
klaszterközéppontjaik négyzetes L
|
Koszinusz | átlag | Maximalizáljuk az objektumok és klaszterközéppontjaik közötti koszinusz hasonlóság összegét |
Bregman divergencia | átlag | Minimalizáljuk az objektumok és klaszterközéppontjaik Bregman divergenciájának az összegét |
A
Kezdő középpontok választása
Ha a kezdeti középpontokat véletlenszerűen választjuk, akkor a
A megfelelő kezdő középpontok kiválasztása a
8.1. Példa
(Rossz kezdő középpontok) A véletlenszerűen kiválasztott kezdeti középpontok lehetnek rosszak is. Erre szolgáltatunk példát a 8.3. és a 8.4. ábrákon használt adathalmaz segítségével. Az ábrák két különböző kezdeti középpontokkal végrehajtott klaszterezés eredményét mutatják. (Mindkét ábrán keresztekkel jelöltük a különböző iterációknál a klaszterközéppontokat.) A 8.3. ábrán bár az összes kezdeti középpont mind egy természetes klaszterből van, az eljárás mégis megtalálja az SSE-t minimalizáló klaszterezést. A 8.5. ábrán azonban hiába tűnik úgy, hogy jobb a kezdeti középpontok eloszlása, az optimálisnál rosszabb klaszterezést kapunk nagyobb négyzetes hibával.
8.2. Példa
(A véletlen kezdőértékadás korlátai) A kezdő középpontok kiválasztására egy széles körben használt módszer, hogy többször futtatjuk le az algoritmust, futásonként véletlenszerűen választott kezdőpontok különböző halmazával, majd a legkisebb SSE-vel rendelkező klaszterhalmazt választjuk ki. Bár egyszerű, ez a stratégia nem minden esetben működik jól, sikere az adathalmaztól és a keresett klaszterek számától függ. Mindezt a 8.6. (a) ábrán látható minta adathalmazt használva szemléltetjük. Az adatok két klaszterpárból állnak, ahol mindkét (felső-alsó) pár esetén a párok tagjai közelebb vannak egymáshoz, mint a másik párbeli klaszterekhez. A 8.6. (b--d) ábra azt mutatja, hogy ha klaszterpáronként két-két kezdeti középponttal kezdünk, még akkor is, ha mindkét középpont ugyanabba a klaszterbe esik, a középpontok úgy rendezik át magukat, hogy az ``igazi'' klasztereket találjuk meg. Ugyanakkor a 8.7. ábrán az látható, hogy ha az egyik klaszterpárban csak egy, míg a másikban három középpont van, akkor két igazi klaszter összeolvad, egy igazi klaszter pedig kettéhasad.
Megjegyezzük, hogy optimális klaszterezést kapunk mindaddig,
amíg két kezdeti középpont található akárhol egy klaszterpárban, mivel
a középpontok úgy rendeződnek át, hogy mindegyik klaszterbe egy kerül.
Sajnos ahogy a klaszterek száma nő, úgy egyre nagyobb eséllyel esik
legalább egy klaszterpárba csupán egyetlen kezdő középpont. (Lásd a 4.
feladatot az 578. oldalon.) Ebben az esetben, mivel a klaszterpárok
távolabb esnek, mint a párokon belül található klaszterek, a
A véletlenszerűen választott kezdeti középpontok használatával
kapcsolatos problémák miatt, amelyeket még a többszöri újraindítás sem
képes leküzdeni, gyakran alkalmaznak más módszereket a kezdőértékadás
során. Az egyik hatásos hatásos megközelítés, hogy mintát veszünk a
pontokból és egy hierarchikus klaszterező módszerrel klaszterezzük
őket. A hierarchikus klaszterezésből
A következő eljárás a kezdeti középpontok kiválasztásának egy másik megközelítése. Első pontnak válasszunk egy véletlenszerű pontot vagy válasszuk az összes pont középpontját. Ezután mindegyik egymás utáni kezdeti középpontnak azt a pontot választjuk, amely a legmesszebb esik a már kiválasztott középpontoktól. Ezáltal kezdeti középpontok egy olyan halmazát kapjuk, amely garantáltan nem csupán véletlenszerűen választott, de jól elkülönülő is egyben. Sajnos azonban egy ilyen megközelítés nagy sűrűségű területekbe (klaszterekbe) eső pontok helyett inkább kiugró értékek választhat. Továbbá a kezdeti középpontok aktuális halmazától legtávolabb eső pont kiszámítása költséges feladat. Ezen problémák áthidalása érdekében ezt a módszert gyakran egy, a pontokból vett mintán alkalmazzák. Mivel a kiugró értékek ritkák, általában nem jelennek meg egy véletlen mintában. Ezzel szemben valószínűleg minden sűrű területről kiválasztása kerülnek pontok, hacsak nem túl kicsi a minta. Továbbá a kezdő középpontok megtalálásához szükséges számítások is nagymértékben csökkennek, mivel a mintanagyság sokkal kisebb, mint pontok száma.
A későbbiekben még két olyan másik megközelítést is tárgyalunk,
amelyek hasznosak a jobb minőségű (kisebb SSE értékű) klaszterezések
előállításánál: a
Idő- és tárbonyolultság
A
Üres klaszterek kezelése
A korábban leírt alap
Kiugró értékek
Ha négyzetes hiba kritériumot használunk, a kiugró értékek helytelenül befolyásolhatják a megtalált klasztereket. A kiugró értékek jelenléte miatt az eredményül kapott klaszterközéppontok (prototípusok) lehet, hogy nem lesznek olyan reprezentatívak, mint egyébként, és így az SSE is nagyobb lesz. Emiatt gyakran hasznos a kiugró értékek előzetes felfedezése és eltávolítása. Fontos azonban figyelemmel lenni arra, hogy vannak bizonyos klaszterező alkalmazások, melyek esetén a kiugró értékeket nem szabad eltávolítani. Adattömörítésre használt klaszterezésnél minden pontot klaszterezni kell, valamint néhány esetben, mint például a pénzügyi elemzések, a nyilvánvalóan kiugró értékek (például szokatlanul nyereséges ügyfelek) lehetnek a legérdekesebb pontok.
Egy nyilvánvaló kérdés az, hogy hogyan azonosítsuk a kiugró értékeket. Számos, kiugró értékek azonosítására szolgáló módszert fogunk tárgyalni ch:anomaly 10. fejezetben. Ha olyan megközelítéseket alkalmazunk, melyek a klaszterezés előtt távolítják el a kiugró értékeket, elkerüljük a nehezen klaszterezhető pontok klaszterezését. Vagylagosan a kiugró értékek azonosíthatóak egy utófeldolgozási lépésben is. Számon tarthatjuk például, hogy a pontok egyenként mennyivel járulnak hozzá az SSE értékéhez, és eltávolíthatjuk azokat a pontokat, melyeknek szokatlanul nagy a hozzájárulása, főleg többszöri futtatás során. A kis klasztereket is el akarhatjuk távolítani, mivel ezek gyakran kiugró értékek csoportjait reprezentálják.
Az SSE csökkentése utófeldolgozással
A négyzetes hibaösszeg (SSE) csökkentésének egy kézenfekvő módja
több klaszter keresése, azaz nagyobb
Két olyan stratégia, amely a teljes SSE-t a klaszterek számának növelésével csökkenti:
Egy klaszter szétvágása:
A legnagyobb SSE értékű klasztert választjuk általában, de szétvághatjuk azt a klasztert is, amelynél egy bizonyos attribútum szórása a legnagyobb.
Egy új klaszterközéppnt bevezetése:
Gyakran az összes klaszterközépponttól legtávolabbi pontot választjuk. Ez a pont könnyen meghatározható, ha nyomon követjük azt, hogy az egyes pontok mennyivel járulnak hozzá az SSE értékéhez. Egy másik megközelítés, ha véletlenszerűen választunk az összes pont közül vagy a legnagyobb SSE értékű pontok közül.
Két stratégia, mely úgy csökkenti a klaszterek számát, hogy közben minimalizálni próbálja a teljes SSE növekedését:
Egy klaszter eloszlatása:
Ezt a klaszterhez tartozó középpont eltávolításával és a pontjainak a többi klaszterhez történő hozzárendelésével érjük el. Ideális esetben azt a klasztert választjuk, amelynek eloszlatása a legkevésbé növeli a teljes SSE értékét.
Két klaszter összevonása:
Jellemzően azokat klasztert válaszjuk, amelyek középpontjai a legközelebb vannak egymáshoz, bár egy másik, talán jobb megközelítés annak a két klaszternek az összevonása, amely a legkisebb növekedést eredményezi a teljes SSE értékében. Ez a két összevonási stratégia rendre megegyezik a centroid módszer és a Ward módszer nevű hierarchikus klaszterező módszereknél használtakkal. Mindkét módszert a 8.3. szakasz tárgyalja.
A középpontok növekményes frissítése
Ahelyett, hogy az összes pont egy klaszterhez történő hozzárendelése után frissítjük a középpontokat, a frissítés történhet növekményesen, az egyes pontok egy klaszterhez való hozzárendelése után. Vegyük észre, hogy ez minden lépésben vagy két frissítését igényel a klaszterközéppontokhoz, vagy egyet sem, mivel egy pont vagy egy új klaszterbe kerül át (két frissítés), vagy az aktuális klaszterében marad (nincs frissítés). Egy növekményes frissítési stratégia garantálja, hogy nem jönnek létre üres klaszterek, mivel kezdetben minden klaszter egyetlen pontot tartalmaz, és ha egy klaszternek csak egy pontja van, akkor az a pont mindig a tartalmazó klaszterhez lesz ismét hozzárendelve.
Ráadásul, ha a növekményes frissítést használjuk, módosítható a hozzáadásra kerülő pont relatív súlya, például a klaszterezés előrehaladtával gyakran csökkentik a pontok súlyát. Bár ez nagyobb pontosságot és gyorsabb konvergenciát eredményezhet, sok esetben nehéz lehet a relatív súlyok megfelelő megválasztása. Ezek a frissítési kérdések hasonlóak a mesterséges neurális hálók súlyainak frissítésével kapcsolatosakhoz.
A növekményes frissítés egy másik előnye, hogy az ``SSE minimalizálás'' mellett más célokat is alkalmazhat. Tegyük fel, hogy egy tetszőleges célfüggvény segítségével mérjük egy klaszterhalmaz jóságát. Amikor egy pontot feldolgozunk, minden lehetséges klaszter hozzárendelésre kiszámíthatjuk a célfüggvény értékét, majd választhatjuk a célfüggvényt optimalizálót. Alternatív célfüggvényekre a 8.2. szakasz ad konkrét példákat.
Hátrányként az hozható fel, hogy a középpontok növekményes
frissítésnél fellép egy sorrendségi függőség. Más szavakkal, az
előállított klaszterek függhetnek a pontok feldolgozási sorrendjétől.
Bár a probléma kezelése megcélozható a pontok feldolgozási
sorrendjének randomizálásával, az alapvető
A kettéosztó
8.2. algoritmus.
Kettéosztó
|
1: Inicializáljuk a klaszterek listáját, hogy egy, minden pontot tartalmazó klasztert tartalmazzon 2: repeat 3: Távolítsunk el egy klasztert a klaszterek listájából 4: { Hajtsunk végre több ``próba'' kettéosztást a kiválasztott klaszteren } 5: for
6: Osszuk ketté a
kiválasztott klasztert az alapvető
7: end for 8: Válasszuk azt a két, kettéosztással kapott klasztert, amelyeknek legkisebb a teljes SSE értéke 9: Adjuk hozzá a kiválasztott két klasztert a klaszterek listájához 10: until a klaszterek listája
|
Számos különböző mód van a kettéosztandó klaszter kiválasztására. Minden lépésben választhatjuk a legnagyobb klasztert, a legnagyobb SSE értékű klasztert, vagy használhatunk a méreten és az SSE értékén alapuló feltételt is. Különböző választások különböző klasztereket eredményeznek.
Gyakran úgy finomítjuk tovább a kapott klasztereket, hogy a
középpontjaikat kezdő középpontokként használjuk fel az alapvető
8.3. Példa
(Kettéosztó
Végül, használhatjuk a kettéosztó
A
A szóban forgó három esetben az a nehézség, hogy a
A
Ebben a szakaszban a
Ahogy korábban is említettük, ha a célfüggvényt úgy határozzuk meg, hogy ``minimalizáld az SSE-t'', akkor a klaszterezés optimalizációs problémaként is kezelhető. Az egyik mód, ahogy ezt a problémát -- a globális optimum megtalálását -- megoldhatjuk az, hogy a pontokat az összes lehetséges módon klaszterekbe osztjuk, majd azt a klaszterhalmazt választjuk, amely legjobban kielégíti a célfüggvényt, azaz amely minimalizálja a teljes SSE-t. Természtesen ez a kimerítő stratégia megvalósíthatatlanul számításigényes, aminek eredményeképpen praktikusabb megoldást kell keresnünk, még ha egy ilyen megközelítés nem is garantálja az optimális megoldás megtalálását. Egy módszer, amely gradiens módszer (gradient descent) néven ismert, azon alapszik, hogy gondosan kiválaszt egy kezdeti megoldást, majd a következő két lépést ismétli: kiszámolja a változást a célfüggvényt legjobban optimalizáló megoldáshoz, majd frissíti a megoldást.
Feltételezzük, hogy az adatok egydimenziósak, így a távolság:
A
Ebben a szakaszban bemutatjuk, hogyan lehet a
Itt
A
Így, ahogy azt korábban is jeleztük, a klaszter pontjainak átlaga a legjobb középpont, amely egy klaszter SSE-jét minimalizálja.
A
Annak szemléltetésére, hogy a
A (8.5) egyenletet minimalizáljuk
Az egyenletet