<?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 Integration &#8211; Smals Research</title>
	<atom:link href="https://www.smalsresearch.be/tag/data-integration/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.smalsresearch.be</link>
	<description></description>
	<lastBuildDate>Mon, 27 Apr 2026 14:12:40 +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 Integration &#8211; Smals Research</title>
	<link>https://www.smalsresearch.be</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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 fetchpriority="high" 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="https://www.smalsresearch.be/wp-content/uploads/2022/03/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 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="(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 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="(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>Knowledge graphs &#8211; Concept, mogelijkheden en aandachtspunten</title>
		<link>https://www.smalsresearch.be/knowledge-graphs-concept-mogelijkheden-en-aandachtspunten/</link>
		
		<dc:creator><![CDATA[Christophe Debruyne]]></dc:creator>
		<pubDate>Tue, 30 Mar 2021 12:30:37 +0000</pubDate>
				<category><![CDATA[Presentations]]></category>
		<category><![CDATA[Data Integration]]></category>
		<category><![CDATA[Knowledge Graph]]></category>
		<category><![CDATA[Knowledge Management]]></category>
		<guid isPermaLink="false">https://www.smalsresearch.be/knowledge-graphs-concept-mogelijkheden-en-aandachtspunten/</guid>

					<description><![CDATA[Slides van de webinar voor Smals Academy op 20/03/2021 (texte français&#160;: voir ci-dessous) Kennis en informatie in een bedrijfsorganisatorische context is doorgaans verspreid over databases, rekenbladen, documenten, etc. Daarnaast bezitten kenniswerkers ook domeinexpertise die niet in een systeem wordt opgeslagen. Maar wat als men die kennis en informatie wenst te integreren om, bijvoorbeeld, processen te [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p><strong>Slides van de webinar voor Smals Academy op 20/03/2021
</strong>(texte français&nbsp;: voir ci-dessous)<strong>
</strong></p>



<p>Kennis en informatie in een bedrijfsorganisatorische context is doorgaans verspreid over databases, rekenbladen, documenten, etc. Daarnaast bezitten kenniswerkers ook domeinexpertise die niet in een systeem wordt opgeslagen. Maar wat als men die kennis en informatie wenst te integreren om, bijvoorbeeld, processen te automatiseren of nieuwe inzichten te verwerven? <strong>Knowledge graphs</strong> bieden hiervoor een oplossing.</p>



<p>In deze webinar werpt <strong>Christophe Debruyne</strong> zijn licht op het concept van de knowledge graphs en hun mogelijkheden. Hij behandelt daarvoor de volgende topics:</p>



<p>&#8211; Wat is een knowledge graph
&#8211; Knowledge graphs versus andere initiatieven
&#8211; Knowledge graphs versus andere AI technieken
&#8211; Toepassingsgebied van knowledge graphs
&#8211; Bouwen en onderhouden van een knowledge graph
</p>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<p><p></p><p>
Dans le contexte organisationnel d&#8217;une entreprise, les connaissances et les informations sont généralement réparties dans des bases de données, des tableurs, des documents, etc. Parallèlement, les travailleurs de la connaissance possèdent une expertise de domaine qui n&#8217;est pas stockée dans un système. Mais que faire dès lors si l&#8217;on souhaite intégrer ces connaissances et informations pour, par exemple automatiser des processus ou acquérir de nouvelles connaissances&nbsp;? Les <strong>knowledge graphs</strong> offrent une solution à cet égard.</p></p>



<p>Dans ce webinaire, <strong>Christophe Debruyne</strong> fait la lumière sur le concept des graphes de connaissances et leurs possibilités. Il aborde les topics suivants&nbsp;:</p>



<p>&#8211; Qu&#8217;est-ce qu&#8217;un knowledge graph
&#8211; Positionnement des knowledge graphs face à d&#8217;autres initiatives
&#8211; Positionnement des knowledge graphs face à d&#8217;autres techniques d&#8217;IA
&#8211; Domaine d&#8217;application des knowledge graphs
&#8211; Construction et maintenance d&#8217;un knowledge graph</p>



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



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="Knowledge Graphs" width="500" height="281" src="https://www.youtube.com/embed/fAVZcK7vTp8?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



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



<div data-wp-interactive="core/file" class="wp-block-file"><object data-wp-bind--hidden="!state.hasPdfPreview" hidden class="wp-block-file__embed" data="/wp-content/uploads/2021/03/2021-03-30-webinar-kg.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Embed of 2021-03-30-webinar-kg."></object><a id="wp-block-file--media-155c3bd7-198f-47eb-a58a-ed519725ac23" href="https://www.smalsresearch.be/wp-content/uploads/2021/03/2021-03-30-webinar-kg.pdf">2021-03-30-webinar-kg</a><a href="/wp-content/uploads/2021/03/2021-03-30-webinar-kg.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-155c3bd7-198f-47eb-a58a-ed519725ac23">Download</a></div>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Van Chipkaart naar Smartphone naar&#8230; Arm?</title>
		<link>https://www.smalsresearch.be/van-chipkaart-naar-smartphone-naar-arm/</link>
					<comments>https://www.smalsresearch.be/van-chipkaart-naar-smartphone-naar-arm/#comments</comments>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Tue, 20 Sep 2016 08:01:01 +0000</pubDate>
				<category><![CDATA[[NL]]]></category>
		<category><![CDATA[Blog post]]></category>
		<category><![CDATA[architecture]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[Data Integration]]></category>
		<category><![CDATA[egov]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[IoT]]></category>
		<category><![CDATA[microservices]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[onlyonce]]></category>
		<category><![CDATA[open data]]></category>
		<category><![CDATA[Privacy]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[smartcard]]></category>
		<category><![CDATA[software design]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[Web 2.0]]></category>
		<guid isPermaLink="false">/?p=9881</guid>

					<description><![CDATA[Er was eens&#8230; een metrorit. En voor metroritten heb je tegenwoordig een MOBIB-kaart nodig. Dit deed me terugdenken aan het verhaal van de smartcards, en hoe we er veel te veel nodig hebben&#8230; Bij deze dan het lang&#160;beloofde&#160;derde deel van dat verhaal. Over Metro- en Treinkaarten Onlangs moest ik na lange tijd nog eens de [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image alignleft"><a href="/wp-content/uploads/2016/09/evolution.jpg"><img loading="lazy" decoding="async" width="150" height="150" src="/wp-content/uploads/2016/09/evolution-150x150.jpg" alt="evolution" class="wp-image-9993"/></a></figure>



<p>Er was eens&#8230; een metrorit. En voor metroritten heb je tegenwoordig een MOBIB-kaart nodig. Dit deed me terugdenken aan het verhaal van de smartcards, en hoe we er veel te veel nodig hebben&#8230; Bij deze dan het lang&nbsp;beloofde&nbsp;derde deel van dat verhaal.</p>



<span id="more-9881"></span>



<h2 class="wp-block-heading">Over Metro- en Treinkaarten</h2>



<p>Onlangs moest ik na lange tijd nog eens de metro nemen. Ik wist dat mijn papieren kaartje met magneetstrip ondertussen niet meer geldig zou zijn: de overschakeling naar <a href="https://www.stib-mivb.be/accueil/acheter/mobib">MOBIB</a>&nbsp;is nu volledig doorgevoerd. De MOBIB-kaart is RFID technologie, waardoor je ze kan gebruiken door ze gewoon tegen een kaartlezer tegen te houden (je hoeft ze nergens in te steken). Meer over deze technologie kan je terugvinden in één van onze techno&#8217;s: <a href="/publications/document/?docid=86">Het ABC van RFID</a>.</p>



<p>Nu, ik heb reeds een treinabonnement, en ook dit staat op een MOBIB-kaart&#8230; van de NMBS. Ik moest er dus achter zien te komen of ik deze ook voor de metro kon gebruiken. Na wat zoekwerk, zag ik dat ik online een <a href="https://www.stib-mivb.be/mystib/Account/Register?l=en">account kon aanmaken bij de MIVB</a> en dat ik een bestaande MOBIB-kaart kon koppelen aan mijn account. Wanneer ik dit echter probeerde, wist het systeem mij te vertellen dat mijn kaart niet gekend was, maar dat dit wel het geval zou zijn indien ik deze eerst kon opladen via één van de <a href="https://www.stib-mivb.be/points-de-vente-verkooppunten.html?l=en&amp;news_rid=/STIB-MIVB/INTERNET/ACTUS/2007-06/WEB_Article_1181575177670.xml">GO-machines</a> in de metrostations.</p>



<figure class="wp-block-image aligncenter"><a href="/wp-content/uploads/2016/09/kaarttoevoegen.png"><img loading="lazy" decoding="async" width="905" height="399" src="/wp-content/uploads/2016/09/kaarttoevoegen.png" alt="kaarttoevoegen" class="wp-image-9985" srcset="https://www.smalsresearch.be/wp-content/uploads/2016/09/kaarttoevoegen.png 905w, https://www.smalsresearch.be/wp-content/uploads/2016/09/kaarttoevoegen-300x132.png 300w, https://www.smalsresearch.be/wp-content/uploads/2016/09/kaarttoevoegen-768x339.png 768w" sizes="auto, (max-width: 905px) 100vw, 905px" /></a></figure>



<p></p>



<p>Zo gezegd zo gedaan, en &#8211; wonder boven wonder? &#8211; dit werkte inderdaad zoals aangegeven: ik kon mijn NMBS-kaart gebruiken als houder voor het saldo van mijn metroritten, en ik kon deze kaart daarna ook effectief koppelen aan mijn online profiel bij MIVB. (Eén mankement: het resterend saldo aan ritten is niet zichtbaar; maar misschien is dit ook voor de eigen kaarten van MIVB geen feature? &#8211; graag een comment indien iemand dit weet!)</p>



<figure class="wp-block-image aligncenter"><a href="/wp-content/uploads/2016/09/kaarttoegevoegd1.png"><img loading="lazy" decoding="async" width="776" height="501" src="/wp-content/uploads/2016/09/kaarttoegevoegd1.png" alt="kaarttoegevoegd1" class="wp-image-9991" srcset="https://www.smalsresearch.be/wp-content/uploads/2016/09/kaarttoegevoegd1.png 776w, https://www.smalsresearch.be/wp-content/uploads/2016/09/kaarttoegevoegd1-300x194.png 300w, https://www.smalsresearch.be/wp-content/uploads/2016/09/kaarttoegevoegd1-768x496.png 768w" sizes="auto, (max-width: 776px) 100vw, 776px" /></a></figure>



<p></p>



<p>Wat leren we nu uit dit verhaal?</p>



<ul class="wp-block-list">
<li>Ten eerste, de technologische mogelijkheden om het probleem van het <a href="/help-mijn-portefeuille-is-te-dik/">teveel aan kaarten in mijn portefeuille</a> op te lossen, zijn reeds duidelijk aanwezig, maar, gezien het aantal kaarten dat ik nog nodig heb, is er nog geen verregaande implementatie gebeurd (zo is mijn abonnement bij De Lijn, verkregen via NMBS, nog steeds een stukje papier, en een koppeling met bijvoorbeeld de <a href="https://eid.belgium.be/en">Belgische eID</a> is nog steeds beperkt tot de occasionele <a href="https://www.belgianrail.be/en/customer-service/where-to-buy-my-tickets/buy-ticket-mobile.aspx">online aankoop</a> van een treinticket). Conclusie: nog steeds geen <a href="/one-card-to-rule-them-all/">one card to rule them all&#8230;</a></li>



<li>Ten tweede: de netwerken van MIVB en NMBS zijn voorlopig nog onvoldoende geïntegreerd om reeds bij de aanmaak van een nieuwe kaart bij één firma, rechtstreeks ook de nodige gegevens te versturen aan de andere. Op zich is dit soort integratie misschien nogal veeleisend, maar in deze nieuwe wereld van de IT, met zijn <a href="/disruptie-in-de-cloud-stack-caas/">Cloud</a>, zijn <a href="/van-n-tier-naar-microservices/">microservices</a>, en vooral, zijn <a href="/data-centric-it-met-rest/">API economy</a>, zijn er toch wel een aantal <a href="/het-event-als-leidend-voorwerp-in-software-engineering/">architecturen</a> te bedenken waarin dit geen probleem zou mogen zijn. Het &#8220;<a href="https://joinup.ec.europa.eu/event/egovernment-and-reduction-administrative-burden-applying-%C3%A2%E2%82%AC%CB%9Conce-only%C3%A2%E2%82%AC%E2%84%A2-principle">only once principe</a>&#8221; is echter vaak meer een verhaal van politiek en economie, dan van technologie.</li>
</ul>



<h2 class="wp-block-heading">&#8220;Card Management as a Service&#8221;</h2>



<figure class="wp-block-image alignright"><a href="/wp-content/uploads/2016/09/wernervoegls.jpg"><img loading="lazy" decoding="async" width="300" height="225" src="/wp-content/uploads/2016/09/wernervoegls-300x225.jpg" alt="wernervoegls" class="wp-image-9986" srcset="https://www.smalsresearch.be/wp-content/uploads/2016/09/wernervoegls-300x225.jpg 300w, https://www.smalsresearch.be/wp-content/uploads/2016/09/wernervoegls.jpg 638w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></figure>



<p>Ik zou hier graag reeds even vooruitblikken op een toekomstige blog, waarin ik de voordelen van een gescheiden beheer van gegevensnetwerken versus er van gebruik makende&nbsp;toepassingen wil toelichten: Stel dat we één instelling hadden die het beheer van de kaarten en de&nbsp;ermee gepaard gaande gegevens, netwerken en basisdiensten op zich nam, en dat de andere bedrijven, zoals de vervoersmaatschappijen in kwestie, van deze diensten gebruik maakten. Dit zou ervoor zorgen dat alles wat met kaarten te maken had, efficiënter zou kunnen worden gemaakt wegens schaalvoordelen, én dat de vervoersmaatschappijen zelf deze verantwoordelijkheid niet meer hoefden te dragen. Dit is eigenlijk precies één van de belangrijke verwezenlijkingen van <a href="/cloud-metaforen-elektriciteit-goud/">Cloud</a>, en, meer in het bijzonder, het &#8220;<a href="/as-a-service-een-waaier-aan-mogelijkheden/">as a Service</a>&#8221; verhaal, maar dan toegepast op <a href="/escroqueries-carte-bancaire/">chipkaarten</a>. Daarnaast kan men het ook bekijken in een microservices en API context (&#8220;you build it, you run&nbsp;it&#8221;).</p>



<p>Hierover dus later meer.&nbsp;Waar ik het nu verder over wil hebben is de toekomst&#8230;</p>



<h2 class="wp-block-heading">De Nabije Toekomst?</h2>



<p>Vandaag is het reeds mogelijk om met je <a href="/een-smartphone-of-tablet-als-eindejaarscadeau/">smartphone</a> vervoersbewijzen aan te kopen, betalingen te doen, ja, zelfs jezelf te <a href="/kan-ik-met-csam-mobiel-authenticeren/">identificeren voor gebruik van overheidstoepassingen</a>. Een toekomst waarin we geen kaarten meer nodig hebben, maar waarin deze volledig zijn vervangen door de smartphone, is dus zeker technisch realiseerbaar, en op lange termijn misschien zelfs realistisch. Het belangrijkste probleem hierbij is er één dat slechts langzaamaan kan worden opgelost: de logistiek van het on-boarden van alles en iedereen die nu nog met kaarten werkt, en van alles en iedereen die nu nog geen smartphone heeft. In een nog verdere toekomst zullen we misschien zelfs de portefeuille in zijn geheel kunnen afschaffen, indien we dit ook met <a href="https://deredactie.be/cm/vrtnieuws/economie/1.2558162">het systeem van cash geld</a> zouden doen!</p>



<h2 class="wp-block-heading">Science Fiction</h2>



<p>Wat als we dan nog eens een paar decennia verder in de toekomst kijken? We zien reeds nu zaken opduiken als <a href="/biometrie-eindelijk-gedaan-met-paswoorden-onthouden/">bio-authentication</a>, waarbij we onze vingerafdrukken, stem, gezicht, of zelfs <a href="/gedragsbiometrie-als-basis-voor-impliciete-authenticatie/">context</a> gebruiken om te authenticeren. Daarnaast doet men ook gericht onderzoek naar nanotechnologie, robotica, <a href="/watson-revisited/">artificiële intelligentie</a>, <a href="/er-zit-een-hacker-in-mijn-diepvries/">Internet of Things</a>, &#8230; Allemaal zaken die ervoor zorgen dat technologie en ons lichaam steeds dichter bij elkaar komen en uiteindelijk zelfs kunnen worden&nbsp;<a href="https://en.wikipedia.org/wiki/Biomechatronics">samengevoegd</a>.</p>



<figure class="wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio"><div class="wp-block-embed__wrapper">
<iframe loading="lazy" title="The Cicret Bracelet (Concept video)" width="500" height="281" src="https://www.youtube.com/embed/9J7GpVQCfms?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</div></figure>



<p>Uiteindelijk zou het dan mogelijk worden dat de smartphone wordt vervangen door een scherm op de huid van onze <strong><em>arm </em></strong><em>(zie filmpje hierboven voor wat binnenkort al kan!)</em>, met alle nodige technologie netjes verborgen aan de binnenkant van ons lichaam! Sterker nog: het scherm zou evengoed virtueel voor onze ogen kunnen worden getoverd, dankzij technologie rechtstreeks in onze ogen of hersenen. Op die manier hebben we niets meer nodig: al het nodige dragen we steeds met ons mee, zoals we dat met ons lichaam doen. En onszelf identificeren om ons vervoersbewijs te <a href="https://1.bp.blogspot.com/-fZhj_ikcrdE/Tg99qyIMheI/AAAAAAAADN4/vNgts2y1qfc/s1600/These%2BArent%2BThe%2BDroids%2BYoure%2BLooking%2BFor%2B006.jpg">legitimiseren, doen we door eens te wuiven</a>.</p>



<p>Op zich een groot gemak, maar uiteraard is hier ook een duistere zijde aan verbonden: het zou wel eens heel moeilijk kunnen worden om &#8220;off-the-grid&#8221;, of &#8220;offline&#8221; te gaan, of om zonder al deze technologische snufjes te kunnen. Sterker nog: we zouden Big Brother scenario&#8217;s kunnen krijgen, of een regelrecht doembeeld, zoals in de film &#8220;<a href="https://www.imdb.com/title/tt1637688/">In Time</a>&#8220;.&nbsp;Maar goed: wat er met een technologie gedaan wordt, staat los van de technologie zelf (ook met een eenvoudige hamer kan je zowel bouwen als verwonden).</p>



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



<p>Er staan ons nog een aantal wonderlijke technologische evoluties&nbsp;te wachten, maar er blijft vooral nog veel werk aan de winkel wat betreft het vereenvoudigen van het leven van de gewone burger, met al zijn chipkaarten, zijn smartphone en zijn muntjes van twee eurocent, en van alle administratie die daarbij komt kijken. Samenwerking, integratie, en het zo breed mogelijk invoeren van het <em>only once principe</em>&nbsp;zijn de boodschap.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.smalsresearch.be/van-chipkaart-naar-smartphone-naar-arm/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Data Centric IT met REST</title>
		<link>https://www.smalsresearch.be/data-centric-it-met-rest/</link>
		
		<dc:creator><![CDATA[Koen Vanderkimpen]]></dc:creator>
		<pubDate>Tue, 05 Apr 2016 08:25:38 +0000</pubDate>
				<category><![CDATA[Blog post]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[big data]]></category>
		<category><![CDATA[cloud computing]]></category>
		<category><![CDATA[data center]]></category>
		<category><![CDATA[Data Integration]]></category>
		<category><![CDATA[Information management]]></category>
		<category><![CDATA[Master Data Management]]></category>
		<category><![CDATA[methodology]]></category>
		<category><![CDATA[open data]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[rest]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[SOA]]></category>
		<category><![CDATA[Software architectures]]></category>
		<category><![CDATA[software design]]></category>
		<category><![CDATA[software engineering]]></category>
		<category><![CDATA[standards]]></category>
		<guid isPermaLink="false">/?p=9535</guid>

					<description><![CDATA[Over REST hebben we het al vaak gehad op deze blog, maar zelden hebben we het gehad over het ware voordeel van dit acroniem: meer nog dan een technologie, is het een architecturaal principe voor het web en voor samenwerkende computersystemen: één dat de data centraal stelt. Data Centric IT De meeste informatici weten wel wat data is, [&#8230;]]]></description>
										<content:encoded><![CDATA[<p style="text-align: justify;"><a href="/wp-content/uploads/2016/03/rest-api.png" rel="attachment wp-att-9563"><img loading="lazy" decoding="async" class="alignleft size-thumbnail wp-image-9563" src="/wp-content/uploads/2016/03/rest-api-150x150.png" alt="rest-api" width="150" height="150" srcset="https://www.smalsresearch.be/wp-content/uploads/2016/03/rest-api-150x150.png 150w, https://www.smalsresearch.be/wp-content/uploads/2016/03/rest-api-300x300.png 300w, https://www.smalsresearch.be/wp-content/uploads/2016/03/rest-api-768x767.png 768w, https://www.smalsresearch.be/wp-content/uploads/2016/03/rest-api.png 780w" sizes="auto, (max-width: 150px) 100vw, 150px" /></a>Over REST hebben we het al <a href="/rest-iam-part-2-oauth/">vaak</a> <a href="/rest-iam-%e2%80%93-part-3-scim/">gehad</a> op deze blog, maar zelden hebben we het gehad over het ware voordeel van dit acroniem: meer nog dan een technologie, is het een architecturaal principe voor het web en voor samenwerkende computersystemen: één dat de data centraal stelt.</p>
<p><span id="more-9535"></span></p>
<h1>Data Centric IT</h1>
<p><a href="/wp-content/uploads/2016/03/data-centric.png" rel="attachment wp-att-9567"><img loading="lazy" decoding="async" class="alignright wp-image-9567 size-medium" src="/wp-content/uploads/2016/03/data-centric-300x225.png" alt="data-centric" width="300" height="225" srcset="https://www.smalsresearch.be/wp-content/uploads/2016/03/data-centric-300x225.png 300w, https://www.smalsresearch.be/wp-content/uploads/2016/03/data-centric-768x576.png 768w, https://www.smalsresearch.be/wp-content/uploads/2016/03/data-centric.png 960w" sizes="auto, (max-width: 300px) 100vw, 300px" /></a></p>
<p style="text-align: justify;">De meeste informatici weten wel wat <a href="https://en.wikipedia.org/wiki/Data_(computing)">data</a> is, en wat databases zijn, maar zijn toch vooral &#8216;opgevoed&#8217; met een focus op applicaties, algoritmes, enz. De applicatie is uiteraard erg belangrijk: ze verricht het nuttige werk van een computersysteem. Toch moeten we dit nuanceren. Een <a href="https://blogs.informatica.com/2015/12/14/two-tips-data-centric-architecture/#fbid=_csrNPgnhtT">applicatie is eigenlijk enkel een hulpmiddel</a> voor het manipuleren van de data. Als we er eens bij stil staan, dan komen we tot de vaststelling dat nagenoeg elke applicatie die we kennen, dient om data uit te lezen, in te voeren, mooi/anders weer te geven of te bewerken. Dit geldt zowel voor eindgebruikersapplicaties als voor applicaties die enkel I/O doen (b.v. de zogenaamde &#8216;batch&#8217; applicaties). <strong>Dus eigenlijk is de data de <a href="https://www.drdobbs.com/architecture-and-design/data-centric-architecture-a-model-for-th/229301018">centrale asset</a> van een IT-systeem!</strong></p>
<p style="text-align: justify;">Dan kunnen we ons de vraag stellen of we hier bij het ontwikkelen van de architectuur van computersystemen niet meer rekening mee zouden moeten houden? We kunnen de data voorop stellen als centrale entiteit bij de communicatie tussen verschillende applicaties en gebruikers, en ook binnen verschillende subsystemen binnen applicaties. Doen we dit consequent, dan evolueren we stilaan naar een <em>Data-Centric aanpak van IT</em>.</p>
<h1>REST</h1>
<p style="text-align: justify;"><a href="https://en.wikipedia.org/wiki/Representational_state_transfer">REST</a> staat als acroniem voor &#8216;Representational State Transfer&#8217;. Deze wijze van data-overdracht heeft een aantal verschillende eigenschappen, waaronder dat men heel eenvoudig via http(s!) en via gebruik van eenvoudige principes als CRUD (Create &#8211; Read &#8211; Update &#8211; Delete) verschillende systemen kan laten communiceren. Voor de <em>rest</em> ga ik hier niet meer verder over uitweiden in deze blog, behalve één belangrijke eigenschap: een goedgemaakte REST API biedt een zelf-descriptief overzicht op data (zogenaamde resources), en niet op methodes. (Voor een mooie en praktische uitleg over REST, kan ik verwijzen naar <a href="https://stackoverflow.com/questions/671118/what-exactly-is-restful-programming">stackoverflow</a> en ook naar <a href="https://www.looah.com/source/view/2284">deze leuke</a>.)</p>
<p style="text-align: justify;">Men kan <a href="https://www.thoughtworks.com/insights/blog/rest-api-design-resource-modeling">dit principe</a> nog anders uitleggen: de namen die men aan de functies geeft die men in een REST API (Application Programming Interface) kan oproepen om een resultaat te bekomen, zullen geen werkwoorden zijn, maar naamwoorden. Een voorbeeld maakt dit een stuk duidelijker:</p>
<p style="text-align: justify;">Nemen we een applicatie die als één van haar functionaliteiten een lijst van personen/gebruikers beheert. Het is de bedoeling dat andere applicaties personen kunnen zoeken, opvragen, toevoegen, veranderen en verwijderen. In plaats van op de traditionele manier een programmatorische  API of een <a href="https://en.wikipedia.org/wiki/SOAP">SOAP</a> (Simple Object Access Protocol) webservice aan te bieden, openen we via een RESTful webservice een raam op de door de applicatie beheerde gegevens. Dit ziet er dan b.v. als volgt uit:</p>
<ul>
<li>&#8220;GET www.app.be/rest/user&#8221;: geeft alle beheerde personen (meestal geeft men daarbij slechts een beperkt aantal gegevens per persoon)</li>
<li>&#8220;POST /user&#8221; (we laten het eerste deel van de url vanaf nu achterwege, dit is altijd hetzelfde): laat toe om de gegevens voor een nieuwe persoon door te sturen.</li>
<li>&#8220;GET /user/100023&#8221;: geeft detailgegevens over persoon met volgnummer 100023</li>
</ul>
<p><figure id="attachment_9569" aria-describedby="caption-attachment-9569" style="width: 732px" class="wp-caption aligncenter"><a href="/wp-content/uploads/2016/03/output-examples.png" rel="attachment wp-att-9569"><img loading="lazy" decoding="async" class="size-full wp-image-9569" src="/wp-content/uploads/2016/03/output-examples.png" alt="Voorbeeld van de output van een REST service, wanneer een lijst van users wordt opgevraagd, in drie mogelijke formaten: xml, json en html" width="732" height="349" srcset="https://www.smalsresearch.be/wp-content/uploads/2016/03/output-examples.png 732w, https://www.smalsresearch.be/wp-content/uploads/2016/03/output-examples-300x143.png 300w" sizes="auto, (max-width: 732px) 100vw, 732px" /></a><figcaption id="caption-attachment-9569" class="wp-caption-text">Voorbeeld van de output van een REST service, wanneer een lijst van users wordt opgevraagd, in drie mogelijke output formaten: xml, json en html</figcaption></figure></p>
<p style="text-align: justify;">Het is dus eigenlijk alsof je rechtstreeks in een hiërarchische structuur van je gegevens alle nodige bewerkingen kan uitvoeren. Uiteraard zal de achterliggende applicatie niet zomaar alles toelaten: ze zal nog steeds verantwoordelijk zijn voor controle op input, en voor authenticatie en autorisatie van de systemen die van de RESTful service gebruik maken. De beveiliging in een dergelijke aanpak gebeurt best volgens de principes van <a href="https://en.wikipedia.org/wiki/Data-centric_security">Data-Centric Security</a>, daar deze als van nature in een dergelijke Data-Centric Architecture thuishoren.<br />
<a href="/wp-content/uploads/2016/03/rest-centric.png" rel="attachment wp-att-9581"><img loading="lazy" decoding="async" class="alignleft wp-image-9581" src="/wp-content/uploads/2016/03/rest-centric.png" alt="rest-centric" width="450" height="338" srcset="https://www.smalsresearch.be/wp-content/uploads/2016/03/rest-centric.png 960w, https://www.smalsresearch.be/wp-content/uploads/2016/03/rest-centric-300x225.png 300w, https://www.smalsresearch.be/wp-content/uploads/2016/03/rest-centric-768x576.png 768w" sizes="auto, (max-width: 450px) 100vw, 450px" /></a>Uiteindelijk kan veelvuldig toepassen van RESTful principes om applicaties aan te sturen, leiden tot een mooi <strong>Data-Centric Ecosysteem</strong>, waar de principes van deze architectuur doorgetrokken zijn over een groot aantal verschillende applicaties: In plaats van elke applicatie nog een aparte url te geven, zal men eerder een algemene url opzetten voor de data binnen de gehele groep samenwerkende applicaties (e.g. &#8216;data.socialsecurity.be&#8217; zou dit kunnen zijn voor alle applicaties binnen de sociale zekerheid). Vele applicaties samen, elk verantwoordelijk voor hun stukje van de hiërarchie, zullen instaan voor deze ene grote RESTful data API, en alle applicaties zullen er op hun beurt weer gebruik van kunnen maken, zonder dat ze zich iets hoeven aan te trekken van waar de data vandaan komt of naartoe gaat (of door welke applicatie ze wordt beheerd). De applicaties hoeven elkaar op deze manier niet meer te kennen of te adresseren; ze hebben enkel het adres nodig van de data. In een enterprise omgeving zal men typisch gebruik maken van een &#8216;<a href="https://searchcloudapplications.techtarget.com/definition/API-management">API management suite</a>&#8216; om zo&#8217;n RESTful API, of groep ervan, te beheren.</p>
<p style="text-align: justify;">Men kan het toepassen van dit principe ook zien als een vorm van <a href="https://en.wikipedia.org/wiki/Data_virtualization">Data Virtualization</a>, aangezien men services aanbiedt om de data, die normaal gezien in onderliggende databases zit, virtueel te ontsluiten. Indien men deze architectuur via Cloud-technologie implementeert, kan men het ook zien als een vorm van <a href="https://en.wikipedia.org/wiki/Data_as_a_service">Data-as-a-Service</a> (DaaS). Wanneer men de data ook aanbiedt aan externe partijen, kan het eventueel gaan om <a href="https://en.wikipedia.org/wiki/Open_data">Open Data</a>.</p>
<p style="text-align: justify;">Het doortrekken van deze architectuur over de gehele organisatie, of zelfs over meerdere samenwerkende organisaties, kan sterke <strong>synergieën</strong> teweeg brengen, doordat de data voor alle applicaties éénvormig beschikbaar wordt, en doordat het gemakkelijker wordt om reeds door RESTful services ontsloten data te gaan hergebruiken vanuit meerdere applicaties. Dit leidt uiteindelijk tot wat men noemt, een bloeiende &#8216;<a href="https://searchsoa.techtarget.com/definition/API-economy-application-programming-interface-economy">API economy</a>&#8216;. Uiteraard is een goede governance over de data, een <a href="https://community.sparxsystems.com/white-papers/632-the-value-of-an-enterprise-information-model">Enterprise Information Model</a>, en een sterk <a href="/de-la-production-industrielle-a-la-production-dinformation-analogies-paradoxes-et-enseignements-operationnels/">Master Data Management</a> van belang om hiermee echt succesvol te zijn.</p>
<h1>Communiceren via REST of via EDA&nbsp;?</h1>
<p style="text-align: justify;">Via RESTful services kan je dus in principe alle applicaties die dit vereisen, met elkaar laten communiceren. Dezelfde mogelijkheden heb ik echter eerder al voorgesteld in de context van Event Driven Architecture (EDA) in twee eerdere blogs (<a href="/het-event-als-leidend-voorwerp-in-software-engineering/">basis</a> en <a href="/geavanceerd-event-driven-engineering/">geavanceerd</a>). Je kan je afvragen of dit niet redundant is, of welke van de twee nu de beste oplossing is?</p>
<p style="text-align: justify;">Het antwoord is &#8211; je had het allicht zien aankomen &#8211; dat beide oplossingen hun plaats hebben in een gedistribueerd ecosysteem. Events werken namelijk typisch <strong><a href="https://stackoverflow.com/questions/748175/asynchronous-vs-synchronous-execution-what-does-it-really-mean">asynchroon</a></strong>, terwijl REST <strong><a href="https://stackoverflow.com/questions/748175/asynchronous-vs-synchronous-execution-what-does-it-really-mean">synchroon</a></strong> kan worden gebruikt. Dit betekent dat een applicatie onmiddellijk op de hoogte kan worden gebracht, indien er een voor haar interessant Event beschikbaar is. Indien de applicatie echter meer data nodig heeft, die zich niet in een beschikbaar huidig Event bevindt, dan kan het deze gaan opvragen d.m.v. het gebruik van een RESTful service. Het besluit is dus dat we Events kunnen gebruiken om nieuwe gegevens zo snel mogelijk over het netwerk te verspreiden, naar alle belanghebbenden, en dat we RESTful services kunnen gebruiken om reeds gekende informatie universeel ter beschikking te stellen op het netwerk, waar alle geïnteresseerden ze kunnen gaan raadplegen. Een mooi complementair geheel dus &#8211; en het goede nieuws is dat de beide benaderingen meestal ondersteund kunnen worden door één en dezelfde onderliggende middleware technologie (typisch, de &#8216;<a href="https://en.wikipedia.org/wiki/Enterprise_service_bus">Enterprise Service Bus</a>&#8216; (ESB) ).</p>
<p><a href="/wp-content/uploads/2016/03/eda-rest.png" rel="attachment wp-att-9582"><img loading="lazy" decoding="async" class="aligncenter wp-image-9582 size-full" src="/wp-content/uploads/2016/03/eda-rest-e1458906104781.png" alt="eda-rest" width="960" height="518" srcset="https://www.smalsresearch.be/wp-content/uploads/2016/03/eda-rest-e1458906104781.png 960w, https://www.smalsresearch.be/wp-content/uploads/2016/03/eda-rest-e1458906104781-300x162.png 300w, https://www.smalsresearch.be/wp-content/uploads/2016/03/eda-rest-e1458906104781-768x414.png 768w" sizes="auto, (max-width: 960px) 100vw, 960px" /></a></p>
<h1>Besluit</h1>
<p style="text-align: justify;">Net zoals REST, passen Events heel goed in een Data-Centric Architectuur: Events, zeker business <strong>Events</strong>, zijn namelijk ook data, en een belangrijke informatiebron voor <a href="/big-data-analytics-whats-in-a-name/">Analytics</a>. Samen met <strong>REST</strong> hebben we dus de <strong>twee stukken van de communicatiepuzzel binnen Data-Centric IT</strong> volledig in handen.</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Working Predictive Analytics (1): lessons learned</title>
		<link>https://www.smalsresearch.be/putting-predictive-analytics-to-work-lessons-learned/</link>
		
		<dc:creator><![CDATA[Dries Van Dromme]]></dc:creator>
		<pubDate>Mon, 05 Mar 2012 12:06:01 +0000</pubDate>
				<category><![CDATA[Blog post]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[business intelligence]]></category>
		<category><![CDATA[Data Integration]]></category>
		<category><![CDATA[Data Mining]]></category>
		<category><![CDATA[Information management]]></category>
		<category><![CDATA[Predictive Analytics]]></category>
		<guid isPermaLink="false">/?p=4012</guid>

					<description><![CDATA[We hadden het al gelezen:  het potentieel is enorm, maar (zoals met zovele zaken) de kous is niet af met het kopen van software. Er komt heel wat bij kijken om Predictive Analytics succesvol, met ROI, in te zetten. Dat wisten we dus al &#8211; maar wat nu we een tijdje verder zijn, de eerste [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>We hadden het al gelezen:  het potentieel is enorm, maar (zoals met zovele zaken) de kous is niet af met het kopen van software. Er komt heel wat bij kijken om Predictive Analytics <em><strong>succesvol</strong></em>, met ROI, in te zetten.</p>
<p>Dat wisten we dus al &#8211; maar wat nu we een tijdje verder zijn, de eerste successen geboekt zijn? <strong>Enkele lessen</strong> kunnen getrokken worden, nu we dit aan den lijve hebben kunnen ondervinden. We geven ze hier al kort mee; elk van deze deelaspecten kan het onderwerp vormen van aparte blogs, waarin we er telkens wat meer aan besteden &#8230;</p>
<ul>
<li>men heeft specifieke skills nodig (business analyse, data mining, &#8230;) die verder gaan dan deze die nodig zijn voor Data Integration en Statistics;</li>
<li>men moet rekening houden met evolutie in de modellen, onderliggend aan analytics, en dient dus een model management te voorzien;</li>
<li>men moet een goed idee hebben van hoe (en met welk personeel) men zal afhandelen (workflow, case management, business processen, &#8230;) wat men met analytics detecteert;</li>
<li>afhankelijk van de behoeften van de business (bv. (near) real-time detectie), is er misschien nood aan specifieke implementatie-architectuur (bv. Complex-event Processing, of moderne BI-architecturen, Data Virtualisatie) bij de koppeling van analytics aan de productiesystemen. Klassieke DWH-gebaseerde architecturen kunnen immers tekort schieten! Veel hangt ook af van de aanwezige Enterprise Architectuur.</li>
</ul>
<p>Zeker en vast &#8220;to be continued&#8221;, dus &#8230; blijf ons volgen!</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Open Source Data Integration met MapReduce-support</title>
		<link>https://www.smalsresearch.be/open-source-data-integration-met-mapreduce-support/</link>
		
		<dc:creator><![CDATA[Dries Van Dromme]]></dc:creator>
		<pubDate>Fri, 22 Apr 2011 14:42:30 +0000</pubDate>
				<category><![CDATA[Blog post]]></category>
		<category><![CDATA[Data Integration]]></category>
		<category><![CDATA[Open Source]]></category>
		<guid isPermaLink="false">http://blogs.smals-mvm.be/research/?p=1969</guid>

					<description><![CDATA[Even preciseren: het gaat om Talend (open source Data Integration software) en het gaat om de open source implementatie van MapReduce: Apache Hadoop. Uiteraard&#160;:-). (Talend vermeldde ik reeds als DI-onderdeel van open source BI-platformen, deel1 en deel 2, en na recente overname van Sopera, als opkomende EAI-speler die een open source alternatief biedt.) Hoe doet [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>Even preciseren: het gaat om <strong><a href="https://www.talend.com">Talend</a></strong> (open source Data Integration software) en het gaat om de open source implementatie van MapReduce: <strong>Apache Hadoop</strong>. Uiteraard&nbsp;:-).</p>
<p>(<strong>Talend</strong> vermeldde ik reeds als DI-onderdeel van open source BI-platformen, deel1 en deel 2, en na recente overname van <strong>Sopera</strong>, als opkomende EAI-speler die een open source alternatief biedt.)</p>
<p><strong>Hoe doet Talend het, en wat is er zo sterk aan?</strong></p>
<p>In de eerste plaats gaat het om connectiviteit, waarbij de bron en/of het resultaat van de ETL-routines in Hadoop gaat. Tot daar nog niks spectaculairs.<br />
Maar de Talend Integration Suite gaat nog verder, en profiteert van haar mogelijkheid om native Hadoop-code te genereren, waarbij net de <em>transformatie-operaties</em> aan Hadoop gegeven worden om aldus van Hadoops performantie voor Big Data te profiteren.<br />
Dit soort ETL is niet zo bekend, maar heet <strong>ELT</strong>: &#8220;Extract-Load-Transform&#8221;, een stokpaardje van Talend.</p>
<p>Merk wel op dat de generatie van Hadoop-code enkel in de Subscription-versie (Talend Integration Suite) vervat zit, niet in de gratis versie (Talend Open Studio). Geen verrassingen hier.</p>
<p>Voor de liefhebbers: lees <a href="https://tdwi.org/articles/2010/08/18/talend-di-mapreduce.aspx">hier</a> meer.</p>
<p><strong>Conclusie</strong></p>
<p>MapReduce is niet alleen voor Analytics, en Talend is een belangrijke, groeiende speler, die ook Big Data aankan.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Talend neemt Sopera over: open source datamanagement + applicatie-integratie</title>
		<link>https://www.smalsresearch.be/talend-neemt-sopera-over-open-source-datamanagement-applicatie-integratie/</link>
		
		<dc:creator><![CDATA[Dries Van Dromme]]></dc:creator>
		<pubDate>Thu, 18 Nov 2010 09:57:36 +0000</pubDate>
				<category><![CDATA[Blog post]]></category>
		<category><![CDATA[application integration]]></category>
		<category><![CDATA[Data Integration]]></category>
		<category><![CDATA[data quality]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[SOA]]></category>
		<guid isPermaLink="false">http://blogs.smals-mvm.be/research/?p=1408</guid>

					<description><![CDATA[De overname van Sopera (open source SOA en middleware) door Talend (open source data integratie en data management) creëert een heel sterke pure play open source middleware vendor, die kan profiteren van de synergie tussen data management en applicatie-integratie. Dit is m.i. goed gezien, want vaak zijn de redenen voor het falen van SOA-projecten e.d. [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>De overname van Sopera (open source SOA en middleware) door Talend (open source data integratie en data management) creëert een heel sterke pure play open source middleware vendor, die kan profiteren van de synergie tussen data management en applicatie-integratie.</p>
<p>Dit is m.i. goed gezien, want vaak zijn de redenen voor het falen van SOA-projecten e.d. (verwachtingen niet ingelost, vertragingen, budget overscheden, &#8230;) te vinden in de onderliggende datakwaliteitsproblemen of moeilijkheden op het vlak van data-integratie &#8211; naast de beter bekende redenen zoals gebrekkig requirements management en slechte software-kwaliteitscontrole (SQA). Dit zou dus wel eens een vruchtbaar huwelijk kunnen blijken.</p>
<p>U kan er <a href="https://www.talend.com/campaign/campaign.php?id=144&amp;src=HomePageSpecial"> hier meer</a> over lezen.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
