A K-Means algoritmus
Az ipari és például HR-es alkalmazási példáért görgess lejjebb az első bekezdésre.
Ipari alkalmazási példa:
A K-Means algoritmus jól alkalmazható a gyártóiparban a termelési folyamatok optimalizálására és a termékek illetve gépek osztályozására. A K-Means egy egyszerű, de hatékony klaszterezési módszer, amely segíthet az adatok csoportosításában.
Gyártóipari Példa: Minőségellenőrzés és Termékosztályozás
Tegyük fel, hogy egy elektronikai alkatrészeket gyártó üzem különböző szenzorokat gyárt, ahol fontos a minőség ellenőrzése, mivel az alkatrészek teljesítménye és specifikációi kis mértékben eltérhetnek. A cél az, hogy ezeket az alkatrészeket olyan csoportokba soroljuk, amelyek megfelelnek bizonyos minőségi szabványoknak, így az esetleges hibás termékeket is könnyen azonosítani tudjuk.
Hogyan működik a K-Means alkalmazása ebben a példában?
Adatok összegyűjtése:
Minden legyártott szenzorról adatokat gyűjtünk, például az ellenállásáról, hőmérséklet érzékenységéről, elektromos vezetőképességéről, méretéről és egyéb jellemzőiről. Ezek az adatok alkotják azokat a jellemzőket, amelyek alapján a termékeket csoportosítani fogjuk.
K-Means algoritmus alkalmazása:
A K-Means algoritmus segítségével előre meghatározott számú klasztert (például 3 vagy 4) hozunk létre, amelyek a termékek különböző minőségi kategóriáit jelölik.
A klaszterek száma függhet az üzemben megengedett variációktól és a minőségi elvárásoktól, például lehetnek „kiváló minőségű”, „megfelelő minőségű”, „közepes minőségű”, és „hibás” termékek klaszterei (csoportjai).
Klaszterek (csoportok) és anomáliák (eltérések) azonosítása:
Miután a K-Means algoritmus elvégzi a csoportosítást, minden egyes termék egy bizonyos csoportba kerül az alapján, hogy melyik középponttól van a legkisebb távolságra.
A hibás vagy normál tartományon kívüli termékek azok, amelyek messze esnek a kijelölt klaszterközéppontoktól (csoportközéppont), és ezek potenciálisan hibás vagy ellenőrzésre szoruló darabok.
Minőségellenőrzés és döntéshozatal:
Az algoritmus alapján könnyen kiválaszthatók azok a termékek, amelyek nem felelnek meg a specifikációknak (a „hibás” csoportba kerülnek). Így gyorsabban észlelhető, ha egy gyártási probléma miatt nagyobb számú hibás termék készül.
Az „átlagos” és „kiváló” klaszterek alapján különböző döntések hozhatók, például az átlagos minőségű termékek olcsóbb piaci szegmensbe kerülhetnek, míg a kiváló minőségű termékeket magasabb áron lehet értékesíteni.
Termelés optimalizálása:
Az algoritmus használatával megfigyelhetjük a csoportok közötti eltéréseket, és azonosíthatjuk, hogy mely gyártási paraméterek okozhatják az esetleges minőségbeli eltéréseket. Például, ha a hőmérséklet befolyásolja a szenzorok teljesítményét, akkor ennek optimalizálásával növelhető a kiváló minőségű termékek aránya.
HR-es példa:
1. Karrierfejlődési utak azonosítása
A K-Means alkalmazható az alkalmazottak készségszintjei és tapasztalata alapján a karrierfejlődési utak azonosítására. Például egy cég alkalmazottait különböző klaszterekbe oszthatja a következő paraméterek alapján: évek száma a cégnél, betöltött pozíciók száma, illetve különféle készségek fejlettségi szintje. Az eredmények segíthetnek az egyes csoportokhoz igazított karrierfejlesztési tervek kidolgozásában.
2. Toborzási célcsoportok meghatározása
A K-Means klaszterezés a potenciális új alkalmazottak adatain is alkalmazható, hogy azonosítani lehessen különböző toborzási célcsoportokat. Például, ha a toborzási adatbázisban rendelkezésre állnak korábbi jelöltek adatai (pl. végzettség, tapasztalat, készségek), ezek alapján csoportosíthatók a jelentkezők. Az egyes klaszterekhez eltérő toborzási stratégiákat lehet társítani, hogy jobban illeszkedjenek az adott jelölti profilokhoz.
A K-Means működése animálva: (lenyíló tartalom - kattints a jobb szélső + ikonra)
A fenti melléket videón a K-Means algoritmus látható működés közben, ahogy 500 adatpontból 5 kezdeti klaszter magpontnak kialakul a végső helye az algoritmusnak megfelelően. Itt a klaszterek száma előre megadott – 5 -, ami egyébként tetszés szerint változtatható.
A K-Means algoritmus magyarázata: (lenyíló tartalom - kattints a jobb szélső + ikonra)
A K-Means (vagy K-Mean) egy gyakran használt nem felügyelt gépi tanulási algoritmus a klaszterezésre, amely a bemeneti adatokat különböző csoportokba (klaszterekbe) rendezi, úgy hogy a csoportokon belül a hasonló adatpontok legyenek, míg a különböző csoportok között minél nagyobb különbség van.
A K-Means algoritmus célja, hogy minimalizálja az adatpontok és a klaszterek középpontjai közötti távolságot. Az alapötlet tehát az, hogy egy előre meghatározott számú klasztert (K-t) alkotunk, és az adatokat ezen klaszterek középpontjai köré rendezni.
Az algoritmus lépései:
K középpont inicializálása:
Az algoritmus elején K (azaz a kívánt klaszterszám) középpontot választunk ki véletlenszerűen a bemeneti adatokból. A középpontoknak olyan koordinátáik vannak, amik az egyes klaszterek középértékeit (átlagát) képviselik.
Adatok hozzárendelése a legközelebbi középponthoz:
Miután a középpontok kiválasztásra kerültek, minden adatpontot hozzárendelünk ahhoz a klaszterhez, amelyikhez a legközelebb található. Ezt úgy mérhetjük, hogy az adatpontok és a klaszterek középpontjai közötti Euklideszi távolságot számolunk ki. Az adatpont a legközelebbi középpontú klaszterhez kerül.
Új középpontok számítása:
Miután minden adatpontot hozzárendeltünk egy klaszterhez, új középpontokat kell számítani. Minden klaszter középpontja az abban a klaszterben lévő adatpontok átlagos pozíciója lesz. Ez az új középpont.
Iterálás:
Az algoritmus addig ismétli a 2. és 3. lépéseket, amíg a középpontok nem változnak jelentősen (vagyis nem történik további változás, ami azt jelenti, hogy a klaszterek stabilizálódtak). Ezt a kritériumot általában egy tolerancia értékkel mérjük.
Befejezés:
Az algoritmus akkor fejeződik be, amikor a középpontok nem változnak többé, vagy ha elérjük a maximális iterációs számot.
Matematikai háttér és távolságmérés
A K-means algoritmus alapja a távolságmérés. A leggyakoribb módszer az Euklideszi távolság.
A K-means előnyei:
Egyszerűség: A K-means algoritmus viszonylag egyszerűen implementálható és gyorsan végrehajtható.
Hatékonyság: A K-means jól alkalmazható nagy mennyiségű adatra, és az egyik leggyorsabb klaszterezési algoritmus.
Rugalmasság: A K-means jól alkalmazható különböző típusú adatokra, ha azok jól elkülöníthetők.
A K-means hátrányai:
A K előre meghatározása: Az egyik legnagyobb hátrány, hogy a felhasználónak előre meg kell adnia a klaszterek számát, ami nem mindig könnyű feladat.
Érzékenység a kezdeti középpontokra: Mivel a középpontok véletlenszerűen kerülnek kiválasztásra, az eredmény változhat az inicializálás függvényében. Ezért fontos lehet az inicializálás okos megválasztása, például a K-means++ módszerrel, ami jobb kiindulópontokat választ.
Korlátozott a nem gömb alakú klaszterek esetén: A K-means nem biztos, hogy jól működik, ha a klaszterek nem gömb alakúak, mivel az Euklideszi távolság nem mindig képes jól jellemezni azokat.
Outlierek érzékenysége: Az outlierek (szélsőséges adatpontok) jelentős mértékben befolyásolhatják a középpontokat, és torzíthatják a klaszterezési eredményeket.
K-means++ inicializálás
A K-means++ egy fejlettebb inicializálási technika, amely segít a K-means algoritmus problémáján, hogy a középpontok véletlenszerűen választhatók, és így csökkenti a rossz inicializálás esélyét, ami jobb klaszterezési eredményeket biztosít.
Használati példák:
Kép klaszterezés: Azonosíthatunk hasonló pixeleket, és csoportosíthatjuk őket.
Piaci szegmentálás: Az üzleti elemzők különböző vásárlói csoportokat hozhatnak létre a vásárlói szokások alapján.
Dokumentum klaszterezés: A szöveges dokumentumokat hasonló témák alapján lehet klaszterekbe sorolni.
Adatcsökkentés: A K-means alkalmazható adatcsökkentési célokra, például a főkomponens-analízis (PCA) előkészítéseként.
Összegzés:
A K-means algoritmus a klaszterezés egyik legismertebb és leghatékonyabb módszere, amely jól használható, ha a klaszterek jól elkülöníthetők, és a felhasználó rendelkezik a kívánt klaszterszám ismeretével. Azonban nem minden esetben működik jól, például ha a klaszterek formája nem gömbölyű vagy ha sok outlier van.
Kódmag: (lenyíló tartalom - kattints a jobb szélső + ikonra)
import numpy as np
class KMeansCustom:
def __init__(self, n_clusters=5, max_iter=100, tol=1e-4):
self.n_clusters = n_clusters
self.max_iter = max_iter
self.tol = tol
self.centroids = None
def fit(self, X):
# Véletlenszerű inicializálás a középpontokhoz
np.random.seed(0)
initial_indices = np.random.choice(len(X), self.n_clusters, replace=False)
self.centroids = X[initial_indices]
for i in range(self.max_iter):
# Hozzárendelés a legközelebbi középponthoz
labels = self._assign_clusters(X)
# Új középpontok számítása
new_centroids = np.array([X[labels == k].mean(axis=0) for k in range(self.n_clusters)])
# Konvergencia ellenőrzése
if np.all(np.abs(new_centroids - self.centroids) < self.tol):
break
self.centroids = new_centroids
return self
def _assign_clusters(self, X):
# Euklideszi távolság számítása minden ponthoz a középpontokhoz
distances = np.linalg.norm(X[:, np.newaxis] - self.centroids, axis=2)
# A legközelebbi középpont indexének kiválasztása minden pont esetében
return np.argmin(distances, axis=1)
# 500 véletlenszerű pont generálása 2D térben
np.random.seed(0)
points = np.random.rand(500, 2) * 100 # 100x100-as térben helyezkednek el a pontok
# Saját k-Means implementáció futtatása
kmeans_custom = KMeansCustom(n_clusters=5)
kmeans_custom.fit(points)
