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 statisztika finanszírozás Hierarchikus kódrendszer 21 főcsoport (pl. daganatok) Kb. 10 ezer kód (pl. C3840)
Felhasználási séma Kódoló rendszer fibrillatio auricula paroxysmalis 1.a felhasználó (pl. orvos) begépeli a diagnózist 2.a rendszer visszaad egy tipplistát 3.a felhasználó megnézi a talált kódok leírását és dönt 4.(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 ~ darabos német (BNO-9) a módszerek jobb kiértékelésére
Módszerek
Lehetséges megközelítések Pl.: Strictura ureteris hydronephrosis 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 fibrillatio aricula paroxysmalis implementációs megjegyzés tároljuk csak az előforduló szavak indexét! 000…010…010…010…000 fibrillatio auricula paroxysmalis urosepsis 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%
Vektortér IDF súlyozással
Bayes-modell
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 Elemi perceptron (neuron) súlyozott összeg +eltolás nemlinearitás a súlyok tanítása MLP: multi-layer perceptron rétegesen + ×w 1 ×w 2 ×w 3 b
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 KódBizonyosság B0,27 C0,26 A0,25 D0,11 E KódBizonyosság D0,28 A0,25 B0,17 E0,16 C0,14 KódBizonyosság A0,25 B0,22 C0,20 D0,195 E0,135 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ó Címkéző kód főcs. diagnózis szűrés szakértő
MOE használata Kapuzó osztályozó listák összevonása szakértő szakértők becsléseinek súlyozása az adott főcsoport becsült relevanciájával × × × × diagnózis kódlisták relevanciával max v sum
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ó)
Implementáció
Alapvető felépítés Osztályozó szerver WebszerverBöngésző Egyéb kliens- program TCP, XML HTTP, XHTML
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ó MLP bagofwords counter
Konfiguráció MLP bagofwords counter
Konfiguráció Hierarchic
Konfiguráció Interval ICD10.def
Csomagok
Framework
Classifier
Classifier Adapter
Validation
Neuralnetwork
Vector
Parallel többmagos gépen sok minden gyorsítható tesztelés neurális háló vektortér
Köszönöm a figyelmet!