If you liked this...

 Computer, Matematik  Comments Off on If you liked this...
Oct 062013
 

Hvordan finder et website ud af, hvad der interesserer DIG på basis af andres likes eller anbefalinger? Problemet er ikke trivielt. Der er mange måder at gøre det på og mange af dem der anvendes derude, på websites, er forkerte.

Problemet kan anskues på denne måde: Et website sælger widgets og gadgets. Når folk har bestilt noget, vil ejeren gerne foreslå kunden at købe et andet produkt ved siden af, som er anbefalet af tidligere kunder. Kunder har mulighed for at tilkendegive "positiv" eller "negativ" anbefaling af deres køb og der er masser af data til rådighed i salgsdatabasen. Hvilke produkter skal firmaet anbefale til sine kunder?... tænke, tænke.. Ejeren tager et møde med IT-afdelingens statistiker.

1. ide: "Produktet med fleste positive "likes" må være det bedste", foreslår ejeren. "Svaret er desværre FORKERT", siger statistikeren, og her er hvorfor. Antag at widget B har 10000 anmeldelser (både positive og negative) hvoraf 4500 er positive. Widget A derimod har 100 anmeldelser hvoraf 80 er positive. Det vil sige at A får positive anmeldelser i 80% af tilfældene, mens B kun får positive anmeldelser i 45% af tilfældene. På trods af dette vil denne logik anbefale widget B til kunden.

2. ide: Ejeren tænker sig om siger "Så må det være procenten af positive anmeldelser, der giver et korrekt billede.." Svaret er desværre OGSÅ forkert", svarer statistikeren. Antag at Widget C har 99 positive anmeldelser ud af 100, mens D har 2 positive anmeldelser ud af 2. Widget C har klart de bedste anbefalinger men widget D vinder fordi den tilfældigvis endnu ikke har fået en eneste negativ anmeldelse. Firmaets statistiker fortsætter "Denne model er en maximum likelihood estimator (MLE) og den er stærkt afhængig af at der er et tilstrækkeligt antal anmeldelser på alle produkter for at give et sikkert grundlag for beregningen og anbefaling af produkterne."

3. ide: "OK", siger ejeren, "vi lever af de nye produkter så det er vigtigt at vi får dem med så godt som muligt. Kan vi lave noget der korrigerer for at nye produkter kun har meget få anmeldelser?". "Vi kan bruge en Laplace estimator", siger statistikeren, "her tager vi hensyn til både de opsamlede data OG korrigerer resultatet for mulige positive og negative anmeldelser. "OK, lav et eksempel" afbryder ejeren, der har det som om hans hoved er ved at eksplodere med statistik. Statistikeren fortsætter "MLE  udtrykkes ved sandsynligheden p = s / n hvor s er antallet af positive anmeldelser og n er det samlede antal anmeldelser. Laplace estimatoren korrigerer ved til det samlede antal observationer n at tillægge én af hver mulige udfald. Da der i dette tilfælde kun er to muligheder - en positiv eller en negativ anmeldelse - bliver Laplace estimatoren p´ = (s+1)/(n+2)". Statistikeren laver en tabel.

Widget A B C D
Likes (s) 80 4500 99 2
Total (n) 100 10000 100 2
p =s/n [MLE] 80/100=80% 4500/10000=45% 99/100=99% 2/2=100%
p´=(s+1)/(n+2) [Laplace] 81/102=79,4% 4501/10002=45% 100/102=98% 3/4=75%

"Laplace estimatoren rangordner bedst, men et konfidensinterval ville være bedre", siger statistikeren. "Widget A og D har 79% henholdsvis 75% score, men vi kan faktisk beregne et tal der angiver 95% sandsynlighed for, hvad produktets score er. Jeg tror du skal tage en kop kaffe mens jeg skriver Wilsons formel op."

{{1}\over{1+{{1}\over{n}}z^{2}_{\alpha/2}}}*[\hat{p}+ {z^{2}_{\alpha/2}\over{2n}} \pm z_{\alpha/2}*\sqrt{([\hat p(1-\hat p)+z^{2}_{\alpha/2}/4n]/n)} ]

"Denne formel", fortsætte statistikeren, "angiver et konfidensinterval for scoren for hvert enkelt produkt og kan beregnes. \hat{p} er andelen af positive anmeldelser, z_{\alpha/2} er (1-\alpha/2) kvartilen af en standard normalfordeling, og n er det totale antal observationer." Statistikeren fortsætter tabellen. "Et estimat på scoren er således ganske forskellig, især for widget D, der har så få anmeldelser indtil nu".

Widget A B C D
p´=(s+1)/(n+2) [Laplace] 81/102=79,4% 4501/10002=45% 100/102=98% 3/4=75%
95% konfidensinterval nedre værdi 71% 44% 95% 34%

Tal og bogstaver danser foran ejerens øjne. "OK, implementér det, med mindre det koster en bondegård i ekstra computere og databaser", sluttede han. "Will do", svarer statistikeren, "jeg ændrer koden sammen med vores SQL-ekspert."

