Download - Samenvatting Statistiek KDG

Transcript
Page 1: Samenvatting Statistiek KDG

Statistische Analyse

1. Inleiding

1.1. Waarom Statistiek?● Business intelligence, data mining, data analyse

○ Trends, verbanden zoeken in databanken, rapporten, …○ Gebruikt statistische methoden○ Zeer belangrijk voor managers

● Voorbeelden data-analyse○ Verkoop daalt plots sterk in bepaalde regio. Hoe komt dit? Wat kunnen we eraan

doen?○ Welke strategie moeten we volgen om bepaald product meer te laten opbrengen?○ …

● Om op deze vragen antwoord te bieden zijn statistische technieken nodig○ Kengetallen van data vinden○ Data visualiseren○ Toetsing van hypothesen○ Regressie-analyse○ Correlaties zoeken○ Interpolatie en extrapolatie○ Optimalisatie○ Beslissingsbomen○ …

● Waarom statistiek voor informatici?○ Data analyst is meestal geen informaticus○ Maar data zit in databanken○ Beheerd door informatici○ Informatici worden dus dikwijls ingeschakeld voor

Schrijven van de juiste queriesUitvoeren van berekeningen op de data

1.2. OnderzoeksfasenBij een statistisch onderzoek kunnen we verschillende fasen onderscheiden. In een voorbeeld: “zijn linux servers beter bestand tegen aanvallen dan windows servers?”

● 1. Formuleren van vraagstelling, probleem, theorie○ Omzetten van probleemstelling in hypothese “Linux servers zijn beter bestand tegen

aanvallen dan windows servers”○ Variabelen

Onafhankelijke = oorzaak (het OS dat op de computer draait)Afhankelijke = gevolg (het bestand zijn tegen aanvallen)

● 2. meetbaar maken, operationaliseren○ Wat is een linux server? Welke versie, distributie, hardware, …?○ Wat is een windows server? Welke versie, firewall, virusscanner, …?

Page 2: Samenvatting Statistiek KDG

○ Welke soort aanvallen? Virussen, DOS attacks, fishing, XSS, …?● 3. steekproefopzet

○ Probleem: we kunnen niet alle servers (=populatie) uittesten○ We doen dus metingen op testgroep (=steekproef)○ Vraag: Kunnen we resultaten steekproef veralgemenen

Meestal doe je aselecte steekproefHoe groter de steekproef, hoe betrouwbaarder de resultaten

● 4. verrichten van metingen, verzamelen van gegevens○ Ruwe gegevens verzamelen door

InterviewsVragenlijstenTest/ToetsObservatieExperimentArchiefonderzoek

● 5. beschrijven en analyseren van gegevens○ Beschrijvende statistiek:

Gemiddelde, mediaan, …FrequentietabelDiagramTabelRegressieCorrelatie…

● 6. formuleren van statische conclusies○ Toetsende statistiek○ In hoeverre is de hypothese waar?○ In hoeverre zijn de resultaten te veralgemenen naar de volledige populatie○ Heeft te maken met het aantal en de spreiding van de gemeten resultaten

● 7. verband tussen resultaten en theorie○ Resultaten worden geïnterpreteerd en gevalideerd○ Hier kan ook beslist worden dat bijkomend onderzoek nodig is○ Soms ook foute interpretaties (bv. Verband ooievaarpopulatie en geboortecijfer)

1.3. OperationaliserenHet meetbaar maken van gegevens

1.3.1. Variabelen en constanten● In een hypothese zitten variabelen en constanten● Het zijn parameters die in het onderzoek gebruikt worden● Variabel: kan verschillende waarden aannemen● Constanten: Heeft steeds dezelfde waarde binnen dit onderzoek● Variabelen en constante moeten geoperationaliseerd worden.

○ Welk type, welk bereik● Discrete variabelen: kunnen bepaalde waarden aannemen● Continue variabelen: kunnen alle waardes tussen min en max (bv 0 en 1) aannemen

Page 3: Samenvatting Statistiek KDG

1.3.2. Meetniveaus● Er bestaan verschillende soorten data● Soort bepaalt wat je ermee kan doen, welke grafiek je gebruikt, …● = meetniveaus● Kwalitatieve

○ NominaalIedere waarde is stringVb: geslacht, afstudeerrichting, computermerk

