Filters in Azure ML Studio experiment

fil1A Data Tranformaton menüpontban található Filter modulok következnek. Maguk a filterek arra lettek koncepció szerint megalkotva, hogy a numerikus adatokon  alkalmazva támogassák a machine learning feladatokat, mint pl. a képfelismerés, hangfelismerés és “hullám” analízis. Pontosabban mire is szokás használni a filtereket:

  • Interferencia analízis telemetrikus jelekben
  • Kép vagy beszédfelismerő feladatok ellátása
  • “Trendek” felismerése vagy idényjellegű hatások eltávolítása zajos eladásokból vagy gazdasági adatokból

Filterekre azért van szükség, hogy az adatokon használva azokat növeljük a jeltisztaságot, megtaláljunk érdekes jellemzőket, vagy szimplán csökkentsük a zajokat. Az ideális filternek eliminálnia kellene az összes zajt, ugyanakkor egységesen érzékeny az elvárt jelre. Egy ilyen tökéletes filter létrehozásához számos iteráció és technikai kombináció szükséges.

Ahhoz, hogy tisztán lássunk, van néhány alapfogalom amit át kell nézni, mielőtt a filterek világában elmerülünk.

  • Passband: az a frekvenciatartomány, amely áthalad a szűrőn anélkül, hogy az csillapodna vagy gyengülne.
  • Stopband: meghatározott frekvenciatartomány amin keresztül a jeleket nem engedjük át.
  • High pass: csak magas frekvenciát enged át.
  • Low pass: csak egy meghatározott érték alatt engedi át a jelet.
  • Corner: a corner frekvencia meghatároz egy határt a stopband és a passband frekvenciák között.
  • Bandstop filter: ennek egy stopband van, amit két frekvenciával definiálhatunk: egy magasan vágott és egy alacsony vágott frekvenciával.
  • Ripple: egy kicsi nem kívánt eltérés, ami periodikusan előfordul.

Modulok az ML Studióban

  • Apply Filter: egy szűrőt lehet vele alkalmazni a kijelölt oszlopokra egy adathalmazon belül
  • FIR Filter: véges impulzusválasz szűrő, jelfeldolgozáshoz
  • IIR Filter: végtelen impulzusválasz szűrő, jelfeldolgozáshoz
  • Median Filter: medián szűrő, adatok simítására használt a tendencia analízishez
  • Moving Average Filter: mozgóátlag szűrő az adatok simítására a tendencia analízishez
  • Threshold Filter: küszöb filter, ami értékek korlátozására jó.
  • User-Defined Filter: egyéni véges vagy végtelen impulzusválasz szűrő készítése

 Apply filter

Semmi extra, van két bemenete, a jobb oldali maga a filter amit használni szeretnénk az adatokon, a bal oldali maga az adathalmaz. Van egy kimenete, ami a szűrt adathalmaz lesz. Azt hogy melyik oszlopon végezzük a szűrést, a már ismert Launch column selector opcióval választhatjuk ki.
fil2

FIR filter

A legtöbbször azokban az alkalmazásokban használják, amelyek lineáris-fázis választ igényelnek.

Tulajdonságok:

  • Order: egy egész számot vár paraméterként, azoknak az aktív elemeknek a számát határozza meg a amelyek használata érintik a szűrő által adott választ.
  • Window: választani kell egy opciót, ami meghatározza, hogy mi történjen amikor alkalmazzuk a szűrő együtthatókat.
    • Hamming: generalizált Hamming ablak, egyfajta súlyozott átlagot biztosít, amit általában a képfeldolgozásban és a számítógépes megjelenítésben alkalmaznak.
    • Blackman: egy simán elvékonyított görbefunkciót alkalmaz a jelre. Ennek sokkal jobb a Stopband csillapítása mint bármelyik másik ablak típusnak.
    • Rectangular: egy meghatározott értéken belül egy egyenletes értéket használ, mindenhol máshol pedig nem használ semmilyen értéket. A legegyszerűbb négyzetes ablakkal ki lehet cserélni n értéket az adatsorban nullákra, ami miatt gy tűnik mintha a jel hirtelen ki és be kapcsolna.
    • Triangular: a háromszög ablak szűrő együtthatókat alkalmaz lépésenként. Az aktuális érték megjelenik a háromszög csúcsán, majd csökken a megelőző vagy a következő értékekkel.
    • None: néhány alkalmazásnál jobb ha nem használunk semmilyen ablakot.
  • Filter Type: Kiválaszthatjuk, hogy melyik filtert akarjuk használni. A filterek lehetnek: Lowpass, Highpass, Bandpass és Bandstop (ezeket már korábban tárgyaltuk…)
  • Hight cutoff és Low cutoff: attól függ melyik értéket lehet beállítani, hogy melyik filtert választottuk. Felső és alsó küszöbértékeket állíthatunk be velük.
  • Scale: legyen vagy ne legyen skálázás alkalmazva az együtthatókon.