Efterskrift
Disse beregninger kan nemt implementeres i et database udtræk og præsenteres i den korrekte rangorden efter mest sandsynlige positive anbefaling. Dette rejser dog et nyt problem, nemlig om nye kunder (som gennemsnit betragtet) har de samme præferencer som de kunder som hahandlet før. Eller sagt på en anden måde : Vil f.eks. en kunde fra Odense have de samme præferencer som en kunde fra København? Er der forskel mellem mand og kvinde? og så videre og så videre. Dette nærmer sig BIG DATA analyse og jeg håber jeg kan få tid til at angribe dette ved en anden lejlighed.

*** Noter ***

Ranking af definitioner på ordet "lily" på urbandictionary.com - 6/10/2013

rank Pos neg pos-neg p interval Wilson rank
1 3196 426 2770 88 % 90-87 % 2
2 3071 1257 1814 71 % 74-68 % 3
3 1752 853 899 67 % 72-63 % 5
4 1322 515 807 72 % 78-65 % 4
5 819 42 777 95 % 98-87 % 1
6 1230 577 653 68 % 76-59 % 7
7 1049 446 603 70 % 80-59 % 6

Det ses tydeligt at urbandictionary.com benytter model 1 (pos-neg). Bemærk 5.position der har positive tilkendegivelser i 95% af tilfældene og har det højeste interval, men altså ligger langt nede på listen...

Referencer:

1. This post was inspired by information from evanmiller.org. I am also indebted to Mr. Millers kind email correspondence on details in his blog.

2. Binominal proportion confidence interval(Wikipedia). Wilsons formel og andet vedr. estimering på binominale fordelinger.

Opdateringer

08 oktober 2013. opdaterede sidste tabel med konfidensintervaller.

Verdens mindste computer?

 Computer, Digitalt  Comments Off on Verdens mindste computer?
Apr 302013
 

I denne og et par efterfølgende posts vil jeg beskrive designet for det der måske er verdens mindste computer. Specifikationerne er små og få, og ligeså er de komponenter der skal til at bygge den. Selv om der måske kun er begrænset anvendelighed for denne computer vil den ikke desto mindre give et godt indblik i, hvordan computerlogik konstrueres. Jeg vil også med afsæt i dette komme ind på, hvordan (silicium baserede) computere ikke skaber information, men kun kan smide information væk... Underligt som det nu kan lyde er dette ganske nyttigt alligevel og jeg vil drage nogle paralleller til hvordan vores hjerne (carbon-computeren) virker.

Specifikationerne for designet er -

  • 3 bit input - 1 databit og 2 bit til instruktionen
  • 3 bit output - 1 databit og de resterende 2 bit output bruges til et instruktionsregister. Mere herom senere.
  • 4 unikke instruktioner til at manipulere input med og generere output.
  • Logikken kan bygges med 2 (to!) stk integrerede kredse - 1 stk 2-input NAND chip og 1 x 3-input NAND chip. Strømkreds, input givere og output givere er ikke med i designet men skulle kunne laves enkelt af de fleste.

Hvad er en computer?
Definitionen fra wikipedia er passende i denne henseende:

"A computer is a general purpose device that can be programmed to carry out a finite set of arithmetic or logical operations."

Vi vil kigge på de logiske operationer der kan komme på tale med vores 1-bit computer, og se hvorfor termen "finite set" (endeligt antal) er vigtigt.

Da vi har 1 bit at gøre godt med (input = 0 eller 1) er spørgsmålet hvad vi kan gøre med denne information? Jeg vil sætte 4 systemer op og vise at dette er de eneste 4 systemer der er mulige, dvs vi har et endeligt antal logiske operationer. I det efterfølgende vil jeg benævne input bits med bogstaver a,b,... I 1-bit computerens tilfælde har vi kun input på a. Output benævnes med f.

  • Uanset hvilket input a er givet, smid tallet væk og sæt output f = 0. Vi vil kalde denne model S(0) af årsager der bliver klar om lidt.
  • Hvis a=0, sæt f=1 og hvis a=1, sæt f=0. Vi kalder denne model S(1). Dette svarer til den logiske operation f=NOT(a).
  • Sæt f=a. Vi kalder denne model S(2). Dette svarer til en simpel overførsel af input bitten til output.
  • Uanset hvilket input a er givet, smid tallet væk og sæt output f = 1. Vi kalder denne model S(3).

Dette er de eneste 4 systemer der kan laves med en 1-bit computer! Lad mig stille tallene lidt anderledes op, så det ses hvorfor.

input
a   1 0
Model S(x)  Output Operation
S(0) f= 0 0 f=0
S(1) f= 0 1 f=NOT(a)
S(2) f= 1 0 f=a
S(3) f= 1 1 f=1

Tallene i venstre kolonne svarer til værdien af det binære tal til højre udtrykt i vores 10-talssystem. Givet der kun er 1 bit til rådighed til input (a=0 eller a=1) ses det umiddelbart at der ikke er andre operationer der kan producere andre unikke output, end dem der allerede er skrevet her.