○ OrdinaalIedere waarde is stringEr bestaat een natuurlijke ordeningVb: Rangen in het leger, tevredenheidsscores (want 8 is niet dubbel zo tevreden als 4)

● Kwantitatieve data○ Interval

Iedere waarde is een getalEr is geen natuurlijk nulpuntVb. temperatuur in celcius (want 20° is niet dubbel zo warm als 10°)

○ RatioIedere waarde is een getalEr is wel een natuurlijk nulpuntVb. temperatuur in Kelvin, aantal liter geproduceerde wijn, …

1.3.3. Betrouwbaarheid● Metingen zijn niet noodzakelijk betrouwbaar

○ Punten op examen kunnen verschillen bij studenten met zelfde kennis○ Lengtemetingen kunnen afwijken omdat persoon niet op zelfde manier gemeten

wordt● Meetinstrument is betrouwbaar als invloed van toevallige factoren geen (groot) verschil

geeft in resultaat

1.3.4. Validiteit● Metingen zijn niet noodzakelijk valide

○ Hoe meet je “wiskundeaanleg”○ Hoe meet je “assertiviteit”

● Een meetinstrument is valide als○ Het meet wat het moet meten○ Een andere meetwijze hetzelfde resultaat zou opleveren

● Een niet-valide meetinstrument maakt systematische fouten○ Weegschaal die verkeerd is○ Test die in bepaalde omstandigheden w afgenomen

2. Frequentieverdelingen● Frequentie: voorkomen van datapunt in dataset● Moet minstens nominaal zijn

Page 4: Samenvatting Statistiek KDG

● Frequentietabellen, kruistabellen● R: table()

2.1. Soorten frequenties● Absolute frequentie: het aantal● Relatieve frequentie: absoluut ten opzichte van het totaal aantal● Absolute cumulatieve frequentie (frequentie + vorige). Minstens orginaal● Relatieve Cumulatieve frequentie: absoluut cumulatief tov aantal

2.2. Klassen● Wanneer variabele minstens interval is en veel waarden bevat of continu is● Datapoints bij elkaar nemen● Elke klasse heeft een

○ Klassebreedte○ Klassemidden

● R: cut()● Hoeveel klassen?

○ Te weinig: weinig informatie○ Te veel: onoverzichtelijk○ Geen duidelijke regel

“tussen 5 en 20”Root n

2.3. Grafieken

2.3.1. Taartdiagram● Bij

○ Nominaal meetniveau○ Niet te veel verschillende waarden○ Visueel > kwaliteit

● R: pie()

2.3.2. Staafdiagram● Bij

○ Nominaal of ordinaal○ Beter interpreteerbaar dan taart

● R: barplot()

2.3.3. Histogram● Bij

○ Interval of ratio niveau○ Continue variabelen

● Lijkt op staafdiagram maar staven tegen elkaar aan● R: hist()

2.3.4. Frequentiepolygoon● Gebruik: zoals histogram● Lijnen tekenen tussen de toppen van klassen

Page 5: Samenvatting Statistiek KDG

● Voeg waarden 0 voor en achteraan toe● R:

○ "freqpoly" <- function (x,...) { tmp=hist(x);lines(c(min(tmp$breaks),tmp$mids, max(tmp$breaks)),c(0,tmp$counts,0),type="l") }

○ Freqpoly()

2.4. PercentielenRelatieve plaats van datapunt in de dataset. Bijvoorbeeld het 95% percentiel: 95% van de data ligt eronder, 5% erboven

3. Centrummaten

3.1. Modus● Waarde met de hoogste frequentie● Voordeel

○ Minstens nominaal meetniveau○ Gemakkelijk te bepalen

● Nadeel○ Niet alle waarden worden gebruikt○ Indeling in andere klassen kan ander resultaat geven

● R: modus = function(x) { names(sort(table(x), T))[1] }

3.2. Mediaan● Minstens ordinaal niveau● Orden alle waarden, neem middelste waarde● R: median(x)● Voordelen

○ Vanaf ordinaal niveau○ Niet gevoelig voor uitschieters

● Nadelen○ Niet alle waarden worden gebruikt○ Moeilijk te gebruiken in berekeningen (geen duidelijke formule)

3.3. Gemiddelde● Vanaf intervalniveau● Som van alle waarden / aantal● R: mean(x)● Voordelen

