ROBUST 2004 c JČMF 2004 KLASIFIKAČNÍ A REGRESNÍ LESY Jan Klaschka, Emil Kotrč Klíčová slova: Klasifikační stromy, klasifikační lesy, bagging, boosting, arcing, Random Forests. Abstrakt: Klasifikační les je klasifikační model vytvořený kombinací určitého počtu klasifikačních stromů. Každý strom přiřazuje hodnotě vektoru prediktorů nějakou třídu a výsledná klasifikační funkce je dána hlasováním. Obdobně regresní les sestává z několika regresních stromů a výsledná regresní funkce je obvykle definována jako vážený průměr regresních funkcí jednotlivých stromů. V práci jsou stručně vysvětleny některé metody vytváření lesů, jmenovitě tzv. bagging, boosting, arcing a Random Forests. 1 Úvod Klasifikační a regresní stromy se pěstují od 60. let. Silným metodologickým impulsem byla v 80. letech kniha[3], popisující tehdy novou metodu CART (Classification And Regression Trees). Věrozvěstem metody CART a stromů obecněnarobustusevr.1988staljaromírantochpříspěvkem[1]. Mezitím, co od druhé poloviny 90. let přibývaly na ROBUSTu další práce ostromech[8],[11],[12],odstartovalavesvětě nejvícealeasivpracovněleo Breimana,jednohoz otců CARTu nováetaparozvojemetodanalýzydat založenýchnastromech.zdáse,žejenačaseprobratjitakénarobustu. Tématem tohoto článku jsou klasifikační a regresní lesy. Klasifikační les je klasifikační model, jehož klasifikační funkce je dána kombinací(podle vhodně zvoleného pravidla) klasifikačních funkcí určitého počtu(typicky několika desítek) klasifikačních stromů. Obdobně lze charakterizovat regresní les stačí vpředcházejícívětěvšudenahraditslovo klasifikační slovem regresní. Dlužno poznamenat, že článek nebude v rámci české literatury takovým pionýrským počinem jako již citovaná práce[1]: Přinejmenším se o některých technikách konstrukce lesů zmiňuje(byť v obecnější poloze) Berka v knize[2]. 2 Klasifikační a regresní stromy Les, jak každé malé dítě ví, se skládá ze stromů. Zopakujme některá základní fakta o stromech(podrobněji viz[3],[1]): Klasifikační strom představuje model pro data, kde každé pozorování patřídoněkteréztříd C 1,..., C k, k 2.Současnějepozorovánícharakterizovánovektoremx = (x 1,..., x m )hodnotvysvětlujícíchproměnných(prediktorů) X 1,..., X m.vjednéatéžeúlozesemohouvyskytovat prediktory kvantitativní i kvalitativní. Model lze popsat stromovým grafem sestávajícím z uzlů a orientovaných hran(orientace se nevyznačuje, hrana vede shora dolů).
178 Jan Klaschka, Emil Kotrč Vkaždémneterminálnímuzlusestromvětví zuzluvedouhranydo dvou nebo(v některých metodách) více dceřinných uzlů. Větvení je založeno na hodnotě jediného prediktoru. Nejběžnější je binární větvení podleodpovědinaotázkutvaru x i < c? prokvantitativníprediktory X i a x i B? (kde Bjeneprázdnávlastnípodmnožinamnožiny všechhodnotveličiny X i )proprediktory X i kvalitativní.jednahrana je pak přiřazena kladné a druhá záporné odpovědi.(některé metody umožňují i větvení založená na lineární kombinaci kvantitativních prediktorů.) Pozorovánípodlehodnotprediktorů postupuje odkořenovéhouzlu přes větvení v neterminálních uzlech k některému terminálnímu uzlu (listu). Množina všech listů určuje disjunktní rozklad prostoru hodnot prediktorů X. Terminálnímu uzlu a zároveň pozorováním, která do něj patří,jepřiřazenaněkteráztříd C 1,..., C k.strom Ttakurčujeklasifikačnífunkci d T definovanouna Xshodnotamivmnožině {C 1,...,C k }. Regresní strom se od klasifikačního stromu liší tím, že každému terminálnímu uzlu je přiřazena reálná konstanta odhad kvantitativní závisle proměnné Y.Regresnístrom T definujereálnouregresnífunkci d T,která je uvnitř množin odpovídajících terminálním uzlům konstantní. K vytváření(pěstování) stromů prakticky všechny běžné metody využívají tzv. rekurzivní dělení(recursive partitioning). Konstrukce začíná stromem o jediném uzlu, do kterého patří všechna trénovací data(kořen je zároveň listem). Probere se množina všech možných větvení a pro každé z nich se vypočte kriteriální statistika(splitting criterion), která budiž řečeno bez podrobností hodnotí, nakolik jsou potenciální dceřinné uzly co do hodnot závisle proměnné vnitřně homogenní a navzájem odlišné. Větvení s maximální hodnotoukritériasevyberejakonejlepšíapoužijesevmodelu,kněmužtak přibude dvojice(popř. v některých metodách větší počet) uzlů, jež jsou prozatím terminální. Data, která patří do kořenového uzlu, se rozdělí podle hodnot prediktorů mezi nové dceřinné uzly. Pro každý z těchto provizorních listů se procedura opakuje, jako by se jednalo o kořen hledá se nejlepší větvení, atd. Při konstrukci klasifikačního stromu je žádoucí dosáhnout co nejmenší skutečné(generalizační)klasifikačníchyby R P (T)=P ( d T (X) Y ),kde P jesdruženérozdělenívektoruprediktorůxazávisleproměnné Y shodnotamiv{c 1,..., C k }.Vregresníchúloháchobdobnourolinejčastějihraje (skutečná)středníkvadratickáchyba R P (T)=E P ( Y dt (X) ) 2.Srostoucí velikostí stromu sice stále klesá(nebo alespoň neroste) chyba na trénovacích datech, ale skutečná chyba v mnoha typických situacích klesá jen do určité velikosti, pak s dalším zvětšováním stromu opět roste. Podlepřístupukproblémustanovení správnévelikosti semetodypěstování stromů dělí do dvou skupin. Metody z prvé skupiny přidávají nová větvení, jen dokud to přináší dostatečně velký okamžitý efekt. Když se takové větvení nenajde, proces končí a strom je hotov. Metody druhého typu(např. CART[3])nejdřívevypěstujítzv.velkýstrom T max,kterýsenásledněproře-
Klasifikační a regresní lesy 179 zává některéuzlyseopětodstraňují.přikostrukci T max seuzelstaneterminálním, až když obsahuje méně pozorování než zvolená mez nebo všechna pozorování v uzlu patří do téže třídy, popř. mají stejné hodnoty všech prediktorů.otom,jakvelkáčáststromu T max semáodstranit,rozhodujíempirické odhady skutečné chyby. Ty se získávají různými způsoby, například pomocí testovacích(validačních) dat, která byla k tomu účelu při konstrukci stromu ponechánastranou,nebosložitějším trikem,křížovouvalidací (cross-validation), při níž se v opakovaných analýzách všechna pozorování střídají v rolích prvků trénovací a testovací množiny.(detaily viz[3],[1]). Mezi metodami pěstování stromů požívají asi největší prestiže Breimanův, Friedmanův, Olshenův a Stoneův CART(Classification And Regression Trees)([3]) a Quinlanova metoda C4.5([9]). Jediná současná implementace CARTu posvěcená autorymetodyješířenakomerčněfirmousalfordsystems 1 (SanDiego,CA,USA).VolnéprogramytreearpartvrámciprojektuR 2 však představují také dosti věrné implementace metodologie CART. ProgramC4.5jekdispozicibezplatně 3.VylepšenouverzipodnázvyC5.0(Unix) asee5(windows)komerčněšíříquinlanovafirmarulequestresearch 4. Informace o řadě dalších programů konstruujících stromy lze nalézt např. nawebovýchstránkáchyu-shanshihaztchai-wanu 5 (spoluautorametod QUESTaCRUISE). Výhodou klasifikačních a regresních stromů je, že pružně postihují vztahy mezi různými typy veličin, nelineární závislosti, interakce proměnných a závislosti, které mají rozdílnou podobu v různých částech prostoru X. Ve srovnání s klasickými parametrickými metodami dosahují často srovnatelné přesnosti, ale poskytují přitom daleko přehlednější a názornější modely. Nevýhodou stromů je, že jsou obvykle značně nestabilní: Zhusta pro jedna a tatáž data existuje mnoho různých stromů s přibližně stejnou chybou a při malé změně dat nebo vstupních parametrů se může výsledný strom(a příslušná klasifikační nebo regresní funkce) výrazně změnit. 3 Lesy Myšlenka klasifikačních a regresních lesů je vcelku prostá: Co místo jednoho stromu Tvypěstovat Lstromů T 1,..., T L avytvořitznich komisi,kteráse bude o zařazení pozorování do tříd,(popř., půjde-li o regresní úlohu, o predikovanéhodnotězávisleproměnné) usnášet 6?Jinýmislovy, agregovaná 1 http://www.salford-systems.com 2 http://cran.r-project.org 3 http://www.rulequest.com/personal 4 http://www.rulequest.com 5 Užšívýběrhttp://www.math.ccu.edu.tw/~yshih/trees.html,širší,alenezcelaaktuální přehled http://www.math.ccu.edu.tw/~yshih/tree.html. 6 Jižjednoujsmeseodvolávalinaznalostimalýchdětí,aitotosidneskdekterédítě dokáže představit, pokud vidělo ve filmu Dvě věže, druhém dílu trilogie Pán prstenů, jak sněm Entů(chodících stromů) rozhoduje o tom, zda jít do války, tj. jak řeší klasifikační úlohu,zdavstupníinformace,kteréjsoukdispozici,patřídotřídy válka,nebo mír.
180 Jan Klaschka, Emil Kotrč klasifikační(popř.regresní)funkce d A (x)vzniknevhodnýmzkombinováním klasifikačních(popř.regresních)funkcí d 1 (x),..., d L (x)jednotlivýchstromů. Přirozeným a jednoduchým způsobem kombinace je u regrese aritmetický průměr a u klasifikace většinové hlasování, tj. d A (x)=c i,pokud#{j; d j (x)=c i }= max i=1,...,k #{j; d j(x)=c i }, kde symbol# značí počet prvků.(nejednoznačnost vyplývající ze shody počtu hlasů se řeší např. znáhodněním.) Kombinování klasifikačních funkcí(v regresi to je analogické, rozdíly si lze domyslet) může být také o něco složitější. Při hlasování může váha hlasu každé z L klasifikačních funkcí záviset na chybě stromu na trénovacích datech (pochopitelně přesnější strom má vyšší váhu). Váha hlasu jednotlivého stromu případně nemusí být stejná pro všechny hodnoty vektoru prediktorů x může závisetnapř.takénatom,jakjelistpříslušnéhostromu,dokteréhoxpatří, velký(kolikpozorováníztrénovacíhosouborudonějpatří)a čistý (jak výrazná je převaha nejfrekventovanější třídy). Složitější vážení hlasů je dílem už standardní součástí některých metod konstrukce lesů, ale dílem také ještě předmětem výzkumu(viz např.[15],[13]). 3.1 Čtverozpůsobů,jaknato Dobrá, vypěstovat více stromů, ale kde je vzít? Použijeme-li na jedna a tatáž data opakovaně např. program CART se stejnými vstupními parametry, dostaneme pokaždé tentýž strom. Kombinováním totožných stromů pak nic nového nezískáme. Rozdělit data na L disjunktních částí a každou použít ke konstrukci jednoho stromu se také nezdá být dobrý nápad. Problém přesto má řešení, resp. více řešení. Podívejme se na některá z nich. 3.1.1 Bagging jeakronym,zkratka bootstrapaggregating.základní citace je Breimanův článek[4]. Ztrénovacíhodatovéhosouboru L={(x 1, y 1 ),...,(x n, y n )}sevytvoří náhodnýmvýběremsvracením Lsouborů L 1,..., L L velikosti n(bootstrapových výběrů), každý z nich se použije k sestrojení jednoho klasifikačního (popř. regresního) stromu a výsledný klasifikační(nebo regresní) les je pak dán většinovým hlasováním se stejnými vahami(resp. aritmetickým průměrem dílčích regresních funkcí). Do bootstrapového výběru jsou některá pozorování z L vybrána opakovaně a některá naopak vůbec. Počet opakování má pro jednotlivé pozorování z Lasymptoticky(pro n )Poissonovorozdělenísestředníhodnotou1. Pravděpodobnost, že pozorování nebude vůbec vybráno, je tedy přibližně e 1 0.37.Bootstrapovývýběrjetudížtvořenasi63%pozorovánízL, 37% zůstává mimo. Breimanv[4]uvádíulesůvelikosti L=50(tvořenýchstromyvypěstovanými metodou CART) v několika reálných i umělých klasifikačních úlohách snížení generalizační chyby oproti jednomu stromu o 20-47% a velmi podobná čísla 22-46% udávátaképroúlohyregresní.
Klasifikační a regresní lesy 181 3.1.2 Boosting a arcing. Boosting(to boost zesilovat) je původně pojemzteoriestrojovéhoučení([14],[5])avanalýzedatsetakobvykleoznačuje algoritmus AdaBoost(adaptive boosting), navržený v článku[7]. Mějme klasifikační metodu(nemusí se jednat jen o stromy), která vytváří klasifikačnímodel T nazákladětrénovacíchdat(x 1, y 1 ),...,(x n, y n )avektoruw=(w 1,...,w n )vahpřiřazenýchjednotlivýmpozorováním.algoritmus AdaBoostkonstruujeposloupnostrozdílnýchmodelů T 1,..., T L sklasifikačnímifunkcemi d 1 (x),..., d L (x)tak,žesepodlepředcházejícíchvýsledkůpostupněupravujíváhypřípadů.vprvnímkrokusepoužijeváhovývektorw 1 zadanýuživatelem(např.rovnoměrnéváhy)avytvořísemodel T 1.Vdalších krocíchsepakvždykekonstrukcimodelu T i (i=2,..., L)použijeváhový vektorw i získanýtakovouúpravouvektoruw i 1, žeseváhypozorování chybněklasifikovanýchmodelem T i 1 zvýšíasprávněklasifikovanýchsníží. Klasifikačnímetodatakstálevíce soustředípozornost na obtížná pozorování, která vzdorují zařazení do správné třídy. Váha modelu při hlasování závisí na chybě modelu na trénovacích datech.(konkrétněji viz[7],[5],[2].) Algoritmus nazvaný v článku[7] AdaBoost je vlastně určen jen pro klasifikační úlohu se dvěma třídami, ale v článku jsou popsány také modifikace AdaBoost.M1 a AdaBoost.M2 pro úlohy s více třídami a AdaBoost.R pro regresní úlohy s hodnotami závisle proměnné v intervalu[0, 1]. Arcing je další Breimanův akronym(adaptive resampling and combining). Základní prací je článek[5]. Arcing představuje spojení myšlenky baggingu a boostingu. Váhy případů se postupně upravují stejným způsobem jako v AdaBoostu, ale používají se jinak: Místo toho, aby s těmito vahami vstupovala všechna pozorování do analýzy, jsou jako v baggingu vytvářeny výběry s vracením, přičemž váhy(náležitě normované) slouží jako pravděpodobnosti vytažení. Ukazuje se(viz např.[10],[5]), že boosting i arcing u klasifikačních stromů většinou snižují generalizační chybu ještě více než bagging. V některých případech však mohou výsledky být naopak katastrofální zejména tehdy, kdyždatajsou zašuměná aučástitrénovacíchdatjehodnotazávisleproměnné y i jiná,než bysprávněmělabýt.boostingneboarcingpakvede ktomu,žeseučímeopakovatchybyvdatech. 3.1.3 Metoda RandomForests jeopět dítkem LeoBreimana,jehož článek[6]představujezákladnícitaci.jezaloženananěkolika tricích : Trénovací soubory pro jednotlivé stromy jsou(jako v baggingu) bootstrapové výběry z datového souboru L. Přivolběvětveníprodanýuzelsezmprediktorů X 1,...,X m,které jsoukdispozici,nejdřívenáhodněvybereněkterých m 0,načežsenejlepší větvení hledá již klasicky, ale jen mezi těmi větveními, která jsou založenanavybraných m 0 veličinách. Pěstují se velké stromy(viz sekci 2), které se neprořezávají.
182 Jan Klaschka, Emil Kotrč Nejen že náhodný výběr prediktorů výrazně urychluje výpočty, ale experimenty v[6] také dávají zejména v klasifikačních úlohách velmi dobré výsledky mj. srovnání s metodou AdaBoost vyznívá pro Random Forests příznivě.(vregresijeefektméněvýraznýazdáse,žejsouoněcovýhodnější některé modifikace uvedeného postupu.) Zvláště přínosná se metoda ukazuje u problémů, kde existuje velký počet prediktorů, z nichž každý sám o sobě obsahuje jen málo informace o závisle proměnné. Jakvolitparametr m 0?Nejvhodnějšíhodnotazávisínaúlozeauživatel můžeexperimentovat.jednoduchérozumnédoporučeníjepoužít m 0 blízké log 2 m. Uněkterýchproblémůsejakodobré,nebodokoncenejlepšíukazuje m 0 =1. Toznamená,žeseprediktor,kterýsemávuzlupoužítprovětvení,vybírá zcela náhodně! Jinými slovy, na tom, jaké větvení se vybere, v podstatě nezáleží, hlavně že se prostor hodnot prediktorů vůbec nějak rozparceluje hlasování(nebo v případě regrese průměrování) to dá do pořádku. To je mimochodem zcela protichůdné optimalizaci stromů, o níž byly v minulých letech na ROBUSTu dva příspěvky([11],[12]) připomeňme, že větvení se optimalizuje za cenu drastických výpočetních nákladů a s výsledky(co do generalizační chyby) mnohdy ne právě uspokojivými. Vidíme zde jeden podstatný rozdíl mezi baggingem, boostingem a arcingem na jedné straně a metodou Random Forests na straně druhé. Bagging, boosting a arcing jsou nadstavbou nad klasickými metodami(jako CART nebo C4.5) zaměřenými na pěstování co nejpřesnějších stromů. U metody Random Forests na kvalitě jednotlivých stromů tolik nezáleží; cílem není minimalizovat chybu stromů, ale jen celého lesa. 3.2 Proč to funguje Zatím jsme se omezili na popisný přístup říkáme, jak která metoda postupuje, ale ne proč. Stejně tak informujeme, jaké jsou empirické výsledky, ale nevysvětlujeme,jakjemožné,žetotakje.můžesetakzdát,ženovézpůsoby konstrukce lesů se navrhují podle vzoru Myslím, myslím, nevím dál, co bych ještěudělal. Ve skutečnosti se při studiu vlastností lesů neuplatňují jen numerické experimenty, ale také teoretické úvahy, byť částečně heuristického charakteru. Čtenáře v tomto ohledu odkazujeme na dříve citovanou literaturu, ale alespoň něco málo naznačíme. Z metod uvedených v paragrafu 3.1 se jen Random Forests týká specificky stromů a lesů. Bagging, boosting a arcing lze aplikovat nejen na stromy, ale na vcelku libovolnou klasifikační či regresní metodu.(všimněme si, že v názvech článků[4] a[5] se mluví obecně o prediktorech a klasifikátorech, nikoli o stromech.) Platí, vágně řečeno, že agregovaný klasifikační model, jehož klasifikační funkce d A jedánakombinacídílčíchklasifikačníchfunkcí d 1,...,d L pomocí hlasování, je tím přesnější(tj. má tím menší skutečnou chybu), čím přes-
Klasifikační a regresní lesy 183 nějšíjsoudílčíklasifikátoryačímjsousifunkce d 1,...,d L vzájemněméně podobné. U regrese s agregací průměrováním je to obdobné. Alchymie přidávánínáhodydokonstrukcemodelusledujecílnajítco nejlepšíkompromis:comožnázvýšitvzájemnounepodobnostfunkcí d i,ale tak, aby přesnost dílčích modelů neutrpěla přespříliš. Skrze lesy se ve výhodu obrací nevýhoda stromů jejich nestabilita, tj. fakt,žemalázměnadatzpravidlavedekvelkézměněstromu Tajehoklasifikační(neboregresní)funkce d T.Kdalšímnestabilnímmetodámpatřítřeba neuronové sítě nebo kroková lineární regrese. Příklady stabilních metod jsou lineární diskriminační analýza nebo metoda k nejbližších sousedů. Nestabilní metody lze pomocí baggingu a obdobných technik výrazně zpřesnit, zatímco u stabilních metod je efekt minimální, popřípadě dokonce záporný. 3.3 Software Repertoár softwaru pro pěstování lesů je zatím skromnější než nabídka programů pro konstrukci stromů. Uveďme několik současných možností. Komerční verze programu CART zahrnuje bagging a arcing. Quinlanovy programy C5.0 a See5(viz sekci 2) obsahují boosting. SoftwarovýsystémWeka 7 zaměřenýnastrojovéučení,vyvinutýnauniversity of Waikato na Novém Zélandu, obsahuje pod názvem j48 implementaci metody C4.5, a dále procedury Bagging a AdaBoostM1, které sedajívkombinacisj48použítkpěstovánílesů.wekajefreeware. BreimanůvvlastnísoftwareRandomForestsjevolněkdispozici 8 azároveň existuje komerční verze šířená firmou Salford Systems. Implementace randomforest v projektu R je freeware. Pokud nějaký program pro konstrukci stromů umožňuje snadné zadávání vstupníchúdajůadávávýstupyvevhodnémtvaru, dotvořit jejnasoftware pro pěstování lesů je programátorsky nenáročné. Do původního programu není třeba zasahovat, takže nevadí, není-li dostupný ve zdrojovém tvaru. 4 Závěr Klasifikační a regresní lesy představují významné zdokonalení metodologií založených na stromech. Za cenu únosného zvýšení výpočetní náročnosti se dosahuje výrazného zpřesnění modelů. Patrně jedinou nevýhodou lesů oproti stromům je to, že se ztrácí pro stromy tak charakteristická přehlednost. Na les tvořený desítkami nebo stovkami stromů nejsme schopni, stejně jako je tomu např. u neuronových sítí, se dívatjinaknežjakona černouskříňku.jinýmislovy,dolesanenívidět. 7 http://www.cs.waikato.ac.nz/~ml/index.html 8 http://www.stat.berkeley.edu/users/breiman/randomforests
184 Jan Klaschka, Emil Kotrč Reference [1] Antoch J. (1988). Klasifikace a regresní stromy. In: ROBUST 1988. Sborníkprací5.letníškolyJČSMF,J.Antoch,T.Havránek&J.Jurečková(eds.),Praha,JČSMF,0 6. [2] Berka P.(2003). Dobývání znalostí z databází. Praha: Academia. [3] Breiman L., Friedman J.H., Olshen R.A., Stone C.J.(1984). Classification and regression trees. Belmont CA: Wadsworth. [4] Breiman L.(1996). Bagging predictors. Machine Learning 24, 123 140. [5] Breiman L.(1998). Arcing classifiers. Annals of Statistics 26, 801 849. [6] Breiman L.(2001). Random forests. Machine Learning 45, 5 32. [7] Freund Y., Schapire R.E.(1997). A decision-theoretic generalization of on-line learning and an application to boosting. Journal of Computer andsystemsciences55,119 139. [8] Klaschka J., Antoch J. (1997). Jak rychle pěstovat stromy. In: RO- BUST 1996.Sborníkprací9.letníškolyJČMF,J.Antoch&G.Dohnal(eds.),Praha,JČMF,91 106. [9] Quinlan J.R.(1992). C4.5: Programs for machine learning. New York: Morgan Kaufmann. [10] Quinlan J.R.(1996). Bagging, boosting, and C4.5. In: Proceedings of the Thirteenth National Conference on Artificial Intelligence, 725 730. [11] Savický P., Klaschka J., Antoch J.(2000). Optimální klasifikační stromy. In: ROBUST 2000. Sborník prací 11. letní školy JČMF, J. Antoch& G.Dohnal(eds.),Praha,JČMF,267 283. [12] Savický P., Klaschka J.(2002). Lesk a bída optimálních stromů. In: RO- BUST 2002. Sborník prací 12. zimní školy JČMF, J. Antoch, G. Dohnal &J.Klaschka(eds.),Praha,JČMF,256 267. [13] Savický P., Kotrč E.(2004). Experimental study of leaf confidences for random forest. In: COMPSTAT 2004. Proceedings in Computational Statistics, J. Antoch(ed.), Heidelberg, Physica Verlag, 1767 1774. [14] Schapire R.E.(1990). The strength of weak learnability. Machine Learning5,197 227. [15] Schapire R.E., Singer Y. (1999). Improved boosting algorithms using confidence-rated predictions. Machine Learning 37, 297 336. Poděkování:PrácebylapodporovánagrantyME701MŠMTČRaGAČR 201/02/1456. Adresa: J. Klaschka, E. Kotrč, Ústav informatiky AV ČR, Pod Vodárenskou věží2,18207praha8 E-mail: {klaschka,kotrc}@cs.cas.cz