Uden at komme nærmere ind på detaljerne kan det siges at disse logiske operationer forholdsvist nemt kan implementeres med diskrete komponenter.

  • S(0) implementeres ved at trække output f til Nul i en strømkreds.
  • S(1) implemeteres ved at sende input a gennem en inverter til output f.
  • S(2) implementeres ved at sende input a gennem en buffer til output f.
  • S(3) implementeres ved at trække output f til V+ i en strømkreds.

Problemet med disse systemer er dog at de er hardwiret til at udføre én og kun én logisk operation. Det ville være mere praktisk, hvis vi kunne bygge en computer der kan udføre alle 4 forskellige operationer. Det er muligt og det vil jeg beskrive i næste post.

 

 

 

Internetcensur i Danmark. Og hvorfor det ikke virker.

 Computer, Medier  Comments Off on Internetcensur i Danmark. Og hvorfor det ikke virker.
Apr 202013
 

 

I Danmark er ytringsfriheden sikret gennem Grundlovens §77, men på trods af dette er adgang til visse medier på internettet blokeret. Dermed er dansk praksis i samme liga som f.eks. Kinas, hvor hjemmesider (udenfor Kinas grænser) blokeres af den kinesiske regering fordi de ikke kan lide dem af den ene eller anden grund, eller det der gives udtryk for på disse sider.

§ 77. Enhver er berettiget til på tryk, i skrift og tale at offentliggøre sine tanker, dog under ansvar for domstolene. Censur og andre forebyggende forholdsregler kan ingensinde påny indføres.

Jeg vil her forklare lidt om baggrunden for denne praksis, hvad den danske stat evt. ønsker at 'beskytte' os fra,  og hvorfor det ikke virker, fordi enhver med et minimum af teknisk viden kan omgå blokeringerne. Den danske praksis ender derfor med kun at være en hindring for almindelige brugere, og ikke en måde at forhindre adgang til ulovlige websites af den ene eller anden karakter. Jeg vil straks gøre det klart at dette indlæg IKKE er en opfordring til ulovligheder på nettet, men udelukkende et forsøg på at vise, hvorfor den danske fremgangsmåde kun har negative effekter for almindelige netbrugere og ikke kan forhindre nogen som helst i at tilgå et blokeret website, hvis de skulle have disse hensigter.

Internetkontrollen (censur) i Danmark sker vha. såkaldt DNS-blokering. DNS-blokering svarer i korte træk til, at hvis man forsøger at ringe til et bestemt telefonnummer, stilles man via sit telefonselskab om til en telefonsvarer der siger at abonnenten ikke kan nås, fordi vedkommende har lavet noget ulovligt. Hvis man forsøger at gå ind på en internetside, der er DNS-blokeret vil man tilsvarende f.eks. få følgende meddelelse, der kommer fra internetudbyderen og ikke fra det søgte website:

 

STOP

TDC har spærret for adgangen til www.thepiratebay.se. Retten har ved fogedforbud af 9. juli 2012 pålagt Telenor at hindre sine kunders adgang til ovennævnte side, da der på siden formidles adgang til materiale, der krænker ophavsretten. På baggrund af denne kendelse har TDC i overensstemmelse med aftale i Teleindustrien spærret for adgangen til siden. TDC har ikke foretaget nogen registrering af dit besøg på denne side.

TDC

 