○ Formule○ Alle waarden worden gebruikt

3.3.1. Gewogen gemiddelde● Geef gewicht aan de verschillende datapunten● Weighted.mean(x)

3.3.2. Meetkundig gemiddeldeR: exp(mean(log(x)))

Page 6: Samenvatting Statistiek KDG

3.3.3. Voortschrijdend gemiddeldeNeem rij getallen en bereken telkens het gemiddelde van de laatste n getallen

3.3.4. Harmonisch gemiddelde1/mean(1/x)

3.4. Uitschieters● Waarden die veel hoger of veel lager zijn dan de rest● Veel invloed op gemiddelde● Detecteren?

○ Groot verschil tussen mediaan en gemiddelde○ Groot verschil met getrimd gemiddelde

Laat n hoogste en laagste waarden weg.Groot verschil?Mean(x, trim=0.05)

3.5. Verdelingen● Frequentieverdelingen kunnen verschillende vormen aannemen

○ Symetrisch: Modus = Mediaan = Gemiddelde○ Links scheef: (lnr) Mediaan, gemiddelde, modus○ Rechts scheef: (lnr) Modus, gemiddelde, mediaan

4. Spreidingsmaten

4.1. Bereik● Verschil tussen min en max waarde● Geeft spreiding aan, maar geeft niet zo’n goed beeld wanneer waarden niet uniform

verdeeld zijn

4.2. Kwantielen● Werkwijze

○ Rangschik getallen van klein naar groot○ Verdeel in n gelijke stukken○ Waarde op iedere grens is n-kwantiel

● R: quantile(x, fractie)● N=4: Kwartielen● N=100: Percentielen● N=10: Decielen● Kwartielen worden vaak gebruikt om bereik te berekenen● R: summary(x)

4.3. Boxplot● Visualisatie van het bereik adhv kwartielen● R: boxplot(x)

4.4. Gemiddelde absolute afwijking● Methode om spreiding te meten

Page 7: Samenvatting Statistiek KDG

○ Bereken gemiddelde○ Bereken het verschil tussen iedere waarde en het gemiddelde○ Neem hiervan het gemiddelde

● R: mean(x-mean(x)) uitkomst nul want heft elkaar op● R: mean(abs(x-mean(x)))

○ Nadeel: gevoelig voor uitschieters● Gebruik median

○ Median(abs(x-median(x)))○ Nadeel: moeilijk rekenen met absolute waarde7

4.5. Variantie● Voordeel: continu afleidbaar● Nadeel: kwadraat

4.6. Stand111aardafwijking● Meest gebruikte spreidingsmaat

4.7. Variantie en standaardafwijking in een steekproef● Probleem: schatten de variantie en standaardafwijking van een populatie adhv een

steekproef● Eigenschap: variantie steekproef kleiner dan die van populatie● R: sd(x)

5. Kansen

5.1. Wat is een kans?● Experiment dat verschillende uitkomsten produceert ondanks zelfde beginsituatie● Bv. Gooi een dobbelsteen● Toch zijn er regelmatigheden in de resultaten als je veel metingen doet

○ Bepaalde waarden komen meer voor dan andere○ Alle waarden komen ongeveer evenveel voor○ Het gemiddelde van de waarden situeert zich rond een bepaalde waarde

● In R 100 keer kop of munt gooien○ throws = sample(0:1, 100, replace=TRUE)○ g=0○ for(i in 1:length(throws)) g[i] = mean(throws[1:i])○ plot(g, type="l")

● Verschillende interpretaties mogelijk○ Resultaat uit afgelijnd experiment (trek een balletje uit een zak met 20 rode en 30

blauwe balletjes. Wat is een kans dat het een rood balletje is)○ Veralgemening van het experiment naar populatie (van de 20 willekeurig geteste

iPads waren er 2 stuk. Hoeveel teruggebrachte iPads mogen we in de winkel verwachten)

○ Kans van een individuele meting (een patiënt wil een operatie laten ondergaan. Wat is de kans dat deze operatie zal slagen)

Page 8: Samenvatting Statistiek KDG

5.2. Verzamelingenleer en kansenTodo, want ik snap er niks van

5.3. Kruistabellen en kansen

5.4. Rekenen met kansenTodo, eerst 5.2 doen

6. Kansverdelingen--todo

DEEL WEEK 4 TODO

