From 95127b5eb43caee51920734dca61a03986588f88 Mon Sep 17 00:00:00 2001 From: judsonupchurch Date: Mon, 27 Jan 2025 02:33:44 +0000 Subject: [PATCH] Lecture 29. K-Fold Cross Validation --- lecture28_31/notes_28.ipynb | 29 +++++++++++++++++++++++++++++ lecture28_31/notes_28.pdf | Bin 68964 -> 73679 bytes lecture28_31/notes_28.py | 25 +++++++++++++++++++++++++ 3 files changed, 54 insertions(+) diff --git a/lecture28_31/notes_28.ipynb b/lecture28_31/notes_28.ipynb index 5caaf9d..c07907b 100644 --- a/lecture28_31/notes_28.ipynb +++ b/lecture28_31/notes_28.ipynb @@ -435,6 +435,35 @@ "\n", "These \"hyper-parameters\" can be adjusted after testing with out of sample data." ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Types of Data\n", + "Training data is used to optimize a given network and minimize loss.\n", + "\n", + "Validation data is used to optimize hyper-parameters of the network. Parameters like number of layers, neurons, neurons per layer, activation layer and their constants, epochs, learning rates, etc.\n", + "\n", + "Testing data is used to see the out of sample effectiveness of the trained network.\n", + "\n", + "## Splitting up Data\n", + "### Given a Lot of Data\n", + "Dataset is broken primarily into training data and then also validation and testing data.\n", + "\n", + "### Given Limited Data\n", + "Dataset is only broken up into training data and testing data (maybe 80%-20%). K-Fold validation can be used in limited dataset scenarios.\n", + "\n", + "# K-Fold Cross Validation\n", + "In the limited training dataset, you can split the dataset further into subsections, say 5. You then have 5 different combinations of data, where 1 subsection is considered the validation while the other 4 are considered the training data.\n", + "\n", + "When using 5 subsections of the training data, say {A, B, C, D, E}, you get 5 validation losses. The total validation loss is considered the average of all 5.\n", + "\n", + "For determining different hyper-parameters, you run the network on the same training data and choose the one with the lowest total validation loss.\n", + "\n", + "## Data Leakage\n", + "While K-Fold is good for getting hyper-parameters with limited data, it can have data leakage if not correctly setup. For example, with timeseries data, it may get access to future information and train off of that." + ] } ], "metadata": { diff --git a/lecture28_31/notes_28.pdf b/lecture28_31/notes_28.pdf index 6d072b0f6548807641c203d10dfa0c20e5b24605..3703e56e72f5c46ec8a9195ea272333f10feb158 100644 GIT binary patch delta 29920 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 z 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 F{{svaWJmx2 delta 25178 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�`nZJyp@BpLxs$cI!4+PxkPM2ZN| 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 diff --git a/lecture28_31/notes_28.py b/lecture28_31/notes_28.py index dab54d0..d4197a3 100644 --- a/lecture28_31/notes_28.py +++ b/lecture28_31/notes_28.py @@ -372,4 +372,29 @@ print(f'validation, acc: {accuracy:.3f}, loss: {loss:.3f}') # # These "hyper-parameters" can be adjusted after testing with out of sample data. +# %% [markdown] +# # Types of Data +# Training data is used to optimize a given network and minimize loss. +# +# Validation data is used to optimize hyper-parameters of the network. Parameters like number of layers, neurons, neurons per layer, activation layer and their constants, epochs, learning rates, etc. +# +# Testing data is used to see the out of sample effectiveness of the trained network. +# +# ## Splitting up Data +# ### Given a Lot of Data +# Dataset is broken primarily into training data and then also validation and testing data. +# +# ### Given Limited Data +# Dataset is only broken up into training data and testing data (maybe 80%-20%). K-Fold validation can be used in limited dataset scenarios. +# +# # K-Fold Cross Validation +# In the limited training dataset, you can split the dataset further into subsections, say 5. You then have 5 different combinations of data, where 1 subsection is considered the validation while the other 4 are considered the training data. +# +# When using 5 subsections of the training data, say {A, B, C, D, E}, you get 5 validation losses. The total validation loss is considered the average of all 5. +# +# For determining different hyper-parameters, you run the network on the same training data and choose the one with the lowest total validation loss. +# +# ## Data Leakage +# While K-Fold is good for getting hyper-parameters with limited data, it can have data leakage if not correctly setup. For example, with timeseries data, it may get access to future information and train off of that. +