Tre emner trækkes ofte frem når der tales om internetblokering, og selv om blokeringen har et ædelt formål, virker den danske DNS-blokering ikke, fordi enhver med ønsket om at omgå blokeringen kan gøre dette på mindre end fem minutter. Lad os først se på det, som DNS-blokeringen forsøger at forhindre og derefter hvorfor det ikke virker.

  • Download og deling af opretshavsligt materiale.  Thepiratebay.se er blokeret fordi dette website har været brugt som server og deling af musik/film der har været opretshavsligt beskyttet. Jeg har fuld forståelse for at kunstnere skal have penge for at andre nyder deres kunstværker. Problemet er i denne sammenhæng dog at thepiratebay.se også har masser af ANDET indhold der ikke er ulovligt kopieret og uploadet. Hvis man som mig er interesseret i 3D-printerteknologi resulterer DNS-blokeringen i at jeg ikke kan få adgang til alle de filer og designs der er lagt ud til deling fuldt lovligt af andre, der også er interesseret i 3D-printerteknologi.
  • Børnepornografisk materiale. Der bør efter min mening gøres noget MEGET MERE EFFEKTIVT ved dette problem end at indskyde et filter, der kan omgås på fem minutter. Rigspolitiet og organisationen Red Barnet er indgået i et samarbejde om at blokere et antal af sites, der indeholder (potentielt) børnepornografisk materiale. Problemet med denne tilgang er dog tydelig:
    (1) Det pornografiske materiale er stadig tilgængelig for personer der ikke befinder sig bag en dansk internetudbyder. Børnene er derfor ikke beskyttet for yderligere fornedrelse ved at andre kan kigge på materialet. Det svarer lidt til at stikke hovedet i sandet og tro at problemet er forsvundet. Desuden har harddisken.dk i et program dokumenteret, hvorledes private aktører har formået at lukke flere sites i løbet af få dage, end politiet har formået over flere måneder.
    (2) Registret over blokerede sites administreres af Rigspolitiet og er ikke offentligt tilgængeligt. Et website kan tilføjes til listen uden rettergang eller domsfældelse. En liste over 3863 blokerede sites er tilgængelig på wikileaks og altså ikke hemmelig længere. Det er mindst én gang sket at Politiet uberettiget har lukket for et website og måtte undskylde for det bagefter.
    (3) Med mindre man mener at vores skandinaviske medmennesker i Norge og Sverige er mere interesserede i børnepornografisk materiale, er der noget helt galt med filteret. Tilsvarende filtre i Norge og Sverige blokerer henholdsvis 10000 og 20000 henvisninger hver dag (2005 tal). I danmark blokeres dagligt 2700 forsøg på tilgang til blokerede sider (tal fra 2008).
  • Formidling af (ulovlig?) medicin på nettet. Lægemiddelloven §7 giver kun ret til forhandling og udlevering af medicin i Danmark med en markedsføringstilladelse. Uden markedsføringstilladelse er det forbudt at forhandle og udlevere medicin. Det første eksempel på blokering af et udenlandsk webfirma der sælger medicin er dokumenteret. Som for de to andre eksempler ovenfor har DNS-blokering ingen som helst effekt overfor personer der skulle have til hensigt at skaffe f.eks. anabolske steroider eller andre medikamenter uden recept. Hvis man er villig til at løbe risikoen ved at sælge eller anvende dopingmidler er man sandsynligvis fuldstændig ligeglad med at man 'overtræder' et fogedforbud mod at besøge en udenlandsk webside... Desuden resulterer en ukritisk blokering af et helt website naturligvis også i, at det ikke er muligt at bestille andre (fuldt lovlige) varer fra websitet, og dette er (efter min mening) en hindring af varernes fri bevægelighed og derfor i strid med EU-lovgivningen.

Hvor er vi på vej hen?
Den danske praksis er flere steder kritiseret for at være en glidebane til blokering af f.eks. poker- og andre gamblingsites udenfor dansk lovgivning.

DNS-blokering er sågar anvendt i en fogedretssag mod et website ved navn www.homelifespain.com, fordi mæglerkæden Home åbenbart mener det er en varemærkeovertrædelse at anvende ordet "home"...  Fogedretten har udstedt krav om at internetudbyderen Telenor (og dermed indirekte alle andre udbydere i Danmark) blokerer for adgang til denne side.

Hvorfor er den danske DNS-blokering virkningsløs?
Jeg påstod ovenfor at enhver med et minimum af teknisk viden på mindre end 5 minutter kan omgå den danske DNS-blokering. Jeg vil her skitsere 3 måder. Da det jo ikke er med hensigt at opfordre til ulovligheder er dette ikke en teknisk How-To vejledning.

  1. Installer og brug din egen DNS-server. selv om det måske er lidt for avanceret for de fleste, er der intet til hinder for at installere en DNS-server på en computer i stedet for at anvende internetudbyderens DNS-server. Dette kan desuden spare dig for et par millisekunder, hver gang der skal slås op i DNS-tabellen (hvilket kan ske mange gange på en enkelt side ved fx. sider fyldt med billeder, reklamer, trackers, bots og andet 'spam'). At køre sin egen DNS-server sikrer naturligt også imod udfald ved en tredieparts  DNS-server.
  2. Anvend en tredjeparts DNS-server der ikke er kontrolleret af en dansk internetudbyder. Denne mulighed ligger lige for, hvis man har adgang til at rette i computerens/browserens internet settings. Google public DNS er én af disse services, openDNS er en anden. Der er desuden performance og sikkerhedsrelaterede grunde til at overveje at skifte fra internetudbyderens DNS-service til en anden, så dette er absolut én ting der er nyttigt at overveje. Hvis man ikke har administratoradgang til computeren kan der dog være policies der forhindrer én i at lave disse ændringer.
  3. Anvend en TOR-browser fra en USB-disk. Tor-projektet (kort for The Onion Ring) har Tor Browser Bundle, der sikrer brugerens anonymitet på nettet ved at omdirigere internettrafikken mellem et netværk af Tor-servere. Det er derfor umuligt for internetudbyderen at se, hvor computeren befinder sig og DNS-blokering er ikke relevant. TOR er udviklet af US Navy med det formål at beskytte regeringens kommunikation. For andre (aktivister, journalister, firmaer etc der ikke ønsker at kunne spores) forefindes de samme muligheder for internet anonymitet. Tor er baseret på Firefox browseren så de fleste vil finde denne ganske lig andre browsere at anvende.
    I sagens natur må ip-adresserne på Tor-netværket være tilgængelige for brugerne af systemet, og visse lande gør alt for at begrænse adgangen til Tor-netværket. Der foregår en kontinuerlig kamp mellem totalitære stater og aktivister der f.eks. ønsker at skaffe eller tilvejebringe information om menneskeretsovertrædelser. Jo flere der anvender Tor, desto sværere vil det være for dem, der praktiserer censur, at forhindre det. Ud fra et ideologisk synspunkt kan det derfor være fornuftigt at overveje om man skal være del af dette projekt og hermed hjælpe andre folk, der i endnu større grad end danskere er udsat for internetcensur.

 

 