7. Veel voorkomende kansverdelingen (w5)

7.1. De binomiaalverdeling● Is een model voor een experiment waarbij

○ Verschillende actereenvolgende waarden worden gemeten○ Er zijn maar 2 uitkomsten mogelijk○ Iedere uitkomst heeft een bepaalde waarschijnlijkheid○ De vraag is “hoeveel kans is er dat bij n metingen er x gelijk zijn aan y”

WEEK 5 TODO

WEEK 6 OOK Todo

Page 9: Samenvatting Statistiek KDG

StatAn p4

7. Samenhang

7.1. Correlatie● Statistiek w interessant als we verbanden kunnen aantonen tussen variabelen.● Echter: niet noodzakelijk causaal (bv. Zakkenrollers en ijsjesverkopers)● Visueel verband bepalen kan met scatterplot: plot(datax, datay)● Echter: hoe sterk is dit verband

○ => Correlatiecoëfficient (Pearson)○ 2 variabelen vergelijken (X en Y)

Zet ze beiden om naar Z-scores (gemiddelde 0, standaardafwijking 1)Vergelijk Z-scores

○ Correlatie kan enkel berekend worden vanaf interval meetniveau○ Voorbeelden:

○ Hoe interpreteren (afhankelijk van wetenschapsdomein). Zelfde waarden gelden negatief

0: geen lineair verband0 tot 0,2: nauwelijks verband0,2 tot 0,4: zwak verband0,4 tot 0,6 redelijk verband0,6 tot 0,8 sterk verband0,8 tot 1: zeer sterk verband

○ Lage correlatie:Misschien is er een niet-lineair verband.Misschien is de correlatie groter als je het bereik groter maakt

○ Hoge correlatieZijn de 2 variabelen geen andere naam voor hetzelfde?Is de ene variabele berekend adhv de andereMisschien is de correlatie lager als je het bereik van X groter maakt

○ Berekening: R: cor(datax, datay)

Page 10: Samenvatting Statistiek KDG

7.2. Lineaire regressie● Als er een lineair verband is tussen 2 variabelen, is de ene dan te voorspellen adhv de

andere?● Proberen een lijn te tekenen die het “best” door de scatterplot gaat

○ Fout: gemiddelde afstand (verticaal gemeten) tussen punten en de lijn○ Vergelijk: standaardafwijking: gemiddelde afstand tussen punten en gemiddelde

● Getallen kwadrateren om positieve getallen te verkrijgen● Regressielijn is benadering van de werkelijkheid

●Gem. afstand is dus gegeven door:

● Nu a en b zoeken zodat A minimaal is (“techniek van de kleinste kwadraten”)

●B = slope, richtingscoëfficient:

● A = intercept: ● Zijn afhankelijk van gemiddelde en standaardafwijking● Regressielijn is maar een benadering voor de werkelijkheid● Hoe goed is deze benadering?● Antwoord: betrouwbaarheidsinterval op de fout (fout = werkelijke waarde – voorspelde

waarde). Fout heeft een standaardafwijking

○ Se = standaardschattingsfout○ Als je dus een waarde voor xi berekent, dan weet je 95,5% zeker dat de echte waarde

tussen volgende grenzen zit:

●Variantie op de fout:

● Correlatie = 0○ Variantie op de fout is dezelfde als die op Y○ De regressie kan dus niks voorspellen

● Correlatie = 1○ Variantie op fout is 0○ De regressie voorspelt perfect de waarde

● Kwadraat van correlatie is dus het percentage van Y dat wordt verklaard door het model● Dit wordt meestal aangeduid met R²● R

○ Eerst plotten (datax, datay)○ Reg = lm(y~x) Y tilde X !!!○ Abline(reg)○ a=reg$coefficients[1]○ b=reg$coefficients[2]○ summary(reg) – met se (residual standard error), R² (multiple R squared)

Page 11: Samenvatting Statistiek KDG

○ se=sqrt(deviance(reg)/df.residual(reg))

8a. Tijdsgebonden gegevens● Vb: evolutie van bevolking, evolutie van aandelenkoers● Interesse: evolutie of trend van de data● Vb: aandelenkoers Apple

○ R: aapl=read.csv(“AAPL.csv”)○ Plot(rev(aapl$Close)) – rev omdat ge de gegevens moet omdraaien.