FIR példák, csak a window beállítás módosításával:
(sorrendben: Hamming, Blackman, Rectangular, Triangular, None az első pár sor összehasonlítására ahol y az eredeti értékeket reprezentálja, azért pusztán adatokat mutatok, mert annyira kicsik az eltérések a változtatásokban, hogy grafikon nem igazán adta vissza, hogy mi is történik)
fil3fil4fil5fil6fil7

 

IIR FIlter

Mint az előbbit is ezt is leginkább digitális jelfeldogozásban használják. A szűrő meghatároz egy halom állandót (vagy nevezzük együtthatóknak), amik meg fogják változtatni az átmenő jelet. A szűrő nevében a végtelen azt jelenti jelen esetben, hogy  van egy visszacsatolás a kimenet és a sorozat értékei között.

Tulajdonságok:

  • Order: egy szám ami megadja a szűrő hosszát.
  • Filter kind: a szűrőfajta egy olyan matematikai átviteli függvényt jelöl, ami irányítja a frekvencia választ és a frekvencia elfojtást. Ezek vannak az Azure ML Studión belül:
    • Butterworth: másnéven maximally flat magnitude filter (amit nem tudom szépen hogy mondanak magyarul), azért mert korlátozza a választ (változás a jelben) a passbandban és a stopbandban.
    • Chebyshev Type 1: a célja az lenne, hogy minimalizálja a hibát az idealizált és az aktuális szűrő karakterisztikája között a szűrő tartománya felett. Ez az egyes típusnak a hibája, hogy több nem kívánt eltérést (ripple) hagy a passbandban.
    • Chebyshev Type 2: Ennek ugyanolyan karakterisztikája van mint az egyes típusúnak, de ez nem kívánt eltérést (ripple) hagy a stopbandban.
  • Filter Type: A szűrő típus azokat a frekvenciákat fogja meghatározni, amit a szűrőnek alkalmaznia kellene majd. Azure ML-ben a következő lehetőségeink vannak:
    • LowPass: megszünteti a az alacsony vagy a nulla frekvenciákat. Ezért muszáj egy magasabb levágási (cutoff) értéket meghatározni.
    • HightPass: megszünteti a magas frekvenciákat. Ezért muszáj egy alacsony levágási (cutoff) értéket meghatározni.
    • Bandpass: keresztülhalad a jelek egy olyat tartományán ami magas és alacsony levágási értékekkel van körülhatárolva.
    • Bandstop: megszünteti a jeleket egy olyan tartományban ami alacsony és magas levágási értékekkel van meghatározva.
  • Hight cutoff: az érték egy felső frekvenciahatárt szab meg. (A filter típusnál állítottak alapján kerül használatba.)
  • Low cutoff: az érték egy alsó frekvenciahatárt szab meg. (A filter típusnál állítottak alapján kerül használatba.)
  • Ripple: meghatározza a ripple arányát. Ugyebár a ripple általában nemkívánatos hatást akarna jelenteni, de ezt tudjuk kompenzálni más tulajdonságok állításával, mint pl. a szűrő hossz. Fontos arra is figyelni, hogy nem minden szűrő állít elő nemkívánatos hatásokat.

