České vysoké učení technické v Praze Fakulta informačních technologií Katedra teoretické informatiky 1 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
Kordik, Holena CTU Prague, FIT, MI-ADM 2 Business Understanding Data Understanding Data Preparation Modeling Deployment Evaluation Format Data Integrate Data Construct Data Clean Data Select Data Determine Business Objectives Review Project Produce Final Report Plan Monitering & Maintenance Plan Deployment Determine Next Steps Review Process Evaluate Results Assess Model Build Model Generate Test Design Select Modeling Technique Assess Situation Explore Data Describe Data Collect Initial Data Determine Data Mining Goals Verify Data Quality Produce Project Plan CRISP-DM: Phases and tasks MI-KDD MI-ROZ, MI-MVIMI-PDD 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
Computational Intelligence Methods Artificial Neural Networks Fuzzy LogicEvolutionary Computing Machine Learning 4. Statistical Methods Bayesian, Monte Carlo etc 1. Divide and Conquer Methods Decision trees, production rules… 2. Instance Based Learning Nearest neighbor, case based reasoning 5. Support Vector Machines SVM, kernel methods, PCA, ICA 2. Back Propagation Learning HYBRID METHODS 3. Reinforcement Learning 4. Kohonen’s Self Organizing Maps 3. Hopfield’s Associative Memory 1. Adaptive Resonance Theory 7. Real Time Recurrent Learning 5. Pulsed Neural Networks 6. Radial Basis Functions Metody výpočetní inteligence
5 Dnešní přednáška Model Metoda K- nejbližších sousedů Plasticita modelu Hodnocení modelu Regularizace
Rozdělení modelů dle funkce Predikční (predictive) Popisné (descriptive) Klasifikace Regrese, predikce budoucí hodnoty Shlukování a segmentace Souhrny Analýza vztahů a závislostí Analýza časových řad Modely v data miningu
FunkceMetody Klasifikace Linear separation, Rule induction methods, Decision trees, Neural networks, SVM, nearest neighbours, Case based reasoning Regrese a predikce budoucí hodnoty Linear, polynomial, logistic regression, Regression trees, Neural networks, nearest neighbours Analýza časových řad Autoregression, Moving averages, Regression trees, neural networks, SVM Analýza vztahů a závislostí Association rules, Correlation analysis, Regression analysis, Bayesian networks, Inductive logic programming Popis dat, souhrny Statistical techniques, OLAP Shlukování a segmentace K-nearest neighbour, Agglomerative clustering, Neural networks, Visualization methods Přehled metod generujících modely
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) Klasifikační model origin (America, Europe, Japan) weight disp mpg Regresní model mpg weight disp cyl
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í 9 Klasifikační model origin (America, Europe, Japan) weight disp mpg
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 ?
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) > 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 ). Odmocňování není nezbytně nutné, když vzdálenosti porovnáváme Euklidovská vzdálenost P a Q = Dva body v n-rozměrném prostoru:
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 0 3, p q
Normalizace atributů Problém vyřešíme přeškálováním (normalizací) atributů: Původní rozsahy se transformují do nebo p q Kde přesně je rozhodovací hranice tříd?
Voronoiův diagram
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
Generalizace
Lineární klasifikátor (separátor)
Nelineární klasifikátor
1NN
3NN
9NN
9NN, měkké rozhodnutí (poměr mezi počtem sousedů z různých tříd)
31NN – měkké rozhodnutí
x1x1 x2x2 Přeučení x1x1 x2x2
Jak zjistit přeučení? 27 Rozdělit na trénovací a testovací data. Model vygenerovat na datech trénovacích. Chybu počítat na datech testovacích. mpg cyldisphpwgtaccyearOriginname USchevrolet_monte_carlo USbuick_estate_wagon_(sw) JPtoyota_corona_mark_ii USplymouth_duster USamc_hornet USford_maverick JPdatsun_pl EUvolkswagen_1131_deluxe_sedan EUpeugeot_ EUaudi_100_ls TRAIN TEST TRAIN TEST TRAIN TEST
Učení a evaluace modelu Trénovací Test. VstupyVýstup Učení, trénování modelu Model Predikce, použití modelu Model Výpočet chyby modelu Odhady 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 = 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 Trénovací množina Testovací instance
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 Trénovací množina Testovací instance 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
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í indexy_nejblizsich_sousedu 3NN classesCount 1230 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)? cyldispwgtmpg cyldispwgtmpg ????
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