• Nem Talált Eredményt

Az oszt´alyoz´as felgyors´ıt´asa

In document Magyar nyelv˝ u irodalom (Pldal 125-128)

6. Oszt´ alyoz´ as 111

6.3. k-legk¨ozelebbi szomsz´ed m´odszere

6.3.3. Az oszt´alyoz´as felgyors´ıt´asa

Egy ´uj elem oszt´alyoz´as´an´al meg kell hat´aroznunk a k-legk¨ozelebbi szomsz´edot. Ez a teljes adatb´azis egyszeri, line´aris v´egigolvas´as´at jelenti. A mai sz´am´ıt´og´epes architekt´ur´aknak ked-vez ez a feladat. A tan´ıt´opontok elf´ernek a mem´ori´aban ´es a prefetch ill. pipeline technik´ak nagyban gyors´ıtj´ak a keres´est. Tal´an ez az oka, hogy teszteredm´enyek szerint a kifinomultabb, bonyolultabb m´odszerek is legfeljebb egy nagys´agrendet vernek a line´aris m´odszerre.

6.4. ´abra. Tartom´anyok meghat´aroz´asa KD-fa ´ep´ıt´es´ehet (bal oldali ´abra) ´es a KD-fa (jobb oldali ´abra)

A 70-es ´evekt˝ol egyre t¨obb ´ır´as sz¨uletett, amelynek t´em´aja a line´aris m´odszern´el gyorsabb algoritmus kidolgoz´asa. Az ´uj m´odszerek ´altal´aban az ´un. branch-and-bound technik´at alkal-mazz´ak, melynek sor´an a tan´ıt´o pontok ter´et felosztj´ak ´es csak bizonyos r´eszeket vizsg´alnak a keres´es sor´an. Az el˝ofeldolgoz´asi l´ep´esben gy´urnak valamit az adatb´azison, ´altal´aban egy speci´alis adatstrukt´ur´aba t´arolj´ak a tan´ıt´opontokat. Amennyiben a tan´ıt´as sor´an egyetlen nu-merikus attrib´utumot vesz¨unk figyelembe, akkor ha, mint el˝ofeldolgoz´as, sorba rendezz¨uk az adatokat (O(nlogn) id˝o alatt), akkor a legk¨ozelebbi szomsz´edok meghat´aroz´as´ahoz O(logn) l´ep´es el´eg. Fut´asi id˝o szempontj´ab´ol azonos asszimptotik´aval rendelkez˝o algoritmus adtak k´et magyar´az´o v´altoz´o eset´eben [13].

T¨obb magyar´az´o attrib´utum eset´en (nagyobb dimenzi´okn´al) a legismertebb m´odszer KD-f´akat haszn´al [16]. Az algoritmus az el˝ofeldolgoz´as sor´an a teret hipert´eglatestekre osztja, egyes t´eglatesteket pedig tov´abbi t´eglatestekre. A hipert´eglatestek oldalai p´arhuzamosak egym´assal

´es a tengelyekkel ´es egy t´eglatest kett´eoszt´asa mindig egy az oldalfallal p´arhuzamos s´ık ment´en val´o kett´eoszt´ast jelent. Egy t´eglatestet nem oszt tov´abb, ha a t´eglatestben tal´alhat´o pontok sz´ama adott korl´at alatt van.

A KD-fa bin´aris ´es minden csom´opontj´anak megfelel egy hipert´eglatest. A levelekhez hozz´a vannak rendelve azok a tan´ıt´opontok, amelyek a lev´el ´altal meghat´arozott t´eglatesbe es-nek. Tetsz˝oleges csom´opont gyermekeihez tartoz´o hipert´eglatest a csom´oponthoz tartoz´o hi-pert´eglatest kett´eoszt´as´ab´ol j¨ott l´etre. A 6.4 ´abr´an n´eh´any tan´ıt´opont feloszt´asa l´athat´o ´es a feloszt´ashoz tartoz´o KD-fa. Figyelem, a t´eglatestek ´altal kijel¨olt terek nem oszt´alyoz´asi tar-tom´anyoknak felelnek meg. A KD-f´at haszn´al´o algoritmus garant´alja, hogy t´enyleg a legk¨oze-lebbi szomsz´edokat fogja megtal´alni.

Oszt´alyoz´asn´al nem csak azokat a tan´ıt´opontokat veszi figyelembe, amelyek abban a t´eglatestben vannak, amelyet az oszt´alyozand´o pont kijel¨ol. Az oszt´alyoz´as menete a k¨ovet-kez˝o: A fa cs´ucs´ab´ol kiindulva jussunk el addig a lev´elig, amely t´eglatestje tartalmazza az oszt´alyozand´o pontot. Hat´arozzuk meg a legk¨ozelebbi pontot. Amennyiben a legk¨oze-lebbi pont k¨ozelebb van, mint b´armelyik oldalfal – m´ask´epp fogalmazva, az oszt´alyozand´o pontb´ol a legk¨ozelebbi pontt´ol vett t´avols´aggal rajzolt hiperg¨omb nem metsz oldalfalat –,