8b. Intermezzo: Grafieken● Nulpunt veranderen (bv. Enkel laatste maand)

○ Plot(data, ylim=c(…, …))● X-as moet tijd weergeven

○ Plot(as.Date(aapl$Date), aapl$Close)● Grafiek moet zichzelf uitleggen

○ Titel○ Assen benoemen○ Plot(x, y, main=”…”, xlab=”…”, ylab=”…”)

● Lijnen vs punten○ Tot nu toe : punten○ Lijnen ? data tussen punten niet gekend○ => lijnen en punten tekenen○ Plot() type parameter (b || l)

● Legende○ Eerste dataset toevoegen○ Tweede dataset toevoegen met points() of lines()○ Legende toevoegen met legend()

● Logaritmische schalen○ Let op: afstand tussen 1 en 10 is nu even groot als tussen 10 en 100○ Plot() optie log=”y”

● Bijkomende informatie○ Lijnen met segments(x0, y0, x1, y1)○ Pijlen met arrows(x0, y0, x1, y1)○ Tekst met tekst(x, y, “tekst”)

8c. Filters

8c.1. Laagdoorlaatfilters● Vb: opbrengst zonnepanelen● Data bestaat uit signaal (hoeveelheid zon) en ruis (bewolking)● Ruis = willekeurig met normaalverdeling

○ Gemiddelde = 0○ Standaardafwijking = grootte van de ruis

Page 12: Samenvatting Statistiek KDG

● Signaal = lage frequentie / ruis = hoge frequentie● Signaal met enkel ruis: gemiddelde 0 ● => voortschrijdend gemiddelde

○ Gemiddelde van waarneming 1 tot n○ “ 2 tot n+1○ “ 3 tot n+2○ …

● Praktisch: r: zon.filtered=filter(zon, rep(0.1, 10))

8c.2. Hoogdoorlaatfilters● Ruis behouden, signaal wegfilteren?

○ => Neem waarde en trek er volgende waarde van af● R: ruis=filter(zon, c(1, -1))● Mean(ruis)● Sd(ruis)

8c.3. Fourier transformaties● Signalen bestaan uit golven. Een golf heeft 3 eigenschappen:

○ Frequentie: aantal golven per seconde○ Amplitude: hoogte van de golf○ Fase: offset van de golf

● Overzicht van de golven die voorkomen in een signaal = spectrum○ X-as bevat frequenties○ Y-as bevat amplitudes

● Berekenen:○ Fast Fourier Transform (FTT)○ Signaal bestaat uit samples○ Aantal samples = n○ Samples zijn aan een bepaalde frequentie gemeten (f)○ Samples zijn gedurende een bepaalde tijd gemeten (T = n/f)○ R: spectrum=(Mod(fft(samples))/(n/2))[1:(n/2)]○ Barplot(spectrum)

● FFT kan n/2 golven detecteren● Hoe spectrum plotten?

○ Barplot: als er niet te veel frequenties zijn○ Lijnen als er veel frequenties zijn

● X-as zou frequentie moeten bevatten

Page 13: Samenvatting Statistiek KDG

○ Frequenties= c(0 n/2-1))/T○ Plot(frequenties, spectrum)

● Toepassing: meten kwaliteit telefoonlijn: signaal versturen met alle frequenties tussen 4000 Hz en 1024 KHz met stappen van 4000 Hz en kijken wat er aankomt.

9a. Interpolatie● Stel: weinig, maar accurate metingen => kan ik curve maken die door punten gaat, kan ik

waarden voorspellen die tussen gemeten waarden liggen● Voorbeeld:

9a.1. Lineaire interpolatie

● Wat is de juiste temperatuur op 100mm in de muur○ Zoek juiste segment (hier: 2)○ Sel vgl op van de lijn (y=-0,016*x+17,66)○ Evalueer: y=16,06°

● Algemeen:○ Geg: n punten (xi, yi)○ Gevr: waarde op positie x

○ R: f=approxfun(x,y) – f(100)

Page 14: Samenvatting Statistiek KDG

9a.2. Lagrange interpolatie● Lineaire regressie benadert met rechte lijnen. Soms zoeken we kromme die door punten

gaat. Polynomen zijn krommen. Door n punten gaat juist 1 polynoom van graad n-1 (=door 2 punte gaat juist 1 rechte (=polynoom graad 1))

