Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Data kan worden onderverdeeld in drie hoofdcategorieën:

  1. gestructureerde data,

  2. semi-gestructureerde data en

  3. ongestructureerde data. De verschillen tussen deze datatypes zijn cruciaal voor de keuze tussen ML modellen en leeralgoritmes.

Gestructureerde data

Gestructureerde data is data die een gestandaardiseerd formaat heeft dat wordt gedefinieerd door een schema. Deze data wordt doorgaans opgeslagen in een tabelformaat met rijen en kolommen, wat het gemakkelijk maakt om te doorzoeken en te analyseren.

Kenmerken

  • Vooraf bepaald formaat: Volgt een vast patroon en structuur

  • Tabelformaat: Opgeslagen in rijen en kolommen; ieder datapunt heeft een specifiek veld (Naam, Datum, Adres, enz.)

  • Gemakkelijke navigatie: Kan eenvoudig worden opgevraagd met standaard data-wrangling tools (SQL, Pandas, enz.)

Voorbeelden

  • SQL-databases

  • Spreadsheets (.csv, .tsv, .xlsx, enz.)

Uitdaging

  • Heterogene datatypes: Complexe vertaling van verschillende soorten data naar numerieke features (feature engineering).

  • Missing data: Hoe omgaan met null waarden?

Source
import os

import kagglehub
import pandas as pd

# Download data from kaggle
path = kagglehub.dataset_download("yashdevladdha/uber-ride-analytics-dashboard")

# Load data into Pandas DataFrame
csv_file = os.path.join(path, "ncr_ride_bookings.csv")
df = pd.read_csv(csv_file)

df.head()
Downloading from https://www.kaggle.com/api/v1/datasets/download/yashdevladdha/uber-ride-analytics-dashboard?dataset_version_number=2...
100%|██████████| 16.5M/16.5M [00:02<00:00, 7.78MB/s]
Extracting files...

Loading...

Semi-gestructureerde data

Semi-gestructureerde data bevindt zich tussen gestructureerde en ongestructureerde data in. Het heeft geen star schema zoals gestructureerde data, maar bevat wel organisatorische elementen zoals tags, labels of andere markers die helpen bij het categoriseren van de informatie.

Kenmerken

  • Flexibele structuur: Geen vast schema, maar wel organisatorische markers ({[]}, <div></div>, enz.)

  • Hiërarchische en/of netwerkstructuur: Kan worden voorgesteld in diagrammen met nodes en edges.

Voorbeelden

  • JSON

  • XML

  • YAML

  • AVRO

  • Parquet

  • NoSQL records (MongoDB, ElasticSearch, enz.)

Uitdagingen

  • Schema evolution: Sparse data

  • Onvoorspelbare datatypes: bv. [["car"], ["car", "bus", "truck"], ["bike", "train"], ...]

  • Navigatie: Hoe groter de flexibiliteit in structuur, hoe groter de uitdaging.

Source
import json

with open("../../../.devcontainer/devcontainer.json") as f:
    devcontainer_spec = json.load(f)
