Sunday, September 4, 2011

Testning av en klusteralgoritm

Jag pratade med @mattiasostmar igår om olika metoder för att skapa klustrande algoritmer. Här kommer en något text med något högre detaljnivå på temat:
Något som är viktigt om man gör det, är givetvis att inte överoptimera algoritmen för ett visst resultat som man själv ”vill ha”, utan att ha en metodik som minimerar risken för detta.

Ett enkelt sätt som man kan göra det på är att dela upp sina testdata i tre grupper, grupp A, grupp B och grupp C. Viktigt där är att grupp C ska vara stor, så att man kan få resultat som är signifikant.

Den första gruppen, den använder jag aktivt i min testning. När jag ser utfall, då skruvar jag på min algoritm hur mycket jag vill. Jag testar, skruvar, testar, skruvar, tills jag är nöjd med mitt resultat. Grupp A kan vi kalla experimentdata.
När jag går till grupp B däremot, då ska jag egentligen vara rätt så klar med min algoritm. I den gruppen kanske jag kan skruva något litet, för att få bort en överoptimering, men inte mer än så.

Grupp C, det är den gruppen med data som avgör vad jag presenterar för pricksäkerhet för kunden. Om jag har ett stort antal klassificeringar, där min data klassificeras i olika grupper, så kikar jag på varje grupp och och ser hur ofta min algoritm gjorde rätt. Om vi har n tester för grupp n, där jag har 80% rätt, så hämtar jag min gamla Mathematics handbook och slår upp vad det blir för signifikans på det hela. Målet där är ju att kunna skriva ”80%+-4%” eller något liknande.
:-)

1 comment:

Mattias Östmar said...

Tack för detta Mattias! Kruxet för mig är att jag gjort som James W Pennebaker (www.liwc.net) vid utvecklandet av metodiken, dvs jag har ingen förutbestämd sak att förutspå som gör det lätt att kolla om det blivit "rätt". Ta tex om du har data på kön och ålder från bloggare (som de själva skrivit in) och sedan använder texter från dem för att träna upp en klassificerare, då kan du ju testa på andra texter där du ka ta reda på åldern.

Jag tänker mig att utmaningen är att hitta tex omnämnanden av X är BETYDLIGT vanligare i kategori Y, etc - dvs det handlar i så fall om att förutspå attention/intresse snarare än att beskriva kvaliteter hos individen.

Har du några tankar kring hur detta kan göras?