{ "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: -0.2774877574815404\n", "first power: 0.11112589053037751\n", "second power: -0.00033136014047192484\n" ] }, { "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_1.png" } }, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjUAAAHFCAYAAAAKbwgcAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAACUmUlEQVR4nOzdd3zU9P/A8Veue/da6IICLSijzBaVoQxxoaiI4h6IXxXBAe6tqF9QHF9coAg/QUEZCm6GKCAiCLTMsls2Vwqlgxbouvz+KE1z7XXf9e7a99MHDy/JJ8knaZJ732dFUVVVRQghhBDCxRkcnQEhhBBCCFuQoEYIIYQQjYIENUIIIYRoFCSoEUIIIUSjIEGNEEIIIRoFCWqEEEII0ShIUCOEEEKIRkGCGiGEEEI0ChLUCCGEEKJRkKBGiFqaOXMmiqJo/7y9vYmIiGDgwIFMnDiR9PR0u+7/wIEDKIrCzJkza7XeiBEjaNOmjV3yVNU+9eeqsn8jRoxo0HyVVz4/gYGB9OnTh2+//dah+WpIdb2uhHAmirwmQYjamTlzJvfffz9ffvklHTp0oLCwkPT0dP7++2++/PJL3NzcmDdvHldccYVd9p+fn8+mTZto27YtzZs3r/F6KSkp5OTk0KNHD7vkq7J9njhxQptOSkpizJgxTJgwgYEDB2rzmzdvTtu2bRssX+UpisItt9zCU089haqq7N+/nwkTJpCcnMycOXO48847HZa3hlLX60oIZyJBjRC1VBrUbNiwgZ49e1osO3ToEJdeeilZWVns3buX8PBwB+XSOa1cuZKBAweyYMECbrnllkrTnT17Fm9vbxRFaZB8KYrCmDFj+OSTT7R5Bw8epE2bNvTr149Vq1Y1SD5KnTlzBl9f3wbdpxCNgVQ/CWFDrVq14v333+f06dN8/vnnFss2btzIDTfcQEhICN7e3vTo0YP58+dX2MbRo0d56KGHiI6OxtPTk6ioKG655RaOHz8OWK8mOHHihLaOl5cXzZs3p2/fvixfvlxLY6366dy5c7zwwgvExMTg6elJixYtGDNmDFlZWRbp2rRpw5AhQ1iyZAnx8fH4+PjQoUMH/u///q9+J4yy6rxly5YxcuRImjdvjq+vL/n5+QDMmzeP3r174+fnh7+/P1dffTWbNm2qsJ2ant+aat26Nc2bN9fOe6mcnByefvppi3M2duxY8vLyLNJlZWXxwAMPEBISgr+/P9dddx2pqakoisLrr7+upXv99ddRFIWkpCRuueUWjEajVmqlqipTpkyhe/fu+Pj4YDQaueWWW0hNTbXY16ZNmxgyZAhhYWF4eXkRFRXFddddx5EjR7Q0CxYs4JJLLiEoKAhfX19iY2MZOXKktryy6qe///6bQYMGERAQgK+vL3369OHXX3+1SFP6N1yxYgWPPPIIzZo1IzQ0lGHDhnHs2LFan3sh6kqCGiFs7Nprr8XNzY2//vpLm7dixQr69u1LVlYWn332GT/++CPdu3fntttus/gSOXr0KBdddBGLFi3iySefZPHixUyePJmgoCAyMzMr3ec999zDDz/8wKuvvsqyZcuYPn06V1xxBRkZGZWuo6oqQ4cO5b333uOee+7h119/5cknn2TWrFlcfvnlWlBRasuWLTz11FOMGzeOH3/8ka5du/LAAw9YHGd9jBw5Eg8PD77++mu+++47PDw8mDBhAnfccQedOnVi/vz5fP3115w+fZrLLruMHTt2aOvW9PzWRnZ2NqdOneLCCy/U5p05c4b+/fsza9YsHn/8cRYvXsxzzz3HzJkzueGGGygt+DabzVx//fV88803PPfccyxatIhLLrmEa665ptL9DRs2jHbt2rFgwQI+++wzAB5++GHGjh3LFVdcwQ8//MCUKVNITk6mT58+WrCVl5fHlVdeyfHjx/n000/5/fffmTx5Mq1ateL06dMArF27lttuu43Y2Fjmzp3Lr7/+yquvvkpRUVGV52DVqlVcfvnlZGdnM2PGDL799lsCAgK4/vrrmTdvXoX0//nPf/Dw8OCbb75h0qRJrFy5krvvvrt2J16I+lCFELXy5ZdfqoC6YcOGStOEh4erHTt21KY7dOig9ujRQy0sLLRIN2TIEDUyMlItLi5WVVVVR44cqXp4eKg7duyodNv79+9XAfXLL7/U5vn7+6tjx46tMt/33Xef2rp1a216yZIlKqBOmjTJIt28efNUQJ02bZo2r3Xr1qq3t7d68OBBbd7Zs2fVkJAQ9eGHH65yv3orVqxQAXXBggXavNLzee+991qkPXTokOru7q4+9thjFvNPnz6tRkREqLfeeqs2r6bntzKAOnr0aLWwsFAtKChQ9+zZo95www1qQECAunHjRi3dxIkTVYPBUOFv/91336mA+ttvv6mqqqq//vqr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bt268cknn1hdXpPzOnbsWBYtWsTcuXP5+++/yc3NZciQIRQXFzfUYTi96s4zwDXXXGNxff/2228Wy+U8V2/VqlWMGTOGdevW8fvvv1NUVMRVV11FXl6elkau6fqryXkGJ7qmVVEvF198sTpq1CiLeR06dFCff/55B+XI9b322mtqt27drC4zm81qRESE+vbbb2vzzp07pwYFBamfffZZA+XQ9QHqokWLtOmanNesrCzVw8NDnTt3rpbm6NGjqsFgUJcsWdJgeXcl5c+zqqrqfffdp954442VriPnuW7S09NVQF21apWqqnJN20v586yqznVNS0lNPRQUFJCYmMhVV11lMf+qq67in3/+cVCuGoe9e/cSFRVFTEwMt99+O6mpqQDs37+ftLQ0i3Pu5eVF//795ZzXQ03Oa2JiIoWFhRZpoqKi6Ny5s5z7Wlq5ciVhYWFceOGFPPjgg6Snp2vL5DzXTXZ2NgAhISGAXNP2Uv48l3KWa1qCmno4efIkxcXFhIeHW8wPDw8nLS3NQblyfZdccglfffUVS5cu5YsvviAtLY0+ffqQkZGhnVc557ZVk/OalpaGp6cnRqOx0jSieoMHD2bOnDn8+eefvP/++2zYsIHLL7+c/Px8QM5zXaiqypNPPsmll15K586dAbmm7cHaeQbnuqab1Fu67UVRFItpVVUrzBM1N3jwYO1zly5d6N27N23btmXWrFla4zM55/ZRl/Mq5752brvtNu1z586d6dmzJ61bt+bXX39l2LBhla4n57lyjz76KFu3buXvv/+usEyuadup7Dw70zUtJTX10KxZM9zc3CpEmunp6RV+HYi68/Pzo0uXLuzdu1frBSXn3LZqcl4jIiIoKCggMzOz0jSi9iIjI2ndujV79+4F5DzX1mOPPcZPP/3EihUraNmypTZfrmnbquw8W+PIa1qCmnrw9PQkISGB33//3WL+77//Tp8+fRyUq8YnPz+fnTt3EhkZSUxMDBERERbnvKCggFWrVsk5r4eanNeEhAQ8PDws0phMJrZv3y7nvh4yMjI4fPgwkZGRgJznmlJVlUcffZSFCxfy559/EhMTY7FcrmnbqO48W+PQa9qmzY6boLlz56oeHh7qjBkz1B07dqhjx45V/fz81AMHDjg6ay7rqaeeUleuXKmmpqaq69atU4cMGaIGBARo5/Ttt99Wg4KC1IULF6rbtm1T77jjDjUyMlLNyclxcM6d2+nTp9VNmzapmzZtUgH1gw8+UDdt2qQePHhQVdWanddRo0apLVu2VJcvX64mJSWpl19+udqtWze1qKjIUYfldKo6z6dPn1afeuop9Z9//lH379+vrlixQu3du7faokULOc+19Mgjj6hBQUHqypUrVZPJpP07c+aMlkau6fqr7jw72zUtQY0NfPrpp2rr1q1VT09PNT4+3qKrm6i92267TY2MjFQ9PDzUqKgoddiwYWpycrK23Gw2q6+99poaERGhenl5qf369VO3bdvmwBy7hhUrVqhAhX/33Xefqqo1O69nz55VH330UTUkJET18fFRhwwZoh46dMgBR+O8qjrPZ86cUa+66iq1efPmqoeHh9qqVSv1vvvuq3AO5TxXz9o5BtQvv/xSSyPXdP1Vd56d7ZpWzmdaCCGEEMKlSZsaIYQQQjQKEtQIIYQQolGQoEYIIYQQjYIENUIIIYRoFCSoEUIIIUSjIEGNEEIIIRoFCWqEEEII0ShIUCOEEEKIRkGCGiGE0xgxYgSKoqAoCh4eHoSHh3PllVfyf//3f5jN5hpvZ+bMmQQHB9svo0IIpyRBjRDCqVxzzTWYTCYOHDjA4sWLGThwIE888QRDhgyhqKjI0dkTQjgxCWqEEE7Fy8uLiIgIWrRoQXx8PC+++CI//vgjixcvZubMmQB88MEHdOnSBT8/P6Kjoxk9ejS5ubkArFy5kvvvv5/s7Gyt1Of1118HYPbs2fTs2ZOAgAAiIiK48847SU9Pd9CRCiFsTYIaIYTTu/zyy+nWrRsLFy4EwGAw8NFHH7F9+3ZmzZrFn3/+ybPPPgtAnz59mDx5MoGBgZhMJkwmE08//TQABQUFvPnmm2zZsoUffviB/fv3M2LECEcdlhDCxtwdnQEhhKiJDh06sHXrVgDGjh2rzY+JieHNN9/kkUceYcqUKXh6ehIUFISiKERERFhsY+TIkdrn2NhYPvroIy6++GJyc3Px9/dvkOMQQtiPlNQIIVyCqqooigLAihUruPLKK2nRogUBAQHce++9ZGRkkJeXV+U2Nm3axI033kjr1q0JCAhgwIABABw6dMje2RdCNAAJaoQQLmHnzp3ExMRw8OBBrr32Wjp37sz3339PYmIin376KQCFhYWVrp+Xl8dVV12Fv78/s2fPZsOGDSxatAgoqZYSQrg+qX4SQji9P//8k23btjFu3Dg2btxIUVER77//PgZDye+y+fPnW6T39PSkuLjYYt6uXbs4efIkb7/9NtHR0QBs3LixYQ5ACNEgpKRGCOFU8vPzSUtL4+jRoyQlJTFhwgRuvPFGhgwZwr333kvbtm0pKiri448/JjU1la+//prPPvvMYhtt2rQhNzeXP/74g5MnT3LmzBlatWqFp6entt5PP/3Em2++6aCjFELYgwQ1QginsmTJEiIjI2nTpg3XXHMNK1as4KOPPuLHH3/Ezc2N7t2788EHH/DOO+/QuXNn5syZw8SJEy220ef/27GDGghCIIqCvSIwgYQxggWkEIII7ohkRWw2k3SqFPy+vfTzRO89WmtRSok5Z5RSYu8d55yotcYYI9ZaL10J/MPn3nvfHgEA8CufGgAgBVEDAKQgagCAFEQNAJCCqAEAUhA1AEAKogYASEHUAAApiBoAIAVRAwCkIGoAgBREDQCQwhdT2gEzfzJLfQAAAABJRU5ErkJggg==\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 }