460 likes | 623 Views
Webes felületű orvosi kódolástámogató rendszer. BSc önálló laboratórium Sárándi István Konzulens: Héja Gergely 2011 tavasz. A problémáról. Célkitűzés. Orvosok segítése diagnózisok kódolásában webes felületen manuálisan sok időt igényel BNO = Betegségek Nemzetközi Osztályozása Célja
E N D
Webes felületű orvosi kódolástámogató rendszer BSc önálló laboratórium Sárándi István Konzulens: Héja Gergely 2011 tavasz
Célkitűzés • Orvosok segítése diagnózisok kódolásában webes felületen • manuálisan sok időt igényel • BNO = Betegségek Nemzetközi Osztályozása • Célja • statisztika • finanszírozás • Hierarchikus kódrendszer • 21 főcsoport (pl. daganatok) • Kb. 10 ezer kód (pl. C3840)
Felhasználási séma fibrillatio auricula paroxysmalis a felhasználó (pl. orvos) begépeli a diagnózist a rendszer visszaad egy tipplistát a felhasználó megnézi a talált kódok leírását és dönt (a felhasználó visszajelzést küld a rendszernek, hogy végül mit választott)
Minták • Rendelkezésre állnak szakértők által kódolt, tisztított minták (diagnózis–kód párok) • ~3000 darabos magyar (BNO-10) • ez alapján működne a szolgáltatás • ~95.000 darabos német (BNO-9) • a módszerek jobb kiértékelésére
Lehetséges megközelítések Pl.: Stricturaureterishydronephrosis nélkül • Szintaktikai • természetesnyelv-feldolgozás • nincs sok elemeznivaló • Szemantikus • kifejezések jelentései közötti kapcsolatok leírása • tárgyterületi ontológiák szükségesek • Tárgyfüggetlen osztályozó módszerek
Osztályozás • Módszerek • Vektortér • Bayes-modell • Neurális háló • (Szupportvektor-gép) • Keverékek • Az osztályok a BNO-kódoknak felelnek meg • több ezer osztály! • Mind vektorokat igényelnek bementként, de nekünk sztringjeink vannak!
Vektorosítás • Szóhalmaz-modell (bag-of-words) • dokumentumosztályozásban népszerű • pl. spam szűrés • erős absztrakció • sorrend • szóhasonlóságok (pl. morfológia, szinonimák)
Vektorosítás fibrillatioariculaparoxysmalis • implementációs megjegyzés • tároljuk csak az előforduló szavak indexét! auricula urosepsis paroxysmalis fibrillatio 000…010…010…010…000 sok ezer dimenzió!
Vektortér • Előnyei • nagyon egyszerű implementáció • Hátrányai • lassú • nem veszi figyelembe a szavak fontosságát • ~43% • előfeldolgozás • IDF súlyozás • ~52%
Naiv Bayes-osztályozó • Előnyei: • egyszerű implementáció • szilárd elméleti háttér • Hátránya: • naiv feltételezés • gyenge eredmény (~50%)
Neurális modell b • Elemi perceptron (neuron) • súlyozott összeg +eltolás • nemlinearitás • a súlyok tanítása • MLP: multi-layer perceptron • rétegesen ×w1 + ×w2 ×w3
Neurális modell • Tanítása ciklusokban • Súlymódosítás: „legmeredekebb lejtő” • Tesztelés • ha a hibamérték „növekedésnek indul”, leállás • fordulópont detektálása • hiba-visszaterjesztés (backpropagation)
Neurális modell • Osztályozás: • kimenet = osztály relevanciója • logisztikus függvény 0..1 a kimeneten • több ezer kimenet!
Neurális modell • Előnyei: • futáskor gyors • csak a nem zérus bemenetek esetén történik szorzás • rejtett réteg növeli a számítási komplexitást, de nem javít sokat a megoldás minőségén • jó eredmények (~52%) • Hátrányai • tanítása lassú • bonyolultabb implementáció
Kevert modellek • Különböző osztályozók eredménylistáit súlyozva egyesítjük • Elgondolás: • a hibásak eltérnek • súlyozott összegzéssel feljöhet a helyes
Eredménykeverés 0,5 0,5
Kevert modellek • súlyozás • konstans • kapuzó rendszer határozza meg • bemenetfüggő • klaszterezés • tippelt szakértelem • tippelt osztálycsoport • struktúra kell • használjuk ki a BNO kódhierarchiát! • 21 szakértő osztályozó a főcsoportokhoz
Konstans súlyú keverés • optimális súlyozást keresünk (w, 1-w) • brute-force • lépegessünk kis lépésekben w=0..1 • a tesztmintán mérjük a jóságát • definiálni kell valamilyen mértéket • végül a két osztályozót az egész tanítómintával megtanítjuk
Konstans súlyú keverés • Előnyei: • egyszerű • legjobb eredmények • Hátrányai: • több osztályozó esetén a brute-force módszer nem megfelelő • súlyoptimalizáló rendszer kell
MOE tanítása Kapuzó osztályozó főcs. diagnózis kód Címkéző szűrés szakértő szakértő szakértő
MOE használata listák összevonása × Kapuzó osztályozó max v sum × × szakértők becsléseinek súlyozása az adott főcsoport becsült relevanciájával diagnózis × szakértő szakértő szakértő kódlisták relevanciával
MOE • Előnyei: • neurális szakértők esetén gyorsabb és jobb eredmények, mint a lapos neurális modell esetén! (~55%) • egyszerű implementáció • Hátrányai: • ?
Szakértelembecslés • tanítás • tanítóhalmazzal tanítjuk a szakértőket (még nem tudjuk, hogy minek a szakértői lesznek) • kapuzó hálót tanítunk • az egyes szakértők mennyire ügyesek az adott tesztbemenetnél • használata • MOE-hoz hasonlóan
Szakértelembecslés • Előnyei: • jobb eredmény, mint külön-külön • sok szakértővel is hatékony • Hátrányai: • nem valószínű szignifikáns összefüggés • a kapuzó ilyen esetben két dolgot tanul: • általánosan mennyire nehéz a bemenet (felesleges) • általánosan mennyire jók az osztályozók (egyszerűbben is kiszámolható)
Alapvető felépítés HTTP, XHTML Webszerver Böngésző Osztályozó szerver TCP, XML Egyéb kliens-program
Osztályozó szerver • Különböző parancssori paraméterezések • train config.xml trainingdata.rep classif.dat • osztályozó felépítésének (típus, részei, paraméterek) beolvasása XML fájlból • tanítás • kapott tanított osztályozó szerializálása fájlba • serve classif.dat 5555 • a megadott porton TCP sockettel figyel • a beérkező diagnózisokat a megadott fájlból betöltött osztályozóval kódolja
Konfiguráció <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE architecture SYSTEM "D:\onlab\xml\config.dtd"> <architecture> <classifierid="rootmlp"> <type>MLP</type> <paramname="learnrate">0.8</param> <paramname="maxepochs">1000</param> <inputtransform>bagofwords</inputtransform> <outputtransform>counter</outputtransform> </classifier>
Konfiguráció <classifier id="childmlp"> <type>MLP</type> <param name="learnrate">0.3</param> <param name="maxepochs">1000</param> <inputtransform>bagofwords</inputtransform> <outputtransform>counter</outputtransform> </classifier>
Konfiguráció <classifierid="hier"> <type>Hierarchic</type> <paramname="root"> <classifierref="rootmlp" /> </param> <paramname="child"> <classifierref="childmlp" /> </param>
Konfiguráció <paramname="childselector"> <converter> <type>Interval</type> <paramname="file">ICD10.def</param> </converter> </param> </classifier> <classifierid="main" ref="hier" /> </architecture>
Parallel • többmagos gépen sok minden gyorsítható • tesztelés • neurális háló • vektortér