{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Hyperparameter optimization with Dask\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Every machine learning model has some values that are specified before training begins. These values help adapt the model to the data but must be given before any training data is seen. For example, this might be `penalty` or `C` in Scikit-learn's [LogisiticRegression]. These values that come before any training data and are called \"hyperparameters\". Typical usage looks something like:\n", "\n", "``` python\n", "from sklearn.linear_model import LogisiticRegression\n", "from sklearn.datasets import make_classification\n", "\n", "X, y = make_classification()\n", "est = LogisiticRegression(C=10, penalty=\"l2\")\n", "est.fit(X, y)\n", "```\n", "\n", "These hyperparameters influence the quality of the prediction. For example, if `C` is too small in the example above, the output of the estimator will not fit the data well.\n", "\n", "Determining the values of these hyperparameters is difficult. In fact, Scikit-learn has an entire documentation page on finding the best values: https://scikit-learn.org/stable/modules/grid_search.html\n", "\n", "[LogisiticRegression]:https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Dask enables some new techniques and opportunities for hyperparameter optimization. One of these opportunities involves stopping training early to limit computation. Naturally, this requires some way to stop and restart training (`partial_fit` or `warm_start` in Scikit-learn parlance).\n", "\n", "This is especially useful when the search is complex and has many search parameters. Good examples are most deep learning models, which has specialized algorithms for handling many data but have difficulty providing basic hyperparameters (e.g., \"learning rate\", \"momentum\" or \"weight decay\").\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**This notebook will walk through**\n", "\n", "* setting up a realistic example\n", "* how to use `HyperbandSearchCV`, including\n", " * understanding the input parameters to `HyperbandSearchCV`\n", " * running the hyperparameter optimization\n", " * how to access informantion from `HyperbandSearchCV`\n", " \n", "This notebook will specifically *not* show a performance comparison motivating `HyperbandSearchCV` use. `HyperbandSearchCV` finds high scores with minimal training; however, this is a tutorial on how to *use* it. All performance comparisons are relegated to section [*Learn more*](#Learn-more)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:09.460955Z", "iopub.status.busy": "2021-01-14T10:49:09.460398Z", "iopub.status.idle": "2021-01-14T10:49:09.865307Z", "shell.execute_reply": "2021-01-14T10:49:09.865688Z" } }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Setup Dask" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:09.868489Z", "iopub.status.busy": "2021-01-14T10:49:09.867745Z", "iopub.status.idle": "2021-01-14T10:49:11.123662Z", "shell.execute_reply": "2021-01-14T10:49:11.124129Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "
\n", "

Client

\n", "\n", "
\n", "

Cluster

\n", "
    \n", "
  • Workers: 1
  • \n", "
  • Cores: 4
  • \n", "
  • Memory: 2.00 GB
  • \n", "
\n", "
" ], "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from distributed import Client\n", "client = Client(processes=False, threads_per_worker=4,\n", " n_workers=1, memory_limit='2GB')\n", "client" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create Data" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:11.128786Z", "iopub.status.busy": "2021-01-14T10:49:11.126507Z", "iopub.status.idle": "2021-01-14T10:49:12.335603Z", "shell.execute_reply": "2021-01-14T10:49:12.335138Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from sklearn.datasets import make_circles\n", "import numpy as np\n", "import pandas as pd\n", "\n", "X, y = make_circles(n_samples=30_000, random_state=0, noise=0.09)\n", "\n", "pd.DataFrame({0: X[:, 0], 1: X[:, 1], \"class\": y}).sample(4_000).plot.scatter(\n", " x=0, y=1, alpha=0.2, c=\"class\", cmap=\"bwr\"\n", ");" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Add random dimensions" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:12.340434Z", "iopub.status.busy": "2021-01-14T10:49:12.340020Z", "iopub.status.idle": "2021-01-14T10:49:12.344320Z", "shell.execute_reply": "2021-01-14T10:49:12.344649Z" } }, "outputs": [ { "data": { "text/plain": [ "(30000, 6)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from sklearn.utils import check_random_state\n", "\n", "rng = check_random_state(42)\n", "random_feats = rng.uniform(-1, 1, size=(X.shape[0], 4))\n", "X = np.hstack((X, random_feats))\n", "X.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Split and scale data" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:12.349486Z", "iopub.status.busy": "2021-01-14T10:49:12.349077Z", "iopub.status.idle": "2021-01-14T10:49:12.366499Z", "shell.execute_reply": "2021-01-14T10:49:12.367447Z" } }, "outputs": [], "source": [ "from sklearn.model_selection import train_test_split\n", "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=5_000, random_state=42)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:12.370869Z", "iopub.status.busy": "2021-01-14T10:49:12.370289Z", "iopub.status.idle": "2021-01-14T10:49:12.377627Z", "shell.execute_reply": "2021-01-14T10:49:12.377937Z" } }, "outputs": [], "source": [ "from sklearn.preprocessing import StandardScaler\n", "from sklearn.model_selection import train_test_split\n", "scaler = StandardScaler().fit(X_train)\n", "\n", "X_train = scaler.transform(X_train)\n", "X_test = scaler.transform(X_test)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:12.384717Z", "iopub.status.busy": "2021-01-14T10:49:12.384146Z", "iopub.status.idle": "2021-01-14T10:49:12.386105Z", "shell.execute_reply": "2021-01-14T10:49:12.385126Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "dataset = train\n", "shape = (25000, 6)\n", "bytes = 1.20 MB\n", "--------------------\n", "dataset = test\n", "shape = (5000, 6)\n", "bytes = 240.00 kB\n", "--------------------\n" ] } ], "source": [ "from dask.utils import format_bytes\n", "\n", "for name, X in [(\"train\", X_train), (\"test\", X_test)]:\n", " print(\"dataset =\", name)\n", " print(\"shape =\", X.shape)\n", " print(\"bytes =\", format_bytes(X.nbytes))\n", " print(\"-\" * 20)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we have our train and test sets." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Create model and search space" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's use Scikit-learn's MLPClassifier as our model (for convenience). Let's use this model with 24 neurons and tune some of the other basic hyperparameters.\n" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:12.389423Z", "iopub.status.busy": "2021-01-14T10:49:12.388991Z", "iopub.status.idle": "2021-01-14T10:49:12.395883Z", "shell.execute_reply": "2021-01-14T10:49:12.395351Z" } }, "outputs": [], "source": [ "import numpy as np\n", "from sklearn.neural_network import MLPClassifier\n", "\n", "model = MLPClassifier()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Deep learning libraries can be used as well. In particular, [PyTorch]'s Scikit-Learn wrapper [Skorch] works well with `HyperbandSearchCV`.\n", "\n", "[PyTorch]:https://pytorch.org/\n", "[Skorch]:https://skorch.readthedocs.io/en/stable/" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:12.404939Z", "iopub.status.busy": "2021-01-14T10:49:12.403829Z", "iopub.status.idle": "2021-01-14T10:49:12.405362Z", "shell.execute_reply": "2021-01-14T10:49:12.404178Z" } }, "outputs": [], "source": [ "params = {\n", " \"hidden_layer_sizes\": [\n", " (24, ),\n", " (12, 12),\n", " (6, 6, 6, 6),\n", " (4, 4, 4, 4, 4, 4),\n", " (12, 6, 3, 3),\n", " ],\n", " \"activation\": [\"relu\", \"logistic\", \"tanh\"],\n", " \"alpha\": np.logspace(-6, -3, num=1000), # cnts\n", " \"batch_size\": [16, 32, 64, 128, 256, 512],\n", "}" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Hyperparameter optimization" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`HyperbandSearchCV` is Dask-ML's meta-estimator to find the best hyperparameters. It can be used as an alternative to `RandomizedSearchCV` to find similar hyper-parameters in less time by not wasting time on hyper-parameters that are not promising. Specifically, it is almost guaranteed that it will find high performing models with minimal training.\n", "\n", "This section will focus on\n", "\n", "1. Understanding the input parameters to `HyperbandSearchCV`\n", "2. Using `HyperbandSearchCV` to find the best hyperparameters\n", "3. Seeing other use cases of `HyperbandSearchCV`" ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:12.413344Z", "iopub.status.busy": "2021-01-14T10:49:12.412862Z", "iopub.status.idle": "2021-01-14T10:49:12.679320Z", "shell.execute_reply": "2021-01-14T10:49:12.679764Z" } }, "outputs": [], "source": [ "from dask_ml.model_selection import HyperbandSearchCV" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Determining input parameters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A rule-of-thumb to determine `HyperbandSearchCV`'s input parameters requires knowing:\n", "\n", "1. the number of examples the longest trained model will see\n", "2. the number of hyperparameters to evaluate" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's write down what these should be for this example:" ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:12.688337Z", "iopub.status.busy": "2021-01-14T10:49:12.682037Z", "iopub.status.idle": "2021-01-14T10:49:12.691415Z", "shell.execute_reply": "2021-01-14T10:49:12.692184Z" } }, "outputs": [], "source": [ "# For quick response\n", "n_examples = 4 * len(X_train)\n", "n_params = 8\n", "\n", "# In practice, HyperbandSearchCV is most useful for longer searches\n", "# n_examples = 15 * len(X_train)\n", "# n_params = 15" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this, models that are trained the longest will see `n_examples` examples. This is how much data is required, normally set be the problem difficulty. Simple problems may only need 10 passes through the dataset; more complex problems may need 100 passes through the dataset.\n", "\n", "There will be `n_params` parameters sampled so `n_params` models will be evaluated. Models with low scores will be terminated before they see `n_examples` examples. This helps perserve computation." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "How can we use these values to determine the inputs for `HyperbandSearchCV`?" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:12.695618Z", "iopub.status.busy": "2021-01-14T10:49:12.694425Z", "iopub.status.idle": "2021-01-14T10:49:12.702942Z", "shell.execute_reply": "2021-01-14T10:49:12.703680Z" } }, "outputs": [ { "data": { "text/plain": [ "(8, 12500)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "max_iter = n_params # number of times partial_fit will be called\n", "chunks = n_examples // n_params # number of examples each call sees\n", "\n", "max_iter, chunks" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This means that the longest trained estimator will see about `n_examples` examples (specifically `n_params * (n_examples // n_params`)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Applying input parameters" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create a Dask array with this chunk size:" ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:12.707285Z", "iopub.status.busy": "2021-01-14T10:49:12.706237Z", "iopub.status.idle": "2021-01-14T10:49:12.721967Z", "shell.execute_reply": "2021-01-14T10:49:12.722803Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Array Chunk
Bytes 1.20 MB 600.00 kB
Shape (25000, 6) (12500, 6)
Count 3 Tasks 2 Chunks
Type float64 numpy.ndarray
\n", "
\n", "\n", "\n", " \n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", "\n", " \n", " \n", "\n", " \n", " 6\n", " 25000\n", "\n", "
" ], "text/plain": [ "dask.array" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import dask.array as da\n", "X_train2 = da.from_array(X_train, chunks=chunks)\n", "y_train2 = da.from_array(y_train, chunks=chunks)\n", "X_train2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Each `partial_fit` call will receive one chunk." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That means the number of exmaples in each chunk should be (about) the same, and `n_examples` and `n_params` should be chosen to make that happen. (e.g., with 100 examples, shoot for chunks with `(33, 33, 34)` examples not `(48, 48, 4)` examples)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's use `max_iter` to create our `HyperbandSearchCV` object:" ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:12.725457Z", "iopub.status.busy": "2021-01-14T10:49:12.724538Z", "iopub.status.idle": "2021-01-14T10:49:12.728570Z", "shell.execute_reply": "2021-01-14T10:49:12.729312Z" } }, "outputs": [], "source": [ "search = HyperbandSearchCV(\n", " model,\n", " params,\n", " max_iter=max_iter,\n", " patience=True,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## How much computation will be performed?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It isn't clear how to determine how much computation is done from `max_iter` and `chunks`. Luckily, `HyperbandSearchCV` has a `metadata` attribute to determine this beforehand:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:12.733058Z", "iopub.status.busy": "2021-01-14T10:49:12.731556Z", "iopub.status.idle": "2021-01-14T10:49:12.742564Z", "shell.execute_reply": "2021-01-14T10:49:12.743667Z" } }, "outputs": [ { "data": { "text/plain": [ "26" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "search.metadata[\"partial_fit_calls\"]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This shows how many `partial_fit` calls will be performed in the computation. `metadata` also includes information on the number of models created." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "So far, all that's been done is getting the search ready for computation (and seeing how much computation will be performed). So far, all the computation has been quick and easy." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Performing the computation" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, let's do the model selection search and find the best hyperparameters. This is the real core of this notebook. This computation will be take place on all the hardware Dask has available.\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:12.747231Z", "iopub.status.busy": "2021-01-14T10:49:12.746059Z", "iopub.status.idle": "2021-01-14T10:49:17.219687Z", "shell.execute_reply": "2021-01-14T10:49:17.218223Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 2.57 s, sys: 156 ms, total: 2.72 s\n", "Wall time: 4.06 s\n" ] }, { "data": { "text/plain": [ "HyperbandSearchCV(estimator=MLPClassifier(), max_iter=8,\n", " parameters={'activation': ['relu', 'logistic', 'tanh'],\n", " 'alpha': array([1.00000000e-06, 1.00693863e-06, 1.01392541e-06, 1.02096066e-06,\n", " 1.02804473e-06, 1.03517796e-06, 1.04236067e-06, 1.04959323e-06,\n", " 1.05687597e-06, 1.06420924e-06, 1.07159340e-06, 1.07902879e-06,\n", " 1.08651577e-06, 1.09405471e-06, 1.10164595e-06, 1.1...\n", " 9.01477631e-04, 9.07732653e-04, 9.14031075e-04, 9.20373200e-04,\n", " 9.26759330e-04, 9.33189772e-04, 9.39664831e-04, 9.46184819e-04,\n", " 9.52750047e-04, 9.59360829e-04, 9.66017480e-04, 9.72720319e-04,\n", " 9.79469667e-04, 9.86265846e-04, 9.93109181e-04, 1.00000000e-03]),\n", " 'batch_size': [16, 32, 64, 128, 256, 512],\n", " 'hidden_layer_sizes': [(24,), (12, 12),\n", " (6, 6, 6, 6),\n", " (4, 4, 4, 4, 4, 4),\n", " (12, 6, 3, 3)]},\n", " patience=True)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%%time\n", "search.fit(X_train2, y_train2, classes=[0, 1, 2, 3])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The dashboard will be active while this is running. It will show which workers are running `partial_fit` and `score` calls.\n", "This takes about 10 seconds." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Integration" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`HyperbandSearchCV` follows the Scikit-learn API and mirrors Scikit-learn's `RandomizedSearchCV`. This means that it \"just works\". All the Scikit-learn attributes and methods are available:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:17.224233Z", "iopub.status.busy": "2021-01-14T10:49:17.223823Z", "iopub.status.idle": "2021-01-14T10:49:17.233654Z", "shell.execute_reply": "2021-01-14T10:49:17.232774Z" } }, "outputs": [ { "data": { "text/plain": [ "0.5654" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "search.best_score_" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:17.238179Z", "iopub.status.busy": "2021-01-14T10:49:17.237781Z", "iopub.status.idle": "2021-01-14T10:49:17.253727Z", "shell.execute_reply": "2021-01-14T10:49:17.254325Z" } }, "outputs": [ { "data": { "text/plain": [ "MLPClassifier(activation='tanh', alpha=2.010496416260497e-06, batch_size=32,\n", " hidden_layer_sizes=(4, 4, 4, 4, 4, 4))" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "search.best_estimator_" ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:17.269080Z", "iopub.status.busy": "2021-01-14T10:49:17.258800Z", "iopub.status.idle": "2021-01-14T10:49:17.337714Z", "shell.execute_reply": "2021-01-14T10:49:17.338037Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
param_alphapartial_fit_callsmean_score_timemodel_idparam_hidden_layer_sizesparam_activationstd_score_timeparam_batch_sizebracketparamstest_scorerank_test_scoremean_partial_fit_timestd_partial_fit_time
00.00001720.016706bracket=1-0(6, 6, 6, 6)logistic0.0103321281{'hidden_layer_sizes': (6, 6, 6, 6), 'batch_si...0.489430.3387110.015633
10.00003120.034787bracket=1-1(12, 12)logistic0.0007371281{'hidden_layer_sizes': (12, 12), 'batch_size':...0.510610.2508740.049119
20.00000120.016971bracket=1-2(4, 4, 4, 4, 4, 4)relu0.0002055121{'hidden_layer_sizes': (4, 4, 4, 4, 4, 4), 'ba...0.510610.1534890.008385
30.00000280.017569bracket=0-0[4, 4, 4, 4, 4, 4]tanh0.010754320{'hidden_layer_sizes': (4, 4, 4, 4, 4, 4), 'ba...0.565410.4975210.316641
40.00081330.033582bracket=0-1[4, 4, 4, 4, 4, 4]tanh0.0170945120{'hidden_layer_sizes': (4, 4, 4, 4, 4, 4), 'ba...0.000020.1294650.062709
\n", "
" ], "text/plain": [ " param_alpha partial_fit_calls mean_score_time model_id \\\n", "0 0.000017 2 0.016706 bracket=1-0 \n", "1 0.000031 2 0.034787 bracket=1-1 \n", "2 0.000001 2 0.016971 bracket=1-2 \n", "3 0.000002 8 0.017569 bracket=0-0 \n", "4 0.000813 3 0.033582 bracket=0-1 \n", "\n", " param_hidden_layer_sizes param_activation std_score_time param_batch_size \\\n", "0 (6, 6, 6, 6) logistic 0.010332 128 \n", "1 (12, 12) logistic 0.000737 128 \n", "2 (4, 4, 4, 4, 4, 4) relu 0.000205 512 \n", "3 [4, 4, 4, 4, 4, 4] tanh 0.010754 32 \n", "4 [4, 4, 4, 4, 4, 4] tanh 0.017094 512 \n", "\n", " bracket params test_score \\\n", "0 1 {'hidden_layer_sizes': (6, 6, 6, 6), 'batch_si... 0.4894 \n", "1 1 {'hidden_layer_sizes': (12, 12), 'batch_size':... 0.5106 \n", "2 1 {'hidden_layer_sizes': (4, 4, 4, 4, 4, 4), 'ba... 0.5106 \n", "3 0 {'hidden_layer_sizes': (4, 4, 4, 4, 4, 4), 'ba... 0.5654 \n", "4 0 {'hidden_layer_sizes': (4, 4, 4, 4, 4, 4), 'ba... 0.0000 \n", "\n", " rank_test_score mean_partial_fit_time std_partial_fit_time \n", "0 3 0.338711 0.015633 \n", "1 1 0.250874 0.049119 \n", "2 1 0.153489 0.008385 \n", "3 1 0.497521 0.316641 \n", "4 2 0.129465 0.062709 " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "cv_results = pd.DataFrame(search.cv_results_)\n", "cv_results.head()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:17.341062Z", "iopub.status.busy": "2021-01-14T10:49:17.340118Z", "iopub.status.idle": "2021-01-14T10:49:17.388057Z", "shell.execute_reply": "2021-01-14T10:49:17.388387Z" } }, "outputs": [ { "data": { "text/plain": [ "0.5706" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "search.score(X_test, y_test)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:17.391766Z", "iopub.status.busy": "2021-01-14T10:49:17.390740Z", "iopub.status.idle": "2021-01-14T10:49:17.434240Z", "shell.execute_reply": "2021-01-14T10:49:17.435062Z" } }, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Array Chunk
Bytes 40.00 kB 40.00 kB
Shape (5000,) (5000,)
Count 2 Tasks 1 Chunks
Type int64 numpy.ndarray
\n", "
\n", "\n", "\n", " \n", " \n", " \n", "\n", " \n", " \n", " \n", "\n", " \n", " \n", "\n", " \n", " 5000\n", " 1\n", "\n", "
" ], "text/plain": [ "dask.array<_predict, shape=(5000,), dtype=int64, chunksize=(5000,), chunktype=numpy.ndarray>" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "search.predict(X_test)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:17.438410Z", "iopub.status.busy": "2021-01-14T10:49:17.437408Z", "iopub.status.idle": "2021-01-14T10:49:17.500373Z", "shell.execute_reply": "2021-01-14T10:49:17.499763Z" } }, "outputs": [ { "data": { "text/plain": [ "array([1, 1, 1, ..., 1, 0, 1])" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "search.predict(X_test).compute()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It also has some other attributes." ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "execution": { "iopub.execute_input": "2021-01-14T10:49:17.513827Z", "iopub.status.busy": "2021-01-14T10:49:17.513383Z", "iopub.status.idle": "2021-01-14T10:49:17.546470Z", "shell.execute_reply": "2021-01-14T10:49:17.546787Z" } }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
model_idparamspartial_fit_callspartial_fit_timescorescore_timeelapsed_wall_timebracket
0bracket=1-0{'hidden_layer_sizes': (6, 6, 6, 6), 'batch_si...10.3543440.48940.0270380.5148151
1bracket=1-1{'hidden_layer_sizes': (12, 12), 'batch_size':...10.2999930.51060.0340500.5148161
2bracket=1-2{'hidden_layer_sizes': (4, 4, 4, 4, 4, 4), 'ba...10.1618740.51060.0167660.5148161
3bracket=1-1{'hidden_layer_sizes': (12, 12), 'batch_size':...20.2017550.51060.0355240.8206381
4bracket=1-2{'hidden_layer_sizes': (4, 4, 4, 4, 4, 4), 'ba...20.1451040.51060.0171760.8206391
\n", "
" ], "text/plain": [ " model_id params \\\n", "0 bracket=1-0 {'hidden_layer_sizes': (6, 6, 6, 6), 'batch_si... \n", "1 bracket=1-1 {'hidden_layer_sizes': (12, 12), 'batch_size':... \n", "2 bracket=1-2 {'hidden_layer_sizes': (4, 4, 4, 4, 4, 4), 'ba... \n", "3 bracket=1-1 {'hidden_layer_sizes': (12, 12), 'batch_size':... \n", "4 bracket=1-2 {'hidden_layer_sizes': (4, 4, 4, 4, 4, 4), 'ba... \n", "\n", " partial_fit_calls partial_fit_time score score_time elapsed_wall_time \\\n", "0 1 0.354344 0.4894 0.027038 0.514815 \n", "1 1 0.299993 0.5106 0.034050 0.514816 \n", "2 1 0.161874 0.5106 0.016766 0.514816 \n", "3 2 0.201755 0.5106 0.035524 0.820638 \n", "4 2 0.145104 0.5106 0.017176 0.820639 \n", "\n", " bracket \n", "0 1 \n", "1 1 \n", "2 1 \n", "3 1 \n", "4 1 " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "hist = pd.DataFrame(search.history_)\n", "hist.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This illustrates the history after every `partial_fit` call. There's also an attributed `model_history_` that records the history for each model (it's a reorganization of `history_`)." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Learn more" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This notebook covered basic usage `HyperbandSearchCV`. The following documentation and resources might be useful to learn more about `HyperbandSearchCV`, including some of the finer use cases:\n", "\n", "* [A talk](https://www.youtube.com/watch?v=x67K9FiPFBQ) introducing `HyperbandSearchCV` to the SciPy 2019 audience and the [corresponding paper](https://conference.scipy.org/proceedings/scipy2019/pdfs/scott_sievert.pdf)\n", "* [HyperbandSearchCV's documentation](https://ml.dask.org/modules/generated/dask_ml.model_selection.HyperbandSearchCV.html)\n", "\n", "Performance comparisons can be found in the SciPy 2019 talk/paper." ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "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.8.6" } }, "nbformat": 4, "nbformat_minor": 4 }