Subiect: Recuperare radius - experiențe?
Salut!
A mai pățit cineva să aibă probleme cu recuperarea radius-ului în analiza datelor? Mă lupt de câteva zile cu un dataset destul de mare și, sincer, nu știu dacă e ceva specific la datele mele sau dacă e o problemă mai generală cu implementarea.
Am încercat mai multe abordări, inclusiv ajustarea parametrilor de căutare și folosirea unor algoritmi diferiți de nearest neighbor search, dar tot nu obțin rezultate satisfăcătoare. Mai exact, timpul de răspuns e inacceptabil de mare.
Lucrez la teza de master și am nevoie de o metodă eficientă pentru a identifica clustere în datele astea. Mă gândeam să folosesc DBSCAN, dar recuperarea radius-ului optim pare să fie un bottleneck serios.
Coordentatorul mi-a sugerat să mă uit la aproximări, dar nu sunt sigur dacă asta nu va afecta acuratețea rezultatelor. Ați avut experiențe similare? Orice sfat sau resursă ar fi super utilă!
Salut Mirela,
Știu exact despre ce vorbești! Mă luptam și eu cu problema asta acum câteva luni, când lucram la un proiect similar pentru licență. Dataset-ul meu era, de asemenea, destul de voluminos și optimizarea radius-ului pentru DBSCAN a fost un coșmar.
Ai dreptate, timpul de răspuns poate deveni inacceptabil de mare, mai ales când te joci cu parametrii. Am încercat și eu diverse metode de nearest neighbor search (KDTree, BallTree, etc.) și, deși ajută puțin, nu rezolvă problema fundamentală.
Sfatul coordonatorului tău cu aproximările e bun, dar trebuie abordat cu grijă. Afectează acuratețea, asta e sigur, dar uneori compromisul e necesar. Eu am folosit o combinație între sklearn.neighbors.NearestNeighbors cu algorithm='ball_tree' și am redus numărul de vecini căutați (n_neighbors) pentru a accelera procesul. A fost o soluție de compromis, dar mi-a permis să obțin rezultate rezonabile într-un timp acceptabil.
O altă abordare pe care am încercat-o (și care a funcționat surprinzător de bine) a fost să subeșantionez dataset-ul inițial pentru a găsi un radius "bun" pe o porțiune mai mică de date, apoi să aplic acel radius pe întregul dataset. Nu e perfect, dar poate fi un punct de plecare.
În plus, te-ar putea ajuta să te uiți la metrici de distanță alternative, în funcție de natura datelor tale. Poate că distanța euclidiană nu e cea mai potrivită.
Dacă vrei, poți să-mi dai mai multe detalii despre dataset-ul tău (dimensiune, tipul datelor, ce vrei să identifici exact) și poate pot să te ajut cu niște sugestii mai specifice.
Mult succes cu teza! Știu cât de stresant poate fi, dar nu te da bătută!
Salut Adela,
Îți mulțumesc enorm pentru răspuns! Mă bucur să aud că nu sunt singura care se confruntă cu problema asta. E bine să știu că și alții au trecut prin asta și au găsit soluții, chiar dacă sunt compromisuri.
Ai dreptate, am încercat și eu BallTree și reducerea numărului de vecini, dar nu am observat o îmbunătățire dramatică. Poate că trebuie să experimentez mai mult cu n_neighbors.
Ideea cu subeșantionarea e foarte bună! Nu m-am gândit la asta. Dataset-ul meu are aproximativ 500.000 de înregistrări și 10 dimensiuni (toate numerice, sunt date de senzori). Vreau să identific anomalii, adică puncte izolate care se abat semnificativ de la comportamentul normal. Mă gândeam că DBSCAN ar putea fi o metodă bună pentru asta, dar recuperarea radius-ului mă blochează.
Am încercat și distanța Manhattan, dar rezultatele au fost similare cu distanța euclidiană. Poate ar trebui să mă uit la alte metrici, cum ar fi distanța Minkowski cu un parametru p diferit.
O să încerc să-ți trimit un e-mail cu mai multe detalii despre date, dacă nu te deranjează. Orice sugestie suplimentară ar fi binevenită!
Îți mulțumesc încă o dată pentru ajutor și pentru încurajări! E adevărat, teza e stresantă, dar e important să nu renunțăm. 🙂
Salut Adela,
Mersi mult pentru încurajări! E super să găsești pe cineva care înțelege prin ce treci.
Legat de subeșantionare, o să încerc să experimentez cu diferite procente. Mă gândeam să încep cu 10% și să văd cum se comportă. Sper să găsesc un echilibru bun între viteză și acuratețe.
Ai dreptate și cu Minkowski, o să încerc și cu valori diferite pentru p. Poate că o valoare mai mare ar putea fi mai potrivită pentru datele mele, având în vedere că sunt de la senzori și pot avea o anumită dependență între dimensiuni.
În legătură cu e-mailul, te rog să-mi spui adresa ta și îți trimit imediat