Syntetisering Aareg
Data for syntetiseringen var hentet fra AAREG.T_MOTTAK_OPPSUMMERINGSDOKUMENT
.
Generering av data
Produksjon av syntetiske testdata for AAreg ble gjort i to faser:
- Syntetisering
- Generering av historikk
I første steg ble det lagd en syntetisk versjon av basisdata, og i steg to ble denne syntetiske dataen brukt som et grunnlag for å generere historikk.
Algoritme: CRNN
AAreg syntetisering
Syntetisering av arbeidsforhold ble gjort i R ved bruk av Synthpop, og resultatet skrevet til CSV-filer.
Det er tre typer arbeidsforhold som måtte håndteres hver for seg, da hver type arbeidsfoldhold har forskjellige kolonner/felter og må syntetiseres sammen. De tre arbeidsforholdene er:
- Ordinært Arbeidsforhold
- Forenklet Oppgjoersordning
- Maritimt Arbeidsforhold
De aller fleste forholdene var Ordinære, og veldig få av de to andre.
I forkant av syntetisering av arbeidsforholdene ble det gjennomført en anonymisering, hvor virksomheter ble byttet ut med offentlige arbeidsgivere og arbeidstakere byttet ut med syntetiske identifikasjonsnummer. Dette førte til at disse kolonner ikke syntetiseres med Synthpop da de allerede var “syntetiske”. Resten av kolonnene syntetisertes med sample-metoden i Synthpop. Maritime arbeidsforhold inneholdt informasjon om fartøy, mer spesifikt Skipsregister, Skipstype og Fartsområde, og disse feltene syntetisertes slik at avhengigheten mellom de tre feltene ble opprettholdt.
AAreg historikk
Etter et basisuttak av syntetiske arbeidsforhold ble produsert, ble disse brukt videre til å generere historikk bakover i tid. Ved bruk av Tensorflow og et Recurrent Neural Network (RNN) ble det treng en modell på endringer i arbeidsforholdene, hvor endringer i arbeidsforhold fra måned til måned ble enkoded i en liste med binære tall - som igjen blir konvertert til en Char i UTF-16. dette gjør at vårt RNN kan lære trender om hvordan et arbeidsforhold typisk utvikler seg over tid.
Char | Virksomhet | ID | ARBEIDSFORHOLDTYPE | START_DATO | YRKESKODE | STILLINGSPROSENT | ANTALL_TIMER | … | ARBEIDSTIDSORDNING | |
---|---|---|---|---|---|---|---|---|---|---|
a | → | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
e | → | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | |
¿ | → | 1 | 1 | 0 | 1 | 0 | 1 | 0 | 0 | |
¿ | → | 1 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | |
± | → | 0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
Her er noen eksempler på hvordan endringer for en måned gjøres om til binære tall og så en char. Den mest vanlige enkodingen er a, som betyr ingen endring fra forrige måned. Etter at modellen ble trent på hele basisuttaket kunne den brukes til å generere ‘chunks’ med historikk ved å produsere en serie med chars.
Prosedyren for å generer historikk for alle arbeidstakerene i det syntetiske aareg er da slik:
- Hent ut liste med distinkte identer (arbeidstakere)
- Hent ut alle verdier som brukes som sampling space - når den genererte historikken skal mappes tilbake til reele verdier
- Hent inn verdier for alle opplysningspliktige i databasen, og lag en mapping mellom alle virksomheter og den overordnede opplysningspliktige organisasjonen.
- Generer historikk (For hver arbeidstaker)
- Hent inn eldste rapporterte arbeidsforhold
- Repliker dette arbeidsforholdet bakover i tid til den gitte “START_DATO”.
- Deretter genereres et tilfelduig antall måneder bakover i tid, hvor endringer over tid hentes fra den trente tensorflow modellen.
- Lagre/send inn historikk