dus, met 3 punten:

● In R○ Geen ingebouwde functie: lagrangefun=function(x,y) {

function(xx) { result=0;for(i in c(1:length(x))) {p=y[i];

for(j in c(1:length(x))) {if (j!=i) p=p*(xx-x[j])/(x[i]-

x[j]);};result=result+p;};result}}

○ Gebruik: f=lagrangefun(x,y) – f(100)● Echter: wordt niet zo vaak gebruikt

9a.3. Spline interpolatie● Mengeling tussen lineaire en lagrange interpolatie

○ Zoek polynoom van graad 3 tussen elke 2 punten○ Laat polynomen mooi aansluiten (raaklijnen moeten gelijk zijn)

● => wat gebruikt wordt in vector-tekeningen● R: f=splinefun(x,y) f(100)● Voorbeeld : server-room waar elk uur temperatuur wordt gemeten. Thermometer valt plots

uit, pas na 6 uur gerepareerd. Wat was de temperatuur hiertussen?

Page 15: Samenvatting Statistiek KDG

9b. Extrapolatie● Waarden zoeken die buiten de originele waarden liggen (bv. Om te voorspellen)● Vereist voorkennis over het model● Hoe verder je extrapoleert, hoe groter de fout die je maakt

9b.1. Spline extrapolatie● Bereken spline door punten, laat verder lopen

9b.2. Lineaire extrapolatie● Gebruik lijn door laatste 2 punten● Of regressie (op alle punten || op laatste n punten)

9b.3. Extrapolatie met gegeven model● Gegeven: model waaraan de data verondersteld wordt te voldoen● Model = formule met parameters● 2 manieren

○ Zoek parameters zodat functie door punten gaat○ Zoek parameters zodat functie zo goed mogelijk door punten gaat (regressie)

Page 16: Samenvatting Statistiek KDG

10. Beslissingsbomen● Informatie voorspellen● Tot nu toe adhv bekende variabelen (regressie, interpolatie, extrapolatie)● Maar: wat als je de variabelen niet kent?● Wat als je wil weten van welke variabelen iets afhankelijk is● Voorbeeld: adeater

○ Webpagina’s bevatten images○ Sommige images zijn reclame, andere niet○ Kan ik automatisch detecteren wat reclame is?○ Mogelijk oplossing

Bepaal verschillende parameters (input voor algoritme)Maak tabel die parameters mapt op een booleanAlgoritme doorloopt tabel en beslist

○ ProblemenWeten niet welke parameters we nodig hebben=> we nemen er dus heel veel (hier: 1558)Tabel wordt gigantisch grootWe kunnen niet alle gevallen opsommen

○ Oplossing: creëer regels. Hoe regels vinden? Handmatig is te moeilijk AI● Simpeler voorbeeld: simpsons

○ Bekend: haarlengte, gewicht, leeftijd. Wanted: geslacht○ => In klasses zetten

○ Regels opstellen

Page 17: Samenvatting Statistiek KDG

● Hoe maak je dit?○ Kies kolom○ Maak node voor deze kolom○ Maak pijlen naar kind-nodes voor iedere mogelijke waarde van deze kolom○ Maak per pijl tabel waarin enkel die rijen voorkomen met de gekozen waarde○ Doe het algoritme recursief voor alle kinderen○ Als alle rijen van de tabel eenzelfde uitkomst hebben, stop dan

● De keuze van de kolom is belangrijk● Als je andere kolommen kiest kan de boom ingewikkelder worden● We willen zo eenvoudig mogelijke boom

10.1. Het ID3 algoritme● Welke kolom selecteren?

○ Kolom die je het meeste onderscheid zal geven. Dit noemt men de information gain

○ n= aantal rijen in de tabel○ p = aantel rijen in de kindtabel○ E(tabel) = entropie

Hierbij nemen we iedere mogelijke waarde van de te voorspellen waarde (de laatste kolom)p = aantal rijen met een bepaalde te voorspellen waarden = totaal aantal rijen in de tabel

Page 18: Samenvatting Statistiek KDG

● R: niet ingebouwd. Functie-file ID3.r op BB○ ID3(data)○ calculateEntropy(data)○ calculateGain(data, kolomNummer)

● WEKA○ Tab preprocess○ Open csv○ Tab classify○ Kies ID3○ Start

