HTML

Az élet kódjai

Csináld maga. Senki nem csinálja meg helyetted.

Friss topikok

  • Travis.CG: @hagymi: Úgy emlékszem nem működött, mert dátum volt a cella típusa, nem string. (2026.03.31. 12:20) Excel, mint büntetés
  • Travis.CG: Frissítés: Az operáció nem teljesen sikerült. A képernyő bizonyos időnként elsötétül, csak a hátté... (2026.01.11. 11:30) Iphone képernyő és aksi csere
  • Travis.CG: @webhauser: Én nem vagyok jó programozó. Nem vennéd sok hasznomat. (2025.09.18. 10:26) T0ad 2025
  • Travis.CG: Annyiban én is hibás vagyok, hogy könnyen előjönnek belőlem negatív posztok, ezt akartam ellensúly... (2025.05.22. 19:34) Ne csak a rosszat halljátok
  • sdani: Oh... néha eszembe jut, hogy az EBI után esetleg vissza kellene menni valamennyire az akadémiai vo... (2025.03.18. 16:58) Pontos, jól behatárolt célok

Lokális maximum keresés

2018.12.18. 01:58 Travis.CG

A fenti elnevezés gyakorlatilag a csúcsok azonosítása változó adatokon. Ezek az adatok változhatnak térben vagy időben. Jelen posztban csak a 2D csúcsok azonosítása a cél, de természetesen léteznek módszerek magasabb dimenziókra is.

Aki egy kicsit is kutakodott a témában, bizonyára tapasztalta, hogy nincs egységes konszenzus, mit is nevezzünk csúcsnak. Amíg az első ábrán teljesen egyértelmű, mit tekintünk a legmagasabb pontnak, addig egy zajos, kiugró értékektől sem mentes adatnál már nem ilyen egyszerű a helyzet:

zoom.png

out.png

Talán ez is az oka, hogy a számtalan elérhető módszer mellett az emberek saját maguk is készítenek ad-hoc megoldásokat, amelyek ugyan úgy, vagy még jobban megfelelnek az igényeknek.

A következőkben azt mutatom meg, hogyan lehet minimális programozással, adott függvényekre támaszkodva megoldani a feladatot. Minimális programozás alatt azt értem, hogy csak a rendszer által biztosított függvényeket használjuk, semmilyen saját magunk által implementált adat transzformációt vagy algoritmust nem kell igénybe venni. Mintha előre gyártott LEGO elemeket illesztenénk össze, de saját kockákat nem gyártunk.

R

R-ben két csomag kerül bemutatásra. Az első a PeakPick. Használata rendkívül egyszerű. Bemenő paramétere egy oszlop mátrix. Ezt a matrix() függvénnyel állíthatjuk elő. Második paramétere a csúcspontok minimális távolsága.

peakPick(matrix(data, ncol=1), 100)

Visszatérési értéke egy logikai mátrix, a bemeneti adatokkal megegyező dimenzióval. Igaz érték esetén az adott elemet csúcspontként azonosította az algoritmus.

A második csomag a nem túl intuitív pracma néven fut. Bemenete egy vektor, tehár a PeakPick-el ellentétben csak 2D adatokra használhatjuk.

findpeaks(data)

A program viszonylag egyszerű algoritmust használ. Csúcsnak tekint mindent, ami előtt és mögött alacsonyabb értékek vannak. Az, hogy mennyi lépésen keresztül történjen ez a növekedés, az nups és ndown paraméterekkel szabályozható.

Python

Az adatelemzés másik nagyágyúja, a Python is biztosít lehetőséget lokális maximumok felderítésére. A scipy csomag jelfeldolgozó rutinok egész sorával rendelkezik.

import scipy.signal as sig
import numpy as np
sig.find_peaks_cwt(data, np.arange(5,10))

Ez a megoldás egy wavelet transzformáción alapul, visszatérési értéke a bemeneti adat indexei, ahol a csúcspontot sikerült megtalálni.

Összegzés

Én denzitás függvényeken próbáltam ki a módszereket és számomra úgy tűnt az R megoldásai sokkal jobb eredményt adtak, közelebb álltak ahhoz, amit én csúcspontnak tekintek. A Pythonos megoldása nagyon érzékeny a második paraméterre és ahogy különböző értékekekt adtam meg neki, néha nagyon meglepő eredményeket adott. Talán az is probléma volt, hogy nem vagyok túl járatos a wavelet transzformációban.

De az biztos, hogy lokális maximum keresésnél nem kerülhetjük el a bemenő adatok szűrését. Ez pedig tovább növeli a beállítandó paraméterek számát. Ezek alapján azt mondanám, hogy a csúcspontok megtalálása egyfajta próba-szerencse módszerrel történik, ahol minden esetben figyelembe kell venni a bemeneti adatok jellegét.

Szólj hozzá!

Címkék: statisztika

A bejegyzés trackback címe:

https://cybernetic.blog.hu/api/trackback/id/tr1314486610

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása