Basis ML

In deze cursus zullen we de basis principes van Machine Learning belichten en bespreken. We zullen verschillende topics licht aanraken en hopen een holistisch beeld te kunnen schetsen

 

Dit zijn de onderwerpen die we gaan bekijken.

 

  • EDA

  • Data Cleaning

  • Feature engineering

  • Modellen trainen en selecteren

  • Modellen tunen

  • Modellen in productie

  • Cloud en Spark

Deze cursus is gemaakt met jupyter notebooks. Jupyter notebooks worden veel gebruikt door data scientist om eerste prototypes in te maken. Notebooks zijn gebaseerd op de principes van het literal programming. Notebooks combineren documentatie met uit te voeren code.

 

Hieronder een voorbeeld van een code cell die uitgevoerd kan worden.

 

print('hello world')
hello world

Via de execute knop bovenaan kan je deze cursus openen op een interactieve omgeving zoals Google Colab uitvoeren.

ML Toepassingen

Wat zijn ML toepassingen nu juist? Stel we moeten inschatten hoeveel tijd een verhuis gaat kosten. Eerst kunnen we regels gaan opstellen en schatten hoeveel tijd we per item gaan nodig hebben. Bij traditionele software schrijven we meestal het volgende.

 

def cost(num_bedrooms,num_bathrooms,sq_ft):
    if num_bedrooms == 2 and num_bathrooms == 2:
        return 1500
    elif num_bedrooms == 3 and sq_ft > 2000:
        return 2500
    return 2000


cost(2,3,50)
2000

We zien wel snel dat bij het vergroten van de input parameters dat deze if else structuren snel zeer onoverzichtelijk beginnen te worden. ML laat ons toe om deze if else structuren te vervangen door modellen die we kunnen trainen op historische data. We gaan als het ware de if else leren uit het verleden. Bij het leren een toepassen van deze technieken komt wel heel wat te kijken. We zullen nu even de grote lijnen toelichten.

Exploratory Data Analysis (EDA)

Het hoofdoel van EDA is om je historische data die je wil gebruiken bij het trainen te leren kennen. Vroeg in het process al eventueel zaken te detecteren die het latere verloop zullen bemoeilijken. Typisch kijken we naar missing values. Data distributies. Correlaties tussen verschillende features. Na deze stap begrijpen we onze data beter en kunnen we de volgende stappen gaan definiëren. Eventueel kunnen we ook al beslissen dat extra data nodig is

Data Cleaning

Wat doen we met missing values? Laten we volledige kolommen weg of gaan we waardes proberen te gokken. Distributies die niet normaal verdeeld zijn gaan we deze proberen te transformeren. Sommige ML modellen zijn zeer gevoelig aan data distributies en kunnen vreemd gedrag vertonen als we hier geen rekening mee gaan houden. De data cleaning stap is de voorbereidende stap waar we hier rekening mee gaan houden. Eventueel kunnen we ook outliers gaan detecteren en proberen te verwijderen.

Feature engineering

We hebben onze data ondertussen leren kennen en we hebben de data in een behapbare vorm gekregen. Nu kunnen we eens kijken samen met de domein experten welke features we best gaan gebruiken. Kunnen we met de huidige features set misschien nog extra features gaan berekenen of afleiden. Als we geospatiale informatie hebben dan kunnen we misschien extra aggregaties gaan toevoegen. Als we tijdsgebonden data hebben kunnen we de tijd gaan transformeren naar meer ML toegankelijkere formaten. Dit zijn allemaal stappen die we tijden deze fase gaan uitvoeren.

Modellen trainen en selecteren

De data is nu klaar en we kunnen nu onze modellen gaan trainen. We zoeken via een iteratief process de parameters van onze modellen. Er zijn veel verschillende modellen die we kunnen trainen. Hier beperken we ons vooral tot lineaire modellen en decision trees. Belangrijk om ook te bepalen is op welke metric ons model geoptimaliseerd wordt. Er bestaan low code libraries die bij een eerste selectie kunnen helpen.

Modellen tunen

Eens we via selectie methode model kandidaten hebben gevonden dan kunnen we modellen verder gaan tunen. Die door de hyperparameters wat beter te gaan afstellen of door combinaties te gaan maken van verschillende modellen. We moeten ook rekening beginnen te gaan houden met overfitting willen we de bruikbaarheid van onze modellen op nieuwe data kunnen garanderen.

Modellen in productie

Als we modellen in productie zetten moeten we rekening houden met verschillende aspecten. Is de nieuwe data die we gaan voorspellen gelijkaardig aan de historisch data. Hoe betrouwbaar is ons model op termijn. Op welke tijdstippen gaan we de modellen opnieuw gaan trainen?

Cloud en Spark

Welke zijn de courante componenten ter ondersteuning van een ML Project