August 26, 2011
Pinlige fejl med sandsynlighedsregning
Sandsynlighedsregning er noget det er meget nemt aldrig at blive rigtig god til. Det vanskelige ved det er at de sandsynligheder man regner sig frem til er helt umulige at regne videre med. Hvis man vil svare på et andet spørgsmål, må man tilbage til den situation man regner på, stille udfaldsrummet, altså den beskrivelse af hvad der kunne ske op igen, og så tænke det nye spørgsmål man vil stille sig selv ordentlig igennem ud fra det.
Nogle gange er det enkelt nok, man kan nøjes med at tænke på det tilfældige fænomen man ser på som terningkast, og så er der nogle banale regneregler man kan bruge, men det bryder hurtigt sammen.
De fleste ved godt at hvis sandsynligheden for at slå en sekser med en terning er \(\frac{1}{6}\), så er det ikke rigtigt at man skal slå terningen seks gange og så er man sikker på at få en sekser. Hvis man vil finde sandsynligheden skal man istedet tilbage udgangspunktet. Det er lidt besværligt at beskrive de udfald hvor man har slået mindst én sekser - men heldigvis er det nemt at beskrive dem hvor man ingen seksere slår, altså det komplementære udfald. Der er \(\frac{5}{6}\) sandsynlighed for ikke at slå en sekser. Og det skal man lykkes med 6 gange i træk, uafhængigt af hinanden (<- uafhængigt er det vigtige ord), så sandsynligheden for det er \(\frac{5^{2}}{6^{2}} = \frac{25}{26} \) så sandsynligheden for mindst én sekser er \(\frac{11}{36} = 0.3\).
Et klassisk overraskende stykke trivia i den retning er den med at hvis man har en gruppe på 23 mennesker, så er det mere sandsynligt at to af dem har fødselsdag samme dag på året, end af ingen af dem har. Der er 365 dage på et år, det virker ikke intuitivt at man allerede rammer ind i den samme to gange, når man er 23 samlet, men sådan passer et regnestykke, der minder meget om det med sekserne ovenfor*. Hvis jeg husker rigtigt er det forresten derfor at 23video.com hedder 23.
For at demonstrere hvor nemt det er at sige noget dumt, og for i mit matematikblogprojekt med det samme at demontere deres højtærede blogger som ufejlbarlig superekspert, vil jeg meget gerne henlede opmærksomheden på en tanketorsk af de virkelig store, jeg lavede for et stykke tid siden i en blogpost. Jeg tog lige præcis en pivforkert antagelse om hvad det var eksperimentet præcis gik ud på, kollapsede fejlagtigt til en terningkastmodel, og kom frem til noget vanvittig forkert. Følg linket for at læse hvorfor. Og forvent endelig flere fejl i fremtiden.
* Det komplementære resultat går her på at ingen deler fødselsdag. Lad os trække de 23 ud, en efter en. Den første er nem, vi har ingen fødselsdage på lager, så vi rammer ikke nogen. Den næste er der en sandsynlighed på \(\frac{364}{365}\) for vi ikke har set. Nr 3 må ikke have én af de to førstes som sin fødseldag så der er sandsynligheden \(\frac{363}{365}\). Hvis vi ganger disse sammen og fortsætter til 23 får vi sandsynligheden 0.49 - så sandsynligheden for at ingen deler fødselsdag er altså den mindste.
Sandsynligheden for at en bestemt af de 23 deler sin fødselsdag med en anden er selvfølgelig langt mindre. Det svarer helt til regnestykket med 6-eren, bare med en 365 sidet terning, og de andre to skal bare alle slå én af de andre værdier, så sandsynligheden for at ingen deler din fødselsdag er \(\frac{364}{365}^{22} = 0.94\) altså meget tæt på 1.
August 17, 2011
Matematikaften
Attention readers: Math posts on this blog will be in Danish.
Min skolematematik er superrusten. Jeg har ikke brugt matematik systematisk til noget i et tiår, og det betyder at jeg er kommet helt ud af vanen med at arbejde længe på ternet papir med en blyant og underlige tegn som \( \forall, \exists, \in, \infty, \nabla \) og hvad de nu allesammen hedder. Det er spild af gode skills, navnlig nu hvor computere er blevet så hurtige at det er nemt at lave matematik på dem. Engang skulle man f.eks. med besvær compile dokumenter der har den slags tegn i sig - nu kan jeg have dem med her ved bare at skrive en blogpost.
For at give mig selv en opgave at lave matematik på har jeg bestemt mig for et par ting. For det første er onsdag aften udnævnt til matematikaften. For det andet vil jeg forsøge at skrive nogle blogposts om forskellige matematiske emner, sådan at jeg har en grund til at minde mig selv om hvordan det hele hænger sammen. For det tredje er den dybere plan at koncentrere mig om at genlære de ting jeg kan bruge på computeren; så det bliver med fokus i retning af maskinlæring og algoritmer - eller bredere på dataanalyse, som er en vigtig disciplin i vækst.
Det kommer altsammen til at foregå her, mest på onsdage, fremover.
May 29, 2011
A short exercise in hacking and mashing PDFs
A while back I found W. Ross Ashbys Introduction to Cybernetics online as a PDF, but formatted 2-up for printing, which makes it a really bad read on the Kindle. I needed to de-n-up it. But how to. Ghostscript is able to limit the viewport on the synthetic output device pdfwrite to one page - but that only got me all the left pages.
Googling for PDF tools is about as frustrating as googling for antivirus or spamfilters - very, very spammy, tons of bad half-solutions and workarounds for people like me who don't want to pay for Adobe's tools.
After a while I found out how to fix it without downloading anything at all, as long as you're on a Mac. Here's how:
- Crop the pdf to left/respectively right pages only. You can do this with preview - select the right/lift page. Load the inspector (in Tools) and find the crop-tab. Crop and save as leftpages.pdf, then open the original and do the right pages as rightpages.pdf
- REALLY crop the pdf. What you just did only defined some metadata in the PDF that tells viewers which part of the pdf to show. This breaks down a little later in this workflow, so you need to actually cut the pdf. You can do this using Ghostscript (which I might have installed by hand using macports, I forget)
gs -g4210x5950 -sDEVICE=pdfwrite -sOutputFile=realrightpages.pdf -dUseCropBox=true -dBATCH -dNOPAUSE -f rightpages.pdf
The 4210 and 5950 are the width and height, respectively in pixels - for this pdf, this mac and this install of ghostscript there are 10 pixels to a point - and you can read off the point dimensions in the inspector in preview. - Interleave left and right pages using the automator.
- Open Automator
- Start a new workflow
- Drag your files to the workflow windows, left pages first
- In the PDF tasks, find "Combine PDFs" and choose "shuffling" mode, which takes pages from first file and second file alternately
- You're done!
May 3, 2011
New control opportunities
Just wanted to share a little proof of concept of Sinatra + Websockets + Applescript for browser based UI to anything on your Mac.
You need to
sudo gem install thin em-websocket sinatra rb-appscript
or something like that. Then you probably need to have iTunes running, but given these you should be able to run this ruby script, go to http://localhost:5000 in your browser and search for your iTunes music.
I used the well rounded appscript tools to figure out how to control iTunes.
March 17, 2011
Machine Learning study group in Copenhagen
We just ended the founding meeting of a Machine Learning Study Group here in Copenhagen. We're planning to meet approximately once a month to discuss machine learning algorithms. In between meetings there's a Facebook group where we hang out and discuss our current pet machine learning problems and a Google Docs repository of machine learning resource (still to come).
Here's how we're going to run the group: The goal is to get smarter about machine learning. We're narrowing down on a couple of stacks we care about. Big data using databases - we're going to have a look at Madlib for Postgresql. Or something based on Map/Reduce. Some of us occasionally work in Processing using OpenCV - which is neat, because it's also a good choice on the iPhone/in XCode/Openframeworks.
Some of us are probably going to be looking at Microsoft Solver Foundation in C# at some point. Some of us might be looking at implementing algorithms for one of these environments if no one else has.
We'll be building out our knowledge on configuring and setting up these stacks. The idea is for everyone to work on a pet problem with a machine learning element. We'll share our ideas on how to proceed, share how to approach the stack of software.
The typical approach to a machine learning problems involves
- Identifying the problem - figuring out where machine learning is relevant
- Working out how to get from problem to symbols - i.e. how to turn the data inherent in the problem into input for the textbook algorithms. As an example, in image processing this means coming up with some useful image features to analyze, and figuring out how to compute them efficiently. This can be really tricky, and we expect a lot of the discussions in the group will be about building out our skills in this area.
- Picking the best algorithm - we'll be studying the core algorithms. Not necessarily implementing them; but learning about what they mean - and how they behave
Just to give a little landscape: The founder members are primarily interested in the following spaces of problems: Image analysis - with a little time series analysis of sensor data thrown in for interactive fun - and "big data", running machine learning algorithms on web scala data.
If you're into this problem space, and this style of working - project driven, collaborative and conversational - feel free to join. If there's simply something you'd like to be able to do with a computer, feel free to join as well - maybe one of the more technical hangers on will take an interest in your idea and start working on it.