Analyse en voorspellingen

Egmont-Petersen

Big data – trends

Met de komst van de cloud, de grote groei aan allerlei soorten publieke data op Internet en steeds meer internetverkeer in het algemeen, is de nieuwe discipline ‘Big Data‘ ontstaan. Het concrete doel met Big Data activiteiten verschilt per organisatie. Een drietal voorbeelden:

  • Een bank kan geïnteresseerd zijn om haar imago te volgen, via sociale media. Welke trefwoorden worden (vaak) geassocieerd met de dienstverlening van de bank?
  • Een opsporingsorganisatie wenst om kentekens van web-cams in het verkeer te koppelen aan mogelijke opsporingsonderzoeken (nadat de nodige juridische toestemmingen hiervoor zijn verleend).
  • Een verzekeraar wil geclaimde schade aan woningen en inboedel relateren aan recente verkoopadvertenties op bekende makelaarsites, voor woningen in dezelfde wijken.
  • Een aanbieder van online leersystemen wil verschillende leerstijlen in kaart brengen, onder hun gebruikers.

Wat ik altijd zie terugkomen in Big Data projecten, is een sterke focus op het verzamelen van data, en harmonisatie van data. Softwareomgevingen zoals: Hadoop, Spark, Hive, leggen een sterke focus op deze taken. Het distribueren van deze taken over een cluster van virtuele computers is ook een punt van focus.

Wat ik veel minder zie in Big Data projecten, is de vraag naar goede Machine Learning tools, en de diepgaande kennis om hiermee de verzamelde ‘Big Data’ te analyseren.

Over mijzelf: In 1996 heb ik een wetenschappelijke promotie behaald op gebied van neurale netwerken en machine learning. Mijn promotieonderwerp – en mijn specialiteit – is classifiers: modellen voor het voorspellen van een onbekende uitkomst, op basis van een aantal gegevens / variabelen / metingen. Ik heb technieken ontwikkeld om te achterhalen welke gegevens het belangrijkst zijn, en onder welke omstandigheden. Ook beschik ik over technieken waarmee kan worden nagegaan of een classifier nog steeds toepasbaar is, of dat de samenhangen zijn veranderd. In het laatste geval moet de classifier opnieuw worden gebouwd.

 

Machine learning – predictive analytics

Wat zit er achter deze concepten? Wanneer de (big) data verzameld zijn, dan volgt in de regel voorbewerkingsstappen – pre-processing. Deze voorbewerkingen zijn bijvoorbeeld nodig wanneer de data als natuurlijke taal (‘woorden’) beschikbaar zijn (bijv. Twitter-berichten). Voor beelddata zijn ook speciale voorbewerkingsstappen nodig.

Hierna begint het ‘leren’ uit data. Ik maak de indeling tussen:

  • Verbanden – Verbanden zien in de data – het reduceren van de vele dimensies in de gegevensstroom naar specifieke, hoog-relevante samenhangen.
  • Voorspellen – Het voorspellend modelleren van verbanden in de data. Dit is weer onderverdeeld in:
    • Voorspellen uitkomst – Voorspellen van een uitkomst (de kans hierop) uit een kleine hoeveelheid mogelijke uitkomsten, gebaseerd op de aanwezige data
    • Voorspellen ‘getal’ – Voorspellen van een getalsvariabele, gebaseerd op de aanwezige data.

Een voorbeeld van een uitkomst-voorspellend model ‘Voorspellen uitkomst‘, is het berekenen van de kans van een bezoeker in een webwinkel ook een aanschaf doet en daarmee klant wordt. Zie voorbeeld.

Het voorspellen van een ‘getal’ is handig wanneer je bijvoorbeeld het verwachte aantal verkochte eenheden per dag van een product in je webshop wil weten. Deze voorspelling is handig wanneer je het inpakken en versturen van de pakketjes per dag aan het plannen is.

Een andere uitdaging is het monitoren of het aankoopgedrag na een maand verandert onder de bezoekers, waardoor het voorspellend model opnieuw moet worden berekend. Deze veranderingen in gedrag kunnen we automatisch detecteren, en het voorspellend model opnieuw laten berekenen, met de nieuwste data.

Java versus Python voor Machine Learning

De laatste paar jaar is de populariteit van Python gegroeid voor Big Data en Machine Learning toepassingen. Het blijkt dat Python in het begin makkelijk toepasbaar is voor het leren en testen van ‘predictive’ modellen. 

Let wel op dat Java een sterk-type-check taal is, terwijl Python dit niet is. Ook moet Java altijd worden gecompileerd, terwijl Python een geïnterpreteerde taal is. Dit laatste maakt het makkelijk om een gewijzigde Python-aanroep snel te doen, terwijl je bij Java eerst moet compileren. 

Doordat type-fouten makkelijk worden geïntroduceerd in Python, wint Java het van Python voor serieuze businesstoepassingen. Vooral in productiesystemen wil je geen geïnterpreteerde taal in je engine hebben, met alle risico’s voor run-time errors en langzamere uitvoer als gevolg.

Vandaar dat Java aan te raden is voor Machine Learning / Big Data processing in productiesystemen.

https://diceus.com/python-vs-java-for-big-data/

 

Java-tooling voor Machine-Learning:

Weka – bouw classifiers via GUI

 

Deep-learning:

Deep-Learning met Weka