IIR példák: A bemenet ugyanaz lesz mint a ami volt a FIR példában is, itt azonban már több értelme van valamivel vizuálisabb összehasonlítást végezni, az eredmények a következők:

Order: 4; Filter type: LowPass; Low cutoff: 0.01; Ripple: 0
fil8

Order: 4; Filter type: HighPass; Low cutoff: 0.01; Ripple: 0
fil9

Order: 4; Filter type: BandPass; Hight cutoff: 0.7; Low cutoff: 0.01; Ripple: 0
fil10

Order: 4; Filter type: BandStop; High cutoff: 0.7; Low cutoff: 0.01; Ripple: 0
fil11

Order: 4; Filter type: BandStop; Hight cutoff: 0.7; Low cutoff: 0.001; Ripple: 0
fil12

Median Filter

Azokon az adatokon tudunk egy medián filtert használni, amelyek digitális jelek inputjai vagy képek. A median szűrőt széleskörűen használják képfelismerésekhez zajcsökkentés céljából.

Tulajdonságok: Szegény modulnak csak egy van.

  • Length: egy számot vár paraméterül amely meghatározza a azoknak a maszkoknak a számát amiket a szűrő majd használni fog. Az ablak méretnek amit néha maszknak hívnak, ha tehetjük válasszunk páratlan, pozitív értékű egész számot (ugyanis ha mégis páros számot adunk meg, akkor a maszk méret automatikusan csökkenni fog egyel).

Moving Avarage Filter

A mozgóátlag szűrőt arra használjuk, hogy kiszámoljuk egy adathalmazon a sor egyoldalas vagy kétoldalas mozgóátlagot. A mozgóátlag rendkívül hatékony eszköz a piaci trendek vizualizálásához, mivel kiszűri – vagy legalábbis minimalizálja – az időszakosságból fakadó statisztikai zajokat.

Magáról a mozgóátlagról: Ez az átlagtípus abban segít, hogy felfedj vagy előrejelezz hasznos átmeneti mintákat a visszamenőleges és a valós adatokban. A legegyszerűbb mozgóátlag a sorozat egy mintájánál kezdődik és attól a pontól kezdve számolja az aktuális pozíció és a megelőző n pozíció átlagát, az aktuális átlag helyett. Minél nagyobb ablakot, azaz minél nagyobb n értéket használunk, annál kisebb az eltérés az értékek között. Ugyanakkor, ha a használt értékek számát növeljük, akkor egyre kisebb hatással van minden egyes érték a kapott átlagra. A mozgóátlag itt lehet egyoldalú vagy kétoldalú. Az egyoldalú átlag esetén csak az értékek megelőző index értéke használt. Kétoldalú átlag esetén, a múltbéli és a jövőbéli értékek is használtak.

A modul tulajdonságai:

  • Length: pozitív egész szám, ami a szűrő hosszát adja meg. A hosszabb szűrőt még szokták magasabb rendű szűrőnek is nevezni, ami egy nagyobb ablakot jelent a számításban és közelebbi approximációt a keresett trendhez. A rövidebb vagy más néven alacsonyabb rendű szűrő kisebb ablakot használ a számításban és az adatok nagyon hasonlóak az eredeti adatokhoz.
  • Type: több fajtája létezik a mozgóátlag számításnak, Azure ML-ben a következők vannak:
    • Simple: más néven SMA az átlagot súlyozatlan gördülő átlagként számítja.
    • Triangular: azaz TMA, kétszer átlagol a simább trendvonal érdekében. A triangular elnevezés a súlyozás miatt van amit alkalmaz, lényegében hangsúlyozza a középső értékeket.
    • Exponential Simple: EMA, a legfelkapottabb adatokra nagyobb súlyozást számol, és ezt a súlyt adja meg exponenciálisan.
    • Exponential: módosított EMA, kiszámol egy futó mozgóátlagot, ahol bármelyik pontnál a mozgóátlag számításnál megtartja az előzőleg kiszámolt mozgóátlagot minden előző pontra.
    • Cumulative: kap egy pontot és egy aktuális mozgóátlagot, az adott pontban mondja meg a mozgóátlagot.