● Aandachtspunten met ID3○ Alle waarden moeten nominaal zijn○ Continue waarden moeten gesplitst worden in categorieën○ In de praktijk zijn waarden soms niet gekend (samenvoegen databanken): ID3 kan

hier niet mee overweg○ Vaak veel tijd nodig om data in juist formaat te zetten

● Alternatief: C4.5

11. Clusteranalyse● Een cluster is een aantal rijen van een tabel die bij elkaar horen of gelijkaardig zijn● Rij = punt in een n-dimensionaal vlak● 2 rijen zijn gelijkaardig als de punten dicht bij elkaar liggen. Afstand moet klein zijn.● Hoe meet je de afstand tussen 2 punten?

○ Euclidisch: stelling van pythagoras

Page 19: Samenvatting Statistiek KDG

afstand f tussen punten a(va, wa, xa, ya, za) en b(vb, wb, xb, yb, zb)

f= va-vb2- wa-wb2…. algemene vorm met punten a(c1a, c2b, …) en b(c1b, c2b, …) elks met n coördinatenf= i=1n(cia-cib)2

○ Probleem: de variabelen hebben misschien een andere verdeling○ Oplossing: deel afstanden voor variantie (=gestandaardiseerde Euclidische afstand)

f= i=1n(cia-cib)2σi2 Opgelet: variantie van ALLE waarden, niet enkel van punten a en b

○ Manhattan (taxi) afstand: “meten hoe ver je moet rijden”f= i=1ncia-cib

● Wat als de variabele geen getal is?○ Vervang mogelijke waarden door een getal○ Nominaal: vermijden (je kan geen afstand tussen nominale variabelen

definiëren)○ Ordinaal: maak er een interval meetniveau van

Ofwel decimale waarden, ofwel bitpatronen○ Interval: gebruik manhattan afstand

11.1. Clusters zoeken

11.1.1. K-means● Gaat op zoek naar n (gegeven) clusters● Is gebaseerd op Kohonen netwerk

○ Neurale netwerken○ Geïnspireerd door werking van onze hersenen

● Gebruikt meestal euclidische afstand● Algoritme

○ Selecteer n willekeurige punten (“centroids”)○ Herhaal

Associeer ieder punt van de dataset met de centroid die het dichtste bij ligt (zo maak je n clusters)Bereken per cluster het midden en vervang de centroid door deze nieuwe waarde

○ Totdat de centroids niet meer veranderen○ R

k = kmeans(d, 4) – n is 4plot (d, col=k$cluster)points(k$centers, pch=10, cex=3, col=6, lwd=2)

○ WEKAkies SimpleKMeanskies aantal clusterskies startrechtsklik op resultaat en kies Visualize cluster assignments

● Opmerkingen○ Je moet op voorhand weten hoeveel clusters je zoekt

Page 20: Samenvatting Statistiek KDG

○ Plaats van de centroids in begin kan heel bepalend zijn

11.1.2. Hiërarchisch● Als je op voorhand niet weet hoeveel clusters je zoekt● Maak een boomstructuur die waarden groepeert (dendrogram)

● Begin onderaan. Ieder punt is een cluster met 1 element erin● Herhaal

○ Zoek de 2 clusters die het dichtst bij elkaar liggen○ Voeg deze clusters bij elkaar in een hoger niveau

● Tot er maar 1 cluster overblijft● Je moet dus de afstand tussen 2 clusters kunnen berekenen

○ Afstand tussen middelpunten○ Min afstand tussen punten○ Max afstand tussen punten

● Rhc= hclust(dist(d))plot(hc)c=cutree(hc, h=3)plot(d, col=c)

11.2. Combinatie clusteranalyse en beslissingsbomen● Clustering geeft eigenlijk een label aan iedere rij van een table● Voeg kolom toe met dit label● Zoek nu een beslissingsboom om te weten te komen welke rij in welke categorie valt● Voorbeeld (R en WEKA): 4 clusters, bewaar als 3e kolom. C4.5 voor beslissingsboom

k = kmeans(d, 4)c= k$clusterc=paste(“C”, c, sep=””) – plaatst C voor elke waarde in cf=data.frame(d, c) – maakt een nieuwe dataframe van d en cwrite.csv(f, “voorWeka.csv”, row.names=F) – geen first column met id’s