DBSCAN
Az ipari és például HR-es alkalmazási példáért görgess lejjebb az első bekezdésre.
Ipari és például HR-es alkalmazási példák (nem ipari példák mint például a HR-es az ipari példa blokk alatt található):
Ipari példa:
Gépek állapotának figyelése
Egy autógyárban különböző gépek dolgoznak a termelési folyamat során, például hegesztőgépek, festőrobotok és összeszerelő sorok. Minden géphez szenzorokat telepítenek, amelyek mérik a hőmérsékletet, rezgést, nyomást és más paramétereket, amelyek segítenek meghatározni a gép üzem közbeni állapotát.
Hogyan alkalmazható a DBSCAN:
Adatgyűjtés: Az üzem különböző gépeiről valós időben gyűjtik az adatokat (pl. hőmérséklet, rezgések, működési idő, stb.).
A DBSCAN alkalmazása:
A DBSCAN algoritmus klaszterezheti (csoportosíthatja) az adatokat, és azokat a gépeket, amelyek működési paramétereik alapján hasonlóak, egy csoportba sorolhatja.
Azok az azonos típusú gépek, amelyek a normális működési tartományon kívül esnek (pl. szokatlanul magas hőmérsékletet vagy rezgést mutatnak), az algoritmus „zajnak” tekinti, és figyelmeztetést generálhat a karbantartási osztály számára.
Az anomáliák felismerése:
Ha az egy típusú gépek közül egy gép paraméterei jelentősen eltérnek a többiekétől, például egy festőrobot túlmelegszik, a DBSCAN észreveheti, hogy az adott gép „kiugró” adatokat mutat, és jelezheti a potenciális meghibásodást.
Javítás és optimalizálás:
A karbantartási csapat azonnal értesülhet a problémás gépről, mielőtt az teljesen leállna, így csökkenthetők a nem tervezett leállások, javítható a gépek rendelkezésre állása, és optimalizálható a karbantartási költség.
HR-es példa:
1. Toborzási mintázatok azonosítása
A toborzási folyamatok optimalizálásához a DBSCAN algoritmus használható az új alkalmazottak múltbéli adatai alapján. Például az algoritmus felismerheti, hogy mely profilok vagy készségkombinációk voltak sikeresebbek egy-egy pozíció betöltésében, és ennek alapján segíthet a toborzási folyamatok finomhangolásában.
2. Fluktuáció előrejelzése
Az alkalmazottak megtartásának kulcseleme lehet a fluktuációs mintázatok elemzése. DBSCAN képes észlelni azokat a mintázatokat, amelyek a munkavállalók távozásához kapcsolódnak, például az elköteleződés hiányát, gyakori hiányzásokat vagy alacsony teljesítményt. Ezek alapján azonosíthatók azok a csoportok, amelyek esetében nagyobb a kockázat, hogy elhagyják a céget, így a HR proaktívan lépéseket tehet a megtartásuk érdekében.
3. Teljesítményértékelés alapján csoportosítás
A HR adatbázisokban gyakran találhatóak különböző teljesítménymutatók (pl. projektek száma, határidők betartása, stb.). A DBSCAN segítségével ezek az alkalmazottak csoportosíthatók különböző teljesítményszintek szerint. Az algoritmus automatikusan felismeri a teljesítménymintázatokat, és lehetőséget ad például a kiugróan jó vagy gyenge teljesítmények kiemelésére, így jobban megcélozhatók a fejlesztendő területek vagy jutalmazási rendszerek.
A DBSCAN klaszterezés animálva: (lenyíló tartalom - kattints a jobb szélső + ikonra)
Ezeken a videókon a DBSCAN nem felügyelt klaszterezés működését látjuk.
Láthatjuk, ahogy pontról pontra kialakulnak a különböző, előre nem meghatározott számú klaszterek, illetve külön színnel jelölésre kerülnek a sehova sem tartozó pontok, az úgynevezett outlier-ek (anomáliadetekció).
A kód az első ebben az esetben 300 pontot generál le véletlenszerűen egy 100-szor 100-as kétdimenziós síkon (az egységtávolság az 1) és 7,3-om egységű Epszilon paraméterrel (környezeti sugár) és 4 minimális szomszéddal csoportosítja a pontokat.
A kód a második esetben egy szomorú arcot generál véletlenszerűen egy 500-szor 500-as kétdimenziós síkon (az egységtávolság 1) és 65 egységű Epszilon paraméterrel (környezeti sugár) és 3 minimális szomszéddal csoportosítja a pontokat.
Magyarázat: (lenyíló tartalom - kattints a jobb szélső + ikonra)
A DBSCAN (Density-Based Spatial Clustering of Applications with Noise) egy sűrűség-alapú klaszterezési algoritmus, amely az adatok klaszterekbe történő csoportosítására szolgál anélkül, hogy előre meg kellene határozni a klaszterek számát. Ez az algoritmus különösen hasznos, ha az adatokban zaj van (outlierek) és az adatok sűrűségi mintázatokat követnek.
Működési elv
A DBSCAN algoritmus az alábbi alapelvekre épít:
Adatpontok sűrűsége: A DBSCAN a környezetét (szomszédos adatpontokat) vizsgálja, és két alapvető paramétert használ:
Eps (ε): A távolság, amely meghatározza, hogy egy adatpont közvetlen szomszédja-e egy másik adatpontnak.
MinPts: Az a minimális számú adatpont, amelynek a szomszédságában egy adatpontnak kell lennie ahhoz, hogy egy klaszter magját képezze.
Három típusú adatpont:
Magpontok: Azok az adatpontok, amelyeknek legalább MinPts szomszédja van egy Eps távolságon belül.
Szomszédos pontok: Azok a pontok, amelyek egy magpont szomszédságában találhatók, de nem magpontok.
Zajpontok (outlierek): Azok a pontok, amelyek nem tartoznak egyetlen klaszterhez sem, mivel minden szomszédjuktól epszilon távolságon kívül esnek.
Klaszterezési folyamat:
A DBSCAN egy tetszőleges adatpontot választ ki, és ha több, mint MinPts szomszéddal rendelkezik epszilon távolságon belül, akkor egy klasztert kezd el kialakítani.
A klaszterek folytatódnak az összes szomszédos pont hozzáadásával.
Azokat az adatpontokat, amelyek nem tartoznak egy klaszterhez, zajpontoknak tekintjük.
Alkalmazási területek
Sűrűség alapú klaszterezés: DBSCAN különösen hasznos olyan esetekben, amikor a klaszterek alakja nem szabályos (pl. gömb alakú), és amikor az adatok között zajpontok vagy outlierek vannak. Nem szükséges előre meghatározni a klaszterek számát.
Főbb alkalmazási területek:
Geográfiai adatelemzés: DBSCAN-t alkalmazhatunk olyan esetekben, mint például a helyadatok (GPS adatok), ahol a térbeli eloszlás alapján kell az adatokat klaszterekbe sorolni (pl. városok, éttermek, üzletek klaszterezése).
Anomáliák detektálása: Zajpontok vagy outlierek azonosítása az adatokban. Ha egy adatpont nem tartozik egyetlen klaszterhez sem, akkor azt zajpontnak tekinthetjük, így alkalmas lehet a rendellenes események vagy hibás adatok detektálására.
Képfeldolgozás: A DBSCAN alkalmazható képeken található objektumok csoportosítására vagy egyes vizuális mintázatok azonosítására.
Hálózati adatbányászat: Internetes vagy közlekedési hálózatokban, például közlekedési adatokban, ahol fontos az egyes útvonalak, csomópontok és azok közötti kapcsolatok sűrűségének elemzése.
Előnyök:
Képes klasztereket találni anélkül, hogy előre meghatároznánk a klaszterek számát.
Jó a zajpontok és az outlierek kezelésére.
Képes kezelni a különböző alakú klasztereket (nem csupán gömböket).
Hátrányok:
Az algoritmus érzékeny a paraméterekre, különösen az Eps és MinPts értékekre.
Nagy, sűrű adatbázisokkal vagy nagyon nagy adatmennyiségekkel lassú lehet.
Példa
Tegyük fel, hogy egy város közlekedési adatain dolgozunk, és szeretnénk megtalálni azokat a területeket, ahol a forgalom sűrűsége magas. A DBSCAN segítségével a forgalmi adatokat klaszterekbe sorolhatjuk, és így azonosíthatjuk a zsúfolt, forgalmas területeket (mint a központi csomópontok), míg a ritkábban használt utak, vagy a zajos adatokat (pl. hibás GPS-koordináták) outlierekként kezelhetjük.
Összességében a DBSCAN egy erőteljes eszköz a sűrűség-alapú klaszterezéshez, különösen akkor, ha nem ismert előre a klaszterek száma, és ha az adatainkban zajpontok vagy outlierek vannak.
Kódmag: (lenyíló tartalom - kattints a jobb szélső + ikonra)
import numpy as np # Távolság számítása két pont között (euklideszi távolság) def euclidean_distance(point1, point2): return np.sqrt(np.sum((point1 - point2) ** 2)) # Szomszédok keresése (Eps távolságon belüli pontok) def region_query(data, point_idx, eps): neighbors = [] for i in range(len(data)): if euclidean_distance(data[point_idx], data[i]) <= eps: neighbors.append(i) return neighbors # Klaszter kibővítése def expand_cluster(data, labels, point_idx, neighbors, cluster_id, eps, min_pts, visited): labels[point_idx] = cluster_id i = 0 while i < len(neighbors): neighbor_idx = neighbors[i] if not visited[neighbor_idx]: visited[neighbor_idx] = True new_neighbors = region_query(data, neighbor_idx, eps) if len(new_neighbors) >= min_pts: neighbors.extend(new_neighbors) if labels[neighbor_idx] == -1: labels[neighbor_idx] = cluster_id i += 1 return labels # DBSCAN algoritmus def dbscan(data, eps, min_pts): labels = np.full(len(data), -1) visited = np.full(len(data), False) cluster_id = 0 for i in range(len(data)): if visited[i]: continue visited[i] = True neighbors = region_query(data, i, eps) if len(neighbors) < min_pts: labels[i] = -1 # Zajpont else: cluster_id += 1 labels = expand_cluster(data, labels, i, neighbors, cluster_id, eps, min_pts, visited) return labels # Pontok generálása np.random.seed(42) data = np.random.rand(300, 2) * 100 # 300 pont két dimenzióban, 0 és 100 között # Paraméterek beállítása eps = 7.3 # Sugár min_pts = 4 # Minimális szomszédok száma # DBSCAN alkalmazása az adatkészletre labels = dbscan(data, eps, min_pts)