Moving Average Filter példák: Az input ugyanaz mint előző esetekben, majd az egyes típusokra az output a következő (a hosszt azt 40-re állítottam):

Simple típus
fil15

Triangular típus:
fil16

Exponential Simple típus:
fil17

Exponential típus:
fil18

Cumulative típus:
fil19

Threshold Filter

A Threshold szűrővel tudunk numerikus értékeket egy meghatározott tartományba korlátozni. A bemeneti adathalmaz minden egyes értékét megvizsgálja, és amelyik nem fér a korlátok közé, azt megváltoztatja. Alapvetően a következőkre javallott a használata:

  • minden negatív mért értéket cseréljünk a nullára
  • átalakítani egy szürkeárnyalatos kép fekete fehér területeit a numerikus határok védése mellett (minden pixelre).

A modul tulajdonságai:

  • Type: annak meghatározására, hogy milyen típusú szűrőt alkalmazzunk
    • LessThan: ha valamelyik érték kisebb ennél az értéknél akkor azt cseréli, minden más értéket pedig átenged.
    • GreaterThan: ha valamelyik érték nagyobb ennél az értéknél akkor azt cseréli, minden más értéket átenged.
    • MagnitudeLessThan: kiszámít egy nagyságrendet, és megváltoztatja az értéket egy nagyságrenddel kisebb meghatározott értékre a határértékhez.
    • MagnitudeGreaterThan: kiszámít egy nagyságrendet, és megváltoztatja az értéket egy nagyságrenddel nagyobb meghatározott értékre a határértékhez
    • InRange: átenged minden értéket ami beleesik a megadott tartományba, és megváltoztatja azt ami kívül esik azon a legközelebbi határértékre.
    • OutOfRange: átenged minden értéket ami  a megadott határértéken kívül van, és megváltoztat minden értéket ami belülre esik a legközelebbi határértékre.
    • InRangeWithStd: Átenged minden értéket ami beleesik a meghatározott általános eltérési tartományba, és megváltoztat minden más értéket a legközelebbi határértékre.
    • OutOfRangeWithStd: átenged minden értéket, ami kívül esik a megadott eltérési tartományba, és megváltoztat minden más értéket a legközelebbi határértékre.
  • Level: a határérték meghatározása. Néhány típus csak kerekítési értékeket vár.
  • Indicator: ha bejelöljük, akkor generálunk egy új oszlopot ami azt jelzi, hogy az értékre hatnia kellene e a szűrőnek.

Példák Threshold szűrőkre: A példainput miatt a level-t azt 0-ra állítottam alapesetben, ahol tartományt kellett megadni ott -10 és 10 értéket adtam meg, majd ahol az alpha értéket kelett megadni oda 3-at írtam (a típustól függően változnak a megadható paraméterek).

LessThan
fil20

GreaterThan
fil21

MagnitudeLessThan
fil22

MagnitudeGreaterThan
fil23

InRange
fil24

OutOfRange
fil25

InRangeWithStd
fil26

OutOfRangeWithStd
fil27

User Defined Filter

Végül nézzük milyen lehetőségeink vannak saját szűrő definiálására. A lehetőségek nem túl nagyok, ebben a modulban kiválaszthatjuk, hogy FIR vagy IIR szűrőt szeretnénk, plusz mi adhatjuk meg az együtthatókat. Tehát miután eldöntöttük, hogy melyik típusra van szükségünk, meg kell adnunk a megfelelő együtthatókat. A követelmények különbözőek FIR ill. IIR esetén.

FIR választása esetén megadhatunk egy előrecsatolt együttható vektort. Ennek a vektornak a hossza fogja meghatározni a a szűrő order attribútumát.

IIR választása esetén alkalmazhatunk tetszőleges előrecsatolt és visszacsatolt együtthatókat.

Például: a UDM által frissen kreált output és a már látott FIR modul outputja
fil28fil29

 

 

Leave a Reply