Datavisualisering - Piecharts

 Computer, Statistik  Comments Off on Datavisualisering - Piecharts
Feb 102013
 

I to foregående posts har jeg beskrevet hvorledes scatterplot og barchart anvendes til at visualisere sammenhænge mellem data. I denne post vil jeg beskrive Piechartet, der er ideelt til at vise procentvise fordelinger mellem data.

Lad os fortsætte med det oprindelige datasæt. Målet var at undersøge om der er en sammenhæng mellem boligareal og huspris. Med et piechart bevæger vi os nu væk fra dette oprindelige mål. Et piechart er ikke godt til at vise sammenhænge mellem forskellige data (boligareal og huspriser) men er derimod velegnet til at vise fordelinger af en enkelt variabel, f.eks. boligarealer i dette eksempel.

Datasæt huspriser

Vi inddelte tidligere de 17 datapunkter i 4 kategorier og beregner nu den procentvise fordeling i kategorierne. Det ses at data i histogrammet og piechartet har en del til fælles, faktisk er den procentvise fordeling i dette piechart beregnet direkte på baggrund af histogrammet vist tidligere.

Piechart. Pivottabel data

Piechart. Huse til salg

Konklusion.
Et piechart er enkelt at beregne og giver et hurtigt og effektivt overblik over relative forhold mellem data (%). Samtidig må vi også indse at vi har flyttet os længere væk fra vores oprindelige data (som vist på scatterplot). Dette er prisen for at abstrahere data.

Et andet eksempel hvor piecharts er rigtig gode er f.eks. visualisering af stemmeprocenter ved et valg. Her tabes der ikke meget information ved at omregne stemmetal til procent, faktisk er det netop stemmeprocenten, der er vigtig.

 

 

 

Datavisualisering - Barcharts

 Computer, Statistik  Comments Off on Datavisualisering - Barcharts
Feb 102013
 

I en foregående post om Scatterplots viste jeg en enkel teknik til at se om der er sammenhæng mellem data. I denne post ser vi på barcharts som en vej til at filtrere støj ud som oftest ses på et scatterplot. Hvis du bruger ca. 5 minutter på læsning af denne post vil du have tilegnet dig endnu et nyttigt redskab der kan anvendes til ganske mange ting – og forfine de resultater du har opnået ved anvendelse af scatterplots.

I et barchart samles datapunkter i kategorier og der regnes på gennemsnitsværdier. Derved vil "tilfældig støj" i data til en vis grad elimineres (+ går ud mod -) og trends eller sammenhænge kan nemmere ses. Der er dog visse farepunkter at tage vare på - dem behandler jeg senere i denne post. Lad os fortsætte med det oprindelige datasæt. Målet var at undersøge om der er en sammenhæng mellem boligareal og huspris.

Datasæt huspriser

Vi inddeler de 17 datapunkter i 4 kategorier og beregner gennemsnit(note 1) i kategorierne således

kategori range (m2) huse gennemsnit pris
1 114 - 141,75 id#1; 2.496.000kr
2 141,75 - 169,5 id#8;id#6;id#10;id#3; 4.021.000kr
3 169,5 - 197,25 id#2;id#13;id#5;id#4;id#17;id#15;id#16;id#9; 5.196.000tkr
4 197,25 - 225 id#11;id#7;id#14;id#12; 2.496.000kr

 

barchart huspris vs boligareal

Sammenlignes med det tidligere scatterplot  (her) ses følgende:

  1. Grafen er nu mere simpel og overskuelig. Dette er sket på bekostning af at vi har poolet data i overordnede kategorier. Derved har vi filtreret en del af støjen fra, men samtidig har vi afskåret os fra at se en del af informationen vi havde i vores scatterplot.
  2. Grafen underbygger kun delvist at der er en vis sammenhæng mellem pris og boligareal. De største huse (197 - 225 m2) sælges gennemsnitligt billigere  end husene i den lavere kategori (169 - 197 m2). Der er altså stadig indikation af at andre faktorer som f.eks. beliggenhed eller udsigt har indflydelse på prisen.

Farepunkter
Når man laver et barchart på basis af datapunkter er der et antal spørgsmål man må overveje. Disse er:

1. Spørgsmål: Hvor mange kategorier skal jeg lave? Svar: Datasættets omfang skal afspejles i antallet af kategorier. Hvis der vælges for få kategorier går der for meget information tabt. Hvis der vælges for mange kategorier risikerer man at få for meget støj med (for få datapunkter i hver kategori). Et fornuftigt udgangspunkt er at tage kvadratroden af antallet af datapunkter. Dvs. har man 25 datapunkter kan man lave 5 kategorier (5*5=25). Har man 100 datapunkter kan man lave 10 kategorier (10*10=100). 

