470 likes | 645 Views
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. Business Understanding. Data Understanding. Data Preparation. Modeling. Evaluation. Deployment.
E N D
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
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 CRISP-DM: Phases and tasks MI-KDD MI-PDD MI-ROZ, MI-MVI MI-KDD MI-ADM Kordik, Holena CTU Prague, FIT, MI-ADM
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
Metody výpočetní inteligence Computational Intelligence Methods Artificial Neural Networks Fuzzy Logic Evolutionary Computing Machine Learning HYBRID METHODS 1. Adaptive Resonance Theory 1. Divide and Conquer Methods Decision trees, production rules… 2. Back Propagation Learning 2. Instance Based Learning Nearest neighbor, case based reasoning 3. Hopfield’s Associative Memory 4. Kohonen’s Self Organizing Maps 3. Reinforcement Learning 5. Pulsed Neural Networks 4. Statistical Methods Bayesian, Monte Carlo etc 6. Radial Basis Functions 5. Support Vector Machines SVM, kernel methods, PCA, ICA 7. Real Time Recurrent Learning
Dnešní přednáška • Model • Metoda K- nejbližších sousedů • Plasticita modelu • Hodnocení modelu • Regularizace
Modely v data miningu Rozdělení modelů dle funkce Popisné (descriptive) Predikční (predictive) Shlukování a segmentace Souhrny Klasifikace Regrese, predikce budoucí hodnoty Analýza vztahů a závislostí Analýza časových řad
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 Klasifikační model origin (America, Europe, Japan) disp weight cyl Regresní model mpg 300-800 disp weight
Vytvoření a použití modelu • 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í mpg Klasifikační model origin (America, Europe, Japan) disp weight
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: • d(x,y) > 0. • d(x,y) = 0 iff x = y. • d(x,y) = d(y,x). • d(x,y) < d(x,z) + d(z,y) (trojúhelníková nerovnost). • Odmocňování není nezbytně nutné, když vzdálenosti porovnáváme Dva body v n-rozměrném prostoru: Euklidovská vzdálenost P a Q =
Manhattonská vzdálenost • Jak budeme počítat vzdálenost dvou cyklistů v Manhattonu?
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 p 0 350 2
Normalizace atributů • Problém vyřešíme přeškálováním (normalizací) atributů: • Původní rozsahy se transformují do <0,1> nebo Kde přesně je rozhodovací hranice tříd? 1 q p 0 1 0
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? ?
9NN, měkké rozhodnutí (poměr mezi počtem sousedů z různých tříd)
x2 x1 Přeučení x2 x1
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. mpgcyldisphpwgtacc year Origin name 15 8 400 150 3761 9.5 70 US chevrolet_monte_carlo 14 8 455 225 3086 10 70 US buick_estate_wagon_(sw) 24 4 113 95 2372 15 70 JP toyota_corona_mark_ii 22 6 198 95 2833 15.5 70 US plymouth_duster 18 6 199 97 2774 15.5 70 US amc_hornet 21 6 200 85 2587 16 70 US ford_maverick 27 4 97 88 2130 14.5 70 JP datsun_pl510 26 4 97 46 1835 20.5 70 EU volkswagen_1131_deluxe_sedan 25 4 110 87 2672 17.5 70 EU peugeot_504 24 4 107 90 2430 14.5 70 EU audi_100_ls TRAIN TEST TRAIN TRAIN TEST TRAIN TRAIN TRAIN TEST TEST
Učení a evaluace modelu Vstupy Výstup Učení, trénování modelu Trénovací Model Test. Predikce, použití modelu Model 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 • průměrný čtverec odchylky • odmocnina průměrného čtverce odchylky (RMSE)
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-mod-names.csv do objektu dataset a definujte jména jednotlivých atributů auta = dataset('file', 'auto-mpg.data-mod-names.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); for t=1:M d=d+(R(:,t)-Q(k,t)).^2; end [D(k),idx(k)]=min(d); end Testovací instance Trénovací množina
Najdi k nejbližších sousedů • kNN for k=1:N d=zeros(L,1); for t=1:M d=d+(R(:,t)-Q(k,t)).^2; end [s,t]=sort(d); idx(k,:)=t(1:K); D(k,:)=s(1:K); end Testovací instance 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í 3NN testovací
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í 3NN testovací 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)?
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