<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>data &#8211; Smals Research</title>
	<atom:link href="https://www.smalsresearch.be/tag/data/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.smalsresearch.be</link>
	<description></description>
	<lastBuildDate>Thu, 09 Apr 2026 12:23:31 +0000</lastBuildDate>
	<language>en-GB</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>

<image>
	<url>https://www.smalsresearch.be/wp-content/uploads/2026/01/cropped-cropped-Smals_Research-32x32.png</url>
	<title>data &#8211; Smals Research</title>
	<link>https://www.smalsresearch.be</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Honey, I scraped the kids &#8211; over taalmodellen en privacy</title>
		<link>https://www.smalsresearch.be/honey-i-scraped-the-kids/</link>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Fri, 17 Jun 2022 08:34:33 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[Artificial intelligence]]></category>
		<category><![CDATA[big data]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[data capture]]></category>
		<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[Information management]]></category>
		<category><![CDATA[Machine Learning]]></category>
		<category><![CDATA[open data]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">/?p=17396</guid>

					<description><![CDATA[De datasets die ten grondslag liggen van enorme taalmodellen zijn zonder veel poespas gescraped van het internet. Een korte zoektocht naar  persoonsgebonden gegevens hierin, brengt al snel heel wat boven water.]]></description>
										<content:encoded><![CDATA[
<p>Taalmodellen, die gebruikt worden voor applicaties zoals automatische vertaling, chatbots, en het <a href="/de-ai-als-auteur/">genereren van teksten</a>, worden steeds groter. Nadat OpenAI&#8217;s <a href="https://github.com/openai/gpt-3">GPT-3</a> nogal wat <a href="https://www.youtube.com/watch?v=_x9AwxfjxvE">furore </a>had gemaakt met haar <a href="https://github.com/elyase/awesome-gpt3">spectaculaire toepassingen</a>, volgen nu regelmatig nog grotere modellen &#8211; Google&#8217;s <a href="https://arxiv.org/abs/2101.03961">Switch</a> of het Chinese <a href="https://en.wikipedia.org/wiki/Wu_Dao">Wu Dao</a> zijn maar enkele van de voorbeelden. (Het woord &#8220;taalmodel&#8221; mag men trouwens met een korrel zout nemen &#8211; in de praktijk gaat het nog steeds om niet meer dan een &#8220;woordvolgordemodel&#8221;)</p>



<p>Enorme taalmodellen moeten worden getraind met enorme datasets. Om die te verzamelen wordt op geen bron meer of minder gekeken: <a href="https://pile.eleuther.ai/">The Pile</a>, zowat de grootste dataset van Engelstalige tekst die vandaag bestaat, tikt ongeveer 825 GB aan. De volledige Engelstalige Wikipedia maakt er deel van uit, voor 6.3 GB, oftewel 0.7% van de collectie. Andere databronnen zijn <a href="https://commoncrawl.org/">CommonCrawl</a> , <a href="https://openwebtext2.readthedocs.io/en/latest/">OpenWebText</a> , maar er worden ook tekstfragmenten gebruikt afkomstig van Github, ArXiv, PubMed, StackExchange, OpenSubtitles, zelfs het <a href="https://www.statmt.org/europarl/">Europees Parlement</a>. </p>



<p>Veel van die datasets zijn met eenvoudige <a href="https://en.wikipedia.org/wiki/Web_scraping">webscraping </a>scripts verzameld. Of dat <a href="https://www.scraperapi.com/blog/is-web-scraping-legal/">allemaal wel mag</a> volgens copyright- en privacywetgevingen allerhande, is een ingewikkelde vraag met een nog ingewikkelder antwoord en dus maakt men daar voor het gemak in eerste instantie vaak abstractie van. Kwaliteitschecks en fijnmazige filters zijn tijdrovend als je ze accuraat wil maken, en in de wedloop om het grootste taalmodel sneuvelen die dus helaas ook maar al te vaak. </p>



<p>Gegeven de enorme verscheidenheid aan bronnen, websites, tekstformatteringen en dataverzamelingsmethodes, is het zo haast onvermijdelijk geworden dat in datasets van die grootteorde toch nog <a href="https://ec.europa.eu/info/law/law-topic/data-protection/data-protection-eu_nl">persoonsgegevens </a>of <a href="https://economie.fgov.be/nl/themas/intellectuele-eigendom/intellectuele-eigendomsrechten/auteursrecht-en-naburige/auteursrechten">auteursrechtelijk</a> beschermde teksten terechtkomen &#8211; zelfs als men moeite doet om enigszins correct te handelen. Reden genoeg om zelf eens in zo&#8217;n dataset te duiken en te kijken wat we daarin terugvinden.</p>



<h1 class="wp-block-heading">OSCAR</h1>



<figure class="wp-block-image alignright size-full is-resized"><a href="/wp-content/uploads/2022/06/avatar_hub278c5e06b117b962e66239a5e135575_291648_270x270_fill_lanczos_center_3.png"><img fetchpriority="high" decoding="async" width="270" height="270" src="/wp-content/uploads/2022/06/avatar_hub278c5e06b117b962e66239a5e135575_291648_270x270_fill_lanczos_center_3.png" alt="OSCAR logo" class="wp-image-17500" style="width:135px;height:135px" srcset="https://www.smalsresearch.be/wp-content/uploads/2022/06/avatar_hub278c5e06b117b962e66239a5e135575_291648_270x270_fill_lanczos_center_3.png 270w, https://www.smalsresearch.be/wp-content/uploads/2022/06/avatar_hub278c5e06b117b962e66239a5e135575_291648_270x270_fill_lanczos_center_3-150x150.png 150w" sizes="(max-width: 270px) 100vw, 270px" /></a><figcaption class="wp-element-caption">OSCAR logo</figcaption></figure>



<p><a href="https://oscar-corpus.com/">OSCAR </a>is een meertalige dataset die regelmatig wordt gebruikt voor niet-Engelstalige taalmodellen. De Nederlandstalige subset ervan kan dienen als basis van een <a href="https://blog.ml6.eu/dutch-gpt2-autoregressive-language-modelling-on-a-budget-cff3942dd020">Nederlandstalige tekstgenerator</a>. OSCAR is op zijn beurt afgeleid van <a href="https://commoncrawl.org/">CommonCrawl</a>, een grootschalige dataset van scraped websites, waarvan de makers wel aangeven dat <a href="https://www.robotstxt.org/">robots.txt</a> en HTML <a href="https://microformats.org/wiki/Main_Page">no-follow</a> specificaties gehonoreerd werden, maar waar verder weinig meer mee gebeurd is dan gegevensopslag. OSCAR groepeert die per taal, voegt wat <a href="https://ids-pub.bsz-bw.de/frontdoor/index/index/docId/9021">extra preprocessing</a> toe, en zet de tekstfragmenten in willekeurige volgorde, om zo copyrightproblemen te vermijden. We doen hier geen uitspraak over de vraag of dat wel voldoende is voor dat doel. Een bijkomend effect daarvan is wel dat de inhoudelijke relatie tussen opeenvolgende tekstfragmenten in deze dataset dus verloren is gegaan. (De <a href="https://arxiv.org/abs/2201.06642">laatste paper</a> van de auteurs probeert daar alsnog een mouw aan te passen.)</p>



<p>We bekijken de Nederlandstalige gegevens uit de eerste versie van deze dataset uit 2019 (toegang tot <a href="https://huggingface.co/datasets/oscar-corpus/OSCAR-2109">versie 2021</a> of <a href="https://huggingface.co/datasets/oscar-corpus/OSCAR-2201">versie 2022</a> vereisen registratie of aanvraag). Deze is vrij beschikbaar in de dataset repository van Huggingface, dat ook een eerste <a href="https://huggingface.co/datasets/oscar/viewer/unshuffled_deduplicated_nl/train.">preview van de inhoud</a> voorziet. Bij Huggingface vermeldt men summier dat de dataset <a href="https://huggingface.co/datasets/oscar#personal-and-sensitive-information">persoonlijke of gevoelige informatie</a> kan bevatten, en dat de training van een AI-model op basis van deze dataset gevoelig kan zijn voor <a href="https://huggingface.co/datasets/oscar#discussion-of-biases">biases</a>, zonder dieper in te gaan op deze problematiek. De verantwoordelijkheid hiervoor wordt bij de gebruiker van de dataset gelegd.</p>



<p>De Nederlandstalige subset van OSCAR bestaat uit 126.064.721 tekstfragmenten van één tot enkele zinnen lang, die we kunnen samengevoegen tot 1 tekstbestand met een grootte van ongeveer 40GB. In wat volgt doorzoeken we deze dataset naar gegevens die als persoonlijk of gevoelig beschouwd zouden kunnen worden. Het valt aan te nemen dat die gegevens grotendeels zijn gescrapet zonder medeweten van de originele auteurs of van de websites waarop ze oorspronkelijk gepubliceerd waren. We tonen telkens een selectie van wat we zoal terugvinden ter illustratie, maar om de mogelijke privacy- en copyrightproblemen niet erger te maken dan ze al zouden kunnen zijn, maskeren we in dit artikel de gevonden gevoelige gegevens alsnog en markeren we ze rood. </p>



<h1 class="wp-block-heading">Gevoelige gegevens in OSCAR</h1>



<p>Door gewoon reguliere expressies toe te passen, die je vaak kan <a href="https://regex101.com/library">copy-pasten van het internet</a>, kunnen we al veel boven water halen.&nbsp;Om emailadressen te detecteren, gebruiken we een relatief eenvoudig patroon, waarmee we <strong>685.968 potentiële matches</strong> terugvinden (let wel dat veel algemene emailadressen, bijvoorbeeld van helpdesks of infolijnen of grote organisaties, herhaaldelijk voorkomen):</p>



<pre class="wp-block-code"><code>grep -a -e "&#91;a-zA-Z0-9._]\+@&#91;a-zA-Z]\+.&#91;a-zA-Z]\+" oscar_nl_full.txt</code></pre>



<ul>
<li><em>Ik gooide enkele nieuwe data online! Wie zin heeft kan zich inschrijven door te mailen naar <span style="color: #ff0000;">e*******s@gmail.com</span></em></li>
<li><em>Ontdek hoe je een WordPress thema vindt dat echt bij jou past! www.speciaalgeselecteerd.nl jouw gids voor WordPress thema s Door: <span style="color: #ff0000;">S******* v** N********</span> Datum: 1-1-2016 E-mail: <span style="color: #ff0000;">s********@innonet.nl</span> WordPress</em></li>
<li><em>De hoofdleiding bestaat uit <span style="color: #ff0000;">D***** V******<span style="color: #000000;">,</span> G***** G*******<span style="color: #000000;">,</span> M**** W****** <span style="color: #000000;">en</span> F***** V*** B*****<span style="color: #000000;">,</span></span> hen kan je contacteren via <span style="color: #ff0000;">0497******</span> (<span style="color: #ff0000;">D*****</span>), <span style="color: #ff0000;">0493******</span> (<span style="color: #ff0000;">G*****</span>), <span style="color: #ff0000;">0477******</span> (<span style="color: #ff0000;">M****</span>) en <span style="color: #ff0000;">0498******</span> (<span style="color: #ff0000;">F*****</span>). Een mailtje naar <span style="color: #ff0000;">i***@c*********.be</span> is ook altijd mogelijk. Zij zullen jullie graag helpen met vragen, opmerkingen of klachten.</em></li>
</ul>



<p>Veel emailadressen lijken afkomstig van contactpagina&#8217;s op websites van bedrijven, organisaties, maar je herkent ook overduidelijk verenigingen, lokale initiatieven, jeugdbewegingen, en forumgebruikers die hun persoonlijke contactgegevens achterlaten, waaronder telefoonnummers. Het volgende patroon zoekt naar cijfercombinaties die eruit zien als een Belgisch telefoonnummer, in de meest voorkomende schrijfwijzen. (Het patroon is iets te algemeen opgesteld, met als nadeel dat we er ook onderdelen van niet-telefoonnummers mee vinden.) Dat leidt alleszins al tot <strong>289.461 potentiële matches</strong>:</p>



<pre class="wp-block-code"><code>grep -a -P "(((\+|00)32&#91; ]?(?:\(0\)&#91; ]?)?)|0){1}(4(60|&#91;789]\d)\/?(\s?\d{2}\.?){2}(\s?\d{2})|(\d\/?\s?\d{3}|\d{2}\/?\s?\d{2})(\.?\s?\d{2}){2})" oscar_nl_full.txt 
</code></pre>



<ul>
<li><em>Tijdens de openingstijden kan je via de Live Chat of via de telefoon <span style="color: #ff0000;">07********</span> vragen stellen aan één van onze medewerkers.</em></li>
<li><em>[&#8230;] Heeft u vragen over onze werkwijze, prijzen of materialen dan zijn we bereikbaar op de nummers <span style="color: #ff0000;">03/***.**.**</span> en <span style="color: #ff0000;">03/***.**.**</span>. Ook kunt u een e-mail sturen naar [email protected] of het contactformulier invullen.</em></li>
<li><em>Op 22 september vertrekken we op speel-weekend naar Ronse. Wil je nog mee? Als de bliksem bellen naar <span style="color: #ff0000;">R******* 0496/**.**.**</span></em></li>
<li><em>Propere betonnen palen 8 stuks, geen beton/cement aan de onderkant van de paal- lengte 2.05m. Bieden vanaf €7/stuk. Tel <span style="color: #ff0000;">0478/******</span></em></li>
</ul>



<p>Ook hier vinden we veel contactgegevens van bedrijven, maar een aanzienlijk deel zijn ook persoonlijke telefoonnummers afkomstig van berichten die mensen postten op online marktplaatsen of zoekertjeswebsites. Bankrekeningnummers, BTW-nummers e.d. duiken ook op tussen de gevonden data. Om te blijven focussen op persoonsgerelateerde data, gaan we nog op zoek naar Twitter of Instagram handles. Deze kunnen bijvoorbeeld afkomstig zijn van conversaties op Twitter en Instagram zelf, van internetfora waar mensen erover spreken, of van de footers van webpagina&#8217;s met links naar sociale media. Afgezien van enkele bedrijven wiens naam of product met een @ begint, gaan achter de meeste gevonden handles echte, actieve mensen of organisaties schuil. We vinden zo <strong>131.364 potentiële matches</strong>:</p>



<pre class="wp-block-code"><code>grep -a -e " @&#91;a-zA-Z0-9]\+" oscar_nl_full.txt</code></pre>



<ul>
<li>Vandaag waren we op bezoek bij Leo Timmers, maker van Een huis voor Harry, het Prentenboek van het Jaar 2019! En we gingen Billy ontmoeten, de kat waar Harry op geïnspireerd is. <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f60d.png" alt="😍" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Ik had dus de dag van m’n leven. <span style="color: #ff0000;">@v***********</span> #cat #books #brussels #reading #catsofbrussels #eenhuisvoorharry&nbsp;</li>
<li>[&#8230;] <span style="color: #ff0000;">R*****</span> twitterde dit naar mij en <span style="color: #ff0000;">@p********</span>, afgelopen zondagmiddag. We hadden het over de blogs die Ruud had willen schrijven die dag: drie stuks maar liefst. De blogs kwamen er inderdaad niet. Nooit meer. <span style="color: #ff0000;">R*****</span> overleed maandagavond <span style="color: #ff0000;">[datum]</span>. Ik heb een goede vriend verloren.</li>
<li>Zeg <span style="color: #ff0000;">@********</span> wat willen jullie nou in de omgangsvorm: &#8216;u&#8217; of &#8216;je&#8217;? Maak een keuze! <span style="color: #ff0000;">https://t.co/********</span></li>
<li><span style="color: #ff0000;">@********</span> En niet alleen dat. Het kenteken <span style="color: #ff0000;">*-***-**</span> staat mooi op beeld. Kijk dus uit voor deze asociale weggebruiker, mede-weggebruikers. @ <span style="color: #ff0000;">[datum]</span></li>
</ul>



<p>Er duikt duidelijk een heel palet aan persoonsgebonden informatie in deze dataset op, zoals ook nummerplaten, berichten over ziekte of overlijden, politieke voorkeuren, informatie over wanneer personen waar geweest zijn, en nog heel wat meer. Met hetzelfde gemak vinden we ook beledigingen tegen personen terug, verwensingen allerhande, racistische fragmenten, &#8230; we kunnen alleszins heel lang bezig blijven als we hierop enige grip willen krijgen in zo&#8217;n dataset.  </p>



<p>Een heel ander gevoelig onderwerp is erotische inhoud. Er zijn alvast <strong>2.459.800 matches </strong>voor woorden die beginnen met &#8220;seks&#8221; of &#8220;sex&#8221; in dit eerste deeltje van de dataset. Voorbeelden daarvan geven we terwille van de goede smaak niet mee, maar u mag de auteur op zijn woord geloven dat de meeste gevonden tekstfragmenten niet van droog-wetenschappelijke papers of schoolse seksuele opvoeding afkomstig zijn. Op een totaal van 126 miljoen zinnen, kunnen we zo schatten dat zulke inhoud ongeveer <strong>2% van het totaal</strong> uitmaakt in deze dataset.&nbsp;</p>



<h1 class="wp-block-heading">Kom ik er in voor?</h1>



<p>Dat kunnen we gemakkelijk achterhalen:</p>



<pre class="wp-block-code"><code>grep -a -e "Joachim Ganseman" oscar_nl_full.txt  </code></pre>



<ul class="wp-block-list">
<li>De 27e Internationale Olympiade Informatica vond plaats in Almaty, Kazachstan. De Belgische ploeg werd gevormd door Damien Galant (5e middelbaar), Robin Jadoul, Mattéo Couplet en Nico Ekkart (allen 6e middelbaar). Zij werden begeleid door Damien Leroy en Joachim Ganseman. [&#8230;]</li>



<li>[&#8230;] De bouwstenen voor artificiële intelligentie (AI) liggen klaar, maar ze staan op los zand. Dhr. Joachim Ganseman van Smals Research bestudeerde de zwaktes van AI. In zijn artikel op de Research-blog bespreekt hij een aantal uitdagingen voor de toekomst. </li>



<li>Joachim Ganseman wordt onderscheiden voor de ijver waarmee hij als jonge doctoraatsstudent de Belgische informatica-olympiade heeft gesticht, coördineert en communiceert in beide landshelften, met bijzondere inspanningen voor de toegankelijkheid voor alle leerlingen, ongeacht voorkennis.</li>
</ul>



<p>In 7 tekstfragmenten komt mijn volledige naam voor, voornamelijk in verband met mijn engagement bij de <a href="https://www.be-oi.be/">Belgische Informatica-olympiade</a> van 2011 tot 2018. Geen info die iets schandaligs of schaamtelijks bevat, integendeel, maar ik was niet op de hoogte. Als je ooit met naam en toenaam in de krant of op een website van een grotere organisatie hebt gestaan, lijkt de kans alleszins groot dat je naam in dat verband ook in de OSCAR dataset voorkomt. Het blijft dus erg belangrijk om in het achterhoofd te houden dat <a href="https://www.ikbeslis.be/jongeren/privacy-online/denk-na-voor-je-iets-post">dat wat eenmaal op het internet staat, er erg moeilijk terug af gaat</a>.</p>



<p>Misschien kan het een goed idee zijn om, naar analogie van <a href="https://haveibeenpwned.com/">Have I Been Pwned</a> die je waarschuwt voor paswoordlekken, een gelijkaardige dienst te hebben bij <a href="https://huggingface.co/">dataset repositories</a> waarmee gebruikers kunnen checken of hun persoonlijke informatie voorkomt in datasets? Tijd en middelen ontbreken om zoiets zelf verder uit te werken, maar we laten het hier staan als een interessante suggestie.</p>



<h1 class="wp-block-heading">En dan?</h1>



<p>We moeten nog vermelden dat de makers van de CommonCrawl en OSCAR datasets zelf niet Nederlandstalig zijn. Zij hebben dan ook niet onmiddellijk manieren ter beschikking om de verzamelde fragmenten in het Nederlands (en in de meeste van de andere 165 talen in OSCAR) op hun inhoudelijke merites te gaan beoordelen, en presenteren deze datasets &#8220;as is&#8221;. </p>



<p>Gegeven het feit dat persoonsgebonden gegevens gemakkelijk te vinden zijn op het internet voor wie  een beetje zoekt &#8211; en zeker op sociale media of op marktplaatsen waar ze gretig uitgewisseld worden &#8211; is het niet verwonderlijk dat deze gegevens ook terechtkomen in datasets verzameld via webscraping, als er een breed net wordt uitgegooid en weinig wordt gefilterd.</p>



<p>Smals Research is een technisch team zonder juristen in haar rangen; we laten uitspraken over het wettelijke kader rond webscraping, auteursrechten, en de gebruiksvoorwaarden van websites, in een internationale context, dan ook liever over aan <a href="https://www.law.kuleuven.be/citip">mensen die daar meer van kennen dan wij</a>. Het is in onze sector wel algemeen bekend dat de persoonsgegevens van EU-ingezetenen beschermd worden door de <a href="https://ec.europa.eu/info/law/law-topic/data-protection/data-protection-eu_nl">GDPR</a>. Dat houdt onder andere in dat zij de <a href="https://www.gegevensbeschermingsautoriteit.be/professioneel/avg/rechten-van-de-burgers/het-recht-van-inzage">inzage </a>en verwijdering van hun gegevens moeten kunnen vragen, en informatie moet kunnen krijgen over het gebruik ervan. Het wordt natuurlijk moeilijk om dat recht effectief uit te oefenen, als gegevens op elk moment in een externe database kunnen worden overgenomen, zonder medeweten van die persoon of zelfs van de website waarop ze gepubliceerd waren. </p>



<figure class="wp-block-image alignleft size-medium"><a href="/wp-content/uploads/2021/06/rita_bookshelfwriter_bibleapachespiderman.png"><img decoding="async" width="300" height="225" src="/wp-content/uploads/2021/06/rita_bookshelfwriter_bibleapachespiderman-300x225.png" alt="NLG systemen schrijven tekst op basis van wat ze tijdens de trainingsfase hebben gezien." class="wp-image-16313" srcset="https://www.smalsresearch.be/wp-content/uploads/2021/06/rita_bookshelfwriter_bibleapachespiderman-300x225.png 300w, https://www.smalsresearch.be/wp-content/uploads/2021/06/rita_bookshelfwriter_bibleapachespiderman-768x576.png 768w, https://www.smalsresearch.be/wp-content/uploads/2021/06/rita_bookshelfwriter_bibleapachespiderman.png 1024w" sizes="(max-width: 300px) 100vw, 300px" /></a><figcaption class="wp-element-caption">Een AI-model dat tekst schrijft, doet dat op basis van wat het tijdens de trainingsfase heeft gezien. [&#8220;Bookshelf Writer&#8221;, Andreas Refsgaard, Kåre Magnus Sand Solvåg, Riccardo Cereser (c) Copenhagen Institute of Interaction and Design]</figcaption></figure>



<p>Wie van zulke datasets gebruik maakt om AI systemen te trainen, is technisch gesproken de daarin begrepen persoonsgegevens aan het verwerken, en lijkt zo alvast automatisch een verantwoordelijkheid te hebben ten aanzien van die betreffende personen. Het is daarnaast niet ondenkbaar dat een <a href="https://www.analyticsvidhya.com/blog/2021/07/data-leakage-and-its-effect-on-the-performance-of-an-ml-model/">verkeerd of slecht getraind AI-systeem</a> deze gegevens expliciet opneemt in het resulterend model, en ze aanwendt om bepaalde beslissingen te nemen, wat een <a href="https://www.microsoft.com/en-us/research/theme/fate/">risico op bias</a> met zich meebrengt. Tot slot weet je nooit of er ergens een slecht beveiligde website gescrapet werd door de dataset-maker, waardoor er misschien login-gegevens of paswoorden voorkomen in de dataset.</p>



<h1 class="wp-block-heading">Een alternatieve werkwijze</h1>



<p>De onderzoeksgroep <a href="https://www.rug.nl/research/clcg/research/cl/">Computationele Linguïstiek</a> van de Universiteit van Groningen bouwde een <a href="https://dx.doi.org/10.18653/v1/2021.findings-acl.74">eigen variant</a> van een Nederlandstalig GPT-2 model. Zij zijn natuurlijk wél Nederlandstalig, en waren ook selectiever in het kiezen van hun trainingsdata. In hun paper lezen we dat die bestaat uit de Nederlandstalige Wikipedia (2.0GB), een grote hoeveelheid E-books (6.5GB), een <a href="https://research.utwente.nl/en/publications/twnc-a-multifaceted-dutch-news-corpus">dataset van nieuwsartikels</a> die weliswaar nog van 2007 dateert (2.9GB) aangevuld met artikels van andere nieuwswebsites (2.1GB). Na het wegfilteren van duplicaten is dat goed voor een trainingsdataset van 13GB aan Nederlandstalige tekst. Gegeven deze bronnen is het aannemelijk dat hun dataset alvast correcter geschreven Nederlands bevat van een inhoudelijk hogere standaard.</p>



<p>De eigenlijke dataset vonden we na een korte zoektocht niet onmiddellijk terug, dus het is moeilijk de inhoud verder te bekijken &#8211; wie weet waar ze ergens beschikbaar zou zijn, mag het steeds laten weten. Het valt alleszins te verwachten dat de inhoud van deze dataset minder problematisch zal zijn op het vlak van persoonlijke gegevens dan OSCAR. Langs de andere kant stelt zich, met een dataset afkomstig van krantenartikels en e-books, misschien wel nog een copyrightprobleem.</p>



<p>Kieskeurig zijn qua trainingsdata heeft weliswaar een keerzijde. Een generatief taalmodel getraind op een selecte dataset is gelimiteerder qua teksten die het kan produceren. Tekstfragmenten die lijken op sociale-media-posts zullen moeilijk gegenereerd kunnen worden door een model dat niet getraind werd op data afkomstig van sociale media, en een hoge aandeel e-books leidt ook tot prozaïscher teksten. Tot slot maakt het groot aandeel van oudere nieuwsartikels ook dat het getrainde model teksten &#8220;uit die tijd&#8221; zal produceren, en relatief minder woordenschat en zinswendingen kent over recente trends, technologische uitvindingen of politieke ontwikkelingen.</p>



<h1 class="wp-block-heading">Conclusie</h1>



<p>We hebben hier slechts één Nederlandstalige dataset onder de loep genomen, maar het spreekt voor zich dat dezelfde problemen zich stellen in gelijkaardige datasets voor andere talen.</p>
<p>Het valt op dat enkele eenvoudige filters, bijvoorbeeld om emailadressen, rekeningnummers, persoonlijke profielinformatie of andere persoonsgegevens te detecteren, al een heel deel van deze problematische inhoud zouden kunnen wegfilteren. Een sluitende garantie geven dat er niets fouts meer voorkomt is haast onmogelijk in datasets van deze grootteorde, maar hier hebben we toch kunnen illustreren dat er soms wel érg weinig moeite gedaan lijkt te zijn om de datasets een beetje op te schonen. </p>
<p>Propere datasets maken, deze inhoudelijk onderzoeken en daarbij in de diepte graven, kost natuurlijk tijd en moeite &#8211; enkel om problematische stukjes weg te vijlen die in hun geheel maar een klein deeltje uitmaken van de hele dataset, wat dus waarschijnlijk ook maar een kleine impact zou hebben op het daaruit resulterende taalmodel. Het is moeilijk hard te maken dat zulk monnikenwerk zich economisch terugverdient, en garanties dat je effectief alles verwijdert zijn er evenmin.</p>
<p>Toch is het belangrijk dat er voldoende aandacht geschonken wordt aan de kwaliteit van de onderliggende datasets. Als dat niet werkbaar is vanwege hun grootte, moet je je minstens een idee vormen van de impact van mogelijke onregelmatigheden erin. Een <a href="https://www.gegevensbeschermingsautoriteit.be/professioneel/avg/effectbeoordeling-geb">data protection impact assessment</a> is net daarvoor bedoeld, en is in sommige gevallen verplicht.</p>
<p><span style="text-decoration: underline;"><strong>Het blind hergebruiken van een dataset die je zelf niet hebt samengesteld, is een slecht idee.</strong></span> Dat geldt bij uitbreiding eigenlijk ook voor het indirect gebruik ervan via een derde partij of een externe software-library. Dit is overigens een algemeen advies dat geldt voor elke toepassing van machine learning. Wie beter wil doen en ethiek wat hoger in het vaandel wil dragen, vindt goede startpunten in de paper <a href="https://arxiv.org/abs/1803.09010">Datasheets for Datasets</a> en bij initiatieven zoals <a href="https://ainowinstitute.org/">AI Now</a>.</p>



<p>______________________</p>



<p><em>Dit is een ingezonden bijdrage van Joachim Ganseman, IT consultant bij Smals Research. &nbsp;Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Data scrambling: synthetische data in de praktijk</title>
		<link>https://www.smalsresearch.be/data-scrambling-synthetische-data-in-de-praktijk/</link>
		
		<dc:creator><![CDATA[Joachim Ganseman]]></dc:creator>
		<pubDate>Wed, 23 Mar 2022 14:00:00 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[Data Integration]]></category>
		<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[Information management]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[synthetic data]]></category>
		<guid isPermaLink="false">/?p=17110</guid>

					<description><![CDATA[In dit artikel kijken we naar de praktische bekommernissen als we tools voor synthetische data inzetten: wat komt een data professional die hiermee aan de slag moet zoal tegen?]]></description>
										<content:encoded><![CDATA[
<p>Oracle definieerde <em>data scrambling</em> ooit <a href="https://docs.oracle.com/cd/E11857_01/em.111/e18709/T508706T512067.htm">als volgt</a>: <em>&#8220;the process to obfuscate or remove sensitive data. This process is irreversible so that the original data cannot be derived from the scrambled data.&#8221;</em> Als zodanig hoort het zeker thuis onder de <a href="/wanneer-is-welke-privacybevorderende-technologie-nuttig/">privacybevorderende technologieën waarvan eerder spake</a>: het doel is de gegevens zo goed mogelijk af te schermen, maar ze toch (deels) bruikbaar te houden voor derden. In strikte zin is scrambling slechts een <a href="https://www.imperva.com/learn/data-security/data-masking/">vorm </a>van <a href="https://www.datamasker.com/DataMasking_WhatYouNeedToKnow.pdf">data masking</a>, maar in dit artikel hanteren we een bredere definitie en rekenen we o.a. ook shuffling en substituties ertoe. Deze technologieën worden onder andere toegepast bij banken, waar testers en ontwikkelaars wel een stacktrace moeten kunnen onderzoeken of een programma moeten testen, maar daarbij geen inzage mogen krijgen in de echte bankgegevens van klanten.</p>



<p>Als het doel is om een functioneel alternatief te voorzien voor gevoelige data, zijn tools voor de creatie van <a href="/synthetic-data/">synthetische data</a> bij uitstek geschikt. Ze kunnen immers meer dan enkel de bestaande gegevens door elkaar gooien: ze zijn gemaakt om de structuur van gegevens aan te leren, waarna je willekeurig veel nieuwe gegevens volgens dezelfde structuur kan aanmaken. In combinatie met <a href="https://faker.readthedocs.io/en/master/">generatoren</a> voor totaal fictieve gegevens, hebben we daarmee alles voorhanden om niet alleen de originele gegevens te verbergen, maar ook om te zorgen dat wat in de plaats komt, realistisch oogt. </p>



<p>Dat betekent echter niet dat het een kwestie is van een druk op de knop. Eén en ander hangt af van allerlei randvoorwaarden en aannames over de inhoud en structuur van de gegevens. Afhankelijk van de beoogde toepassing of het doel, kan het nodig zijn om extra beperkingen en filters op te leggen, of misschien net om bepaalde delen van de gegevens buiten beschouwing te laten. In dit artikel kijken we vooral naar die <strong>praktische bekommernissen</strong>: wat kom je zoal tegen als data professional die synthetische data moet aanmaken?</p>



<p></p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2022/03/2022-03-23_13h12_45.png"><img decoding="async" width="1024" height="447" src="/wp-content/uploads/2022/03/2022-03-23_13h12_45-1024x447.png" alt="" class="wp-image-17153" srcset="https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h12_45-1024x447.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h12_45-300x131.png 300w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h12_45-768x335.png 768w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h12_45-1536x670.png 1536w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h12_45.png 1648w" sizes="(max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Synthetische data in de praktijk: uit de originele data (boven) wordt de structuur approximatief aangeleerd, het resulterende generatieve model kan daarna realistisch lijkende fictieve gegevens genereren (onder).</figcaption></figure>



<h1 class="wp-block-heading">Setup</h1>



<p>Wie een dataset wil scramblen, heeft uiteraard toegang nodig tot de originele gegevens. Het spreekt voor zich dat het uploaden van gevoelige data naar een cloud service of zelfs het gebruik van een <a href="/distributie-van-cloud-services/">Docker container voorzien door een derde partij</a>, slechts mogelijk is als er grondig is nagedacht over GDPR-compliance, eventueel een Data Protection Impact Assessments (DPIA) is opgesteld, en best ook met de DPO is overlegd. We doen zelf geen enkele uitspraak over de geschiktheid van eender welke tool vis-à-vis de GDPR-wetgeving. Voor al wat volgt gaan we ervan uit dat we werken met tabulaire, tekstuele of numerieke gegevens, die lokaal beschikbaar zijn &#8211; met andere woorden, een grote spreadsheet.</p>



<h2 class="wp-block-heading">De markt</h2>



<p>In een <a href="/synthetic-data/">vorig artikel</a> vermeldden we al enkele spelers vanuit de optiek van AI-projecten en software testing. Hier ligt onze focus meer op de privacybescherming en data science. Voor het analyseren en synthetiseren van tabulaire gegevens is er een heel sterk groeiende markt. Enkele interessante spelers zijn de volgende &#8211; en er zijn er ongetwijfeld nog veel meer:</p>



<ul class="wp-block-list">
<li><a href="https://mostly.ai/">Mostly.ai</a></li>



<li><a href="https://ydata.ai/">YData</a></li>



<li><a href="https://www.tonic.ai/">Tonic</a></li>



<li><a href="https://gretel.ai/">Gretel</a></li>



<li><a href="https://www.synthesized.io/">Synthesized.io</a></li>
</ul>



<p>Open source tools zijn er minder en zijn vaak afkomstig van projecten die op universiteiten zijn begonnen. <a href="https://www.benerator.de/">Benerator </a>vermelden we apart omdat deze al langer bestaat en ook een uitgebreid commercieel aanbod heeft. Jongere open source initiatieven zijn onder andere:</p>



<ul class="wp-block-list">
<li><a href="https://sdv.dev/">Synthetic Data Vault (SDV)</a></li>



<li><a href="https://mimesis.name/master/">Mimesis</a></li>



<li><a href="https://dmey.github.io/synthia/">Synthia</a></li>



<li><a href="https://dataresponsibly.github.io/">Data Responsibly</a>&#8216;s <a href="https://github.com/DataResponsibly/DataSynthesizer">DataSynthesizer</a></li>



<li>MITRE&#8217;s <a href="https://synthetichealth.github.io/synthea/">Synthea</a> / <a href="https://synthea.mitre.org/">SyntheticMass</a> (toegespitst op eHealth)</li>
</ul>



<p>SDV is momenteel de populairste van de open source tools, en we gebruiken deze voor al wat volgt. In onze <a href="/download/review/quick_review/QR-SDV.pdf">Quick Review</a> vind je meer uitleg over deze tool.</p>



<h2 class="wp-block-heading">Het stappenplan</h2>



<p>Het plan van aanpak om synthetische data te produceren is bij de meeste tools heel gelijkaardig. We kunnen het onderverdelen in 6 grote stappen: </p>



<ol class="wp-block-list">
<li>Upload en <strong>inlezen </strong>van de gegevens. Met name de <a href="https://nl.wikipedia.org/wiki/Tekencodering">tekst-encodering </a>kan hier wel eens voor problemen zorgen als de gegevens uit oudere bronnen afkomstig zijn. Problemen hiermee moeten opgelost worden voordat men aan de volgende stappen begint.</li>



<li><strong>Analyse </strong>en typering van de gegevens. Voor elke kolom: welke zijn de minima, maxima, de waarden die voorkomen, zijn er missende waarden, etc. Omdat de computer niet weet wat de achterliggende betekenis van de gegevens is, is het vaak nodig om in deze stap manueel correcties uit te voeren:
<ul class="wp-block-list">
<li>Niet alle getalwaarden kan je zomaar beschouwen als &#8220;hoeveelheden&#8221; die je vrij kan optellen of aftrekken. Sommige zijn categoriën, zoals <a href="https://statbel.fgov.be/sites/default/files/Over_Statbel_FR/Nomenclaturen/NACE-BEL%202008_NL.pdf">NACE codes</a> of <a href="/la-jointure-spatiale-la-cle-de-lanalytique-geographique/">postcodes</a>, andere zijn misschien onderdeel van een datum.</li>



<li>Ontbrekende gegevens zal je in sommige gevallen kunnen gelijkstellen met 0 of met een reeds aanwezige <em>default</em> categorie, maar vaak wil je ze misschien beschouwen als een klasse apart. Een ontbrekende geboortedatum wilt immers niet zeggen dat iemand geboren is in het jaar 0.</li>
</ul>
</li>



<li><strong>Transformatie </strong>van gegevens. Hierbij worden o.a. ontbrekende gegevens afgesplitst, of categorische variabelen omgezet in een <a href="https://en.wikipedia.org/wiki/One-hot">getal-encodering </a>om compacter voorgesteld te worden. Deze stap gebeurt vooral achter de schermen, maar het is vaak mogelijk om manueel configuratie-opties toe te voegen: van sommige kolommen willen we bijvoorbeeld forceren dat de waarden altijd uniek zijn, andere kolommen willen we misschien negeren.</li>



<li>Een <strong>generatief model trainen</strong>. Dit kunnen zowel <a href="https://en.wikipedia.org/wiki/Copula_(probability_theory)">&#8220;klassieke&#8221; statistische modellen</a> zijn als <a href="https://proceedings.neurips.cc/paper/2019/file/254ed7d2de3b23ab10936522dd547b78-Paper.pdf">deep-learning varianten</a>. Sommige modellen zijn enigszins in staat om diepere verbanden tussen de gegevens te reproduceren, maar dit blijft erg afhankelijk van de hoeveelheid gegevens en hun distributie. </li>



<li><strong>Genereren </strong>van nieuwe gegevens. Bij gebruik van een generatief model staat er in principe geen limiet op de hoeveelheid gegevens die aangemaakt kan worden.</li>



<li><strong>Evalueren en visualiseren</strong> van de resultaten. De meeste commerciële tools genereren een mooi eindrapport met daarin een verslag van het hele proces en enkele samenvattende grafieken die toelaten om in een oogopslag te zien of er anomalieën zijn, en of er nog andere correcties toegevoegd dienen te worden. Bij open-source tools is dat vaak beperkt tot enkele metrieken en moet je verdere gegevensanalyse zelf bijprogrammeren. </li>
</ol>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2022/03/2022-03-23_17h13_49.png"><img loading="lazy" decoding="async" width="1024" height="426" src="/wp-content/uploads/2022/03/2022-03-23_17h13_49-1024x426.png" alt="synthetic data concept" class="wp-image-17159" srcset="https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_17h13_49-1024x426.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_17h13_49-300x125.png 300w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_17h13_49-768x320.png 768w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_17h13_49.png 1117w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Het concept van synthetic data generation. Bron: Haoran Li, Li Xiong, Lifan Zhang, and Xiaoqian Jiang, &#8220;<em><a href="https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4496798/">DPSynthesizer: Differentially Private Data Synthesizer for Privacy Preserving Data Sharing</a></em>&#8220;</figcaption></figure>



<h2 class="wp-block-heading">Gegevens</h2>



<p>Wie de tools liefst niet uittest op eigen (gevoelige) data, vindt veel <a href="https://www.kaggle.com/datasets">datasets op Kaggle</a>. Zelf maakten we voor onze testen onder andere gebruik van een variant op de <a href="https://www.kaggle.com/uciml/adult-census-income">Adult Census Income</a> dataset.</p>



<h1 class="wp-block-heading">Praktische bekommernissen</h1>



<h2 class="wp-block-heading">Telgegevens</h2>



<p>Sommige datasets bevatten tellingen. Dat kan het resultaat zijn van een COUNT() functie in de SQL-query voor data-extractie. Om dan een correcte inschatting te kunnen maken van de distributies van de andere variabelen, is het nodig om deze telling ongedaan te maken en de tabel te &#8220;unrollen&#8221;. Een nieuw gegenereerde tabel moet nadien natuurlijk terug &#8220;opgeteld&#8221; worden om terug in het originele formaat te staan. Op deze manier kan men desgewenst ook garanderen dat de resulterende tabel ook effectief hetzelfde aantal records voorstelt als in de originele database, zelfs al is er een ander aantal combinaties van variabelen. De kolom met de telvariabele wordt uiteraard niet meegenomen in het generatief model.</p>



<h2 class="wp-block-heading">Behoud van alle mogelijkheden</h2>



<p>Voor sommige toepassingen kan het nodig zijn dat een gesynthetiseerde dataset zeker ook alle mogelijke waarden bevat die voorkomen in de originele dataset &#8211; bij wijze van representativiteit voor de originele dataset. Maar met name als bepaalde waarden erg zeldzaam zijn, bestaat er een reëel risico dat ze niet genoeg doorwegen bij de training van het generatief model, waardoor ze achteraf bijna nooit gegenereerd worden. De meeste generatieve modellen laten het <a href="https://sdv.dev/SDV/user_guides/single_table/gaussian_copula.html#conditional-sampling">conditioneel samplen</a> van gegevens toe: datapunten kunnen gegenereerd worden waarvoor de waarde van een of meerdere variabelen vaststaan. De distributie van de andere waarden volgt dan een <a href="https://en.wikipedia.org/wiki/Bayes%27_theorem">conditionele distributie</a>, gegeven deze vaste waarden. Doe dat voor elke waarde die voorkomt in de originele dataset, en men kan garanderen dat elke waarde (alleszins onafhankelijk) voorkomt. Dit vraagt weliswaar wat extra programmeerwerk om gedaan te krijgen, en bovendien impliceert dit ook dat een outputdataset een bepaalde minimumgrootte zal hebben.</p>



<h2 class="wp-block-heading">Duplicaten en overlap</h2>



<p>Het genereren van nieuwe gegevens gebeurt door te <a href="https://en.wikipedia.org/wiki/Sample_(statistics)">samplen</a> uit een generatief model &#8211; te vergelijken met het trekken van een lottocombinatie. Zeker als er veel gegevens worden gesynthetiseerd, is het altijd mogelijk dat er twee keer hetzelfde tussenzit. Is dat ongewenst, dan moet een optie toegevoegd worden om duplicaten te verwijderen &#8211; en nadien opnieuw gegevens bij te genereren totdat de gewenste grootte opnieuw is bereikt. Eventueel kan men ook forceren dat gesynthetiseerde gegevens zeker niet mogen voorkomen in de originele dataset &#8211; dat de twee datasets dus volledig disjunct zijn. Dat laatste voegt echter weinig toe qua privacybescherming: zonder kennis van de originele dataset, kan men steeds bogen op een zekere <a href="https://www.vldb.org/pvldb/vol10/p481-bindschaedler.pdf">plausible deniability</a> dat een synthetisch record identiek zou zijn aan een record uit de echte dataset.</p>



<h2 class="wp-block-heading">Trainingstijd</h2>



<p>Zeker bij grote datasets met veel variabelen, en bij gebruik van deep learning tools kan het een lange tijd in beslag nemen om een generatief model te trainen. Dat maakt het moeilijk om iteratief te werk te gaan bij het verfijnen van de opties. Het kan nuttig zijn om tijdens de ontwikkeling, de dataset ten grondslag van de training te beperken tot enkele duizenden willekeurig geselecteerde records. Daarbij mogen we al wat hierboven al werd vermeld natuurlijk niet uit het oog verliezen &#8211; bijvoorbeeld, ook hier kan het nuttig zijn om een extra optie te hebben die garandeert dat een selectie uit de trainingset nog steeds minstens 1 datapunt bevat voor elke waarde van elke variabele.</p>



<h2 class="wp-block-heading">Afhankelijke kolommen</h2>



<p>Een kolom die volledig (lineair) afhankelijk is van een of meerdere andere kolommen, moeten we verwijderen en achteraf terug herberekenen. Dat is typisch het geval bij wiskundige afhankelijkheden: een kolom die een som is van twee andere kolommen, of een percentage van een andere kolom voorstelt. We kunnen best niet hopen dat een generatief model dat verband zelf aanleert. Het is veel zekerder om zulke afhankelijke kolommen gewoon te verwijderen uit de dataset, en nadat een nieuwe dataset is gegenereerd, deze kolommen terug te berekenen op basis van de gesynthetiseerde data en dan pas toe te voegen.</p>



<h2 class="wp-block-heading">Constraints</h2>



<p>Iemands geboortedatum valt altijd vroeger dan iemands sterfdatum. Dat is logisch, maar als men voor een fictief persoon een nieuwe geboortedatum en sterfdatum genereert uit het generatief model dat werd getraind op de distributies van alle geboorte- en sterfdata in een dataset, dan kan het voorvallen dat deze logische beperking niet altijd gerespecteerd blijft. Het kunnen opleggen van <em>constraints</em> &#8211; de ene variabele is altijd groter of kleiner dan een andere, of altijd positief of negatief, etc. &#8211; is een belangrijke feature. Eenvoudige beperkingen, zoals zonet aangehaald, zijn eventueel nog eenvoudig te implementeren door &#8220;rejection sampling&#8221;: voldoet een gesynthetiseerd record niet aan alle constraints, wordt het gedeleted en wordt een nieuw gegenereerd, totdat alle records voldoen. Worden de constraints ingewikkelder of strikter, dan kan het nodig zijn om zelf de nodige filters te programmeren, of om een post-processing stap te definiëren waarin correcties uitgevoerd kunnen worden. </p>



<h2 class="wp-block-heading">Kolommen bevriezen</h2>



<p>Willen we een dataset scramblen met een kolom <em>geslacht</em> en een kolom <em>woonplaats</em>, dan is het eigenlijk voldoende om enkel de kolom met woonplaatsen door elkaar te husselen om een goed gemengde dataset te bekomen. Het geslacht is daar onafhankelijk van, en kunnen we even goed negeren. Het bevriezen van kolommen, in feite gewoon het verwijderen voor de verwerking en terug eraan plakken na het einde, kan zo een grote tijdswinst opleveren. Het is weeral een kolom minder waarvan de distributie aangeleerd moet worden. </p>
<p>Kolommen bevriezen, impliceert weliswaar een voorwaarde: ofwel dat de gesynthetiseerde dataset even lang moet zijn als de originele zodat de dimensies overeenkomen, ofwel dat de gegevens in de bevroren kolom(men) helemaal willekeurig verdeeld zijn, dus op geen enkele manier gesorteerd of gegroepeerd, zodat de bevroren kolom(men) zonder effect op de gegevensdistributie kunnen verkort of verlengd worden. Dat laatste kan echter moeilijk te bewijzen zijn.</p>
<p>Maar zeker als het de bedoeling is dat een gesynthetiseerde dataset even groot is als de originele, wat toch vaak voorkomt, is het een enorm grote tijdswinst als van een dataset met 60 kolommen, er slechts 6 moeten gesynthetiseerd worden om een voldoende gescramblede dataset te krijgen. Bovendien zal een generatief model met minder kolommen meestal ook accurater getraind kunnen worden, dus is het resultaat waarschijnlijk zelfs kwalitatief beter. Eventueel kan de synthetische dataset achteraf nog eens geshuffled worden om enige overgebleven structurele gelijkenis met de originele dataset te verbergen. </p>



<h2 class="wp-block-heading">Rapportering en grafieken</h2>



<p>De gescramblede dataset moet nog vergeleken worden met het origineel, om te verifiëren dat de procedure wel goed verlopen is en of er bepaalde parameters beter aangepast zouden kunnen worden. Het visualiseren van datasets is een uitdaging op zich, waarbij rekening moet worden gehouden met het type van variabele en de waarden die ze kan aannemen. Boxplots zijn vaak een goede keuze voor continue variabelen, en staafdiagrammen voor categorische variabelen. Daarbij moet aandacht worden besteed aan de assen, die overeen moeten komen om in een oogopslag te kunnen vergelijken. Het kan nodig zijn hier en daar extra te groeperen of aggregeren om grafieken van complexe categorische variabelen overzichtelijk te houden. Voor de verbanden tussen twee variabelen kan men verschillende vormen van bivariate plots, heatmaps en correlatiematrices benutten. Werkt men in Python dan zijn <a href="https://matplotlib.org/">matplotlib </a>en <a href="https://seaborn.pydata.org/tutorial.html">seaborn</a> nuttige grafische libraries. </p>



<figure class="wp-block-image size-large"><a href="/wp-content/uploads/2022/03/2022-03-23_13h13_51.png"><img loading="lazy" decoding="async" width="1024" height="684" src="/wp-content/uploads/2022/03/2022-03-23_13h13_51-1024x684.png" alt="" class="wp-image-17156" srcset="https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h13_51-1024x684.png 1024w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h13_51-300x200.png 300w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h13_51-768x513.png 768w, https://www.smalsresearch.be/wp-content/uploads/2022/03/2022-03-23_13h13_51.png 1355w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></a><figcaption class="wp-element-caption">Drie generatieve modellen uit de <a href="https://sdv.dev/">SDV library</a> toegepast op de <a href="https://www.kaggle.com/uciml/adult-census-income">Adult Census Income</a> dataset: een statistisch model (links), deep learning model (rechts), en combinatie van de twee (midden). Enkele variabelen worden geplot als staafdiagrammen, met de distributies van originele data in blauw en synthetische data in oranje. De distributies van individuele variabelen worden approximatief benaderd maar hier en daar zijn er nog merkbare verschillen: er is mogelijk nog ruimte voor verdere optimalisatie door het finetunen van enkele parameters.</figcaption></figure>



<h1 class="wp-block-heading">Conclusie</h1>



<p>Met synthetische data generatoren hebben we een krachtige tool in handen om data scrambling te kunnen doen. We kunnen er bovendien meer mee dan enkel de gegevens door elkaar haspelen: desgewenst interpoleren ze ook tussen minimum- en maximumwaarden, of tussen datums, en zo kunnen ze ook fictieve gegevens genereren volgens dezelfde structuur als de originele dataset. Het aanmaken van een echt goede synthetische dataset vergt vaak een iteratieve aanpak, om het achterliggend generatief model te finetunen. </p>



<p>We merken in de praktijk dat er heel wat <strong>extra checks en balances</strong> komen kijken bij het werken met echte datasets. Het is zelden zo dat een generatief model gegenereerd uit een willekeurige dataset met default parameters, vanaf de eerste keer optimaal is. Met name erg ongelijke distributies zorgen voor problemen in het leerproces en voor statistische instabiliteit in het resulterende generatief model. Bij wijze van voorbeeld: als een dataset slechts 1 persoon bevat met een zeldzame ziekte, en het is toevallig een 43-jarige Limburger, dan riskeren we dat het systeem leert dat alle personen met deze ziekte per definitie 43-jarige Limburgers moeten zijn. Bovendien merken we dat we de beste resultaten bekomen als een dataset weinig variabelen heeft, en voor elke waarde van elke variabele veel datapunten (rijen, samples). Dit alles maakt dat we de beste resultaten vaak bekomen door zoveel mogelijk kolommen te bevriezen, en het aantal te scramblen kolommen te beperken tot het minimum noodzakelijke om het doel van scrambling te bereiken. Die oefening kan voor elke dataset anders zijn. </p>



<p>Een vraag die regelmatig terugkomt is: kunnen we <strong>dezelfde analytics</strong> op de dusdanig gescramblede / gesynthetiseerde dataset loslaten en leidt dat dan tot dezelfde conclusies? Het antwoord is: het hangt ervan af hoe diep je wilt gaan. De structuur van de gegevens wordt in het generatief model immers approximatief aangeleerd. Daarbij merken we: </p>



<ul class="wp-block-list">
<li>De statistieken en verdeling van individuele variabelen (minimum, maximum, gemiddelde etc.) blijven meestal <strong>relatief goed </strong>behouden,</li>



<li>De verbanden tussen twee variabelen (correlatie etc.) blijven <strong>matig </strong>behouden, en hoe gelijkmatiger en stabieler deze variabelen zijn verdeeld hoe beter dat dat lukt,</li>



<li>De verbanden tussen meerdere variabelen (regressies etc.) blijven <strong>relatief slecht</strong> behouden of gaan verloren.</li>
</ul>



<p>Voor complexe analyses zijn scrambled of synthetische data dus zeker <strong>geen drop-in replacement</strong> voor de echte data. Ze zijn wel erg nuttig voor het testen of ontwikkelen van data processing scripts of analyse-pipelines, omdat we wel een goed beeld hebben van welke waarden er allemaal voorkomen en in welk bereik deze vallen. </p>



<p>We hebben nog heel wat andere potentiële struikelblokken die we in de praktijk kunnen tegenkomen niet besproken. Er kunnen afhankelijkheden bestaan tussen rijen &#8211; bijvoorbeeld, een tabel die verschillende records bevat per persoon. Er kunnen ook verbanden zijn in de tijd &#8211; bijvoorbeeld datasets die bestaan uit opeenvolgende kwartalen, of datasets waarin de datums die voorkomen alleen maar werkdagen zijn en nooit weekenddagen, wat maakt dat je niet zomaar eender welke datum kan synthetiseren. Een dataset kan ook bestaan uit meerdere tabellen die met elkaar verbonden zijn. Zulke complexere problemen zijn mogelijk nog voer voor een vervolg-artikel later dit jaar.</p>



<p>______________________</p>



<p><em>Dit is een ingezonden bijdrage van Joachim Ganseman, IT consultant bij Smals Research. &nbsp;Dit artikel werd geschreven in eigen naam en neemt geen standpunt in namens Smals.</em></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Staan Uw Bedrijfsgegevens in een Onweerscloud?</title>
		<link>https://www.smalsresearch.be/cloud-controle-impact-voor-bedrijven/</link>
		
		<dc:creator><![CDATA[Kristof Verslype]]></dc:creator>
		<pubDate>Wed, 27 Aug 2014 06:39:03 +0000</pubDate>
				<category><![CDATA[Blog post]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[confidentiality]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[Security]]></category>
		<guid isPermaLink="false">/?p=7301</guid>

					<description><![CDATA[In de cloud is alles goedkoper, sneller, veiliger, beter. De cloud is de toekomst en de toekomst is in de cloud. Zoals wel vaker gebeurt, smoorde de euforie van de hype elk kritisch geluid. In een eerder artikel schreef ik over de impact op de burgers. Dit artikel gaat in op de impact voor bedrijven [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>In de cloud is alles goedkoper, sneller, veiliger, beter. De cloud is de toekomst en de toekomst is in de cloud. Zoals wel vaker gebeurt, smoorde de euforie van de hype elk kritisch geluid. In een eerder <a href="/de-stille-cloud-machtsgreep/">artikel</a> schreef ik over de impact op de burgers. Dit artikel gaat in op de impact voor bedrijven en overheden wat betreft de confidentialiteit en in mindere mate de beschikbaarheid van gevoelige gegevens.</p>
<h1>Proliferatie &amp; Exfiltratie</h1>
<p>Zowel ondernemingen als overheidsdiensten hebben moeite om om te gaan met de relatief recente situatie waarbij de werknemers en delen van het (overheids-)bedrijf zonder toelating gebruik maken van allerlei diensten in de publieke cloud voor professionele doeleinden. Denken we maar aan het massaal gebruik van file sync &amp; share oplossingen zoals Dropbox. Het CERN <a href="https://tnc2014.terena.org/core/presentation/73">publiceerde</a> bijvoorbeeld cijfers waaruit bleek dat er dagelijks 4500 verschillende IP-adressen naar Dropbox connecteren.</p>
<p>Maar naast Dropbox is er ook Box, OneDrive, Google Drive, etc. En om alles nog erger te maken zijn er nog andere types diensten in de publieke cloud die “illegaal” gebruikt worden door uw werknemers. Denken we maar aan maildiensten zoals Gmail voor particulieren en Hotmail. Dergelijke maildiensten worden vaak door werknemers gebruikt om even snel gegevens voor hen vanaf het hele internet toegankelijk te maken.</p>
<p>Het bedrijf of de overheidsdienst heeft er dan ook vaak geen flauw benul meer van</p>
<ol>
<li>waar overal ter wereld haar gevoelige data gekopieerd staan (geografische fragmentering),</li>
<li>welke set cloud service providers daarvoor gebruikt wordt (proliferatie diensten),</li>
<li>welke personen toegang hebben tot deze gegevens.</li>
</ol>
<p>Laat ons even ingaan op dit laatste aspect. Zelfs een toegewijde medewerker, we noemen hem gemakshalve Vladimir, gebruikt zonder toelating een dergelijke dienst. Vladimir heeft helaas niet steeds de hoogste vorm van security awareness en zal uit gemakzucht/efficiëntieredenen/werkdruk dan ook niet het sterkste paswoord kiezen om de bedrijfsgegevens in de cloud te beschermen. Of misschien is Vladimir zich er niet eens van bewust dat hij gevoelige gegevens in de publieke cloud plaatst of dat dit een probleem vormt. Wanneer een hacker het paswoord van Vladimir te weten komt, kan deze zich dus zonder probleem een lange tijd onopgemerkt toegang verschaffen tot bedrijfsdata. De impact hiervan is des te erger gezien Vladimir gebruikmaakt van automatische synchronisatie zodat de meest recente versie van elk van zijn documenten quasi onmiddellijk in de publieke cloud terechtkomt.</p>
<p>Het noodlot slaat toe voor onze toegewijde medewerker Vladimir en in het kader van de besparingen wordt hij ontslagen. Is dit zijn dank voor jarenlange hondstrouwe dienst? Hij besluit wraak te nemen&#8230; Hoewel Vladimir geen toegang meer heeft tot de bedrijfsinfrastructuur, heeft hij nog steeds toegang tot heel wat gevoelige bedrijfsgegevens in de cloud&#8230; Dit opent deuren naar zowel de onderwereld als naar de concurrentie. Of smijt hij de gegevens toch maar gewoon op straat? De volgende morgen leest de CEO in de krant dat confidentiële gegevens van haar bedrijf door Jan en alleman te downloaden zijn&#8230; Naast de directe financiële impact is er ook een enorme imagoschade. De aandelen kelderen&#8230;</p>
<p>Maar Vladimir had nog andere collega’s die op een gelijkaardige manier van publieke clouddiensten gebruik maken. Ook collega Korneel gebruikte automatische synchronisatie, zodat hij steeds een kopie van zijn gegevens in de cloud heeft. You never know&#8230;. Maar onbekenden hebben ook toegang gekregen tot de account van Korneel. Ze hebben via de webinterface van de dienst malware geüpload naar de account van Korneel, die vervolgens dankzij het synchronizatieproces op de bedrijfs-PC van Korneel gedownload werd.</p>
<p>Na een grondige scan naar aanleiding van het incident met Vladimir wordt malware gevonden op de PC van Korneel. Het blijkt de mogelijkheid te bezitten om data naar buitenlandse servers te sturen. Doordat de malware gebruik maakte van encryptie heeft het bedrijf geen enkel idee welke gegevens er zo gestolen zijn. Via de logs kan ze enkel vaststellen dat er inderdaad ettelijke gigabytes aan data gestolen is. De incidenten worden uitgebreid belicht in de media. Het bedrijf is genoodzaakt de boeken te sluiten.</p>
<p>Samengevat kan het gebruik van publieke clouddiensten het risico op dataexfiltratie aanzienlijk vergroten. In bovenstaand scenario werden verschillende vormen van dataexfiltratie gebruikt.</p>
<h1>Buitenlandse Spionage</h1>
<p>Overheden maar ook bedrijven zijn zeer geïnteresseerd in datgene waar de concurrent mee bezig is. Dit gaat doorgaans om zaken van economisch of militair belang. Dat dit niet enkel iets is uit de koude oorlogsperiode bleek nog na de onthullingen vorig jaar door Snowden, waaruit zou blijken dat onder meer de Duitse Bondskanselier Merkel <a href="https://deredactie.be/cm/vrtnieuws/buitenland/1.1988296">afgeluisterd</a> werd. Een paar jaar terug was er ook nog het <a href="https://nl.wikipedia.org/wiki/ECHELON">ECHELON</a> schandaal, waarbij volgens de geruchten de Verenigde Staten via de vergaarde informatie contracten van Europese bedrijven konden afsnoepen. Er zijn daarnaast nog tal van andere voorbeelden te geven van (vermoedelijk) overheidsgestuurde cyberspionage.</p>
<p>Via het PRISM-programma kreeg de Amerikaanse geheime inlichtingendienst NSA toegang tot gegevens in datacenters van onder meer Microsoft, Facebook, Apple, Google (zie onderstaande figuuur), terwijl de Britse zus van de NSA, genaamd GCHQ, <a href="https://www.theguardian.com/uk/2013/jun/21/gchq-cables-secret-world-communications-nsa">toegang</a> had tot de datacommunicatie op bepaalde belangrijke glasvezelkabels.</p>
<p><a href="/wp-content/uploads/2014/08/prism.png"><img loading="lazy" decoding="async" class="aligncenter size-full wp-image-7306" src="/wp-content/uploads/2014/08/prism.png" alt="prism" width="604" height="458" srcset="https://www.smalsresearch.be/wp-content/uploads/2014/08/prism.png 604w, https://www.smalsresearch.be/wp-content/uploads/2014/08/prism-300x227.png 300w" sizes="auto, (max-width: 604px) 100vw, 604px" /></a></p>
<p>Dus ook al heeft het (overheids)bedrijf perfect waterdichte securitymaatregelen getroffen, waarbij er een eveneens perfecte security awareness heerst bij het personeel, dan nog zijn er onzichtbare maar toch zeer massieve lekken mogelijk wanneer met externen gecommuniceerd wordt of wanneer het door een cloud-dienst opgeslagen is.</p>
<p>Zowel de cloud service providers als hun overheden trachten uiteraard potentiële klanten gerust te stellen.</p>
<p>Individuele cloud spelers <a href="https://www.dropbox.com/help/27/en">publiceren</a> hun veiligheidsmaatregelen. Maar hoe weten we wat er echt onder de motorkap gebeurt? In een audit-rapport zullen wij alvast niets lezen over toegang door de staatsveiligheid. Verder bouwen de grote (Amerikaanse) cloudspelers datacenters in Europa om haar Europse markt gerust te stellen. Los van het feit dat we geen garantie hebben dat de data niet naar elders op de planeet doorgestuurd wordt, vallen deze bedrijven nog steeds onder de Amerikaanse jurisdictie (lees: de Patriot Act), waardoor ze gedwongen kunnen worden persoonsgegevens aan de Amerikaanse autoriteiten te bezorgen. Dit is natuurlijk een doorn in het oog voor deze bedrijven, gezien het resulteert in een grotere terughoudendheid om van haar diensten gebruik te maken. Microsoft startte daarom een juridische strijd tegen de Amerikaanse overheden om data in haar datacenter in Dublin niet af te hoeven geven. Ze werd daarbij <a href="https://www.cnet.com/news/apple-cisco-back-microsoft-in-fight-over-us-warrant-for-data-overseas/">gesteund</a> door onder meer Apple, Verizon en Cisco. Toch <a href="https://www.pcmag.com/article2/0,2817,2461724,00.asp">oordeelde</a> de rechtbank vorige maand dat Microsoft geen gelijk had.</p>
<p>Overheden trachten weliswaar de publieke opinie en het buitenland te <a href="https://news.nationalpost.com/2013/06/07/prism-barack-obama-says-u-s-got-balance-right-as-furore-grows-over-spy-programs/">sussen</a>. Helaas kan aan de oprechtheid van deze uitspraken getwijfeld worden, en daar is met de recente spionageschandalen en juridische uitspraken des te meer reden toe.</p>
<h1>De macht van de cloud provider</h1>
<p>Een dienst in de publieke cloud is vaak goedkoper, garandeert hoge uptimes alsook een hoge graad van security en je beschikt steeds over de meest recente versie, en dat alles aan lage kosten. Maar tegelijkertijd is het ook een dienst waar je minder vat op hebt vergeleken met on-premise installaties. Dit manifesteert zich op verschillende vlakken:</p>
<ul>
<li>De publieke cloud is niet transparant. We weten niet steeds wat er technisch onder de moterkap gebeurt en wie er exact toegang tot de gegevens heeft. En dit kan wel eens tot onaangename verrassingen leiden. De cloud dienst <a href="https://www.codespaces.com/">Code Spaces</a> pakte bijvoorbeeld tot voor kort uit met haar <em>full recovery plan</em>, maar dat bleek toch niet zo waterdicht te zijn als beloofd. Hackers waren erin geslaagd de virtuele machines en data die door Amazon gehost werden te <a href="https://arstechnica.com/security/2014/06/aws-console-breach-leads-to-demise-of-service-with-proven-backup-plan/">verwijderen</a>. Code Spaces moest haar activiteiten noodgewongen staken. Veel data zijn verloren. De klanten van de dienst hebben pech&#8230;. Dergelijke shut-downs zijn natuurlijk des te dramatischer naarmate de cloud-dienst meer geïntegreerd is met andere diensten die het eigen bedrijf gebruikt.</li>
<li>Natuurlijk kan het één en ander contractueel vastgelegd worden, maar we hebben weet van een contractclausule &#8211; die stelde dat data de EU niet mag verlaten &#8211; unilateraal door de cloud provider gewijzigd werd. Policies lijken dus soms zomaar en te allen tijde wijzigbaar door de cloud provider. Wanneer dit juridisch aangevochten wordt, staat er wel een leger advocaten gereed.</li>
<li>Bovendien veranderen cloud-diensten constant. Zo kan de user-interface van de ene dag op de andere zonder voorafgaande waarschuwing veranderen, wat uiteraard weer aanpassingspijnen met zich meebrengt. Erger is het wanneer bepaalde functionaliteiten of API’s (waar andere applicaties dan weer gebruik van maken) veranderen of zelfs verdwijnen. We krijgen dan wel een boodschap dat we ons maar moeten aanpassen tegen een door de cloud provider gedicteerde datum.</li>
</ul>
<p>Een aantal populaire softwarepakketten die traditioneel volledig on-premise (server of PC) geïnstalleerd werden evolueren nu richting de publieke cloud, waarbij de on-premise versie minder of zelfs helemaal niet meer ondersteund dreigt te worden. Denken we maar aan het softwarepakket Adobe Creative Suite, dat uitgedoofd is en <a href="https://www.cnet.com/news/adobe-kills-creative-suite-goes-subscription-only/">vervangen</a> werd door Adobe Creative Cloud, wat volledig in de publieke cloud draait. Wil je je gevoelige gegevens bewerken met een actuele versie van het toonaangevende grafische pakket, dan ben je verplicht dit in de publieke cloud te doen. Maar ook Microsoft lijkt in eenzelfde richting te evolueren met haar SharePoint, waarbij het <a href="https://blogs.gartner.com/craig-roth/2014/03/11/sharepoint-conference-2014-the-sharepoint-forecast-is-cloudy/">onduidelijk</a> is of ze SharePoint on-premise op termijn nog zal aanbieden. Ook voor haar office toepassingen propageert Microsoft vooral sterk haar publieke cloud oplossing (Office 365). Bedrijven die van dergelijke diensten gebruik willen (blijven) maken riskeren dus de keuze om hun gevoelige gegevens al dan niet intern te houden te verliezen.</p>
<p>De cloud is een logische stap in een het proces van economische schaalvergroting, waarbij er slechts enkele enorm grote spelers overblijven die m.b.v. extreem doorgedreven schaalvoordelen alle concurrentie uitschakelen. Daarmee slagen ze er in hun eigen macht te consolideren en in toenemende mate de spelregels te bepalen, wat niet altijd in het voordeel van de klant is.</p>
<h1>Conclusie</h1>
<p>Deze tekst ging uitsluitend in op een aantal negatieve aspecten van de publieke cloud met betrekking tot gevoelige data. Dit neemt uiteraard niet weg dat er ook heel wat positieve aspecten aan het cloud gebeuren zijn. Toch worden maar al te vaak de negatieve onderbelicht of, sterker nog, gewoon onder de mat geveegd. Het blijft dan ook de verantwoordelijkheid van het (overheids)bedrijf om telkens goed de afweging te maken tussen het kostenvoordeel enerzijds en risico anderzijds.</p>
<hr />
<p>Dit artikel is deels gebaseerd op de <a href="/publications/document/?docid=107">infosessie</a> &#8220;Gevoelige Overheidsdata en de Cloud&#8221; die gegeven werd op 3 april 2014. De integrale presentatie kunt u hieronder bekijken. De presentatie met de bijhorende demofilmpjes zijn <a href="/publications/document/?docid=107">hier</a> te downloaden.</p>
<p align="center"><iframe loading="lazy" style="border-width: 1px 1px 0px; border-style: solid; border-color: #cccccc; margin-bottom: 5px; max-width: 100%;" src="http://www.slideshare.net/slideshow/embed_code/33359498" width="597" height="486" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowfullscreen="allowfullscreen"> </iframe></p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
