{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Decision trees, overarching aims\n", "\n", "\n", "We start here with the most basic algorithm, the so-called decision\n", "tree. With this basic algorithm we can in turn build more complex\n", "networks, spanning from homogeneous and heterogenous forests (bagging,\n", "random forests and more) to one of the most popular supervised\n", "algorithms nowadays, the extreme gradient boosting, or just\n", "XGBoost. But let us start with the simplest possible ingredient.\n", "\n", "Decision trees are supervised learning algorithms used for both,\n", "classification and regression tasks.\n", "\n", "\n", "The main idea of decision trees\n", "is to find those descriptive features which contain the most\n", "**information** regarding the target feature and then split the dataset\n", "along the values of these features such that the target feature values\n", "for the resulting underlying datasets are as pure as possible.\n", "\n", "The descriptive features which reproduce best the target/output features are normally said\n", "to be the most informative ones. The process of finding the **most\n", "informative** feature is done until we accomplish a stopping criteria\n", "where we then finally end up in so called **leaf nodes**. \n", "\n", "## Basics of a tree\n", "\n", "A decision tree is typically divided into a **root node**, the **interior nodes**,\n", "and the final **leaf nodes** or just **leaves**. These entities are then connected by so-called **branches**.\n", "\n", "The leaf nodes\n", "contain the predictions we will make for new query instances presented\n", "to our trained model. This is possible since the model has \n", "learned the underlying structure of the training data and hence can,\n", "given some assumptions, make predictions about the target feature value\n", "(class) of unseen query instances.\n", "\n", "\n", "## General Features\n", "\n", "The overarching approach to decision trees is a top-down approach.\n", "\n", "* A leaf provides the classification of a given instance.\n", "\n", "* A node specifies a test of some attribute of the instance.\n", "\n", "* A branch corresponds to a possible values of an attribute.\n", "\n", "* An instance is classified by starting at the root node of the tree, testing the attribute specified by this node, then moving down the tree branch corresponding to the value of the attribute in the given example.\n", "\n", "This process is then repeated for the subtree rooted at the new\n", "node.\n", "\n", "\n", "\n", "In simplified terms, the process of training a decision tree and\n", "predicting the target features of query instances is as follows:\n", "\n", "1. Present a dataset containing of a number of training instances characterized by a number of descriptive features and a target feature\n", "\n", "2. Train the decision tree model by continuously splitting the target feature along the values of the descriptive features using a measure of information gain during the training process\n", "\n", "3. Grow the tree until we accomplish a stopping criteria create leaf nodes which represent the *predictions* we want to make for new query instances\n", "\n", "4. Show query instances to the tree and run down the tree until we arrive at leaf nodes\n", "\n", "Then we are essentially done!" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "2nd degree coefficients:\n", "zero power: 2.731441119315968\n", "first power: -0.07208896238192342\n", "second power: 0.0005051756404139333\n" ] }, { "data": { "image/png": "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UVi0aBEbNmxg586dxMbG2i2Xe7plNFTOjrT7Pd3iVbJFgz7++GPFzc1NWbNmjXLy5EnlkUceUby9vZWLFy+296F1Wn/84x+V3bt3KxcuXFAOHDig3HLLLYqvr69Wpi+++KLi5+enbNiwQTlx4oQyZ84cJSwsTCksLGznI+/YTCaTcuzYMeXYsWMKoLzyyivKsWPHlEuXLimK4ly5LliwQImMjFS++uor5ejRo8qkSZOU4cOHK5WVle11Wh1OfeVsMpmUP/7xj8q+ffuUpKQkZdeuXcrYsWOViIgIKedGevDBBxU/Pz9l9+7dSkZGhjaVlJRo68g93XwNlXNHvKclGGonb7zxhhITE6O4u7srcXFxdk0ORePdfffdSlhYmOLm5qaEh4crM2fOVBISErTlFotFWbZsmRIaGqoYDAbl+uuvV06cONGOR9w57Nq1SwFqTXPnzlUUxblyLS0tVRYtWqT06NFD8fT0VG655RYlOTm5Hc6m46qvnEtKSpQpU6YoQUFBipubmxIdHa3MnTu3VhlKOTfMURkDytq1a7V15J5uvobKuSPe07qrBy6EEEII0S1JnSEhhBBCdGsSDAkhhBCiW5NgSAghhBDdmgRDQgghhOjWJBgSQgghRLcmwZAQQgghujUJhoQQQgjRrUkwJIQQQohuTYIhIUSnlZWVxe9+9zuio6MxGAyEhoYydepU9u/fD1hHH9+0aVP7HqQQosNzbe8DEEKIppo1axYVFRW899579O7dm8uXL/P1119z5cqV9j40IUQnIpkhIUSnlJ+fz3fffcff//53Jk6cSExMDGPGjOHxxx/n5ptvplevXgDMmDEDnU6nvQb4/PPPiY+Px8PDg969e/PMM89QWVmpLdfpdKxevZrp06fj6elJbGwsn376qba8vLycRYsWERYWhoeHB7169WL58uVtdepCiBYmwZAQolPy8fHBx8eHTZs2YTabay0/dOgQAGvXriUjI0N7vW3bNu655x4efvhhTp48yVtvvcW6det4/vnn7bb/61//yqxZs/jhhx+45557mDNnDqdOnQLg1VdfZfPmzXzyySecOXOG999/3y7YEkJ0LjJQqxCi0/rss8+YP38+paWlxMXFMWHCBGbPns2wYcMAa4Zn48aN3HHHHdo2119/PdOnT+fxxx/X5r3//vssXbqU9PR0bbsFCxawevVqbZ1rr72WuLg4Vq1axcMPP0xCQgJfffUVOp2ubU5WCNFqJDMkhOi0Zs2aRXp6Ops3b2bq1Kns3r2buLg41q1bV+c2R44c4dlnn9UySz4+PsyfP5+MjAxKSkq09caOHWu33dixY7XM0Lx58zh+/DgDBgzg4YcfZvv27a1yfkKItiHBkBCiU/Pw8GDy5Mk89dRT7Nu3j3nz5rFs2bI617dYLDzzzDMcP35cm06cOEFiYiIeHh717kvNAsXFxZGUlMTf/vY3SktLueuuu/jlL3/ZouclhGg7EgwJIbqUQYMGUVxcDICbmxtVVVV2y+Pi4jhz5gx9+/atNen11X8SDxw4YLfdgQMHGDhwoPbaaDRy9913869//Yv169fz2WefSSs2ITopaVovhOiUcnNzufPOO7nvvvsYNmwYvr6+HD58mJdeeonbb78dgF69evH111/z85//HIPBQEBAAE899RS33HILUVFR3Hnnnej1en788UdOnDjBc889p73/p59+yqhRoxg/fjwffPABBw8eZM2aNQD885//JCwsjBEjRqDX6/n0008JDQ3F39+/PYpCCNFcihBCdEJlZWXKY489psTFxSl+fn6Kl5eXMmDAAOXJJ59USkpKFEVRlM2bNyt9+/ZVXF1dlZiYGG3brVu3KuPGjVM8PT0Vo9GojBkzRnn77be15YDyxhtvKJMnT1YMBoMSExOjfPTRR9ryt99+WxkxYoTi7e2tGI1G5cYbb1SOHj3aZucuhGhZ0ppMCCFqcNQKTQjRdUmdISGEEEJ0axIMCSGEEKJbkwrUQghRg9QeEKJ7kcyQEEIIIbo1CYaEEEII0a1JMCSEEEKIbk2CISGEEEJ0axIMCSGEEKJbk2BICCGEEN2aBENCCCGE6NYkGBJCCCFEtybBkBBCCCG6tf8P3XA2HBKLxuYAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": { "filenames": { "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter6_1_1.png" } }, "output_type": "display_data" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "filenames": { "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter6_1_2.png" } }, "output_type": "display_data" } ], "source": [ "%matplotlib inline\n", "\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "from sklearn.preprocessing import PolynomialFeatures\n", "from sklearn.linear_model import LinearRegression\n", "\n", "steps=250\n", "\n", "distance=0\n", "x=0\n", "distance_list=[]\n", "steps_list=[]\n", "while x" ] }, "metadata": { "filenames": { "image/png": "/Users/mhjensen/Teaching/MachineLearning/doc/LectureNotes/_build/jupyter_execute/chapter6_24_1.png" } }, "output_type": "display_data" } ], "source": [ "from sklearn.datasets import load_iris\n", "from sklearn import tree\n", "X, y = load_iris(return_X_y=True)\n", "tree_clf = tree.DecisionTreeClassifier()\n", "tree_clf = tree_clf.fit(X, y)\n", "# and then plot the tree\n", "tree.plot_tree(tree_clf)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Alternatively, the tree can also be exported in textual format with the function exporttext.\n", "This method doesn’t require the installation of external libraries and is more compact:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "|--- petal width (cm) <= 0.80\n", "| |--- class: 0\n", "|--- petal width (cm) > 0.80\n", "| |--- petal width (cm) <= 1.75\n", "| | |--- class: 1\n", "| |--- petal width (cm) > 1.75\n", "| | |--- class: 2\n", "\n" ] } ], "source": [ "from sklearn.datasets import load_iris\n", "from sklearn.tree import DecisionTreeClassifier\n", "from sklearn.tree import export_text\n", "iris = load_iris()\n", "decision_tree = DecisionTreeClassifier(random_state=0, max_depth=2)\n", "decision_tree = decision_tree.fit(iris.data, iris.target)\n", "r = export_text(decision_tree, feature_names=iris['feature_names'])\n", "print(r)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Algorithms for Setting up Decision Trees\n", "\n", "Two algorithms stand out in the set up of decision trees:\n", "1. The CART (Classification And Regression Tree) algorithm for both classification and regression\n", "\n", "2. The ID3 algorithm based on the computation of the information gain for classification\n", "\n", "We discuss both algorithms with applications here. The popular library\n", "**Scikit-Learn** uses the CART algorithm. For classification problems\n", "you can use either the **gini** index or the **entropy** to split a tree\n", "in two branches.\n", "\n", "### The CART algorithm for Classification\n", "\n", "For classification, the CART algorithm splits the data set in two subsets using a single feature $k$ and a threshold $t_k$.\n", "This could be for example a threshold set by a number below a certain circumference of a malign tumor.\n", "\n", "How do we find these two quantities?\n", "We search for the pair $(k,t_k)$ that produces the purest subset using for example the **gini** factor $G$.\n", "The cost function it tries to minimize is then" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", "C(k,t_k) = \\frac{m_{\\mathrm{left}}}{m}G_{\\mathrm{left}}+ \\frac{m_{\\mathrm{right}}}{m}G_{\\mathrm{right}},\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "where $G_{\\mathrm{left/right}}$ measures the impurity of the left/right subset and $m_{\\mathrm{left/right}}$\n", " is the number of instances in the left/right subset\n", "\n", "Once it has successfully split the training set in two, it splits the subsets using the same logic, then the subsubsets\n", "and so on, recursively. It stops recursing once it reaches the maximum depth (defined by the\n", "$max\\_depth$ hyperparameter), or if it cannot find a split that will reduce impurity. A few other\n", "hyperparameters control additional stopping conditions such as the $min\\_samples\\_split$,\n", "$min\\_samples\\_leaf$, $min\\_weight\\_fraction\\_leaf$, and $max\\_leaf\\_nodes$.\n", "\n", "\n", "### The CART algorithm for Regression\n", "\n", "The CART algorithm for regression works is similar to the one for classification except that instead of trying to split the\n", "training set in a way that minimizes say the **gini** or **entropy** impurity, it now tries to split the training set in a way that minimizes our well-known mean-squared error (MSE). The cost function is now" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", "C(k,t_k) = \\frac{m_{\\mathrm{left}}}{m}\\mathrm{MSE}_{\\mathrm{left}}+ \\frac{m_{\\mathrm{right}}}{m}\\mathrm{MSE}_{\\mathrm{right}}.\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here the MSE for a specific node is defined as" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", "\\mathrm{MSE}_{\\mathrm{node}}=\\frac{1}{m_\\mathrm{node}}\\sum_{i\\in \\mathrm{node}}(\\overline{y}_{\\mathrm{node}}-y_i)^2,\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "with" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$$\n", "\\overline{y}_{\\mathrm{node}}=\\frac{1}{m_\\mathrm{node}}\\sum_{i\\in \\mathrm{node}}y_i,\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "the mean value of all observations in a specific node.\n", "\n", "Without any regularization, the regression task for decision trees, \n", "just like for classification tasks, is prone to overfitting.\n", "\n", "\n", "\n", "### Computing the Gini index\n", "\n", "The example we will look at is a classical one in many Machine\n", "Learning applications. Based on various meteorological features, we\n", "have several so-called attributes which decide whether we at the end\n", "will do some outdoor activity like skiing, going for a bike ride etc\n", "etc. The table here contains the feautures **outlook**, **temperature**,\n", "**humidity** and **wind**. The target or output is whether we ride\n", "(True=1) or whether we do something else that day (False=0). The\n", "attributes for each feature are then sunny, overcast and rain for the\n", "outlook, hot, cold and mild for temperature, high and normal for\n", "humidity and weak and strong for wind.\n", "\n", "The table here summarizes the various attributes and\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
Day Outlook Temperature Humidity Wind Ride
1 Sunny Hot High Weak 0
2 Sunny Hot High Strong 1
3 Overcast Hot High Weak 1
4 Rain Mild High Weak 1
5 Rain Cool Normal Weak 1
6 Rain Cool Normal Strong 0
7 Overcast Cool Normal Strong 1
8 Sunny Mild High Weak 0
9 Sunny Cool Normal Weak 1
10 Rain Mild Normal Weak 1
11 Sunny Mild Normal Strong 1
12 Overcast Mild High Strong 1
13 Overcast Hot Normal Weak 1
14 Rain Mild High Strong 0
\n", "\n", "### Simple Python Code to read in Data and perform Classification" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "editable": true }, "outputs": [ { "ename": "FileNotFoundError", "evalue": "[Errno 2] No such file or directory: 'DataFiles/rideclass.csv'", "output_type": "error", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[0;31mFileNotFoundError\u001b[0m Traceback (most recent call last)", "Input \u001b[0;32mIn [6]\u001b[0m, in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[1;32m 34\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21msave_fig\u001b[39m(fig_id):\n\u001b[1;32m 35\u001b[0m plt\u001b[38;5;241m.\u001b[39msavefig(image_path(fig_id) \u001b[38;5;241m+\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m.png\u001b[39m\u001b[38;5;124m\"\u001b[39m, \u001b[38;5;28mformat\u001b[39m\u001b[38;5;241m=\u001b[39m\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mpng\u001b[39m\u001b[38;5;124m'\u001b[39m)\n\u001b[0;32m---> 37\u001b[0m infile \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mopen\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mdata_path\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mrideclass.csv\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m)\u001b[49m\u001b[43m,\u001b[49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[38;5;124;43mr\u001b[39;49m\u001b[38;5;124;43m'\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 39\u001b[0m \u001b[38;5;66;03m# Read the experimental data with Pandas\u001b[39;00m\n\u001b[1;32m 40\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mIPython\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mdisplay\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m display\n", "\u001b[0;31mFileNotFoundError\u001b[0m: [Errno 2] No such file or directory: 'DataFiles/rideclass.csv'" ] } ], "source": [ "# Common imports\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt\n", "from sklearn.tree import DecisionTreeClassifier\n", "from sklearn.model_selection import train_test_split\n", "from sklearn.tree import export_graphviz\n", "from sklearn.preprocessing import StandardScaler, OneHotEncoder\n", "from sklearn.compose import ColumnTransformer\n", "from IPython.display import Image \n", "from pydot import graph_from_dot_data\n", "import os\n", "\n", "# Where to save the figures and data files\n", "PROJECT_ROOT_DIR = \"Results\"\n", "FIGURE_ID = \"Results/FigureFiles\"\n", "DATA_ID = \"DataFiles/\"\n", "\n", "if not os.path.exists(PROJECT_ROOT_DIR):\n", " os.mkdir(PROJECT_ROOT_DIR)\n", "\n", "if not os.path.exists(FIGURE_ID):\n", " os.makedirs(FIGURE_ID)\n", "\n", "if not os.path.exists(DATA_ID):\n", " os.makedirs(DATA_ID)\n", "\n", "def image_path(fig_id):\n", " return os.path.join(FIGURE_ID, fig_id)\n", "\n", "def data_path(dat_id):\n", " return os.path.join(DATA_ID, dat_id)\n", "\n", "def save_fig(fig_id):\n", " plt.savefig(image_path(fig_id) + \".png\", format='png')\n", "\n", "infile = open(data_path(\"rideclass.csv\"),'r')\n", "\n", "# Read the experimental data with Pandas\n", "from IPython.display import display\n", "ridedata = pd.read_csv(infile,names = ('Outlook','Temperature','Humidity','Wind','Ride'))\n", "ridedata = pd.DataFrame(ridedata)\n", "\n", "# Features and targets\n", "X = ridedata.loc[:, ridedata.columns != 'Ride'].values\n", "y = ridedata.loc[:, ridedata.columns == 'Ride'].values\n", "\n", "# Create the encoder.\n", "encoder = OneHotEncoder(handle_unknown=\"ignore\")\n", "# Assume for simplicity all features are categorical.\n", "encoder.fit(X) \n", "# Apply the encoder.\n", "X = encoder.transform(X)\n", "print(X)\n", "# Then do a Classification tree\n", "tree_clf = DecisionTreeClassifier(max_depth=2)\n", "tree_clf.fit(X, y)\n", "print(\"Train set accuracy with Decision Tree: {:.2f}\".format(tree_clf.score(X,y)))\n", "#transfer to a decision tree graph\n", "export_graphviz(\n", " tree_clf,\n", " out_file=\"DataFiles/ride.dot\",\n", " rounded=True,\n", " filled=True\n", ")\n", "cmd = 'dot -Tpng DataFiles/cancer.dot -o DataFiles/cancer.png'\n", "os.system(cmd)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The above functions (gini, entropy and misclassification error) are\n", "important components of the so-called CART algorithm. We will discuss\n", "this algorithm below after we have discussed the information gain\n", "algorithm ID3.\n", "\n", "In the example here we have converted all our attributes into numerical values $0,1,2$ etc." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "editable": true }, "outputs": [], "source": [ "# Split a dataset based on an attribute and an attribute value\n", "def test_split(index, value, dataset):\n", "\tleft, right = list(), list()\n", "\tfor row in dataset:\n", "\t\tif row[index] < value:\n", "\t\t\tleft.append(row)\n", "\t\telse:\n", "\t\t\tright.append(row)\n", "\treturn left, right\n", " \n", "# Calculate the Gini index for a split dataset\n", "def gini_index(groups, classes):\n", "\t# count all samples at split point\n", "\tn_instances = float(sum([len(group) for group in groups]))\n", "\t# sum weighted Gini index for each group\n", "\tgini = 0.0\n", "\tfor group in groups:\n", "\t\tsize = float(len(group))\n", "\t\t# avoid divide by zero\n", "\t\tif size == 0:\n", "\t\t\tcontinue\n", "\t\tscore = 0.0\n", "\t\t# score the group based on the score for each class\n", "\t\tfor class_val in classes:\n", "\t\t\tp = [row[-1] for row in group].count(class_val) / size\n", "\t\t\tscore += p * p\n", "\t\t# weight the group score by its relative size\n", "\t\tgini += (1.0 - score) * (size / n_instances)\n", "\treturn gini\n", "\n", "# Select the best split point for a dataset\n", "def get_split(dataset):\n", "\tclass_values = list(set(row[-1] for row in dataset))\n", "\tb_index, b_value, b_score, b_groups = 999, 999, 999, None\n", "\tfor index in range(len(dataset[0])-1):\n", "\t\tfor row in dataset:\n", "\t\t\tgroups = test_split(index, row[index], dataset)\n", "\t\t\tgini = gini_index(groups, class_values)\n", "\t\t\tprint('X%d < %.3f Gini=%.3f' % ((index+1), row[index], gini))\n", "\t\t\tif gini < b_score:\n", "\t\t\t\tb_index, b_value, b_score, b_groups = index, row[index], gini, groups\n", "\treturn {'index':b_index, 'value':b_value, 'groups':b_groups}\n", " \n", "dataset = [[0,0,0,0,0],\n", " [0,0,0,1,1],\n", " [1,0,0,0,1],\n", " [2,1,0,0,1],\n", " [2,2,1,0,1],\n", " [2,2,1,1,0],\n", " [1,2,1,1,1],\n", " [0,1,0,0,0],\n", " [0,2,1,0,1],\n", " [2,1,1,0,1],\n", " [0,1,1,1,1],\n", " [1,1,0,1,1],\n", " [1,0,1,0,1],\n", " [2,1,0,1,0]]\n", "\n", "split = get_split(dataset)\n", "print('Split: [X%d < %.3f]' % ((split['index']+1), split['value']))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Entropy and the ID3 algorithm\n", "\n", "The ID3 algorithm learns decision trees by constructing\n", "them in a top down way, beginning with the question **which attribute should be tested at the root of the tree**?\n", "\n", "1. Each instance attribute is evaluated using a statistical test to determine how well it alone classifies the training examples.\n", "\n", "2. The best attribute is selected and used as the test at the root node of the tree.\n", "\n", "3. A descendant of the root node is then created for each possible value of this attribute.\n", "\n", "4. Training examples are sorted to the appropriate descendant node.\n", "\n", "5. The entire process is then repeated using the training examples associated with each descendant node to select the best attribute to test at that point in the tree.\n", "\n", "6. This forms a greedy search for an acceptable decision tree, in which the algorithm never backtracks to reconsider earlier choices. \n", "\n", "The ID3 algorithm selects which attribute to test at each node in the\n", "tree.\n", "\n", "We would like to select the attribute that is most useful for classifying\n", "examples.\n", "\n", "What is a good quantitative measure of the worth of an attribute?\n", "\n", "Information gain measures how well a given attribute separates the\n", "training examples according to their target classification.\n", "\n", "The ID3 algorithm uses this information gain measure to select among the candidate\n", "attributes at each step while growing the tree.\n", "\n", "\n", "### Cancer Data again now with Decision Trees and other Methods" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "editable": true }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import numpy as np\n", "from sklearn.model_selection import train_test_split \n", "from sklearn.datasets import load_breast_cancer\n", "from sklearn.svm import SVC\n", "from sklearn.linear_model import LogisticRegression\n", "from sklearn.tree import DecisionTreeClassifier\n", "\n", "# Load the data\n", "cancer = load_breast_cancer()\n", "\n", "X_train, X_test, y_train, y_test = train_test_split(cancer.data,cancer.target,random_state=0)\n", "print(X_train.shape)\n", "print(X_test.shape)\n", "# Logistic Regression\n", "logreg = LogisticRegression(solver='lbfgs')\n", "logreg.fit(X_train, y_train)\n", "print(\"Test set accuracy with Logistic Regression: {:.2f}\".format(logreg.score(X_test,y_test)))\n", "# Support vector machine\n", "svm = SVC(gamma='auto', C=100)\n", "svm.fit(X_train, y_train)\n", "print(\"Test set accuracy with SVM: {:.2f}\".format(svm.score(X_test,y_test)))\n", "# Decision Trees\n", "deep_tree_clf = DecisionTreeClassifier(max_depth=None)\n", "deep_tree_clf.fit(X_train, y_train)\n", "print(\"Test set accuracy with Decision Trees: {:.2f}\".format(deep_tree_clf.score(X_test,y_test)))\n", "#now scale the data\n", "from sklearn.preprocessing import StandardScaler\n", "scaler = StandardScaler()\n", "scaler.fit(X_train)\n", "X_train_scaled = scaler.transform(X_train)\n", "X_test_scaled = scaler.transform(X_test)\n", "# Logistic Regression\n", "logreg.fit(X_train_scaled, y_train)\n", "print(\"Test set accuracy Logistic Regression with scaled data: {:.2f}\".format(logreg.score(X_test_scaled,y_test)))\n", "# Support Vector Machine\n", "svm.fit(X_train_scaled, y_train)\n", "print(\"Test set accuracy SVM with scaled data: {:.2f}\".format(logreg.score(X_test_scaled,y_test)))\n", "# Decision Trees\n", "deep_tree_clf.fit(X_train_scaled, y_train)\n", "print(\"Test set accuracy with Decision Trees and scaled data: {:.2f}\".format(deep_tree_clf.score(X_test_scaled,y_test)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Another example, the moons again" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "editable": true }, "outputs": [], "source": [ "from __future__ import division, print_function, unicode_literals\n", "\n", "# Common imports\n", "import numpy as np\n", "import os\n", "\n", "# to make this notebook's output stable across runs\n", "np.random.seed(42)\n", "\n", "# To plot pretty figures\n", "import matplotlib\n", "import matplotlib.pyplot as plt\n", "from matplotlib.colors import ListedColormap\n", "plt.rcParams['axes.labelsize'] = 14\n", "plt.rcParams['xtick.labelsize'] = 12\n", "plt.rcParams['ytick.labelsize'] = 12\n", "\n", "\n", "from sklearn.svm import SVC\n", "from sklearn import datasets\n", "from sklearn.tree import DecisionTreeClassifier\n", "from sklearn.datasets import make_moons\n", "from sklearn.tree import export_graphviz\n", "\n", "Xm, ym = make_moons(n_samples=100, noise=0.25, random_state=53)\n", "\n", "deep_tree_clf1 = DecisionTreeClassifier(random_state=42)\n", "deep_tree_clf2 = DecisionTreeClassifier(min_samples_leaf=4, random_state=42)\n", "deep_tree_clf1.fit(Xm, ym)\n", "deep_tree_clf2.fit(Xm, ym)\n", "\n", "\n", "def plot_decision_boundary(clf, X, y, axes=[0, 7.5, 0, 3], iris=True, legend=False, plot_training=True):\n", " x1s = np.linspace(axes[0], axes[1], 100)\n", " x2s = np.linspace(axes[2], axes[3], 100)\n", " x1, x2 = np.meshgrid(x1s, x2s)\n", " X_new = np.c_[x1.ravel(), x2.ravel()]\n", " y_pred = clf.predict(X_new).reshape(x1.shape)\n", " custom_cmap = ListedColormap(['#fafab0','#9898ff','#a0faa0'])\n", " plt.contourf(x1, x2, y_pred, alpha=0.3, cmap=custom_cmap)\n", " if not iris:\n", " custom_cmap2 = ListedColormap(['#7d7d58','#4c4c7f','#507d50'])\n", " plt.contour(x1, x2, y_pred, cmap=custom_cmap2, alpha=0.8)\n", " if plot_training:\n", " plt.plot(X[:, 0][y==0], X[:, 1][y==0], \"yo\", label=\"Iris-Setosa\")\n", " plt.plot(X[:, 0][y==1], X[:, 1][y==1], \"bs\", label=\"Iris-Versicolor\")\n", " plt.plot(X[:, 0][y==2], X[:, 1][y==2], \"g^\", label=\"Iris-Virginica\")\n", " plt.axis(axes)\n", " if iris:\n", " plt.xlabel(\"Petal length\", fontsize=14)\n", " plt.ylabel(\"Petal width\", fontsize=14)\n", " else:\n", " plt.xlabel(r\"$x_1$\", fontsize=18)\n", " plt.ylabel(r\"$x_2$\", fontsize=18, rotation=0)\n", " if legend:\n", " plt.legend(loc=\"lower right\", fontsize=14)\n", "plt.figure(figsize=(11, 4))\n", "plt.subplot(121)\n", "plot_decision_boundary(deep_tree_clf1, Xm, ym, axes=[-1.5, 2.5, -1, 1.5], iris=False)\n", "plt.title(\"No restrictions\", fontsize=16)\n", "plt.subplot(122)\n", "plot_decision_boundary(deep_tree_clf2, Xm, ym, axes=[-1.5, 2.5, -1, 1.5], iris=False)\n", "plt.title(\"min_samples_leaf = {}\".format(deep_tree_clf2.min_samples_leaf), fontsize=14)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "editable": true }, "outputs": [], "source": [ "np.random.seed(6)\n", "Xs = np.random.rand(100, 2) - 0.5\n", "ys = (Xs[:, 0] > 0).astype(np.float32) * 2\n", "\n", "angle = np.pi/4\n", "rotation_matrix = np.array([[np.cos(angle), -np.sin(angle)], [np.sin(angle), np.cos(angle)]])\n", "Xsr = Xs.dot(rotation_matrix)\n", "\n", "tree_clf_s = DecisionTreeClassifier(random_state=42)\n", "tree_clf_s.fit(Xs, ys)\n", "tree_clf_sr = DecisionTreeClassifier(random_state=42)\n", "tree_clf_sr.fit(Xsr, ys)\n", "\n", "plt.figure(figsize=(11, 4))\n", "plt.subplot(121)\n", "plot_decision_boundary(tree_clf_s, Xs, ys, axes=[-0.7, 0.7, -0.7, 0.7], iris=False)\n", "plt.subplot(122)\n", "plot_decision_boundary(tree_clf_sr, Xsr, ys, axes=[-0.7, 0.7, -0.7, 0.7], iris=False)\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "editable": true }, "outputs": [], "source": [ "# Quadratic training set + noise\n", "np.random.seed(42)\n", "m = 200\n", "X = np.random.rand(m, 1)\n", "y = 4 * (X - 0.5) ** 2\n", "y = y + np.random.randn(m, 1) / 10" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "editable": true }, "outputs": [], "source": [ "from sklearn.tree import DecisionTreeRegressor\n", "\n", "tree_reg = DecisionTreeRegressor(max_depth=2, random_state=42)\n", "tree_reg.fit(X, y)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "editable": true }, "outputs": [], "source": [ "from sklearn.tree import DecisionTreeRegressor\n", "\n", "tree_reg1 = DecisionTreeRegressor(random_state=42, max_depth=2)\n", "tree_reg2 = DecisionTreeRegressor(random_state=42, max_depth=3)\n", "tree_reg1.fit(X, y)\n", "tree_reg2.fit(X, y)\n", "\n", "def plot_regression_predictions(tree_reg, X, y, axes=[0, 1, -0.2, 1], ylabel=\"$y$\"):\n", " x1 = np.linspace(axes[0], axes[1], 500).reshape(-1, 1)\n", " y_pred = tree_reg.predict(x1)\n", " plt.axis(axes)\n", " plt.xlabel(\"$x_1$\", fontsize=18)\n", " if ylabel:\n", " plt.ylabel(ylabel, fontsize=18, rotation=0)\n", " plt.plot(X, y, \"b.\")\n", " plt.plot(x1, y_pred, \"r.-\", linewidth=2, label=r\"$\\hat{y}$\")\n", "\n", "plt.figure(figsize=(11, 4))\n", "plt.subplot(121)\n", "plot_regression_predictions(tree_reg1, X, y)\n", "for split, style in ((0.1973, \"k-\"), (0.0917, \"k--\"), (0.7718, \"k--\")):\n", " plt.plot([split, split], [-0.2, 1], style, linewidth=2)\n", "plt.text(0.21, 0.65, \"Depth=0\", fontsize=15)\n", "plt.text(0.01, 0.2, \"Depth=1\", fontsize=13)\n", "plt.text(0.65, 0.8, \"Depth=1\", fontsize=13)\n", "plt.legend(loc=\"upper center\", fontsize=18)\n", "plt.title(\"max_depth=2\", fontsize=14)\n", "\n", "plt.subplot(122)\n", "plot_regression_predictions(tree_reg2, X, y, ylabel=None)\n", "for split, style in ((0.1973, \"k-\"), (0.0917, \"k--\"), (0.7718, \"k--\")):\n", " plt.plot([split, split], [-0.2, 1], style, linewidth=2)\n", "for split in (0.0458, 0.1298, 0.2873, 0.9040):\n", " plt.plot([split, split], [-0.2, 1], \"k:\", linewidth=1)\n", "plt.text(0.3, 0.5, \"Depth=2\", fontsize=13)\n", "plt.title(\"max_depth=3\", fontsize=14)\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false, "editable": true }, "outputs": [], "source": [ "tree_reg1 = DecisionTreeRegressor(random_state=42)\n", "tree_reg2 = DecisionTreeRegressor(random_state=42, min_samples_leaf=10)\n", "tree_reg1.fit(X, y)\n", "tree_reg2.fit(X, y)\n", "\n", "x1 = np.linspace(0, 1, 500).reshape(-1, 1)\n", "y_pred1 = tree_reg1.predict(x1)\n", "y_pred2 = tree_reg2.predict(x1)\n", "\n", "plt.figure(figsize=(11, 4))\n", "\n", "plt.subplot(121)\n", "plt.plot(X, y, \"b.\")\n", "plt.plot(x1, y_pred1, \"r.-\", linewidth=2, label=r\"$\\hat{y}$\")\n", "plt.axis([0, 1, -0.2, 1.1])\n", "plt.xlabel(\"$x_1$\", fontsize=18)\n", "plt.ylabel(\"$y$\", fontsize=18, rotation=0)\n", "plt.legend(loc=\"upper center\", fontsize=18)\n", "plt.title(\"No restrictions\", fontsize=14)\n", "\n", "plt.subplot(122)\n", "plt.plot(X, y, \"b.\")\n", "plt.plot(x1, y_pred2, \"r.-\", linewidth=2, label=r\"$\\hat{y}$\")\n", "plt.axis([0, 1, -0.2, 1.1])\n", "plt.xlabel(\"$x_1$\", fontsize=18)\n", "plt.title(\"min_samples_leaf={}\".format(tree_reg2.min_samples_leaf), fontsize=14)\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Pros and cons of trees, pros\n", "\n", "* White box, easy to interpret model. Some people believe that decision trees more closely mirror human decision-making than do the regression and classification approaches discussed earlier (think of support vector machines)\n", "\n", "* Trees are very easy to explain to people. In fact, they are even easier to explain than linear regression!\n", "\n", "* No feature normalization needed\n", "\n", "* Tree models can handle both continuous and categorical data (Classification and Regression Trees)\n", "\n", "* Can model nonlinear relationships\n", "\n", "* Can model interactions between the different descriptive features\n", "\n", "* Trees can be displayed graphically, and are easily interpreted even by a non-expert (especially if they are small)\n", "\n", "### Disadvantages\n", "\n", "* Unfortunately, trees generally do not have the same level of predictive accuracy as some of the other regression and classification approaches\n", "\n", "* If continuous features are used the tree may become quite large and hence less interpretable\n", "\n", "* Decision trees are prone to overfit the training data and hence do not well generalize the data if no stopping criteria or improvements like pruning, boosting or bagging are implemented\n", "\n", "* Small changes in the data may lead to a completely different tree. This issue can be addressed by using ensemble methods like bagging, boosting or random forests\n", "\n", "* Unbalanced datasets where some target feature values occur much more frequently than others may lead to biased trees since the frequently occurring feature values are preferred over the less frequently occurring ones. \n", "\n", "* If the number of features is relatively large (high dimensional) and the number of instances is relatively low, the tree might overfit the data\n", "\n", "* Features with many levels may be preferred over features with less levels since for them it is *more easy* to split the dataset such that the sub datasets only contain pure target feature values. This issue can be addressed by preferring for instance the information gain ratio as splitting criteria over information gain\n", "\n", "However, by aggregating many decision trees, using methods like\n", "bagging, random forests, and boosting, the predictive performance of\n", "trees can be substantially improved." ] } ], "metadata": { "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.9.10" } }, "nbformat": 4, "nbformat_minor": 4 }