České vysoké učení technické v Praze Fakulta informačních technologií Katedra teoretické informatiky Evropský sociální fond Praha & EU: Investujeme do vaší budoucnosti MI-ADM Algoritmy data miningu (2010/2011) Přednáška 2: Model, hodnocení modelu, metoda K nejbližších sousedů Pavel Kordík, FIT, Czech Technical University in Prague 1
CRISP-DM: Phases and tasks MI-KDD MI-PDD MI-ROZ, MI-MVI MI-KDD Business Understanding Data Understanding Data Preparation Modeling Evaluation Deployment Determine Business Objectives Collect Initial Data Select Data Select Modeling Technique Evaluate Results Plan Deployment Assess Situation Describe Data Clean Data Generate Test Design Review Process Plan Monitering & Maintenance Determine Data Mining Goals Explore Data Construct Data Build Model Determine Next Steps Produce Final Report Produce Project Plan Verify Data Quality Integrate Data Assess Model Review Project Format Data MI-ADM Kordik, Holena CTU Prague, FIT, MI-ADM 2
MI-ADM Nahrazuje bakalářský předmět BI-VZD Větší důraz na porozumění data miningu jak z algoritmického, tak teoretického pohledu Částečný překryv s MI-ROZ, ale podáno z jiné perspektivy Je přípravou na předmět MI-MVI MI-MVI Metody výpočetní inteligence 3
Metody výpočetní inteligence Computational Intelligence Methods Artificial Neural Networks Fuzzy Logic Evolutionary Computing Machine Learning HYBRID METHODS 1. Adaptive Resonance Theory 2. Back Propagation Learning 3. Hopfield s Associative Memory 4. Kohonen s Self Organizing Maps 5. Pulsed Neural Networks 6. Radial Basis Functions 7. Real Time Recurrent Learning 1. Divide and Conquer Methods Decision trees, production rules 2. Instance Based Learning Nearest neighbor, case based reasoning 3. Reinforcement Learning 4. Statistical Methods Bayesian, Monte Carlo etc 5. Support Vector Machines SVM, kernel methods, PCA, ICA
Dnešní přednáška Model Metoda K- nejbližších sousedů Plasticita modelu Hodnocení modelu Regularizace 5
Modely v data miningu Rozdělení modelů dle funkce Popisné (descriptive) Klasifikace Predikční (predictive) Regrese, predikce budoucí hodnoty Shlukování a segmentace Souhrny Analýza vztahů a závislostí Analýza časových řad
Přehled metod generujících modely Klasifikace Funkce Regrese a predikce budoucí hodnoty Analýza časových řad Analýza vztahů a závislostí Popis dat, souhrny Shlukování a segmentace Metody Linear separation, Rule induction methods, Decision trees, Neural networks, SVM, nearest neighbours, Case based reasoning Linear, polynomial, logistic regression, Regression trees, Neural networks, nearest neighbours Autoregression, Moving averages, Regression trees, neural networks, SVM Association rules, Correlation analysis, Regression analysis, Bayesian networks, Inductive logic programming Statistical techniques, OLAP K-nearest neighbour, Agglomerative clustering, Neural networks, Visualization methods
Klasifikace a regrese Klasifikační i regresní model: y = f(x) Klasifikace: y je nominální (název třídy) Regrese: y je spojitá veličina (teplota, výška) mpg disp weight Klasifikační model origin (America, Europe, Japan) cyl disp weight Regresní model mpg 300-800
Vytvoření a použití modelu mpg disp weight Klasifikační model origin (America, Europe, Japan) 2 fáze Fáze učení, trénování Model je vygenerován, upravuje se vnitřní struktura, parametry Fáze použití, vybavování Model je použit, vypočítá se výstup, model to neovlivní 9
1NN nejbližší soused Trénování generování modelu Ulož trénovací data Klasifikace použití modelu Najdi nejbližšího souseda a klasifikuj stejnou třídou? http://www.theparticle.com/applets/ml/nearest_neighbor/
Metrika, Euklidovská vzdálenost Je třeba nějak určit podobnost vzorů jejich vzdálenost Vzdálenost musí splňovat určité podmínky: 1. d(x,y) > 0. 2. d(x,y) = 0 iff x = y. 3. d(x,y) = d(y,x). 4. d(x,y) < d(x,z) + d(z,y) (trojúhelníková nerovnost ). Dva body v n-rozměrném prostoru: Euklidovská vzdálenost P a Q = Odmocňování není nezbytně nutné, když vzdálenosti porovnáváme
Manhattonská vzdálenost Jak budeme počítat vzdálenost dvou cyklistů v Manhattonu? M ( P, Q) = p1 q1 + p2 q2 +... + p n qn
Váha atributů Problém různé rozsahy vzdáleností Při určování euklidovské vzdálenosti mají atributy různou váhu např. p je 100x důležitější než q 3,5 q 0 p 2 350
Normalizace atributů Problém vyřešíme přeškálováním (normalizací) atributů: a i = vi min vi maxv min v i Původní rozsahy se transformují do <0,1> i nebo a i = vi Avg( vi ) StDev( v ) i 1 q Kde přesně je rozhodovací hranice tříd? 0 0 1 p
Voronoiův diagram http://www.cs.cornell.edu/info/people/chew/delaunay.html
knn k nejbližších sousedů Klasifikace Najdi k nejbližších sousedů a klasifikuj majoritní třídou Příklad 3NN klasifikace:? Jak zvolit optimální k?
Klasifikace 80 70 60 50 40 30 20 20 30 40 50 60 70 80
Generalizace 80 70 60 50 40 30 20 20 30 40 50 60 70 80
Lineární klasifikátor (separátor) 80 70 60 50 40 30 20 20 30 40 50 60 70 80
Nelineární klasifikátor 80 70 60 50 40 30 20 20 30 40 50 60 70 80
1NN 90 80 70 60 50 40 30 20 20 30 40 50 60 70 80
3NN 90 80 70 60 50 40 30 20 20 30 40 50 60 70 80
9NN 90 80 70 60 50 40 30 20 20 30 40 50 60 70 80
9NN, měkké rozhodnutí (poměr mezi počtem sousedů z různých tříd) 90 80 70 60 50 40 30 20 20 30 40 50 60 70 80
31NN měkké rozhodnutí 90 80 70 60 50 40 30 20 20 30 40 50 60 70 80
Přeučení x 2 x 2 x 1 x 1
Jak zjistit přeučení? Rozdělit na trénovací a testovací data. Model vygenerovat na datech trénovacích. Chybu počítat na datech testovacích. mpg cyl disp hp wgt acc year Origin name 15 8 400 150 3761 9.5 70 US chevrolet_monte_carlo TRAIN 14 8 455 225 3086 10 70 US buick_estate_wagon_(sw) TEST 24 4 113 95 2372 15 70 JP toyota_corona_mark_ii TRAIN 22 6 198 95 2833 15.5 70 US plymouth_duster TRAIN 18 6 199 97 2774 15.5 70 US amc_hornet TEST 21 6 200 85 2587 16 70 US ford_maverick TRAIN 27 4 97 88 2130 14.5 70 JP datsun_pl510 TRAIN 26 4 97 46 1835 20.5 70 EU volkswagen_1131_deluxe_sed TRAIN 25 4 110 87 2672 17.5 70 EU peugeot_504 24 4 107 90 2430 14.5 70 EU audi_100_ls TEST TEST 27
Učení a evaluace modelu Vstupy Výstup Trénovací Učení, trénování modelu Model Test. Model Predikce, použití modelu Odhady modelu Výpočet chyby modelu Chyba na testovacích datech
Chyba modelu Klasifikační model: procento nesprávných předpovědí Regresní model: součet absolutních hodnot odchylek součet čtverců odchylek err = yi f ( xi ) i = i i ( ( )) 2 err y f x err = 1 průměrný čtverec odchylky yi f ( xi ) N i odmocnina průměrného čtverce odchylky (RMSE) RMSE = 1 yi f ( xi ) N i ( ) 2 ( ) 2 i
Rozhodovací hranice pro různá K Viz. demostrační interaktivní program (autor Petr Pošík)
Načtení dat V dnešním cvičení budeme opět používat databázi aut. Načtěte soubor auto-mpg.data-modnames.csv do objektu dataset a definujte jména jednotlivých atributů auta = dataset('file', 'auto-mpg.data-modnames.csv',... 'ReadVarNames', false, 'ReadObsNames', false,... 'delimiter', ',',... 'VarNames', {'mpg', 'cyl', 'disp',... 'hp', 'wgt', 'acc', 'year', 'org', 'name'});
Normalizace dat auta_norm = datasetfun( @minmax, auta(:,1:5), 'UniformOutput', false ); auta_norm = [auta_norm{:}]; auta = replacedata( auta, auta_norm, 1:5);
Rozdělení dat I První polovinu datasetu použijeme pro trénování. Druhou polovinu pro testování. Jak to udělat?
Rozdělení dat I První polovinu datasetu použijeme pro trénování. Druhou polovinu pro testování. Jak to udělat? auta_tren = auta(1:pocet_aut/2,:); auta_test = auta(pocet_aut/2+1:pocet_aut,:); Co může být problém při tomto způsobu dělení? Je trénovací a testovací množina reprezentativní podmnožinou?
Lépe: náhodné rozdělení dat Vysvětlete: function [tren, test] = rozdel_data(indata, hranice) vect = rand(1,length(indata)); velikost_trenovaci_mnoziny = hranice; testidx = find(vect > velikost_trenovaci_mnoziny); trenidx = find(vect <= velikost_trenovaci_mnoziny); tren = indata(trenidx,:); test = indata(testidx,:); end
Najdi k nejbližších sousedů Funkce pro výpočet nejbližšího souseda: [indexy_nejblizsich, vzdalenosti_k_nejblizsim] = knnsearch(testovaci mn, trenovaci mn, K) Pro všechny testovací instance vrátí pole indexů nejbližších sousedů z trénovací množiny a pole vzdáleností k nim Najděte v kódu funkce výpočet vzdálenosti
Najdi k nejbližších sousedů Pro 1NN if K==1 % Loop for each query point for k=1:n d=zeros(l,1); Testovací instance for t=1:m d=d+(r(:,t)-q(k,t)).^2; end Trénovací množina [D(k),idx(k)]=min(d); end
Najdi k nejbližších sousedů knn for k=1:n d=zeros(l,1); Testovací instance for t=1:m d=d+(r(:,t)-q(k,t)).^2; end end [s,t]=sort(d); idx(k,:)=t(1:k); D(k,:)=s(1:K); Trénovací množina Seřaď vzdálenosti s vzdálenosti, t - indexy
Klasifikuj do majoritní třídy Funkce pro klasifikaci z indexu nejbližších sousedů [oklasifikovana_testovaci_data] = classify2(indexy_nejblizsich_sousedu, klasifikace_trenovacich_dat mn, pocet_trid) trénovací testovací 3NN
Klasifikuj do majoritní třídy Funkce pro klasifikaci z indexu nejbližších sousedů [oklasifikovana_testovaci_data] = classify2(indexy_nejblizsich_sousedu, klasifikace_trenovacich_dat mn, pocet_trid) function class = classify2(nearestidxs, trainingclasses, numclasses) class = zeros(1,length(nearestidxs)); for i = 1:length(nearestIdxs) classescount = zeros(1,numclasses); for j = 1:numClasses classescount(j) = length(find(trainingclasses(i,:) == j)); end [cnt,finalclass] = max(classescount); class(i) = finalclass; end end
Klasifikuj do majoritní třídy Funkce pro klasifikaci z indexu nejbližších sousedů [oklasifikovana_testovaci_data] = classify2(indexy_nejblizsich_sousedu, klasifikace_trenovacich_dat mn, pocet_trid) trénovací testovací 3NN indexy_nejblizsich_sousedu classescount 3 0 1 2 class = oklasifikovana_testovaci_data
Křížová validace Umožňuje odhadnout testovací chybu a potřebuje k tomu jen trénovací data Slouží k výběru (vhodné struktury a parametrů) modelu
K-NN pro regresi Jak byste použili k-nn pro regresi (pro predikci spojité veličiny)? cyl disp wgt mpg 2 1800 2000 35 2 1900 2500 30 4 1800 1500 33 4 2400 2200 25 6 2000 2500 16 cyl disp wgt mpg 4 2000 2800????
K-NN regrese Demostrace
Varianty knn Příspěvek souseda je vážen vzdáleností od klasifikovaného vzoru Klasifikace pomocí etalonů vybrána vhodná podmnožina trénovací množiny
Experimenty na doma Postav 2NN klasifikátor původu aut (origin) a sleduj shodu klasifikace s originálním atributem na všech datech Porovnej chybu klasifikace na testovací množině pro 1NN a 10NN Zjisti, které K je optimální pro model mpg z ostatních atributů pomocí metody KNN Pro konkrétní auto najdi 3 jeho nejbližší sousedy
Diskuze k NN Velmi populární metody a často i velmi úspěšné Ale pomalejší vybavování Při klasifikaci musím projít celou trénovací množinu Pozor na váhy atributů Řešením je normalizace dat Důležité najít vhodné k Abychom minimalizovali chybu na testovacích datech Použitelné i pro regresní problémy