From 6e625e70d66d804dcee9c2848d1794155c3c24be Mon Sep 17 00:00:00 2001
From: ludwigbothmann <46222472+ludwigbothmann@users.noreply.github.com>
Date: Fri, 3 Nov 2023 10:20:58 +0100
Subject: [PATCH 1/5] Updates from Overleaf
---
.github/workflows/fix-figure-paths.yaml | 2 +
.../render-lecture-slide-status.yaml | 4 +
.github/workflows/update-latex-math.yaml | 5 +
exercises/tuning/ex_tuning.ipynb | 468 ++++++++++++++++++
latex-math/basic-math.tex | 2 +
latex-math/latex-math.pdf | Bin 377828 -> 0 bytes
.../cart/slides-cart-nutshell-alternative.tex | 250 ----------
slides/cart/slides-cart-nutshell.tex | 34 ++
slides/forests/slides-forests-nutshell.tex | 4 +-
9 files changed, 517 insertions(+), 252 deletions(-)
create mode 100644 exercises/tuning/ex_tuning.ipynb
delete mode 100644 latex-math/latex-math.pdf
delete mode 100644 slides/cart/slides-cart-nutshell-alternative.tex
diff --git a/.github/workflows/fix-figure-paths.yaml b/.github/workflows/fix-figure-paths.yaml
index 59a7cc475..416189e0c 100644
--- a/.github/workflows/fix-figure-paths.yaml
+++ b/.github/workflows/fix-figure-paths.yaml
@@ -19,6 +19,8 @@ jobs:
with:
# 0 indicates all history for all branches and tags, 1 is shallow (and default)
fetch-depth: 1
+ # Don't show progress bar, very verbose for large repos
+ show-progress: false
# Uncomment / move to get a tmux ssh session for interactive debugging
# - name: Setup tmate session
diff --git a/.github/workflows/render-lecture-slide-status.yaml b/.github/workflows/render-lecture-slide-status.yaml
index 693ff7358..1ee5b62b9 100644
--- a/.github/workflows/render-lecture-slide-status.yaml
+++ b/.github/workflows/render-lecture-slide-status.yaml
@@ -30,6 +30,8 @@ jobs:
uses: actions/checkout@v4
with:
repository: slds-lmu/lecture_service
+ # Don't show progress bar, very verbose for large repos
+ show-progress: false
# Most reliable way I've found to get the repo name and use it as a parameter for the checkout action
# see https://stackoverflow.com/a/75513916/409362
@@ -49,6 +51,8 @@ jobs:
# No need for git history
# 0 indicates all history for all branches and tags, 1 is shallow (and default)
fetch-depth: 1
+ # Don't show progress bar, very verbose for large repos
+ show-progress: false
# Uncomment / move to get a tmux ssh session for interactive debugging
# - name: Setup tmate session
diff --git a/.github/workflows/update-latex-math.yaml b/.github/workflows/update-latex-math.yaml
index 46b9d8fb0..9eda886e3 100644
--- a/.github/workflows/update-latex-math.yaml
+++ b/.github/workflows/update-latex-math.yaml
@@ -19,6 +19,8 @@ jobs:
with:
# 0 indicates all history for all branches and tags, 1 is shallow (and default)
fetch-depth: 1
+ # Don't show progress bar, very verbose for large repos
+ show-progress: false
# Uncomment / move to get a tmux ssh session for interactive debugging
# - name: Setup tmate session
@@ -27,10 +29,13 @@ jobs:
# 1. Delete latex-math contents in the current lecture to make sure that outdated files are removed
# (example: there was an iml.tex that was superseded by ml-interpretable.tex)
# 2. Download latex-math from the canonical repo into ./latex-math
+ # 3. Delete latex-math.pdf to avoid dragging large binary blobs through the git history
+
- name: Get latex-math
run: |
rm -rf latex-math/*
curl -sL https://api.github.com/repos/slds-lmu/latex-math/tarball/master | tar -xz --directory=latex-math/ --strip-components=1
+ rm latex-math/latex-math.pdf
# Use this pull request action to auto-generate a PR with the changes
# See https://github.com/peter-evans/create-pull-request#action-inputs
diff --git a/exercises/tuning/ex_tuning.ipynb b/exercises/tuning/ex_tuning.ipynb
new file mode 100644
index 000000000..a0f881262
--- /dev/null
+++ b/exercises/tuning/ex_tuning.ipynb
@@ -0,0 +1,468 @@
+{
+ "cells": [
+ {
+ "cell_type": "markdown",
+ "id": "0cd1bb33",
+ "metadata": {},
+ "source": [
+ "***\n",
+ "**Introduction to Machine Learning**
\n",
+ "__[https://slds-lmu.github.io/i2ml/](https://slds-lmu.github.io/i2ml/)__\n",
+ "***"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "91a25043",
+ "metadata": {},
+ "source": [
+ "# Exercise sheet 11: Tuning"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "8dbb6337",
+ "metadata": {},
+ "source": [
+ "## Exercise 1: Tuning $k$-NN\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "04f1d651",
+ "metadata": {},
+ "source": [
+ "In this exercise we will perform hyperparameter optimization (HPO) for the task of classifying the `credit risk`\n",
+ "data with a $k$-NN classifier."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "81cc572f",
+ "metadata": {},
+ "source": [
+ "### `R` Exercise: "
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "582a55c4",
+ "metadata": {},
+ "source": [
+ "The `kknn` implementation used by `mlr3` contains several hyperparameters, three of which are to be tuned for our\n",
+ "prediction:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "f52ed8cc",
+ "metadata": {},
+ "source": [
+ "- $k$ (number of neighbors)\n",
+ "- `kernel`\n",
+ "- `scale`"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "3f6376ab",
+ "metadata": {},
+ "source": [
+ "> a) Describe briefly the role of each hyperparameter in the learning algorithm – which effects can be expected by\n",
+ "altering them?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "84770e79",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Entering your code here:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "fe097546",
+ "metadata": {},
+ "source": [
+ "> b) In `mlr3` (using the `mlr3tuning` library), define an appropriate search space to tune over. We want to explore\n",
+ "a range between $1$ and $100$ for $k$ and the kernel to be chosen from ”rectangular”, ”epanechnikov”, ”gaussian”,\n",
+ "”optimal”."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "5ea586d7",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Entering your code here:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "acf72805",
+ "metadata": {},
+ "source": [
+ "> c) Perform the tuning procedure using `TuningInstanceSingleCrit`. Set aside $200$ test observations first. Use\n",
+ "$5$-fold cross validation and random search, and terminate the process after either $30$ seconds or $200$ evaluations.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "684fe82d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Entering your code here:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "dc968165",
+ "metadata": {},
+ "source": [
+ "> d) You realize that a high AUC is the performance measure you are actually interested in. Modify the HPO\n",
+ "procedure such that performance is optimized w.r.t. AUC."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "b899e6de",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Entering your code here:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "c95e6ac9",
+ "metadata": {},
+ "source": [
+ "> e) Visualize the tuning result with a suitable command. What do you observe regarding the impact of different\n",
+ "hyperparameters on predictive performance? What are limits of such a form of analysis?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "86ac486f",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Entering your code here:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "94a8a792",
+ "metadata": {},
+ "source": [
+ "> f) After analyzing the tuning results, you notice that changes in $k$ are more influential for smaller neighborhoods.\n",
+ "Re-run the HPO procedure with a log-transformation for $k$. "
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "60d7442d",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Entering your code here:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "79d7b42f",
+ "metadata": {},
+ "source": [
+ "> g) With the hyperparameter configuration found via HPO, fit the model on all training observations and compute\n",
+ "the AUC on your test data.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "497291ec",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Entering your code here:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "404bc31b",
+ "metadata": {},
+ "source": [
+ "### `Python` Exercise:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e1015740",
+ "metadata": {},
+ "source": [
+ "The `KNeighborsClassifier` implementation used by `sklearn` contains several hyperparameters, three of which\n",
+ "are to be tuned for our prediction:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "0a275d72",
+ "metadata": {},
+ "source": [
+ "- `n_neighbors`\n",
+ "- `weigths`\n",
+ "- `metric`\n"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "e7c84fef",
+ "metadata": {},
+ "source": [
+ "> a) Describe briefly the role of each hyperparameter in the learning algorithm – which effects can be expected by\n",
+ "altering them? Furthermore, read the [credit_for_py.csv](https://github.com/slds-lmu/lecture_i2ml/blob/master/exercises/data/german_credit_for_py.csv), separate $138$ test observations and perform necessary\n",
+ "preprocessing steps."
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "8b9b8cad",
+ "metadata": {},
+ "source": [
+ "
\n",
+ " Hint: Apply a StandardScaler
on your feature space. What effect does scaling have on your $k$-NN-model?
\n",
+ "
"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "6e755d26",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Entering your code here:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "fb9bd8b7",
+ "metadata": {},
+ "source": [
+ "> b) Define an appropriate search space to tune over. We want to explore a range between $1$ and $100$ for `n_neighbors`\n",
+ "and the distance calculation to be chosen from ”uniform”, ”manhattan”, ”euclidean”, ”cosine”."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "3eb600a1",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Entering your code here:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "ef6b7569",
+ "metadata": {},
+ "source": [
+ "> c) Perform the tuning procedure using `RandomizedSearchCV`. Use $5$-fold cross validation, and terminate the process\n",
+ "after $200$ iterations. Also, utilize parallelization to fasten the computation."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "85279f3b",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Entering your code here:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "6c2211ae",
+ "metadata": {},
+ "source": [
+ "> d) You realize that a high AUC is the performance measure you are actually interested in. Modify the HPO\n",
+ "procedure such that performance is optimized w.r.t. AUC."
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "39b800f7",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Entering your code here:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b25b9819",
+ "metadata": {},
+ "source": [
+ "> e) You are interested in possible under- and overfitting of your hyperparameter setting. Use validation curve\n",
+ "from `sklearn.model_selection` to retrieve the training scores and cross-validation scores for a $5$-fold-CV,\n",
+ "depending on the AUC metric.
\n",
+ "Visualize the tuning result with a suitable command. You may use the function provided below or a self-defined\n",
+ "function.
\n",
+ "Re-run the evaluation with unscaled features.
\n",
+ "What do you observe regarding the impact of different hyperparameters and scaling on predictive performance?\n",
+ "What are limits of such a form of analysis?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "f1182ea6",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Entering your code here:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "07c03d03",
+ "metadata": {},
+ "source": [
+ "> f) After analyzing the tuning results, you notice that changes in `n_neighbors` are more influential for smaller\n",
+ "neighborhoods. Re-run the HPO procedure with a log-transformation for `n_neighbors` parameter list.\n"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "5484bee5",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Entering your code here:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "cba8cb51",
+ "metadata": {},
+ "source": [
+ "> g) With the hyperparameter configuration found via HPO, fit the model on all training observations and compute\n",
+ "the AUC on your test data. Could you see any effect of the log-transformation for `n_neighbors`?"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "410fc312",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# Entering your code here:"
+ ]
+ },
+ {
+ "cell_type": "markdown",
+ "id": "b1c5b213",
+ "metadata": {},
+ "source": [
+ "Function for plotting a validation curve:"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": null,
+ "id": "7226894a",
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "def plot_validation(train_scores, test_scores, param, param_range):\n",
+ " \"\"\"\n",
+ " Plot the validation curve for a given hyperparameter.\n",
+ " Parameters:\n",
+ " ----------\n",
+ " train_scores : array-like of shape (n_param_values, n_folds)\n",
+ " Training scores for each hyperparameter value and fold.\n",
+ " test_scores : array-like of shape (n_param_values, n_folds)\n",
+ " Test scores (e.g., cross-validation scores) for each hyperparameter value and fold.\n",
+ " param : str\n",
+ " Name of the hyperparameter being varied.\n",
+ " param_range : array-like of shape (n_param_values,)\n",
+ " Range of values for the hyperparameter.\n",
+ " Returns:\n",
+ " -------\n",
+ " None\n",
+ " The function plots the validation curve.\n",
+ " \"\"\"\n",
+ " train_scores_mean = np.mean(train_scores, axis=1)\n",
+ " train_scores_std = np.std(train_scores, axis=1)\n",
+ " test_scores_mean = np.mean(test_scores, axis=1)\n",
+ " test_scores_std = np.std(test_scores, axis=1)\n",
+ " \n",
+ " plt.title(\"Validation Curve with KNN\")\n",
+ " plt.xlabel(param)\n",
+ " plt.ylabel(\"Score\")\n",
+ " plt.ylim(0.0, 1.1)\n",
+ " lw = 2\n",
+ " plt.plot(\n",
+ " param_range, train_scores_mean, label=\"Training score\", color=\"darkorange\", lw=lw\n",
+ " )\n",
+ " plt.fill_between(\n",
+ " param_range,\n",
+ " train_scores_mean - train_scores_std,\n",
+ " train_scores_mean + train_scores_std,\n",
+ " alpha=0.2,\n",
+ " color=\"darkorange\",\n",
+ " lw=lw,\n",
+ " )\n",
+ " plt.plot(\n",
+ " param_range, test_scores_mean, label=\"Cross-validation score\", color=\"navy\", lw=lw\n",
+ " )\n",
+ " plt.fill_between(\n",
+ " param_range,\n",
+ " test_scores_mean - test_scores_std,\n",
+ " test_scores_mean + test_scores_std,\n",
+ " alpha=0.2,\n",
+ " color=\"navy\",\n",
+ " lw=lw,\n",
+ " )\n",
+ " plt.legend(loc=\"best\")\n",
+ " plt.show()"
+ ]
+ }
+ ],
+ "metadata": {
+ "kernelspec": {
+ "display_name": "python-i2ml",
+ "language": "python",
+ "name": "python-i2ml"
+ },
+ "language_info": {
+ "codemirror_mode": {
+ "name": "ipython",
+ "version": 3
+ },
+ "file_extension": ".py",
+ "mimetype": "text/x-python",
+ "name": "python",
+ "nbconvert_exporter": "python",
+ "pygments_lexer": "ipython3",
+ "version": "3.10.12"
+ }
+ },
+ "nbformat": 4,
+ "nbformat_minor": 5
+}
diff --git a/latex-math/basic-math.tex b/latex-math/basic-math.tex
index 8e574d1ba..df3e12a42 100644
--- a/latex-math/basic-math.tex
+++ b/latex-math/basic-math.tex
@@ -26,6 +26,8 @@
\newcommand{\sign}{\operatorname{sign}} % sign, signum
\newcommand{\I}{\mathbb{I}} % I, indicator
\newcommand{\order}{\mathcal{O}} % O, order
+\newcommand{\bigO}{\mathcal{O}} % Big-O Landau
+\newcommand{\littleo}{{o}} % Little-o Landau
\newcommand{\pd}[2]{\frac{\partial{#1}}{\partial #2}} % partial derivative
\newcommand{\floorlr}[1]{\left\lfloor #1 \right\rfloor} % floor
\newcommand{\ceillr}[1]{\left\lceil #1 \right\rceil} % ceiling
diff --git a/latex-math/latex-math.pdf b/latex-math/latex-math.pdf
deleted file mode 100644
index f3a19749fcd31e47485f929e5a05dfc64d2ba86e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 377828
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%0AY{`;~$aVVdB<`C1A$Xa1
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