20
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 queries Uitvoeren van berekeningen op de data 1.2. Onderzoeksfasen Bij 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, …?

Samenvatting Statistiek KDG

Embed Size (px)

DESCRIPTION

Samenvatting Statistiek KDG INF 1

Citation preview

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