devcontainer_spec
{'name': 'ml-courses', 'dockerComposeFile': '../docker-compose.yml', 'service': 'devcontainer', 'workspaceFolder': '/workspaces/${localWorkspaceFolderBasename}/', 'features': {'ghcr.io/devcontainers-extra/features/starship:1': {}}, 'overrideCommand': True, 'remoteUser': 'user', 'postStartCommand': 'sudo chown -R user:user /opt/ && uv sync --python ${localEnv:PYTHON_VERSION:3.10} --resolution ${localEnv:RESOLUTION_STRATEGY:highest} --all-extras && pre-commit install --install-hooks', 'customizations': {'jetbrains': {'backend': 'PyCharm', 'plugins': ['com.github.copilot']}, 'vscode': {'extensions': ['charliermarsh.ruff', 'GitHub.copilot', 'GitHub.copilot-chat', 'GitHub.vscode-github-actions', 'GitHub.vscode-pull-request-github', 'ms-azuretools.vscode-docker', 'ms-python.mypy-type-checker', 'ms-python.python', 'ms-toolsai.jupyter', 'ms-toolsai.vscode-jupyter-cell-tags', 'ryanluker.vscode-coverage-gutters', 'saoudrizwan.claude-dev', 'streetsidesoftware.code-spell-checker', 'streetsidesoftware.code-spell-checker-dutch', 'tamasfe.even-better-toml', 'visualstudioexptteam.vscodeintellicode'], 'settings': {'coverage-gutters.coverageFileNames': ['reports/coverage.xml'], 'cSpell.language': 'en,nl', 'editor.codeActionsOnSave': {'source.fixAll': 'explicit', 'source.organizeImports': 'explicit'}, 'editor.formatOnSave': True, '[python]': {'editor.defaultFormatter': 'charliermarsh.ruff'}, '[toml]': {'editor.formatOnSave': False}, 'editor.rulers': [100], 'files.autoSave': 'onFocusChange', 'github.copilot.chat.agent.enabled': True, 'github.copilot.chat.codesearch.enabled': True, 'github.copilot.chat.edits.enabled': True, 'github.copilot.nextEditSuggestions.enabled': True, 'jupyter.kernels.excludePythonEnvironments': ['/usr/local/bin/python'], 'mypy-type-checker.importStrategy': 'fromEnvironment', 'mypy-type-checker.preferDaemon': True, 'notebook.codeActionsOnSave': {'notebook.source.fixAll': 'explicit', 'notebook.source.organizeImports': 'explicit'}, 'notebook.formatOnSave.enabled': True, 'python.defaultInterpreterPath': '/opt/venv/bin/python', 'python.terminal.activateEnvironment': False, 'python.testing.pytestEnabled': True, 'ruff.importStrategy': 'fromEnvironment', 'terminal.integrated.env.linux': {'GIT_EDITOR': 'code --wait'}, 'terminal.integrated.env.mac': {'GIT_EDITOR': 'code --wait'}}}}}
Source
pd.read_json("../../../.devcontainer/devcontainer.json")
Loading...

Ongestructureerde data

Ongestructureerde data is vrije data (in the wild) die geen consistent model volgt. Het is vaak rijker aan informatie maar moeilijker te verwerken dan gestructureerde data.

Kenmerken

  • Vrije vorm: Geen vooraf gedefinieerde structuur

  • Specifieke serialisering: Digitale formaten die eigen zijn aan de data (.txt, .pdf, .py, .cpp, .jpeg, .avi, .wav, .mp3, enz.)

  • Hoge Densiteit / Volumes: Vaak zeer dense informatie (bv. 1080x1080 px)

Voorbeelden

  • Tekstdocumenten: Word-bestanden, PDF’s

  • Scripts

  • Protein folding

  • Media-inhoud: Video’s, audio-opnames, afbeeldingen

Uitdagingen

  • Processing: Grote volumes en informatiedensiteit vragen om veel resources (opslag en verwerking; zie GPU, TPU).

  • Complexe niet-lineaire patronen: Complexe patronen in tijd en ruimte

Datastructuur en ML modelkeuzes

Het onderzoek en de ontwikkeling van ML technieken is sterk beïnvloed door de gangbare datastructuur in bepaalde domeinen. Zo is deep learning voornamelijk tot stand gekomen binnen beeldverwerking (ongestructureerde data). De alomtegenwoordige transformer architectuur is afkomstig uit Natural Language Processing (NLP; ongestructureerde data). Graph Neural Networks zijn vooral ontwikkeld binnen semi-structured social-media netwerk toepassingen. Moderne tree-based methodes zijn dan weer alom tegenwoordig bij gestructureerde data. Hieronder geven we een illustratief overzicht van courante technieken.

Gestructureerde Data

  • Linear/Polynomial Regression

  • Logistic Regression

  • Support Vector Machines

  • Random Forest

  • XGBoost

  • AdaBoost

  • LightGBM

  • CatBoost

Semi-gestructureerde data

  • Bayesian Networks

  • Graph Neural Networks

  • State Space Modellen

  • Transformers

Ongestructureerde data

  • Convolutional Neural Networks (CNN’s)

  • RNN

  • LSTM

  • Transformers

  • Diffusion models