Kalman-szűrő, The Complete Idiot útmutató a programozás, algoritmusok, és nem csak
Kalman-szűrő, The Complete Idiot kalauza
Szóval, mi van a Kalman-szűrő. Tegyük fel, hogy van egy bizonyos értéket X változik az idővel. Van egy eszköz, amely méri az összeg X némi hiba. Azt akarod, hogy értékelje, milyen valójában megegyezik az X értéke például abban az esetben, részvények Xk lehet igaz a részvények árát idején k (ez határozza meg a társaság bevételét, árfolyam, elvárások a befektetők és így tovább). Nekünk csak egy módon mérni ezt az értéket - megy a csere, és látni a jegyzések. De az idézet a tőzsdén vannak számos tényező befolyásolja, az árak nagyon eltérőek, és a mért érték Yk eltérhet Xx. Kálmán algoritmus lehetővé teszi számunkra, hogy értékelje a valódi értékét Xk alapján a változások történetében a mért érték Yk. Ez, persze, teszi számos feltételezés közötti kapcsolat Y és X és a változás természetét, X.
A javaslat az 1. számú
Ie időpontban X k érték egy lineáris kombinációja értékei X az utolsó időben, ellenőrző jel U és W zajszint gyakran vezérlőká- U hiányzik a valós alkalmazásokban.
Mi a vezérlő jel? Térjünk vissza a mi példánkban a részvények. Tegyük fel, hogy az amerikai Federal Reserve aktívan pénzt nyomtat, mint a $ 600 milliárd, a pénz önteni a piacra egy széles folyó, és elkerülhetetlenül mozog részvényárfolyamok fel. Ez a vezérlő jel.
De térjünk vissza a képlet, meg kell, hogy egy másik fontos leírás. Zaj w kell egy normális eloszlás varianciája dW. A gyakorlatban gyakran úgy, ahogy van kéznél, játszunk egy központi határeloszlás tétel. mert a zaj általában egy nagy gyűjtemény a sok ismeretlen.
A javaslat 2. számú
Ie A mért érték az Y egy lineáris kombinációja a tényleges értéke X és a mérési hiba V. Ebben az esetben, a kiegészítő feltevés, hogy a mérési hiba is van egy normális eloszlású a variancia dV. Nagyon gyakran, a gyakorlatban, h = 1.
Amit az imént tett? Építettünk egy modell, amely leírja a rendszer ezt az üzenetet, amíg nem Kalman-szűrő nem említik.
Mit akarunk csinálni?
Azt akarjuk, hogy valamilyen egyenlet
amely lehetővé teszi számunkra, hogy értékelje a valódi értékét X kapcsolatos múltbeli becslések és a mért értékeket. Gáncsoskodó olvasó észre fogja venni, hogy itt én következetesen X, valójában mire használja az X jelöli a valódi érték, és most, hogy értékelje az igazi érték. Ez azért fontos, mert a tényleges valódi érték, sosem tudhatjuk. Megpróbálok nem terhelik feleslegesen a képlet az új szervezetek.
Ezután általában menni több matematikai számítások, melyek között egy részleges extrapoláció Javítás. Hagyja minden érdekelt könnyen talál egy csomó anyagot a Google. A végén, kapunk egy expressziós becslésére X:
Amennyiben Kk - a Kalman gain. Ez az érték működés közben, és meghatározza a Kalman-szűrő algoritmus. Ahol a Kalman-szűrő egy optimális erősítés értéke előre meghatározott dW diszperziók és dV. Minél jobban értékelik ezeket a diszperziók, annál jobb a teljesítmény a Kalman-szűrő.
Most képzeljük el, hogy X és Y nem egy egydimenziós érték és a vektor. A, B és H - mátrix. Hiba és a zaj V és W is vektorok. Kiderült, hogy ebben az esetben az összes egyenletet fog ugyanúgy működnek, és Kalman-szűrő algoritmus könnyen általánosítható többdimenziós érték.
És most, a hagyomány, egy példa a K
Kalman-szűrő megtalálható több modulból R például fogom használni egy megvalósítása dlm modult. Ebben a példában, használjuk a Kalman-szűrő, hogy az értékek a S-P500 index.
Tegyük fel, hogy a vezérlő jel nem áll fenn, akkor természetesen, sőt, nem igaz, de a vezérlőjel értékelés külön feladat. Ezen túlmenően az egyes feladatok paraméterbecslést szórásnégyzetekre dV és dW. A példánkban én csak most vette egyes értékek tapasztalati úton. Ha megközelíteni ezt a feladatot alaposan, akkor lehet jól becsülhető a volatilitás a piacon.
Összehasonlításképpen, a grafikonon, zöld, adunk 10 napos exponenciális mozgóátlag, hogy a kép:
Sok köszönet az olvasó a neve Kirill a minta kódot találtak hibát.
Serge San Francisco, Kalifornia, Egyesült Államok Szia, én vagyok a vezető szoftvermérnök egy nagy webes cég. Főként az érdekli adatbányászati és gépi tanulás. Saját „bennszülött” programozási nyelv a Java, de úgy vélem, Haskell és FP általában jobb. Van tisztességes tapasztalat C # és .NET stack is. Szabadidőmben Örülök, hogy versenyezni okos emberek TopCoder és Kaggle. Saját TC profil van. Kaggle profil ide Ha akar beszélni, csak küld egy üzenetet: e d u n o v @ g m i b. c o m Teljes profil megtekintése