Date post: | 18-Feb-2017 |
Category: |
Data & Analytics |
Upload: | johan-quist |
View: | 91 times |
Download: | 1 times |
(Big) Data Analyse
Johan Quist23 maart 2015
Inhoud1 Big data en analytics; waarom big data de vraag naar analytics vergroot
2 Big data, BI en analytics; van datawarehouse naar datamining
3 Soorten Statistische analyse;– univariate analyse (samenvatting statistiek)– bivariate analyse (oa regressie)– multivariate analyse (supervised en
unsupervised)Big Data sessie 23 maart 2015
Deel 1 big data en analyticsDefinitie big data:"Er bestaat geen exacte definitie van big data (...) De term ‘big data’ verwijst naar dingen die je op een grote schaal kunt doen en op kleinere schaal niet mogelijk zijn, en waarmee je nieuwe inzichten verkrijgt of nieuwe vormen van economische waarde creëert op een manier die invloed heeft op (..) markten, organisaties en de relatie tussen burgers en overheden”.
"data die niet meer in een normale database past" (door grootte, structuur en snelheid) Boek: Mayer/Cukier de big data revolutie
Big Data sessie 23 maart 2015
Definitie de 3Vs
• Volume : veel, heel veel• Variety : gevarieeerd, lees
ongestructureerd• Velocity : hoge omloopsnelheid (denk aan
tweets en facebookgegevens)
Big Data sessie 23 maart 2015
Big data en analytics
• Hardware • Softwarecapaciteiten(statistiek/analytics)
-> twee nieuwe uitdagingen
Big Data sessie 23 maart 2015
Twee componenten
Analytics• Analyses op data om tot inzicht te
komen
Andere namen• Data analytics, Datamining,
Statistical learning, Machine learning, Data Science
Big Data sessie 23 maart 2015
Big data en Analytics
om hier grip op te krijgen -> analytics
Big Data sessie 23 maart 2015
Door Big data krijgen organisaties beschikking over zeer veel data
Analytics en big data/dwh
ook op data in datawarehouses
Big Data sessie 23 maart 2015
Analytics mogelijk op alle data
Business cases big dataTypische branchespecifieke doelstellingen
Banken: lening acceptatie identificeren verdachte transacties beurskoersvoorspellingVerzekeraars: polisacceptatie detectie valse claims risicoanalyse premiebepaling Retail: basket analyse
optimaliseren winkelindeling
Big Data sessie 23 maart 2015
Business cases big data (vervolg)
Telecom: churn analyse op basis v. belgedrag
identificeren fraudeursUitgevers, reclamebureau’s: modelleren Web surfgedrag media strategie bepaling oplage voorspelling publishing on demandOverheid: daderprofilering (politie), detectie belastingfraudeBig Data sessie 23 maart 2015
Big data en traditionele data• Big data kan in combinatie met traditionele data een completer beeld geven
• Vervangen of aanvulling van relationele databases? Aanvulling! salarisadministratie doe je niet met Hadoop
• de puur praktische zaken waar mensen relationele databases voor gebruiken. Dat is niet waar de kracht ligt van Hadoop.
• Big data biedt kansen voor BI-ers
Big Data sessie 23 maart 2015
2.0 ‘term’ ook bij big data• Internet 1.0 (bedrijven gaan op internet)• -> 2.0 (gaan internet gebruiken in
strategie)
• Big Data 1.0 (bedrijven leren omgaan met BD)
• -> 2.0 (bedrijven gaan Big Data gebruiken om dingen beter te gaan den of nieuwe dingen te gaan doen.
Data Science for business Provost/FawcettBig Data sessie 23 maart 2015
Deel 2 Big data, BI en analyticsGewenst is dat de twee werelden bijeen worden gebracht. ‘best of both worlds’ De plek van Big Data in de BI architectuur is eigenlijk niet anders dandie van gestructureerde data. Het enige verschil is dat je niet de luxe hebt om de traditionele implementatie te volgen. BI-ers zullen aan de big data moeten.“ Klanten zullen dashboards bv willen verrijken met bv het aantal tweets, facebookvermeldingen. Het meten van allerlei bedrijfs-processen zal steeds meer gepaard gaan met big data.BI-ers moeten hier op in springen.”
Big Data sessie 23 maart 2015
DBDatawarehouse
Datamarts
Data Informatie kennis
Werkgebied BIDB
(Huidig) Werkgebied BI = data enginering= omzetten van data in informatie, zodat anderen er informatie uit kunnen halen
Data enginering en data analyse
Big Data sessie 23 maart 2015
Opkomst Big Data
Werkgebied BI
Data Informatie kennis
‘Big Data’
Uitdaging 1: Big Data verwerkingstechnieken
Grip op big data
Uitdaging 2:Data analyse
DBDatawarehouse
Datamarts
DB
Big Data sessie 23 maart 2015
Kennis-Pyramide
Big Data sessie 23 maart 2015
Data Enginering: data omzetten om informatie te verkrijgen (‘klassieke’ BI)
Data Analytics: statistische analyse gebruiken om kennis te verkrijgen
Data driven decision making
Big Data sessie 23 maart 2015
Data Science for business Provost/Fawcett
Grip op (big) dataVerschillende namen voor ongeveer het zelfde:• Data analytics• Datamining• KDD knowlegde discovery from data• Analytical learning• Machine Learning• Data scienceVan informatie naar kennis
What’s in a name: Big data is nu sexy, datamining niet, over 2 jaar ….
Big Data sessie 23 maart 2015
Grip op (big) data
Uitdaging 1 Bigdata verwerkingstechnieken:• Hadoop• Map Reduce• NoSQL • Inmemory• Virtualisatie etc-> Andere cursus
Big Data sessie 23 maart 2015
Opkomst Big Data
Werkgebied BI
Data Informatie kennis
‘Big Data’
Uitdaging 2:Data analyse
DBData
warehousedatamarts
DB
Datamining engineData
marts
Knowlegde base
Big Data sessie 23 maart 2015
DWH en analytics
Big Data sessie 23 maart 2015
Ingredienten statistical learning
Machine Learning/Pattern
Recognition
Statistics/AI
Statistical Learning
Database systems
Big Data sessie 23 maart 2015
De driehoek van de BI-er
DS
Domein kennis
ScienceStatistics, Analytics
Big Data sessie 23 maart 2015
EngineeringDWH, Hadoop Java
Grip op alle data
• Grip op data; niet alleen big data
• Om big data betekenisvol te krijgen is analyse nodig. Technieken werken ook bij ‘gewone data’
Big Data sessie 23 maart 2015
Van datawarehouse naar datamining
Werk vooraf aan analyse
• Omgaan met missende waarden• Omgaan met duplicaten• Data voorbehandelen• Aggregatie/integratie
Big Data sessie 23 maart 2015
Vb. Omgaan met missende waarden
Strategiën:1. Negeren2. Handmatig invullen3. Vervangen door constante (bv
‘Onbekend’)4. Vervangen door gemiddelde5. Vervangen door gemiddelde van zelfde
klasse6. Vervangen door meest waarschijnlijke
waardeDatamining concepts and techniquesBig Data sessie 23 maart 2015
Data preprocessing
Werk dat wij (BI-ers) doen! Zijn wij goed in!!
Data op orde krijgen is vaak 50% van het werk bij data analyse
Big Data sessie 23 maart 2015
CRISP-DM
Breekt het proces van datamining in zes fases.
Big Data sessie 23 maart 2015
CRoss Industry Standard Process for Data Mining
Fases in datamining-project
• Business understanding• Data understanding• Data preparation• Modeling• Evaluation• Deployment
Big Data sessie 23 maart 2015
studiebronnencursus• Erasmus academie: masterclass grip op big data• Coursera: introduction to data science (gratis)
Boeken o.a.• Intro. to statistical learning with applications in R
by James e.a.• Data science for Business by Provost/Fawcett• Datamining, concepts and techniques by
Han/Kamber• Vele, vele anderen (gratis op het internet)
Big Data sessie 23 maart 2015
Mijn achtergrond
• Ik vind statistiek leuk en interessant• Lange tijd niets mee gedaan (veel vergeten)• Half jaar geleden weer begonnen• Ik houd van puzzelen
Big Data sessie 23 maart 2015
Deel 3 Overzicht statistische analyse
• Overzicht van verschillende methodes
• No free lunch! ->Afwegen welke methode het meest geschikt is
Big Data sessie 23 maart 2015
METHODEN
• Er bestaan heel veel methoden voor analyse van data
• Sommige heel eenvoudig• Sommige heel ingewikkeld • Het is niet zo dat er voor ieder probleem slechts
1 juiste methode bestaat. • Er bestaat geen methode die voor alle
problemen de oplossing is. Bovendien, voordat er gedacht kan worden over “de juiste methode”: Zonder goede vraag is het geven van een goed antwoord onmogelijk.
• Maar kennis van analytische methoden kan helpen de juiste vraag te stellen
Big Data sessie 23 maart 2015
Door meer te weten over analytische methoden, zul je beter in staat zijn “goede” vragen te formuleren.
Het is leuk!
Big Data sessie 23 maart 2015
Doel: weg vinden in het woudKunnen plaatsen van o.a. volgende termen
Univariaat bivariaat multivariaat supervised unsupervised trainingset testset statistiek gemiddelde standaardeviatie boxplot regressie classificatie desision trees neurale netwerken ensembles overfitting pruning Support Vector Machines clusteranalyse dimension reduction SPSS R accuracy precision recall nearest neightbor Bayes Discriminant Analyse etc.
Big Data sessie 23 maart 2015
Historie statistische analyse
Big Data sessie 23 maart 2015
jaar persoon ontwikkelingBegin 19e eeuw
GaussLegendre
Kleinste kwadraatLineaire regressie
1936 Fischer Lineaire discriminant analyse
+- 1940 diversen Logistieke regressie
1980 Opkomst niet lineaire methoden (dankzij computercapaciteit)Machine learning
1980 Opkomst DWH’s;
2010 Verdere toename hoeveelheid dataBig dataVerdere opkomst freeware R(democratisering van de data-analyse)
RProgrammeertaal voor statistische analyseGratis :http:/www.r-project.org/Veel tutorialsGebruikers delen hun code
Big Data sessie 23 maart 2015
Werken met R R in combinatie met R studio
Integraties R en andere tools (bv Tableau)
Taal/syntax redelijk ingewikkeld, zal wel makkelijker worden (democratiseren analytics)
Kennis van de algoritmes zal noodzakelijk blijven!
Big Data sessie 23 maart 2015
Big Data sessie 23 maart 2015
Werken met R• Packages beschikbaar• Data eenvoudig te laden• Printmogelijkheden (plotten)
R en big dataHadoop; packages RHadoop, Rhipe, SparkR
In-memory; package h2o MongoDB; packages rmongodb, Rmongo
http://www.rdatamining.com/big-data/r-hadoop-setup-guide
Big Data sessie 23 maart 2015
Big Data sessie 23 maart 2015
Soorten analyse
• Univariaat een enkele kansvariabele beschrijvende statistiek• Bivariaat twee kansvariabele verbanden tussen twee• Multivariaat meerdere kansvariabele verbanden tussen meerdere variabelen
Big Data sessie 23 maart 2015
Univariaat(Samenvatting statistiek)• Gemiddelde (meest gebruikte)• Mediaan• Standaarddeviatie• Normaalverdeling• Variantie• Boxplot
Big Data sessie 23 maart 2015
Gemiddelde, Mediaan, Modus• Gemiddelde de meest gebruikte meetwaarde
is erg gevoelig voor uitschieters. • Mediaan waarde van middelste, centrummaat• Modus waarde die meest voorkomt
Big Data sessie 23 maart 2015
Range, Variantie• Range is het verschil tussen de max. en de min.• De variantie / standaardeviatie; meetwaarde om
spreiding weer te geven.
Big Data sessie 23 maart 2015
Normaalverdeling
meest voorkomende continue verdeling
Big Data sessie 23 maart 2015
Of Gauss-verdeling door Carl Friedrich Gauss (+- 1920)
Visualisatie; box plot• Box Plots
– Uitgevonden door J. Tukey– Manier om verdeling in data weer te
geven – Following figure shows the basic part of a
box plot
outlier
10th percentile
25th percentile
75th percentile
50th percentile
10th percentile
Big Data sessie 23 maart 2015
R studio
Schermen opbouw R studio• Source en save• Console• Environment/History• Files/Plots/Package/Help/viewer
Big Data sessie 23 maart 2015
R Voorbeeld
Big Data sessie 23 maart 2015
Voorbeeld 1
Bivariate analyse• Twee dimensionale data• Univariaat: beschrijvend Bivariaat:
verklarend
• Visualisatie: scatterplot
Big Data sessie 23 maart 2015
RegressieStatistische techniek om samenhang tussen gegevens weer te geven.
Big Data sessie 23 maart 2015
Voor het eerst gebruikt door Francis Galton in +- 1870
Regressie en correlatieBij correlatie vergelijkt men de variaties van twee variabelen gemeten op interval- of ratio-niveau. De correlatiecoëfficiënt (R) is een maat voor het gezamenlijk variëren van twee variabelen
Bij enkelvoudige regressieanalyse stelt de onderzoeker eerst vast welke variabele afhankelijk is en welke onafhankelijk. Regressieanalyse veronderstelt dus causaliteit tussen de variabelen.
Big Data sessie 23 maart 2015
RegressieSamenhang wordt weergegeven in een functie.Enkelvoudig: Y = ax + bMeervoudig: Y = a1 x1 + a2 x2 + an xn + b
Het gaat om correlaties/verbanden weergegeven van 0 (geen verband tussen X en Y) tot1 (volledig verband)
Big Data sessie 23 maart 2015
Berekeningswijze Regressie
Gauss berekende er de baan van de pas ontdekte planetoïde Ceres mee
Big Data sessie 23 maart 2015
Kleinste kwadraatmethodeOntdekt door Gauss en Legendre (tegelijkertijd)
R Voorbeeld: regressie
Big Data sessie 23 maart 2015
Verschillende types attributen• Nominaal
Voorbeelden: ID nummers, oogkleur, codes• Ordinaal
Voorbeelden: rankings (b.v. smaak van chips op schaal van 1-10), graden, hoogte in {groot, medium, kort}
• IntervalVoorbeelden: kalender data, temperatuur in Celsius of Fahrenheit.
• RatioVoorbeelden: temperatuur in Kelvin, lengte, tijd, aantallen
Big Data sessie 23 maart 2015
Regressie bij dichotome variabelen
Big Data sessie 23 maart 2015
Wat als de verklarende variabelen dichotoom is?
Bijvoorbeeld: hangt bloeddruk af van het geslacht?Geen probleem. Eventueel dummy-waardes nodig
Kleur: rood-geel-blauw (dummy-waardes per kleur)
Nr Kleur Rood Geel blauw
1 Blauw 0 0 1
2 Rood 1 0 0
3 geel 0 1 0
Regressie bij dichotome variabelen
Big Data sessie 23 maart 2015
Continu: okDichotoom: okNominaal met meer dan twee categorieën: maak dummy’s (hulpvariabelen)Ordinaal: als er sprake lijkt van een lineaire trend: ok, anders dummy’s
Wat als verklaarde variabele dichotoom is:Dan lineaire regressie niet mogelijk, wel logistieke regressie (komt verderop)
Multivariate analyseRelaties tussen meerdere variabelen opsporen.
Big Data sessie 23 maart 2015
Twee groepen• Supervised learning • Unsupervised learning
Wat is Supervised learning?Er is sprake van een afhankelijke, te voorspellen variabele
Aan de hand van gegevens zoeken we een functie/algoritme die de gegevens (onafhankelijke variabelen) omzet naar een uitkomst “klasse”
Bv. welke klanten zullen niet in staat zijn hun lening af te lossen. (kijken naar bv leeftijd, geslacht, afkomst)
Y zo goed mogelijk schatten aan de hand van X
Big Data sessie 23 maart 2015
Test en trainingData wordt gesplitst in een • Training set• Test set
• Trainingset wordt gebruikt om functie te vinden
• Testset wordt gebruikt om vast te stellen hoe goed de functie het doet.
Big Data sessie 23 maart 2015
Test en training
Apply Model
Induction
Deduction
Learn Model
Model
Tid Attrib1 Attrib2 Attrib3 Class
1 Yes Large 125K No
2 No Medium 100K No
3 No Small 70K No
4 Yes Medium 120K No
5 No Large 95K Yes
6 No Medium 60K No
7 Yes Large 220K No
8 No Small 85K Yes
9 No Medium 75K No
10 No Small 90K Yes 10
Tid Attrib1 Attrib2 Attrib3 Class
11 No Small 55K ?
12 Yes Medium 80K ?
13 Yes Large 110K ?
14 No Small 95K ?
15 No Large 67K ? 10
Test Set
Learningalgorithm
Training Set
Big Data sessie 23 maart 2015
Wat is Unsupervised Learning?• Geen sprake van afhankelijke, te
voorspellen waarde
• We zoeken naar structuren/verbanden
• Bv. hoe (in welke groepen) kunnen we onze klanten onderverdelen
Big Data sessie 23 maart 2015
Wat is Unsupervised learning? 2• Proberen structuur te brengen in
ogenschijnlijk ongestructureerde gegevens
• Kan als aanzet dienen bij opstellen van verdere onderzoeksvragen.
• Maar dat hoeft niet
(voorbeelden later)
Big Data sessie 23 maart 2015
Supervised LearningRegressie voor meer variabelenMultiple regressie Y = a1 x1 + a2 x2 + an xn + b
Confounder: wat is de (echt) bepalende factor?
Big Data sessie 23 maart 2015
relatie studieuren en cijfer
Big Data sessie 23 maart 2015
Linear Regr ession
2, 50 5, 00 7, 50 10, 00 12, 50
s tu d ie u re n
5, 00
6, 00
7, 00
8, 00
9, 00c
ijfe
r
ci j f er = 7, 76 + - 0, 09 * st udi eurenR- Square = 0, 09
Hoe langer je studeert hoe lager je cijfer ??
Vooropleiding meegenomen
Big Data sessie 23 maart 2015
hoog laag
v o o ro p le id in g
2, 50 5, 00 7, 50 10, 00 12, 50
s tu d ie u re n
0, 00
4, 00
8, 00
12, 00
cij
fer
Confounder
Big Data sessie 23 maart 2015
• In beide groepen, gevormd op grond van de vooropleiding, is een positief effect van studie-uren op het cijfer
• Dit effect is in beide groepen ongeveer gelijk
• Als we geen rekening houden met de vooropleiding, schatten we het effect van studie-uren op het cijfer totaal verkeerd
• Vooropleiding wordt een confounder genoemd
Lineaire Regressie mogelijk?Regressie gaat uit van interval of ratio-nivoDe afhankelijke variabelen zijn continue van aard. Ook wel kwantitatieve analyse genoemd
Wat als afhankelijke variabelen nominaal of ordinaal zijn?Lineaire Regressie is dan niet mogelijk. Wel mogelijk zijn kwalitatieve analysemethodes
Big Data sessie 23 maart 2015
Logistieke regressieAlternatief: Logistieke regressieRegressie geschikt voor variabelen die dichotoom van aard zijn
niet de dichotome uitkomst zelf wordt gemodelleerd, maar de kans op die uitkomst. http://www.ru.nl/socialewetenschappen/rtog/tips/onderdelen/logistische/
Big Data sessie 23 maart 2015
R Voorbeeld logistieke regressie
Big Data sessie 23 maart 2015
Classificatieindelen of het van objecten, verschijnselen of processen in groepen op grond van overeenkomsten of verwandschap in eigenschappen of kenmerken
Waarden zijn niet kwantitatief, zoals bij regressie
Big Data sessie 23 maart 2015
Voorbeelden bij classificatie• Zegt een klant zijn abonnement op?• Wordt er gefraudeerd?• Krijgt een schip een ongeluk?
Hoe classificeren we de opzeggers, fraudeurs, zinkende schepen?
Big Data sessie 23 maart 2015
Classificatie technieken• Decision Tree methoden• Ensembles • Nearest neigthbors• Rule-based methoden• Discriminant analyse• Neurale netwerken• Naïve Bayes and Bayesian Belief Networks• Support Vector Machines
Big Data sessie 23 maart 2015
Vergelijken methodesRegressie is bv sterk vereenvoudigd, eenvoudig te schatten, eenvoudig te interpreteren, maar tamelijk beperkt.
Andere methodes zijn soms moeilijker te interpreteren maar voorspellen weer beter
Keuze bij methode:Trade-off tussen simplicity en accuracyInterpreteerbaarheid - Voorspelbaarheid
Big Data sessie 23 maart 2015
Interpreteerbaar - Flexibel
flexibiliteitlaag hoog
inte
rpre
trrba
arho
ogla
ag
Trees
Regressieanalyse
Bagging/boosting
Support vector machines
Big Data sessie 23 maart 2015
Model evaluatie
Big Data sessie 23 maart 2015
PREDICTED CLASS
ACTUALCLASS
C(i|j) Class=Yes Class=No
Class=Yes C(Yes|Yes) C(No|Yes)
Class=No C(Yes|No) C(No|No)
FNFPTNTPTNTP
dcbada
Accuracy
Beperkingen accuracyEr zijn bijvoorbeeld 2-klassen• aantal van klasse A = 9990• Aantal van klasse B = 10
Als een model altijd klasse A voorspelt, is de accuracy 9990/10000 = 99.9 %
-> Accuracy is misleidend omdat het model geen klasse B voorspelt (vb. Alle schepen zullen blijven drijven)
Big Data sessie 23 maart 2015
Andere maten
Big Data sessie 23 maart 2015
baa
caa
(r) Recall
(p)Precision
Precision: (aantal werkelijke positieven) /(totaal aantal voorspelde positieve)
Recall: (aantal werkelijke positieven) /(aantal werkelijke positieven + foute negatieven)
Decision trees• Intuïtief• Qua rekenwerk eenvoudig• Eenvoudig interpreteerbaar
• Voorbeeld: spelletje • Ik heb een beroemd persoon in mijn hoofd• Jullie mogen vragen stellen ik antwoord
alleen met ja of nee• Wat zijn goede vragen
Big Data sessie 23 maart 2015
Voorbeeld decision tree
Refund
MarSt
TaxInc
YESNO
NO
NO
Yes No
Married Single, Divorced
< 80K > 80K
Splitting Attributes
Training Data Model: Decision Tree
Tid Refund MaritalStatus
TaxableIncome Cheat
1 Yes Single 125K No
2 No Married 100K No
3 No Single 70K No
4 Yes Married 120K No
5 No Divorced 95K Yes
6 No Married 60K No
7 Yes Divorced 220K No
8 No Single 85K Yes
9 No Married 75K No
10 No Single 90K Yes10
categoric
al
categoric
al
contin
uous
class
Big Data sessie 23 maart 2015
Decision treesEssensiële vragen• Hoe bepalen welke variabelen we
gebruiken om te splitsen• Wanneer stoppen we met splitsen
Big Data sessie 23 maart 2015
Decision Trees: puurheid• Impurity• Maximale impurity: van iedere klasse
evenveel waarnemingen in een knoop• Minimale impurity: blad komt precies
overeen met een klasse
• We willen van impure naar pure • Maten voor impurity : bv. Gini,
EntropyBig Data sessie 23 maart 2015
Wanneer stoppen met opsplitsen
• Teveel splitsen : overfitting• werkt dan wel goed voor de
trainingsdata• Maar niet meer voor de testdata
• stopcriteria
Big Data sessie 23 maart 2015
R voorbeeld Decision trees
Big Data sessie 23 maart 2015
Ensembles van Decision Trees• Overfitting voorkomen -> snoeien• Gaat ook voorspelkracht achteruit
• Methode die goede voorspelkracht heeft en niet zo variabel
• -> essembles• Idee “wisdom of the crowds
Big Data sessie 23 maart 2015
Bootstrap• In plaats van 1 voorspeller , meerdere
• Bootstrap: meerdere steekproeven• Steekproeven gebruiken om tot
betere voorspeller te komen.
• Essemble van voorspellers
Big Data sessie 23 maart 2015
Bagging• Trek B bootstrap samples (bv 500)• Maak voor iedere sample een boom• Combineer de resultaten
• Dit heet Bagging (bootstrap aggragating)
• Andere methode: Random Forest
Big Data sessie 23 maart 2015
R voorbeeld random forest
Big Data sessie 23 maart 2015
Nearest neightbors• Basis idee
Als het er uit ziet als een eend en kwaakt als een eend dan is het waarschijnlijk een eend
Unknown record
Big Data sessie 23 maart 2015
Werkwijze– Bereken afstand tot andere training records
Euclidean distance – Identiceer k nearest neighbors – Label ze
Big Data sessie 23 maart 2015
Vgl lineair model en nearest neightbors
• k-NN classifiers zijn langszame leerders • NN- Modellen worden niet expliciet opgebouwd• Het linear model maakt veel assumpties over
de structuur van het probleem, maar is vrij stabiel
• Nearest neighbors is vrijwel assumptie-vrij,maar resultaten kunnen vrij instabiel zijn
• Beide methoden kunnen krachtiger zijn in verschillende settings door verschillende redenen
Big Data sessie 23 maart 2015
R voorbeeld nearest neightbors
Big Data sessie 23 maart 2015
Ruled based classificatie
R1: (Give Birth = no) (Can Fly = yes) BirdsR2: (Give Birth = no) (Live in Water = yes) FishesR3: (Give Birth = yes) (Blood Type = warm) MammalsR4: (Give Birth = no) (Can Fly = no) ReptilesR5: (Live in Water = sometimes) Amphibians
Name Blood Type Give Birth Can Fly Live in Water Classhuman warm yes no no mammalspython cold no no no reptilessalmon cold no no yes fisheswhale warm yes no yes mammalsfrog cold no no sometimes amphibianskomodo cold no no no reptilesbat warm yes yes no mammalspigeon warm no yes no birdscat warm yes no no mammalsleopard shark cold yes no yes fishesturtle cold no no sometimes reptilespenguin warm no no sometimes birdsporcupine warm yes no no mammalseel cold no no yes fishessalamander cold no no sometimes amphibiansgila monster cold no no no reptilesplatypus warm no no no mammalsowl warm no yes no birdsdolphin warm yes no yes mammalseagle warm no yes no birds
Big Data sessie 23 maart 2015
Discriminant analyseUit 1936 ! Door R.A. Fischer
Een beslissingsprocedure om van een nieuwe waarneming uit te maken bij welk van een aantal gegeven sets waarnemingen deze het beste past. In een eenvoudig geval is van elk van twee populaties een steekproef bekend. Van een nieuwe waarneming is weliswaar bekend dat deze uit een van de beide populaties afkomstig is, maar niet uit welke.
Big Data sessie 23 maart 2015
Neurale netwerken
-het knooppunt: Te vergelijken met het neuron in een menselijk brein.
-de koppeling: Te vergelijken met de verbindingen tussen deze neuronen
http://gekkoquant.com/2012/05/26/neural-networks-with-r-simple-example/
Big Data sessie 23 maart 2015
Een neuraal netwerk is in enige mate gebaseerd op de organisatie van het menselijke brein en de manier waarop de hersenen leren. Er zijn twee belangrijke structuurelementen in het neurale netwerk:
Neurale netwerken
Qua prestaties blijkt uit de literatuur dat neurale netwerken een grotere voorspelkracht hebben dan de klassieke statistische methoden als regressie- en discriminantanalyse, vooral indien de onderliggende relaties niet-lineair zijn. De prestaties van meer-geavanceerde statistische methoden zijn echter vergelijkbaar met die van neurale netwerken.
Big Data sessie 23 maart 2015
R voorbeeld neuraal netwerk
Big Data sessie 23 maart 2015
Naïve Bayes
Gebaseerd op theorema van Bayes: kans op gebeurtenis uitgedrukt in voorwaardelijke kansen bij elk van de mogelijkheden
Big Data sessie 23 maart 2015
Idee Bayes Bayesiaanse statistiek <-> Frequentische statistiek
Bayes gedachte:kennis uit het verleden toe passen om statistische voorspellingen te maken. Krijg je eerlijkere voorspellingen, die niet blind zijn voor de wereld naast de statistiek, zoals dat bij de gewone (frequentistische) statistiek wel is.
Big Data sessie 23 maart 2015
Bayes theorema : een voorbeeld
Big Data sessie 23 maart 2015
Gegeven: – Een dokter weet dat meningitis in 50% van de
gevallen nekpijn veroorzaakt– De kans dat een patient meningitis heeft is
1/50,000– De kans dat een patient nekpijn heeft is 1/20
• Als een patient nekkramp heeft, wat is dan de kans dat hij meningitis heeft?
0002.020/150000/15.0
)()()|()|(
SPMPMSPSMP
Voorbeeld Naïve Bayes: reumatestP(Z)=0,01 (kans dat iemand de ziekte heeft)P(+|Z)= 0,70 (de kans op een positieve uitslag als de ziekte aanwezig is)P(-|niet Z)=0,80 (de kans op een negatieve uitslag als de ziekte afwezig is)
P(Z|+) = P(+|Z)P(Z) . = 0,70x0,01 . P(+|Z)P(Z)+P(+|niet Z)P(niet Z) 0,70x0,01+0,20x0,99 = 0,034
Dus zelfs bij een positieve uitslag van de test is de kans dat de onderzochte persoon de ziekte heeft maar iets meer dan drie procent.
Conclusie: De "reumatest" is in deze situatie nagenoeg onbruikbaar.
Big Data sessie 23 maart 2015
Naïve Bayes - samenvatting• Robuust mbt afwijkende punten• Ontbrekende waarden zijn eenvoudig op te
vangen• Maakt sterke veronderstellingen:
Onafhankelijkheid, Continue data met normale distributie(preprocessing vaak noodzakelijk)
Big Data sessie 23 maart 2015
Voorbeeld Bayes
Big Data sessie 23 maart 2015
Support Vector Machines• Bedacht in jaren 60 (Vapnik)
• Methode van data classificeren• Binair classificeren in een
vectorruimte
Big Data sessie 23 maart 2015
Support Vector Machines
Big Data sessie 23 maart 2015
Doel : scheidslijn vinden om data te scheiden
Support Vector Machines
Een mogelijkheidBig Data sessie 23 maart 2015
B1
Support Vector Machines
Big Data sessie 23 maart 2015
B2
Een andere mogelijkheid
Support Vector Machines
Welke is beter? B1 or B2?Hoe definieer je wat beter is?
Big Data sessie 23 maart 2015
B1
B2
Support Vector Machines
Support Vectors: Punten die door de ‘dikke lijn’geraakt worden
Big Data sessie 23 maart 2015
Unsupervised LearningGeen sprake van afhankelijke, te voorspellen waarde. We zoeken naar structuren/verbanden. Geen voorspellingen. We zoeken bijvoorbeeld naar gelijksoortige groepen.
Voorbeelden:• Clusteranalyse• Dimensie reductie
Big Data sessie 23 maart 2015
Clusteranalyse
Observaties in “homogene” groepen indelen
Zoek naar clusters van waarnemingen die gelijksoortig zijn en interpreteer de clusters door te kijken naar de verschillen/overeenkomsten m.b.t. geobserveerde variabele waarden in de verschillende clusters.
Big Data sessie 23 maart 2015
Clusteranalyse
Big Data sessie 23 maart 2015
Soorten:• Hierarchisch• K-means
Hierarchische Cluster Analyse• Beschouw iedere waarneming als een cluster• Bereken de afstanden tussen alle clusters• Voeg clusters die het dichts bij elkaar liggen
samen• Ga door tot er één cluster over is (of een van te
voren bepaald aantal)
Er zijn verschillende maten om de afstanden te bepalen- Euclidisch, Minkowski, Manhattan, Cosine en vele andere
Big Data sessie 23 maart 2015
Hierarchische clusering
Big Data sessie 23 maart 2015
p4 p1
p3
p2
p4p1 p2 p3
Traditional Hierarchical Clustering Traditional Dendrogram
K-means
• Bij hierarchische clustering moeten de afstanden tussen alle punten berekend worden
• Kan snel een probleem worden• Partieel clusteren is hiervoor een oplossing:
K-means
Big Data sessie 23 maart 2015
K-means• Ieder cluster heeft een centroide
(gemiddeld punt in een cluster• Idee: voeg waarnemingen toe aan het
cluster wiens centroide het dichtst bij zit• Maar centroide hangt af van de punten in
het cluster
Big Data sessie 23 maart 2015
Clustering: K-meansAlgoritme1. Maak k clusters (wijs punten bijvoorbeeld
willekeurig toe aan 1 van de k clusters2. Bereken voor ieder punt de afstanden tot
de k cluster centroides. Wijs punten toe aan dichtstbijzijnde cluster
3. Je hebt nu nieuwe clusters. Bereken daar weer de centroides bij en ga terug naar stap 2. Herhaal tot er niets meer veranderd.
Big Data sessie 23 maart 2015
Cluster analyse: aantal clusters• Hoe bepalen we hoeveel clusters we zoeken?• Bij hierarchische clustering kun je het hele
dendogram bekijken en daarop je keue baseren• Bij K-means moet je aangeven hoeveel clusters
• Kies de maat van de ‘cluster kwaliteit’ . Bereken die maat voor verschillende K en kijk welke K optimaal is
• Cluster kwaliteit: bv variantie binnen clusters moet klein zijn. Variantie tussen de clusters moet groot zijn.
Big Data sessie 23 maart 2015
ClusteranalyseSSE-methodeVoor verschillende waarde van K berekenen we de som van de gekwadrateerde afstanden (SSE)
Andere methode : Calinski-Harabasz(kijkt naar de variantie tussen de clusters)
Big Data sessie 23 maart 2015
R Voorbeeld Cluster analyse
Big Data sessie 23 maart 2015
Dimensie reductie• Als er heel veel variabelen zijn dan is het
lastig om middels eenvoudige statistiek het overzicht te behouden
• Kleinere set van variabelen wenselijk• Dimensie reductie methoden zoeken naar
zo’n kleinere set
Big Data sessie 23 maart 2015
Dimensie reductie• Methode om een (liefs klein) aantal
samengestelde variabelen te vinden die de data goed beschrijven
• Voorbeeld methode: Principale component analyse (PCA)
PCA = zoeken naar laag-dimensionele presentatie van de observatiesClustering = zoeken naar homogene subgroepen
Big Data sessie 23 maart 2015
Voorbeeld inleiding Rn<-15 #waarde wordt toegekend aan variabele nn # laat n zien, [1] betekent: het eerste element5->n # anderso kan ooknn<-2+10 #optellenn<-rnorm(1) # random variabele met gem. 0 n #komt (random) dus steeds andere waarde uit?rnorm # hulp over rnorm
x <- c(3, 7, 10, 20) # definieren van een vector xmean(x) # gemiddeldemedian(x) # mediaansqrt(x) # wortely <- x^2 # we definieren een vector yx # laat x zieny # laat y ziencor(x,y) # correlatie tussen x en yboxplot(x) # mediaan, 1e en 3e kwartiel (mediaan van 1e en 2e helft) # kleinste en grootste waarnemingplot(x, y, main="Scatterplot Example", xlab="x as", ylab="y as", pch=19)summary(x) # allerlei statistische gegevens over x
Big Data sessie 23 maart 2015
#dubbelen verwijderenx2 <- c (1 , 1, 1, 2, 2, 2, 3, 3, 3, 3)duplicated (x )x2 <- x[! duplicated (x )]x2
#normaalverdelingx <- rnorm(50); y <- rnorm(50) #random normhist(x, main="histogram") boxplot(x, main="boxplot")text(0,5,"histogram") # print "histogram" in het punt (0,5)plot(x,y,main="figuur 1")
qqnorm(x, main="qq-plot") # qq-ploty <- 0:30plot(y, dbinom(y, 30, 0.25), type = "h")
Voorbeeld packages# voorbeeld laden packagesinstall.packages('party') # package installerenlibrary(party) # party laden# irisdataset, bevat 150 irissen die behoren tot drie soorten# Setosa, Versicolor en Viginica# Irissen zijn beschreven adhv vier eigenschappen# lengte en breedte van bloemblaadjes(petal) en kelkblaadjes (sepal)str(iris) # iris laten zien, structuursummary(iris) # belangrijke gegevens table(iris$Species)pie(table(iris$Species))var(iris$Sepal.Length) # variatie in lengtehist(iris$Sepal.Length) # normaalverdeling lengte
Big Data sessie 23 maart 2015
Voorbeeld regressieyear <- rep(2008:2010, each = 4)quarter <- rep(1:4, 3)cpi <- c(162.2, 164.6, 166.5, 166, 166.2, 167, 168.6, 169.5, 171, 172.1, 173.3, 174)plot(cpi, xaxt = "n", ylab = "CPI", xlab = "")axis(1,labels=paste(year,quarter,sep="Q"), at =1:12, las =3)cor(year,cpi) ##serke correlatie jaar en cpicor(quarter,cpi) ##minder sterke corr. quarter en cpifit <- lm(cpi ~ year + quarter) # lineair modelfitcpi2011 <- fit$coefficients[[1]] + fit$coefficients[[2]] * 2011 + fit$coefficients[[3]] * (1:4)cpi2011 ##voorspellen 2011##3d plotlibrary(scatterplot3d)s3d <- scatterplot3d(year, quarter, cpi, highlight.3d = T, type = "h", lab = c(2, 3)) # lab: number of tickmarks on x-/y-axess3d$plane3d(fit) # draws the fitted plane
Big Data sessie 23 maart 2015
Voorbeeld logistieke regressie# voorbeeld logistieke regressielibrary("MASS")data(menarche) str(menarche) # str geft structuur van de datamenarche # leeftijd, totaal aantal meisjes, leeftijd eerste mens.summary(menarche)plot(Menarche/Total ~ Age, data=menarche) # plot %dat menache heeft gehad , 1 = 100%# voorbeeld log. regressie# lineair verband tussen leeftjd en menstruatieleeftijd# uitkomst is dichotoom per indivdu (wel/niet), vandaar geen lin.regressie mogelijk
glm.out = glm(cbind(Menarche, Total-Menarche) ~ Age, family=binomial(logit), data=menarche)#logit -> logistieke regressielines(menarche$Age, glm.out$fitted, type="l", col="red")title(main="Menarche Data with Fitted Logistic Regression Line")# lijn volgt heel goed de puntensummary(glm.out)
Big Data sessie 23 maart 2015
Voorbeeld Decision Treetree.modelmy.prediction <- predict(tree.model, test.set)my.predictioninstall.packages('tree')library(tree)plot(tree.model)text(tree.modelrpart.tree <- rpart(Species ~ ., data=train.set)plot(rpart.tree, uniform=TRUE, branch=0.6, margin=0.05)text(rpart.tree, all=TRUE, use.n=TRUE)title("Training Set's Classification Tree")
predictions <- predict(rpart.tree, test.set, type="class")table(test.set$Species, predictions)confusion<-table(predictions,irisdata)yprediction
plot(iris$Petal.Length, iris$Petal.Width, main="Edgar Anderson's Iris Data"))
test_sample = sample(1:150, 50)test_data = iris[test_sample, ]training_data = iris[-test_sample, ]fit_tree = tree(iris.type ~ ., data = training_data)test_predictions = predict(fit_tree, test_data, type = "class")test_error = sum(test_predictions != test_data$iris.type)/nrow(test_data)test_errorBig Data sessie 23 maart 2015
str(iris)irislibrary("party")iris_ctree <- ctree(Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width, data=iris)print(iris_ctree)plot(iris_ctree)fancyRpartPlot(iris_ctree, cex=.7)
predict<-predict(iris_ctree,type="prob")irisdata<-irisy<-irisdata$typeconfusion<-table(predict,y)confusionirisdatapredict
table(predict())
set.seed(101)alpha <- 0.7 # percentage of training setinTrain <- sample(1:nrow(iris), alpha * nrow(iris))train.set <- iris[inTrain,]test.set <- iris[-inTrain,]train.settest.settree.model <- tree(Species ~ Sepal.Width + Petal.Width, data=train.set))
Voorbeeld random forest# split into two subsets: training (70%) and test (30%)ind <- sample(2, nrow(iris), replace=TRUE, prob=c(0.7, 0.3))train.data <- iris[ind==1,]test.data <- iris[ind==2,]# use all other variables to predict Specieslibrary(randomForest)rf <- randomForest(Species ~ ., data=train.data, ntree=100, proximity=T)table(predict(rf), train.data$Species)print(rf)plot(rf, main = "")importance(rf)varImpPlot(rf)irisPred <- predict(rf, newdata = test.data)table(irisPred, test.data$Species)plot(margin(rf, test.data$Species))
Big Data sessie 23 maart 2015
Voorbeeld Nearest Neightbors## voorbeeld nearest neightbors# 3 punten in klasse AA1=c(0,0) A2=c(1,1) A3=c(2,2) # 3 punten in Klasse B B1=c(6,6)B2=c(5.5,7) B3=c(6.5,5)# bouwt de classificatietrain=rbind(A1,A2,A3, B1,B2,B3)plot(train) # laat de punten zien in een plotcl=factor(c(rep("A",3),rep("B",3)))#kijken bij welke klasse een punt valttest=c(4,4)library(class)# call knn() and get its summarysummary(knn(train, test, cl, k = 1))# valt dus in klasse b, (daar staat 1)# ander punt testen, dat in a blijkt te vallentest=c(3.5, 3.5)summary(knn(train, test, cl, k = 1))
Big Data sessie 23 maart 2015
Voorbeeld Neural Networksinstall.packages('neuralnet')library("neuralnet")
#Maken van een neural network dat vierkantswortel berekend#Type ?neuralnet voor meer info
#Genereer 50 random nummers uniform gedistr. tussen 0 and 100#en bewaar het als een dataframetraininginput <- as.data.frame(runif(50, min=0, max=100))trainingoutput <- sqrt(traininginput)
#Column bind the data in een variabeletrainingdata <- cbind(traininginput,trainingoutput)colnames(trainingdata) <- c("Input","Output")
#Train het neurale network#10 hidden layers#Threshold is a numeric value specifying the threshold for the partial#derivatives of the error function as stopping criteria.net.sqrt <- neuralnet(Output~Input,trainingdata, hidden=10, threshold=0.01)print(net.sqrt)
#Plot het neurale networkplot(net.sqrt)
#Test neural network met trainingsdatatestdata <- as.data.frame((1:10)^2) #Generate some squared numbersnet.results <- compute(net.sqrt, testdata) #Run them through the neural network
#Lets see what properties net.sqrt hasls(net.results)
#zie resultatenprint(net.results$net.result)
#Lets display a better version of the resultscleanoutput <- cbind(testdata,sqrt(testdata), as.data.frame(net.results$net.result))colnames(cleanoutput) <- c("Input","Expected Output","Neural Net Output")print(cleanoutput)/
Big Data sessie 23 maart 2015
Voorbeeld Bayesinstall.packages("e1071")library(e1071)# bouwen van naiveBayesdata(iris)# m <- naiveBayes(Species ~ ., data = iris)m <- naiveBayes(iris[,-5], iris[,5])mtable(predict(m, iris), iris[,5])
Big Data sessie 23 maart 2015
Voorbeeld Clusteranalyse# voorbeeld clusteringset.seed(8953) # random nummer generatoriris2 <- iris# remove class IDsiris2$Species <- NULL# k-means clustering met 3 clustersiris.kmeans <- kmeans(iris2, 3)# check resultaatiris.kmeans # 3 clusters met grootte 38,50 en 62table(iris$Species, iris.kmeans$cluster)# plot clusters and their centers
# resultaat laat zien dat cluster “setosa” eenvoudig te scheiden is van andere clusters,# en dat clusters “versicolor” en “virginica” licht over overlappen
plot(iris2[c("Sepal.Length", "Sepal.Width")], col=iris.kmeans$cluster)points(iris.kmeans$centers[, c("Sepal.Length", "Sepal.Width")], col=1:3, pch="*", cex=5)
#hierarchische clusteringidx <- sample(1:dim(iris)[1], 40)irisSample <- iris[idx,]irisSample$Species <- NULLhc <- hclust(dist(irisSample), method="ave")plot(hc, hang = -1, labels=iris$Species[idx])irisSample
Big Data sessie 23 maart 2015
BoekenAanraders
Technisch• An introduction to statistical learning with R / James e.a. Voor managers• Data science for business / Provost e.a.Over relatie met DWH• Datamining concepts and techniques / Han e.a.
• Introduction to data sience / Coursera university• Bayesiaanse statistiek in de rechtspraak / Jenneke IJzerman• Neurale netwerken versus statistische methoden: een vergelijking /
Huizingh e.a.
Alles gratis op het internet!!
Big Data sessie 23 maart 2015