akkor le´allunk. Ellenkez˝o esetben meg kell vizsg´alni azt a hipert´eglatestet, amely fala k¨oze-lebb van, mint a legk¨ozek¨oze-lebbi pont. Ez a t´eglatest ugyanis tartalmazhat olyan pontot, amely k¨ozelebb van az eddig tal´alt legk¨ozelebbi ponthoz. A vizsg´aland´o t´eglatest nem biztos, hogy az oszt´alyozand´o pont ´altal kijel¨olt t´eglatest szomsz´edja a KD-f´aban. Lehet unokatestv´er, vagy so-kadrang´u unokatestv´er. Vegy¨uk ´eszre, hogy az egyszer˝u konstrukci´o k¨ovetkezt´eben (´erts oldalfa-lak p´arhuzamosak a tengelyekkel) nagyon gyorsan el tudjuk d¨onteni, hogy egy adott t´eglatestnek lehet-e olyan pontja, amely egy adott ponttol, adott t´avols´agn´al k¨ozelebb van.

A KD-fa ´ep´ıt´es´en´el k´et c´el lebeg a szem¨unk el˝ott :

I. A fa legyen kiegyens´ulyozott, abban a tekintetben, hogy minden t´eglatest ugyanannyi tan´ıt´opontot tartalmaz. Ez az´ert j´o, mert ha ki tudunk z´arni egy t´eglatestet a vizsg´alatb´ol, akkor ezzel sok pontot szeretn´enk kiz´arni

II. A hipert´eglalapok legyenek kock´ak. Ekkor ugyanis nem fordulhat el˝o, hogy az oszt´alyozand´o pont ´altal kijel¨ol t´eglatesttel nem ´erintkez˝o t´eglatest tartalmazza a legk¨oze-lebbi szomsz´edot. Az elny´ujtott t´eglatestek nem kedveznek az algoritmusnak.

Hab´ar a m´asodik elv´ar´asnak nem biztos, hogy eleget tesz a k¨ovetkez˝o egyszer˝u m´odszer, m´egis a gyakorlatban j´o eredm´enyt ad. Ki kell jel¨olni a fal tengely´et, majd meg kell hat´arozni a hely´et. A tengely kijel¨ol´es´ehez n´ezz¨uk meg mekkora a sz´or´as az egyes tengelyekre n´ezve. Legyen a fal a legnagyobb sz´or´ast eredm´enyez˝o falra mer˝oleges. A fal hely´et pedig a medi´an hat´arozza meg, ´ıgy garant´alt hogy a pontok egyik fele az egyik t´eglatestbe a m´asik fele a m´asik t´eglatestbe fog ker¨ulni.

A KD-f´an´al vannak ´ujabb adatstrukt´ur´ak, ezek k¨oz¨ul a legismertebbek a Metric tree (Ball tree)[126, 175] ´es a Cover Tree [19]. A [94] cikkben a szerz˝ok azonban azt ´all´ıtj´ak, hogy ezek az ´uj m´odszerek nem mutatnak sz´amottev˝o javul´ast a KD-f´ahoz k´epest. ´All´ıt´asaikat a szerz˝ok sz´amos teszt eredm´eny´ere alapozz´ak, melyhez felhaszn´altak val´odi ´es gener´alt adatb´azisokat is.

Weka 3.5.7 A k-legk¨ozelebbi szomsz´ed futtat´as´ahoz k >1eset´en haszn´aljuk a weka.classifiers.lazy.IBk oszt´alyt. A KNN param´eter felel meg a k ´ert´eknek, amelyet nem kell felt´etlen¨ul megadnunk. A weka a leave-one-out m´odszerrel (l´asd a 152 oldal) megpr´ob´alja a megfelel˝o k

´ert´eket meghat´arozni, amennyiben a crossValidate´ert´eke igaz.

Haszn´alhatjuk a s´ulyozott legk¨ozelebbi szomsz´ed m´odszert is (l´asd a 117). Ekkor v´alasztanunk kell a distanceWeighting param´eterrel, hogy a s´uly a t´avols´ag reciproka, vagy 1-t˝ol vett k¨ul¨onbs´ege adja.

A nearestNeighbourSearchAlgorithm kiv´alaszt´oval megad-hatjuk, hogy a legk¨ozelebbi szomsz´edok meghat´aroz´as´ahoz milyen m´odszert/adatstrukt´ur´at haszn´aljon a weka. Az alap´ertelmezett az egyszer˝u line´aris keres´es, de v´alaszthatunk KD-fa, Ball tree ´es Cover tree alap´u megold´asok k¨oz¨ul.

6.5. ´abra. P´elda line´arisan szepar´alhat´o oszt´alyokra

In document Magyar nyelv˝ u irodalom (Pldal 125-128)