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.

Sorry, the comment form is closed at this time.