2. Spørgsmål: Hvor placerer jeg grænsen mellem kategorierne? Svar: Lad data bestemme. Med mindre der er helt åbenbare grunde til at køre med faste intervaller f.eks. 0-20-40-60-80-100, så kig på data. I ovenstående eksempel varierer boligarealet fra 114 til 225 m2. Dette er dermed de ydre grænser. Kategoriernes bredde er (225 - 114 ) / 4 = 27,75 (der er 4 kategorier). Det er meget sandsynligt at der ikke kommer lige mange datapunkter i hver gruppe - det gør ikke noget.

3. Spørgsmål: Hvordan beregner jeg "gennemsnit" i en kategori? Svar: Generelt ville jeg tage det aritmetisk gennemsnit. Dvs. for kategori  2 er gennemsnits huspris = (4.145.000 + 3.995.000 + 4.295.000 + 3.650.000) / 4 = 4.021.000 kr (afrundet til 1000kr). Der er alternativer, fx. at tage medianen (note 2).

Bonusinformation
Histogram. Huse til salg
Afslutningsvis vil jeg nævne et helt specielt barchart, nemlig histogrammet. Et histogram er en simpel optælling af emnerne i de forskellige kategorier, som vist på grafen. Jeg vil overlade til læseren at kontrollere at dette histogram stemmer med det oprindelige datasæt (øverst).

Noter

Note 1. Ordet gennemsnit skal tages lidt løst her. Se note 2.

Note 2.  Medianen er det midterste tal i en ordnet serie. F.eks. er medianen af 114,145,153 = 145 da dette er det midterste tal (definitionen på en median). Hvis der er et lige antal punkter tages gennemsnittet af de to midterste (medianen af 114,145,153,167 er (145+153) / 2 = 149). Medianer er i visse tilfælde at foretrække fordi de er mere robuste overfor datafejl: Medianen af (100,102,103,104,1005) er 103, selv om 1005 sandsynligvis er en fejl. Regnes med aritmetisk gennemsnit fås (100+102+103+104+1005)/5=282,8 hvilket hverken er fugl eller fisk.

 

Datavisualisering - Scatterplots

 Computer, Statistik  Comments Off on Datavisualisering - Scatterplots
Feb 102013
 

Denne post er tænkt som første del til indføring i grundlæggende teknikker til at beskrive data. Målet er at give en basis for at kunne angribe større og mere interessante teknikker f.eks. indenfor området "Big Data". Hvis du bruger ca. 5 minutter på læsning af denne post vil du have tilegnet dig et nyttigt redskab der kan anvendes til ganske mange ting -  f.x. afvise åbenlyse fejlagtige påstande i medierne! Jeg benytter excel til at vise eksempler her, men teknikken er så simpel at du faktisk kan nøjes med et stykke ternet papir og en blyant. Så lad os begynde med et simpelt eksempel.

Jeg har lavet et udtræk af huse til salg i området Veddelev, Roskilde. Huspriserne varierer og jeg er interesseret i at vide hvorfor - specifikt om der er en sammenhæng mellem husets boligareal og dets salgspris. Desuden har jeg medtaget andre parametre der kan være interessant at undersøge:

Datasæt huspriser

