Upload
ciara
View
63
Download
1
Embed Size (px)
DESCRIPTION
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 - PowerPoint PPT Presentation
Citation preview
Webes felületű orvosi
kódolástámogató rendszer
BSc önálló laboratóriumSárándi IstvánKonzulens: Héja Gergely2011 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
fibrillatio auricula
paroxysmalis
1. a felhasználó (pl. orvos) begépeli a diagnózist2. a rendszer visszaad egy tipplistát3. a felhasználó megnézi a talált kódok leírását és dönt4. (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
Módszerek
Lehetséges megközelítésekPl.: 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ásfibrillatio 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
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ó
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
+×w1
×w2
×w3
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ésKód Bizonyosság
B 0,27
C 0,26
A 0,25D 0,11
E 0,11
Kód Bizonyosság
D 0,28
A 0,25B 0,17
E 0,16
C 0,14
Kód Bizonyosság
A 0,25B 0,22
C 0,20
D 0,195
E 0,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ásaKapuzó
osztályozó
Címkéző kód
főcs.
diagnózis
szűrés
szakértő
szakértő
szakértő
MOE használataKapuzó
osztályozó
listák összevonása
szakértő
szakértő
szakértő
szakértők becsléseinek súlyozása az adott főcsoport becsült relevanciájával
×
×
×
×
diagnózis
kódlistákrelevanciá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ó)
Implementáció
Alapvető felépítés
Osztályozószerver
Webszerver Bö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ó<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE architecture SYSTEM "D:\onlab\xml\config.dtd">
<architecture> <classifier id="rootmlp"> <type>MLP</type> <param name="learnrate">0.8</param> <param name="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ó <classifier id="hier"> <type>Hierarchic</type> <param name="root"> <classifier ref="rootmlp" /> </param> <param name="child"> <classifier ref="childmlp" /> </param>
Konfiguráció <param name="childselector"> <converter> <type>Interval</type> <param name="file">ICD10.def</param> </converter> </param> </classifier>
<classifier id="main" ref="hier" /></architecture>
Csomagokdiagnosisproject
frameworkio classifiers converters
Main
parallel vector
SparseVectorParallelForT
BagOfWordsTransform
NaiveBayesClassifierOut<<Interface>>
Classifier
InOut
XMLClassifierReader
ClassificationService classifier1
classifier1
Frameworkframework
adaption validation
+train()
<<Interface>>Classifier
InOut
Classifier<<Interface>>Classifier
+train(trainingSet : SampleSet<In, Out>) : void+classify(input : In, limit : int) : ResultSet<Out>
InOut
+Sample(in : In, out : Out)Sample
InOut
+SampleSet()+SampleSet(ins : List<In>, outs : List<...+SampleSet(other : SampleSet<In, Ou...+add(input : In, output : Out) : void
SampleSet
InOut
<<Property>> -limit ...-map : TreeMap<O...+addResultBlender...
ResultSetOut
<<Property>> -output : Out<<Property>> -confidence : double+Result(output : Out, confidence : double)
ResultOut
Classifier Adapter
<<Interface>>Classifier
InOut
<<Interface>>ClassificationAbility
InOut
ClassificationAdapter
InThruInThruOutOut
TrainingAdapter
InThruInThruOutOut
ClassifierAdapter
InOut<<Interface>>
InputTransform
FromTo
<<Interface>>OutputTransform
InnerOuter
-classifier1
-trainable
1
-tr
1
-cl1
-classifier1
-trainable
1
-cl1
Validation
<<Interface>>Validator
TestInTestOut
<<Interface>>ValidationMetric
Out
ValidatorAdapter
TestInInOutTestOut
innerValidator
1
ValidationMetricAdapter
OutNewOut
innerVM1
NormalizedConfidenceMetricT
PositionAtLeastMetricOut
PositionWeightedMetricOut
<<Interface>>Classifier
InOut
SampleSet
InOut
ParallelValidator
InOut
SimpleValidator
InOut
ResultSetOut
innerValidator
1innerVM
1
Neuralnetwork
MLP
MLPClassifier
mlp 1
<<Interface>>MLPTrainer
Layer
<<Interface>>ActivationFunction
layers*
activationFunc
1
BackpropMLPTrainer
<<Interface>>LearningMonitor
AbstractMLPTrainer
DecreaseRatioLearningMonitor
DifferenceErrorMonitor
<<Interface>>ErrorCalculator
errorCalculator
1
LogsigActivationFunction
SquareErrorCalculatorValidationErrorCalculator
<<Interface>>ValidationMetric
Outmetric1
<<Interface>>Classifier
InOut
mlp 1
layers*
activationFunc
1
errorCalculator
1
metric1
Vector
Vector
SparseVectorIndicatorVector FullVector
Parallel többmagos gépen sok
minden gyorsítható tesztelés neurális háló vektortér
Köszönöm a figyelmet!