{ "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: -1.3439564710454786\n", "first power: 0.020404272938413143\n", "second power: 0.0001539814498783133\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/YYfK9AAAACXBIWXMAAA9hAAAPYQGoP6dpAACPlklEQVR4nO3dd3wU1drA8d/sphfCJpBkQ01AAUNNUJpKiSgoKqJYuIqoVwXbBXvvihfLa8UG14B6pajotYCIAqJSE2ooQhL6JpGwSUhI33n/CJnMJpu+m2ST5+snn+zMnDlzZnZknpxz5hxFVVUVIYQQQgg3Z2juAgghhBBCOIMENUIIIYRoFSSoEUIIIUSrIEGNEEIIIVoFCWqEEEII0SpIUCOEEEKIVkGCGiGEEEK0ChLUCCGEEKJVkKBGCCGEEK2CBDVC1FN8fDyKomg/Pj4+hIeHM3r0aGbPnk1GRoZLj3/w4EEURSE+Pr5e+02bNo3u3bu7pEw1HVN/rar7mTZtWpOWq7LK5WnXrh3Dhw/niy++aNZyNaWG3ldCtCSKTJMgRP3Ex8dzyy238Mknn9C7d2+Ki4vJyMjg999/55NPPsFoNLJ48WIuuugilxy/sLCQrVu30qNHDzp27Fjn/ZKTk8nJyWHQoEEuKVd1x/z777+15cTERO6++25efvllRo8era3v2LEjPXr0aLJyVaYoCtdccw0PPPAAqqqSmprKyy+/TFJSEp9//jlTpkxptrI1lYbeV0K0JBLUCFFP5UHN5s2bGTx4sN22w4cPc/7555OVlcX+/fsJCwtrplK2TGvWrGH06NEsXbqUa665ptp0+fn5+Pj4oChKk5RLURTuvvtu3n33XW3doUOH6N69OxdeeCFr165tknKUO336NH5+fk16TCFaA2l+EsKJunbtyuuvv86pU6f48MMP7bZt2bKFK664guDgYHx8fBg0aBBLliypksexY8e444476NKlC15eXkRERHDNNdeQnp4OOG4m+Pvvv7V9vL296dixIyNGjGDVqlVaGkfNTwUFBTz22GNERkbi5eVFp06duPvuu8nKyrJL1717dyZMmMCKFSuIiYnB19eX3r1785///KdxF4yK5ryVK1dy66230rFjR/z8/CgsLARg8eLFDBs2DH9/fwICArjkkkvYunVrlXzqen3rqlu3bnTs2FG77uVycnJ48MEH7a7ZzJkzycvLs0uXlZXFbbfdRnBwMAEBAVx22WWkpKSgKArPPvuslu7ZZ59FURQSExO55pprMJlMWq2VqqrMnTuXgQMH4uvri8lk4pprriElJcXuWFu3bmXChAmEhobi7e1NREQEl112GUePHtXSLF26lCFDhhAUFISfnx9RUVHceuut2vbqmp9+//134uLiCAwMxM/Pj+HDh/PDDz/YpSn/DlevXs2MGTPo0KEDISEhTJo0iePHj9f72gvRUBLUCOFkl156KUajkd9++01bt3r1akaMGEFWVhYffPAB3377LQMHDuS6666ze4gcO3aMc889l2XLlnH//fezfPly3nzzTYKCgrBardUe86abbuKbb77h6aefZuXKlcybN4+LLrqIzMzMavdRVZWJEyfy2muvcdNNN/HDDz9w//33s2DBAsaMGaMFFeW2b9/OAw88wKxZs/j222/p378/t912m915Nsatt96Kp6cnn376KV9++SWenp68/PLL3HDDDZxzzjksWbKETz/9lFOnTnHBBRewe/dubd+6Xt/6yM7O5uTJk5x99tnautOnTzNy5EgWLFjAfffdx/Lly3nkkUeIj4/niiuuoLzi22azcfnll/Pf//6XRx55hGXLljFkyBDGjRtX7fEmTZpEz549Wbp0KR988AEAd955JzNnzuSiiy7im2++Ye7cuSQlJTF8+HAt2MrLy2Ps2LGkp6fz3nvv8fPPP/Pmm2/StWtXTp06BcD69eu57rrriIqKYtGiRfzwww88/fTTlJSU1HgN1q5dy5gxY8jOzmb+/Pl88cUXBAYGcvnll7N48eIq6f/5z3/i6enJf//7X+bMmcOaNWu48cYb63fhhWgMVQhRL5988okKqJs3b642TVhYmNqnTx9tuXfv3uqgQYPU4uJiu3QTJkxQzWazWlpaqqqqqt56662qp6enunv37mrzTk1NVQH1k08+0dYFBASoM2fOrLHcN998s9qtWzdtecWKFSqgzpkzxy7d4sWLVUD96KOPtHXdunVTfXx81EOHDmnr8vPz1eDgYPXOO++s8bh6q1evVgF16dKl2rry6zl16lS7tIcPH1Y9PDzUe++91279qVOn1PDwcPXaa6/V1tX1+lYHUO+66y61uLhYLSoqUv/66y/1iiuuUAMDA9UtW7Zo6WbPnq0aDIYq3/2XX36pAuqPP/6oqqqq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0iQWLlwIQFpaGmazmfXr1zN06NAqedx9992kp6fz5ZdfauteffVV5syZww033MDSpUvZuXMnHTp0qLU8U6ZMwWq1ajVDANdffz0rVqwgKysLgAsvvJDx48fz2GOPaWk+++wzHn74YY4fPw6U/Y8xffp03n//fS3N0KFDiYmJYe7cuRw8eJDIyEi2bt3KwIEDtTTTpk1jzZo1JCcnYzQaAbj22msxGAwsWrQIgIyMDHJycmo8j+7du+PhUbV1Njk5mZiYGF5//XX++c9/Vru/w/tJCCHc1OYVm8kbX9bctP+y/YzqOYpjbx0DwPxPM5Z5FgBMY00MWDnA6cev6fmtJ31qapKWBseONXcpatW/f3/ts9FoJCQkhH79+mnrwsLCgLKHOcAHH3zAvHnzOHToEPn5+RQVFdkFBgAPPPAA3377Le+88w7Lly+vU0ADsGfPHq666iq7dcOGDWPFihXackJCAps3b7armSktLaWgoIDTp0/j5+en7Vc5n7p0DI6OjtYCGgCz2czOnTu15dDQUEJDQ+t0PnrHjx9n3LhxTJ48ucaARgghWh1d61Pl5qfygAZo9j41EtTUJDzcLY7r6elpt6woit268upAm83GkiVLmDVrFq+//jrDhg0jMDCQV199lY0bN9rlkZGRwb59+zAajezfv59x4+o2kFJdKv5sNhvPPfcckyZNqrKttlqNulRtOroe+vbg6dOn89lnn9WYx+7du+natau2fPz4cUaPHs2wYcP46KOPai2DEEK0Jvq3nzBA+1HtOfr60Srp2o9q33SFckCCmprUsQnInaxbt47hw4dz1113aeuSk5OrpLv11lvp27cvt99+O7fddhtxcXGcc845teZ/zjnnsGHDBrt1lZdjYmLYt28fPXv2rDGvDRs2MHXqVLvlQYPKXhX08vICymp46uv555/nwQcfrDFNRESE9vnYsWOMHj2a2NhYPvnkEwwG6YomhGhb9G8/oUCHCR04d9e5nN5/WlvtFe5FuyHVNw01BQlq2piePXuycOFCfvrpJyIjI/n000/ZvHmz9jYRwHvvvcf69evZsWMHXbp0Yfny5fzjH/9g48aNWjBRnfvuu4/hw4czZ84cJk6cyMqVK+2angCefvppJkyYQJcuXZg8eTIGg4EdO3awc+dOu07FS5cuZfDgwZx//vl8/vnnbNq0ifnz5wNlTUi+vr6sWLGCzp074+PjQ1BQUJ2uQX2an44fP86oUaPo2rUrr732Gn///be2Lby5avKEEKKJVa6pAfCP9sc/2r95ClQN+ZOzjZk+fTqTJk3iuuuuY8iQIWRmZtrV2uzdu5eHHnqIuXPn0qVLF6AsyMnKyuKpp56qNf+hQ4cyb9483nnnHQYOHMjKlSt58skn7dJccsklfP/99/z888+ce+65DB06lDfeeINu3brZpXvuuedYtGgR/fv3Z8GCBXz++edabZGHhwdvv/02H374IREREVx55ZWNvTQOrVy5kgMHDvDrr7/SuXNnzGaz9iOEEG1GpT41LVWLefvpt99+49VXXyUhIQGLxcKyZcvshrufNm0aCxYssNtnyJAhVZo2alLvt59Es1EUpco94E7kfhJCtCa/L/mdkuvKxhLbf+1+bl9c+xAfzlTXt59aTLyVl5fHgAEDePfdd6tNM27cOCwWi/bz448/NmEJhRBCiLap8jg1LVWL6VMzfvx4xo8fX2Mab29v6cfQzMaPH6+NiVPZ448/zuOPP97EJRJCCOFMthIbmd9mcnLnSY5mHqXP9X0o/KgQj/KQoWLEDKxWKwkJCcTGxmIymRxn2IRaTFBTF2vWrCE0NJT27dszcuRIXnrppRo7fBYWFlJYWKgt1zbgmqjdvHnzyM/Pd7jNmaPstpBWUSGEaHPSF6Sz75/7ADBi5K93/6oIaKh469RqtRIdHY3FYsFsNpOUlNTsgY3bBDXjx49n8uTJdOvWjdTUVJ566inGjBlDQkIC3t7eDveZPXs2zz33XBOXtHXr1KlTcxdBCCGEC+XuyK1x+/7O+wG0PrAAFouFxMRE4uLiXF6+mrSYPjW1ue6667jsssvo27cvl19+OcuXL+evv/7ihx9+qHafxx57jOzsbO3nyJEjTVhiIYQQwg3Zqt809e6pqKPLatJjY2O1N0EjIiKIiYlpitLVyG1qaiozm81069aN/fv3V5vG29u72locIYQQQlRlN9Cezl/hf3Gk4xF8fXwBMJlMJCUlkZiYSExMTLM3PYEbBzWZmZkcOXJExgsRQgghnKmamhpVKQt2DEpFI4/JZGr2Jie9FhPU5ObmcuDAAW05NTWVbdu2ERwcTHBwMM8++yxXX301ZrOZgwcP8vjjj9OhQ4cqkycKIYQQouHSctIcrrcpZdFOXebgay4tJqjZsmULo0eP1pbvv/9+AG6++Wbef/99du7cycKFC8nKysJsNjN69GgWL15MYGBgcxVZCCGEaHVST6bSjW5V1pfX1HQN6lplW0vRYoKaUaNG1fga708//dSEpRHOFB8fz8yZM8nKynL5saZNm0ZWVhbffPONy48lhBCtkd08TzohASG8MPoFpvSb0sQlqju3eftJCL2DBw+iKArbtm1z+bG6d++Ooih2P48++qjLjyuEEM2imj41Z3U4iycvfBI/T7+mLU89tJiaGiFasueff57bb6+Y6yQgIKAZSyOEEK5T3dtPiqHl9qUpJzU1bm7UqFHce++9zJw5E5PJRFhYGB999BF5eXnccsstBAYG0qNHD5YvXw6UjQR52223ERkZia+vL7169eKtt97S8isoKCA6Opo77rhDW5eamkpQUBAff/xxncoUHx9P165d8fPz46qrriIzM7NKmu+++47Y2Fh8fHyIioriueeeo6SkRNuuKArvv/8+48ePx9fXl8jISJYuXaptj4yMBGDQoEEoisKoUaPs8n/ttdcwm82EhIRw9913U1xcXKeyVycwMJDw8HDtR4IaIUSrVd04NW4QMbhBEUVtFixYQIcOHdi0aRP33nsvM2bMYPLkyQwfPpzExEQuueQSbrrpJk6fPo3NZqNz584sWbKE3bt38/TTT/P444+zZMkSAHx8fPj8889ZsGAB33zzDaWlpdx0002MHj3arqaiOhs3buTWW2/lrrvuYtu2bYwePZoXX3zRLs1PP/3EjTfeyH333cfu3bv58MMPiY+P56WXXrJL99RTT3H11Vezfft2brzxRm644Qb27NkDwKZNmwBYtWoVFouFr7/+Wttv9erVJCcns3r1ahYsWEB8fDzx8fHa9unTpxMQEFDjz+HDh+3K8u9//5uQkBAGDhzISy+9RFFRUd2/ICGEcCPV9W91h5oaRW1Dk+zUNHV5QUEBqampREZG4uPjA8DgjwaTluv41TZXCg8IZ8sdW+qUdtSoUZSWlmqTTJaWlhIUFMSkSZNYuHAhAGlpaZjNZtavX8/QoUOr5HH33XeTnp7Ol19+qa179dVXmTNnDjfccANLly5l586ddOjQodbyTJkyBavVqtUMAVx//fWsWLFC6yh84YUXMn78eB577DEtzWeffcbDDz/M8ePHgbKamunTp/P+++9raYYOHUpMTAxz587l4MGD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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 }