Skærmbillede 2013-02-10 kl. 12.54.11
Et scatterplot er en simpel grafisk præsentation af et datasæt i to dimensioner - og y. Jeg var interesseret i at få svar på om der er en sammenhæng mellem boligarealet og husets pris. Et scatterplot for dette ser ud som vist til højre. Bemærk enkeltheden - ingen linier mellem datapunkter eller andet 'støj', bare datapunkter. Vi ser der er en vis trend i data, dvs. husprisen stiger med stigende boligareal. Der er derimod også nogle punkter der stikker markant ud fra trenden, fx. hus nr. 17 i tabellen øverst med en pris på 8,495 mio kr for 'kun' 183 kvm. Dette kan også ses i kvm-prisen på 46.420 kr/m2 der er 75% højere end gennemsnittet på 26.548 kr/m2. Der må derfor være andre faktorer der influerer på prisen (f.eks. beliggenhed eller udsigt.

Skærmbillede 2013-02-10 kl. 13.34.42Som et afsluttende eksempel lad os se om vi kan se en lignende sammenhæng mellem antallet af værelser og husprisen. Et scatterplot af husprisen vs. antallet af værelser som vist til højre giver ikke nogen umiddelbar indikation af at der skulle være en sammenhæng mellem antallet af værelser og husets pris. Jeg vil overlade det som en øvelse til dig, læser, at overbevise dig selv om at der ikke er nogen sammenhæng mellem grundarealet og husprisen, eller vej-nr og huspris.

Konklusion: Et scatterplot er et nyttigt redskab til hurtigt at give en idé om, hvorvidt der er en sammenhæng mellem  to observerede variable.

Refleksion: Tænk over hvilke teorier/påstande  du har hørt/læst i dag og spørg dig selv om der er data der kan understøtte dette eller evt. affeje det.

Data-abstraktion

 Computer  Comments Off on Data-abstraktion
Jan 202013
 

Data og systemer er overalt og omgiver os i hverdagen. I denne post vil jeg behandle begrebet "data-abstraktion" ud fra en overordnet systembetragtning. Formålet med dette er

  1. At give et værktøj der kan anvendes til analyse af stort set alle typer 'systemer'.
  2. At anvise en metode til 'data-abstraktion' der giver en større indsigt og kontrol over systemet, set i forhold til ikke at anvende data-abstraktion.

Et eksempel. Når du fx skriver en huskeseddel til indkøbsturen i supermarkedet er mælk, smør, tandpasta, servietter,... dine data. Hvis du kan abstrahere dine data indtil noget større (kategorier) der passer med supermarkedets inddeling har du vundet noget: Du kommer hurtigere gennem din huskeseddel.
Andet eksempel. Du har et antal opgaver du skal nå på en dag. Du har ikke tid til dem alle, og at skippe nogle koster mere eller mindre (Penge, goodwill, anything). Hvis du kan se alle opgaverne 'oppefra på een gang' kan du se hvilke opgaver det tjener dig bedst at udføre og hvilke du skal ligge. Vi gør alle dette ubevidst mere eller mindre hver dag når vi har flere opgaver end tid.

Så hvad er dataabstraktion? Lad os starte med at definere et system. Et system i denne betragtning har følgende komponenter:

  • Struktur. Dette er systemets (fysiske) udformning, samt de regler der beskriver systemet. Et eksempel er en fabrik bestående af et antal tanke, reaktorer osv. samt de forskellige måder råmaterialer kan behandles på, i den ene eller anden systemkomponent. Reglerne er fysiske/kemiske love, og andre fx produktionsrecepter. Et retssystem er også en form for system der vil kunne behandles ud fra samme metodik. Her er reglerne de love og paragraffer der nu engang er gældende indenfor det gældende retssystem. Et computerprogram er et system der består af procedurer og funktioner med skarpt definerede regler.
  • Data. Data er input til strukturen og behandles iht strukturens regler. Data kan være veldefinerede - fx. et antal kg råvarer der skal blandes til et færdigt produkt i en fabrik. Data er forudsigelige fordi de er under vores kontrol (recepten er kendt). Data kan også være uforudsigelige (vilde data) - fx. antallet af patienter med øjenskader og brækkede ben på en given dag på en skadestue.  Selv om vi har et empirisk grundlag for at tale om et gennemsnitligt antal patienter kan vi ikke sige noget om, hvor mange patienter der helt konkret kommer ind næste søndag. Vi kan dog simulere data der ligner hvad vi tror er sandsynligt (Note 3).
  • En uafhængig variabel. For analyse af et system anvendes oftest tid som uafhængig variabel, fordi vi ser at ting forandrer sig over tid. Dette er imidlertid ikke nogen særlig egenskab af tid som sådan, men nærmere en måde at karakterisere hændelser på, så vi mennesker kan skabe orden i kaos.(note 1). 'Tid' kan også være forskellige procestrin i en reaktion, eller en sekvens af beskeder til et kommunikationssystem, eller de enkelte instruktioner der eksekveres i et computerprogram.

Det væsentlige i denne betragtning er at data og dets interaktion med strukturen kan visualiseres på en fornuftig måde (note 2). Dette er forudsætningen for at vi kan kontrollere data hvilket er næste skridt for at forstå data. Når vi forstår data kan vi designe systemet til at gøre det vi gerne vil, bedre, hurtigere, effektivere.

Lad os betragte et konkret eksempel, fx. en klinik der behandler et antal sager (fx. blodprøver, kiropraktiske patienter eller andet)

  • Vi vælger arbejdsdag som uafhængig variabel.
  • Struktur: Hver arbejdsdag kommer en antal sager til klinikken. Der er ansat et antal behandlere på klinikken. Reglen er at disse behandlere hver især kan behandle én sag per arbejdsdag. Vi vil i første omgang se bort fra tabsfunktioner - efterfølgende introducerer jeg en tabsfunktion der nedsætter den ansattes effektivitet afhængig af nogle parametre vi kan stille på.
  • DataAntallet af sager er ukendt (en vild parameter) men antages at ligge mellem 1 og 11 sager per dag. Målet er at alle sager klares samme dag de kommer ind, men grundet variationen i antallet af indkomne sager er det acceptabelt at der er minimum 75% kapacitet på klinikken, dvs. 75% af sagerne kan klares samme dag. Evt manglende sager kan antages løst ved outsourcing eller andet. Hvor mange behandlere skal der være på klinikken for at kunne håndtere et givet gennemsnit af sager per dag?

Vi kunne analysere systemet og dets output ved fx. at rulle terninger for at se hvor mange behandlere der skulle være på arbejde næste uge, notere hvor mange sager der kommer ind, og hvor mange sager der behandles på en given dag. Dette vil give os et datagrundlag bestående af et antal observationer (en per arbejdsdag) der viser hvor godt klinikken var ift dets mål. Sikkert ikke særlig informativt og næppe brugbart til at forudsige hvad der sker hvis forudsætninger ændres i fremtiden. Vi må abstrahere data for på en anden måde at få en større forståelse for dynamikken i systemet.

Vi abstraherer nu ved at gå et niveau op ift. data og regler og kigger på alle kombinationer af indkomne sager og antal af behandlere på een gang (tabellen nedenfor). Studerer vi tabellen ser vi fx. at hvis der er én behandler ansat kan hun klare 100% af dagens opgaver hvis der kommer én sag per dag. Er der to sager per dag kan hun nå 50% af opgaverne, dvs der er 50% kapacitet. Ved mere end én sag per dag må der ansættes en ekstra behandler. Med to behandlere ansat falder kapaciteten under målet (75%) ved 3 sager per dag. Der må ansættes en ekstra ansat, osv osv. Ved 11 sager per dag er det tilstrækkeligt med 9 ansatte, dette giver en kapacitet på 82% hvilket er tilstrækkeligt ift. målsætningen.

dataabstraktion_001

Jeg introducerer nu en tabsfunktion F=B^-(k1), hvor B er antallet af ansatte behandlere og k1 er en konstant, se tabellen nedenfor. k1=0,10 er valgt i dette eksempel. Ved én ansat er effektiviteten 1 - personen arbejder 100% effektivt. Ved to ansatte er effektiviteten faldet til 0,93 - hver behandler er altså kun 93% effektiv målt i forhold til én behandler. Dette er ikke et ukendt fænomen, fx. at personer går i vejen for hinanden eller venter på at udstyr som bruges af andre skal blive ledigt. Effektiviteten af den enkelte behandler falder jo flere behandlere der er ansat. For at nå målsætningen (75% ved 11 sager) skal der ansættes 11 behandlere. Der er altså behov for 2 flere end i eksemplet ovenfor.
dataabstraktion_002

I næste eksempel ændres tabsfunktionen til F=B^-(k2*B), hvor k2 er en konstant (her k2=2). Dette er udtryk for at effektiviteten falder endnu hurtigere end før. Igen er dette ikke et ukendt fænomen - fx ses det ofte at jo flere der er i en afdeling, desto mere tid skal der bruges på at holde hinanden orienteret, koordinere opgaver og lignende. Denne tidsrøver bliver større og større jo flere der er at koordinere med.

Denne simple model giver imidlertid nogle uventede resultater som man umiddelbart IKKE ville opdage uden at abstrahere data som gjort her. Det viser sig i dette konkrete eksempel at det under visse omstændigheder ikke længere kan betale sig at ansætte flere behandlere. Gevinsten ved at ansætte flere ædes op alene af den grund at tabsfunktionen er for 'agressiv'! Ved elleve sager per dag er den optimale besætning 13 behandlere der resulterer i 61% kapacitet, men der kan ikke vindes noget ved at ansætte flere behandlere. Tværtimod vil kapaciteten gå ned ved ansættelse af mere personale (note 4).

dataabstraktion_003

Hvad har vi lært?

  1. Dataabstraktion giver os et værktøj til at kigge på hele datasæt på én gang i stedet for at kigge på enkelte observationer.
  2. Dataabstraktion kan give os information som vi ikke umiddelbart ville få ved at kigge på enkelte observationer (tabsfunktionens indflydelse; og dens konsekvenser for systemets output)
  3. Med den større forståelse kan vi dernæst 'tunnellere' tilbage til lavere abstraktionsniveau og udtale os om hvordan vi styrer systemet optimalt (her antallet af behandlere).

noter.

For en grundig gennemgang af emnet anbefales det også at læse Bret Victors essay The ladder of abstraction, som har været inspiration til dele af denne post. Bret er ekstremt cool. Tjek Brets website!

note 1: Vi kan fx se at et æg der koger i vand bliver stift efter et stykke tid. Der er imidlertid intet som helst til hinder for at ægget skulle blive råt igen, det er bare meget usandsynligt og skyldes termodynamikkens love. Tidens retningspil er i bund og grund ikke andet end et mål for at størrelsen af 'uorden' (entropi) stiger. Når ægget bliver stift er det et udtryk for at mængden af 'uorden' i æggets bestanddele er steget. At ægget ikke returnerer til 'råt' igen når det tages op af gryden er udtryk for at det er meget usandsynligt at æggets bestanddele skulle finde tilbage til en tilstand med højere orden og mindre entropi.

note 2: 'visualisering' af data skal tages bredt - en omsætning af data til musik eller farveprikker på et stykke papir kan være den bedste løsning for et givet problem.

note 3: Hvis empiriske data ikke er tilgængelige er det bedste alternativ at konstruere et datasæt. Dette er dog behæftet med den risiko at vi ubevidst fravælger input vi ikke kan forestille os (You don't know what you don't know). Hvis nogen havde haft fantasi til at forestille sig hvad der ville ske ved jordskælvet/tsunamien i Sendai, Japan, 2011, havde risikoanalysen ved atomkraftværket sikkert set helt anderledes ud.

note 4: Dette er ikke et ukendt fænomen. Fx oplever man ofte i projekter eller grupper at effektiviteten (midlertidigt) falder ved hyring af nye projektmedarbejdere. Dette er et konkret eksempel hvor der tabes mere ved at skulle lære nye op end der vindes ved at hyre dem ind.