webes felületű orvosi kódolástámogató rendszer

Post on 15-Mar-2016

61 Views

Category:

Documents

1 Downloads

Preview:

Click to see full reader

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

TRANSCRIPT

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!

top related