{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 02 Continuing the Introduction\n", "\n", "\n", "For a simpler introduction to `pycox` see the [01_introduction.ipynb](https://nbviewer.jupyter.org/github/havakv/pycox/blob/master/examples/01_introduction.ipynb) instead.\n", "\n", "In this notebook we will show some more functionality of the `pycox` package in addition to more functionality of the `torchtuples` package.\n", "We will continue with the `LogisticHazard` method for simplicity.\n", "\n", "We will in the following: \n", "- use SUPPORT as an example dataset,\n", "- use entity embeddings for categorical variables,\n", "- use the [AdamWR optimizer](https://arxiv.org/pdf/1711.05101.pdf) with cyclical learning rates,\n", "- use the scheme proposed by [Smith 2017](https://arxiv.org/pdf/1506.01186.pdf) to find a suitable learning rate." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sklearn.preprocessing import StandardScaler\n", "from sklearn_pandas import DataFrameMapper\n", "\n", "import torch\n", "import torchtuples as tt\n", "\n", "from pycox.datasets import support\n", "from pycox.preprocessing.feature_transforms import OrderedCategoricalLong\n", "from pycox.models import LogisticHazard\n", "from pycox.evaluation import EvalSurv" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "np.random.seed(123456)\n", "_ = torch.manual_seed(123456)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Dataset\n", "\n", "We load the SUPPORT data set and split in train, test and validation." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "df_train = support.read_df()\n", "df_test = df_train.sample(frac=0.2)\n", "df_train = df_train.drop(df_test.index)\n", "df_val = df_train.sample(frac=0.2)\n", "df_train = df_train.drop(df_val.index)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
x0x1x2x3x4x5x6x7x8x9x10x11x12x13durationevent
082.7099611.02.01.00.00.00.0160.055.016.038.195309142.019.0000001.09985430.01
179.6609501.00.01.00.00.01.054.067.016.038.000000142.010.0000000.8999021527.00
471.7949830.01.01.00.00.00.065.0135.040.038.593750146.00.0999910.3999637.01
549.9329800.01.01.00.00.00.070.0105.033.038.195309127.05.2998051.19995150.01
662.9429890.05.02.01.00.01.0116.0130.035.038.195309133.014.0996090.799927381.00
\n", "
" ], "text/plain": [ " x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 \\\n", "0 82.709961 1.0 2.0 1.0 0.0 0.0 0.0 160.0 55.0 16.0 38.195309 \n", "1 79.660950 1.0 0.0 1.0 0.0 0.0 1.0 54.0 67.0 16.0 38.000000 \n", "4 71.794983 0.0 1.0 1.0 0.0 0.0 0.0 65.0 135.0 40.0 38.593750 \n", "5 49.932980 0.0 1.0 1.0 0.0 0.0 0.0 70.0 105.0 33.0 38.195309 \n", "6 62.942989 0.0 5.0 2.0 1.0 0.0 1.0 116.0 130.0 35.0 38.195309 \n", "\n", " x11 x12 x13 duration event \n", "0 142.0 19.000000 1.099854 30.0 1 \n", "1 142.0 10.000000 0.899902 1527.0 0 \n", "4 146.0 0.099991 0.399963 7.0 1 \n", "5 127.0 5.299805 1.199951 50.0 1 \n", "6 133.0 14.099609 0.799927 381.0 0 " ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Feature transforms\n", "We have 14 covariates, in addition to the durations and event indicators.\n", "\n", "We will standardize the 8 numerical covariates, and leave the 3 binary variables unaltered. \n", "\n", "We will use entity embedding for the 3 categorical variables `x2`, `x3`, and `x6`.\n", "Hence, they are transformed to `int64` integers representing the categories. The category 0 is reserved for `None` and very small categories that are set to `None`. \n", "We use the `OrderedCategoricalLong` transform to achieve this." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "cols_standardize = ['x0', 'x7', 'x8', 'x9', 'x10', 'x11', 'x12', 'x13']\n", "cols_leave = ['x1', 'x4', 'x5']\n", "cols_categorical = ['x2', 'x3', 'x6']\n", "\n", "standardize = [([col], StandardScaler()) for col in cols_standardize]\n", "leave = [(col, None) for col in cols_leave]\n", "categorical = [(col, OrderedCategoricalLong()) for col in cols_categorical]\n", "\n", "x_mapper_float = DataFrameMapper(standardize + leave)\n", "x_mapper_long = DataFrameMapper(categorical) # we need a separate mapper to ensure the data type 'int64'" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "x_fit_transform = lambda df: tt.tuplefy(x_mapper_float.fit_transform(df), x_mapper_long.fit_transform(df))\n", "x_transform = lambda df: tt.tuplefy(x_mapper_float.transform(df), x_mapper_long.transform(df))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "x_train = x_fit_transform(df_train)\n", "x_val = x_transform(df_val)\n", "x_test = x_transform(df_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In the `x_fit_transform` and `x_transform` we have wrapped the results with `tt.tuplefy`. The result is a `TupleTree` which equivalent to a regular `tuple`, but with some added functionality that makes it easier to investigate the data.\n", "\n", "From the code below we see that `x_train` is a `tuple` with two arrays representing the transformed numerical and categorical covariates." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(numpy.ndarray, numpy.ndarray)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x_train.types()" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((5678, 11), (5678, 3))" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x_train.shapes()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(dtype('float32'), dtype('int64'))" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x_train.dtypes()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Label transforms\n", "\n", "`LogisticHazard` is a discrete-time method, meaning it requires discretization of the event times to be applied to continuous-time data.\n", "We let `num_durations` define the size of the discretization grid, but we will now let the **quantiles** of the estimated event-time distribution define the grid, as explained in [this paper](https://arxiv.org/abs/1910.06724)." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "num_durations = 20\n", "scheme = 'quantiles'\n", "labtrans = LogisticHazard.label_transform(num_durations, scheme)\n", "\n", "get_target = lambda df: (df['duration'].values, df['event'].values)\n", "y_train = labtrans.fit_transform(*get_target(df_train))\n", "y_val = labtrans.transform(*get_target(df_val))\n", "durations_test, events_test = get_target(df_test)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that the discretization grid is far from equidistant. The idea behind the quantile discretization is that the grid is finer where there are many events and coarser where there are few." ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([ 0., 3., 5., 8., 11., 16., 22., 30., 43.,\n", " 64., 92., 129., 192., 256., 368., 522., 739., 1005.,\n", " 1348., 2029.], dtype=float32)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "labtrans.cuts" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can visualize the grid together with the Kaplan-Meier estaimtes to see this clearly. " ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from pycox.utils import kaplan_meier\n", "plt.vlines(labtrans.cuts, 0, 1, colors='gray', linestyles=\"--\", label='Discretization Grid')\n", "kaplan_meier(*get_target(df_train)).plot(label='Kaplan-Meier')\n", "plt.ylabel('S(t)')\n", "plt.legend()\n", "_ = plt.xlabel('Time')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Investigating the data\n", "\n", "Next we collect the training and validation data with `tt.tuplefy` in a nested tuple to make it simpler to inspect them" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "train = tt.tuplefy(x_train, y_train)\n", "val = tt.tuplefy(x_val, y_val)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((numpy.ndarray, numpy.ndarray), (numpy.ndarray, numpy.ndarray))" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train.types()" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(((5678, 11), (5678, 3)), ((5678,), (5678,)))" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train.shapes()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((dtype('float32'), dtype('int64')), (dtype('int64'), dtype('float32')))" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train.dtypes()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now alternatively transform the data to torch tensors with `to_tensor`. This is not useful for this notebook, but can be very handy for development." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [], "source": [ "train_tensor = train.to_tensor()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((torch.Tensor, torch.Tensor), (torch.Tensor, torch.Tensor))" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_tensor.types()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((torch.Size([5678, 11]), torch.Size([5678, 3])),\n", " (torch.Size([5678]), torch.Size([5678])))" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_tensor.shapes()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((torch.float32, torch.int64), (torch.int64, torch.float32))" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "train_tensor.dtypes()" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [], "source": [ "del train_tensor" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Neural net\n", "\n", "We want our network to take two input arguments, one for the numerical covariates and one for the categorical covariates such that we can apply entity embedding.\n", "\n", "The `tt.practical.MixedInputMLP` does exactly this for us. If first applies entity embeddings to the categorical covariates and then concatenate the embeddings with the numerical covariates." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First we need to define the embedding sizes. Here we will let the embedding dimensions be half the size of the number of categories.\n", "This means that each category is represented by a vector that is half the size of the number of categories." ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "num_embeddings = x_train[1].max(0) + 1\n", "embedding_dims = num_embeddings // 2" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(array([8, 7, 4]), array([4, 3, 2]))" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "num_embeddings, embedding_dims" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We then define a net with four hidden layers, each of size 32, and include batch normalization and dropout between each layer." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "in_features = x_train[0].shape[1]\n", "out_features = labtrans.out_features\n", "num_nodes = [32, 32, 32, 32]\n", "batch_norm = True\n", "dropout = 0.2\n", "\n", "net = tt.practical.MixedInputMLP(in_features, num_embeddings, embedding_dims,\n", " num_nodes, out_features, batch_norm, dropout)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "MixedInputMLP(\n", " (embeddings): EntityEmbeddings(\n", " (embeddings): ModuleList(\n", " (0): Embedding(8, 4)\n", " (1): Embedding(7, 3)\n", " (2): Embedding(4, 2)\n", " )\n", " )\n", " (mlp): MLPVanilla(\n", " (net): Sequential(\n", " (0): DenseVanillaBlock(\n", " (linear): Linear(in_features=20, out_features=32, bias=True)\n", " (activation): ReLU()\n", " (batch_norm): BatchNorm1d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (dropout): Dropout(p=0.2, inplace=False)\n", " )\n", " (1): DenseVanillaBlock(\n", " (linear): Linear(in_features=32, out_features=32, bias=True)\n", " (activation): ReLU()\n", " (batch_norm): BatchNorm1d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (dropout): Dropout(p=0.2, inplace=False)\n", " )\n", " (2): DenseVanillaBlock(\n", " (linear): Linear(in_features=32, out_features=32, bias=True)\n", " (activation): ReLU()\n", " (batch_norm): BatchNorm1d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (dropout): Dropout(p=0.2, inplace=False)\n", " )\n", " (3): DenseVanillaBlock(\n", " (linear): Linear(in_features=32, out_features=32, bias=True)\n", " (activation): ReLU()\n", " (batch_norm): BatchNorm1d(32, eps=1e-05, momentum=0.1, affine=True, track_running_stats=True)\n", " (dropout): Dropout(p=0.2, inplace=False)\n", " )\n", " (4): Linear(in_features=32, out_features=20, bias=True)\n", " )\n", " )\n", ")" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "net" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fitting model" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We want to use the cyclic [AdamWR optimizer](https://arxiv.org/abs/1711.05101) where we multiply the learning rate with 0.8 and double then cycle length after every cycle.\n", "Also, we add [decoupled weight decay](https://arxiv.org/abs/1711.05101) for regularization." ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": [ "optimizer = tt.optim.AdamWR(decoupled_weight_decay=0.01, cycle_eta_multiplier=0.8,\n", " cycle_multiplier=2)\n", "model = LogisticHazard(net, optimizer, duration_index=labtrans.cuts)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can use `lr_finder` to find a suitable initial learning rate\n", "with the scheme proposed by [Smith 2017](https://arxiv.org/pdf/1506.01186.pdf).\n", "See [this post](https://towardsdatascience.com/finding-good-learning-rate-and-the-one-cycle-policy-7159fe1db5d6) for an explanation.\n", "\n", "The `tolerance` argument just defines the largest loss allowed before terminating the procedure. Is serves mostly a visual purpose." ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "batch_size = 256\n", "lrfind = model.lr_finder(x_train, y_train, batch_size, tolerance=50)\n", "_ = lrfind.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can see that this sets the optimizer learning rate in our model to the same value as that of `get_best_lr`." ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.08902150854450441" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "model.optimizer.param_groups[0]['lr']" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.08902150854450441" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lrfind.get_best_lr()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, we have found that `get_best_lr` sometimes gives a little high learning rate, so we instead set it to" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [], "source": [ "model.optimizer.set_lr(0.02)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For early stopping, we will use `EarlyStoppingCycle` which work in the same manner as `EarlyStopping` but will stop at the end of **the cycle** if the current best model was not obtained in the current cycle." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [], "source": [ "epochs = 512\n", "callbacks = [tt.cb.EarlyStoppingCycle()]\n", "verbose = False # set to True if you want printout" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 47.1 s, sys: 1.74 s, total: 48.9 s\n", "Wall time: 23.3 s\n" ] } ], "source": [ "%%time\n", "log = model.fit(x_train, y_train, batch_size, epochs, callbacks, verbose,\n", " val_data=val)" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "_ = log.to_pandas().iloc[1:].plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now plot the learning rates used through the training with following piece of code" ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "lrs = model.optimizer.lr_scheduler.to_pandas() * model.optimizer.param_groups[0]['initial_lr']\n", "lrs.plot()\n", "plt.grid(linestyle='--')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Evaluation\n", "\n", "The `LogisticHazard` method has two implemented interpolation schemes: the constant density interpolation (default) and constant hazard interpolation. See [this paper](https://arxiv.org/abs/1910.06724) for details." ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [], "source": [ "surv_cdi = model.interpolate(100).predict_surv_df(x_test)\n", "surv_chi = model.interpolate(100, 'const_hazard').predict_surv_df(x_test)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [], "source": [ "ev_cdi = EvalSurv(surv_cdi, durations_test, events_test, censor_surv='km')\n", "ev_chi = EvalSurv(surv_chi, durations_test, events_test, censor_surv='km')" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.6305366659876536, 0.630559781328872)" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ev_cdi.concordance_td(), ev_chi.concordance_td()" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.19502317626753513, 0.20115977074187133)" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "time_grid = np.linspace(durations_test.min(), durations_test.max(), 100)\n", "ev_cdi.integrated_brier_score(time_grid), ev_chi.integrated_brier_score(time_grid)" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ev_cdi.brier_score(time_grid).rename('CDI').plot()\n", "ev_chi.brier_score(time_grid).rename('CHI').plot()\n", "plt.legend()\n", "plt.ylabel('Brier score')\n", "_ = plt.xlabel('Time')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see from the figures that, in this case, the constant hazard interpolated estimates are not as good as the constant density interpolated estimates." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Investigate what's going on\n", "\n", "The instabilities at the end of the plot above is a consequence for our discretization scheme.\n", "\n", "From `labtrans` we can get the last two discretization points" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1348., 2029.], dtype=float32)" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "labtrans.cuts[-2:]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, because the censoring times in this interval are rounded down while events times are rounded up, we get an unnatural proportion of events at the final time point." ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([1., 1., 1., 1., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 0., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,\n", " 0., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1.],\n", " dtype=float32)" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = train.iloc[train[1][0] == train[1][0].max()]\n", "data[1][1]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We see the almost all training individuals here have an event!" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.93939394" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data[1][1].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "While the true event proportion of individuals that survival past 1500 is almost zero" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "0.061224489795918366" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df_train.loc[lambda x: x['duration'] > 1500]['event'].mean()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This is one of the dangers with discretization, and one should take caution. The simple solution would be to ensure that there are more discretization point in this interval, or simply not evaluate past the time 1348.\n", "\n", "If we take a look at individuals in the test set that are censored some time after 1500, we see that the survival estimates are not very appropriate." ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "test = tt.tuplefy(x_test, (durations_test, events_test))\n", "data = test.iloc[(durations_test > 1500) & (events_test == 0)]\n", "n = data[0][0].shape[0]" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "idx = np.random.choice(n, 6)\n", "fig, axs = plt.subplots(2, 3, figsize=(12, 6), sharex=True, sharey=True)\n", "for i, ax in zip(idx, axs.flat):\n", " x, (t, _) = data.iloc[[i]]\n", " surv = model.predict_surv_df(x)\n", " surv[0].rename('Survival estimate').plot(ax=ax)\n", " ax.vlines(t, 0, 1, colors='red', linestyles=\"--\",\n", " label='censoring time')\n", " ax.grid(linestyle='--')\n", " ax.legend()\n", " ax.set_ylabel('S(t | x)')\n", " _ = ax.set_xlabel('Time')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Next\n", "\n", "You can now look at other examples of survival methods in the [examples folder](https://nbviewer.jupyter.org/github/havakv/pycox/tree/master/examples).\n", "Or, alternatively take a look at\n", "\n", "- other network architectures that combine autoencoders and survival networks in the notebook [03_network_architectures.ipynb](https://nbviewer.jupyter.org/github/havakv/pycox/blob/master/examples/03_network_architectures.ipynb).\n", "- working with DataLoaders and convolutional networks in the notebook [04_mnist_dataloaders_cnn.ipynb](https://nbviewer.jupyter.org/github/havakv/pycox/blob/master/examples/04_mnist_dataloaders_cnn.ipynb)." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "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.7.4" } }, "nbformat": 4, "nbformat_minor": 4 }