1
0
mirror of https://github.com/gsi-upm/sitc synced 2024-11-18 04:22:28 +00:00
sitc/ml1/2_5_2_Decision_Tree_Model.ipynb
2016-03-29 12:48:56 +02:00

702 lines
102 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"![](files/images/EscUpmPolit_p.gif \"UPM\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Course Notes for Learning Intelligent Systems"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Department of Telematic Engineering Systems, Universidad Politécnica de Madrid, © 2016 Carlos A. Iglesias"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## [Introduction to Machine Learning](2_0_0_Intro_ML.ipynb)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Table of Contents\n",
"* [Decision Tree Learning](#Decision-Tree-Learning)\n",
"* [Load data and preprocessing](#Load-data-and-preprocessing)\n",
"* [Train classifier](#Train-classifier)\n",
"* [Evaluating the algorithm](#Evaluating-the-algorithm)\n",
"\t* [Precision, recall and f-score](#Precision,-recall-and-f-score)\n",
"\t* [Confusion matrix](#Confusion-matrix)\n",
"\t* [K-Fold cross validation](#K-Fold-cross-validation)\n",
"* [References](#References)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Decision Tree Learning"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The goal of this notebook is to learn how to learn how create a classification object using a [decision tree learning algorithm](https://en.wikipedia.org/wiki/Decision_tree_learning). \n",
"\n",
"There are a number of well known machine learning algorithms for decision tree learning, such as ID3, C4.5, C5.0 and CART. The scikit-learn uses an optimised version of the [CART (Classification and Regression Trees) algorithm](https://en.wikipedia.org/wiki/Predictive_analytics#Classification_and_regression_trees).\n",
"\n",
"This notebook will follow the same steps that the previous notebook for learning using the [kNN Model](2_5_1_kNN_Model.ipynb), and details some pecualiarities of the decision tree algorithms."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Load data and preprocessing\n",
"\n",
"Here we repeat the same operations for loading data and preprocessing than in the previous notebooks."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"# library for displaying plots\n",
"import matplotlib.pyplot as plt\n",
"# display plots in the notebook \n",
"%matplotlib inline\n",
"\n",
"## First, we repeat the load and preprocessing steps\n",
"\n",
"# Load data\n",
"from sklearn import datasets\n",
"iris = datasets.load_iris()\n",
"\n",
"# Training and test spliting\n",
"from sklearn.cross_validation import train_test_split\n",
"\n",
"x_iris, y_iris = iris.data, iris.target\n",
"# Test set will be the 25% taken randomly\n",
"x_train, x_test, y_train, y_test = train_test_split(x_iris, y_iris, test_size=0.25, random_state=33)\n",
"\n",
"# Preprocess: normalize\n",
"from sklearn import preprocessing\n",
"scaler = preprocessing.StandardScaler().fit(x_train)\n",
"x_train = scaler.transform(x_train)\n",
"x_test = scaler.transform(x_test)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"## Train classifier"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The usual steps for creating a classifier are:\n",
"1. Create classifier object\n",
"2. Call *fit* to train the classifier\n",
"3. Call *predict* to obtain predictions\n",
"\n",
"*DecisionTreeClassifier* is capable of both binary (where the labels are [-1, 1]) classification and multiclass (where the labels are [0, ..., K-1]) classification."
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=3,\n",
" max_features=None, max_leaf_nodes=None, min_samples_leaf=1,\n",
" min_samples_split=2, min_weight_fraction_leaf=0.0,\n",
" presort=False, random_state=1, splitter='best')"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from sklearn.tree import DecisionTreeClassifier\n",
"import numpy as np\n",
"\n",
"from sklearn import tree\n",
"\n",
"max_depth=3\n",
"random_state=1\n",
"\n",
"# Create decision tree model\n",
"model = tree.DecisionTreeClassifier(max_depth=max_depth, random_state=random_state)\n",
"\n",
"# Train the model using the training sets\n",
"model.fit(x_train, y_train) "
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Prediction [1 0 1 1 1 0 0 1 0 2 0 0 1 2 0 1 2 2 1 1 0 0 2 0 0 2 1 1 2 2 2 2 0 0 1 1 0\n",
" 1 2 1 2 0 2 0 1 0 2 1 0 2 2 0 0 2 0 0 0 2 2 0 1 0 1 0 1 1 1 1 1 0 1 0 1 2\n",
" 0 0 0 0 2 2 0 1 1 2 1 0 0 2 1 1 0 1 1 0 2 1 2 1 2 0 1 0 0 0 2 1 2 1 2 1 2\n",
" 0]\n",
"Expected [1 0 1 1 1 0 0 1 0 2 0 0 1 2 0 1 2 2 1 1 0 0 2 0 0 2 1 1 2 2 2 2 0 0 1 1 0\n",
" 1 2 1 2 0 2 0 1 0 2 1 0 2 2 0 0 2 0 0 0 2 2 0 1 0 1 0 1 1 1 1 1 0 1 0 1 2\n",
" 0 0 0 0 2 2 0 1 1 2 1 0 0 1 1 1 0 1 1 0 2 2 2 1 2 0 1 0 0 0 2 1 2 1 2 1 2\n",
" 0]\n"
]
}
],
"source": [
"print(\"Prediction \", model.predict(x_train))\n",
"print(\"Expected \", y_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Alternatively, the probability of each class can be predicted, which is the fraction of training samples of the same class in a leaf:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Predicted probabilities [[ 0. 0.97368421 0.02631579]\n",
" [ 1. 0. 0. ]\n",
" [ 0. 0.97368421 0.02631579]\n",
" [ 0. 0.97368421 0.02631579]\n",
" [ 0. 0.97368421 0.02631579]\n",
" [ 1. 0. 0. ]\n",
" [ 1. 0. 0. ]\n",
" [ 0. 0.97368421 0.02631579]\n",
" [ 1. 0. 0. ]\n",
" [ 0. 0. 1. ]]\n"
]
}
],
"source": [
"# Print the \n",
"print(\"Predicted probabilities\", model.predict_proba(x_train[:10]))"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy in training 0.982142857143\n"
]
}
],
"source": [
"# Evaluate Accuracy in training\n",
"\n",
"from sklearn import metrics\n",
"y_train_pred = model.predict(x_train)\n",
"print(\"Accuracy in training\", metrics.accuracy_score(y_train, y_train_pred))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Accuracy in testing 0.921052631579\n"
]
}
],
"source": [
"# Now we evaluate error in testing\n",
"y_test_pred = model.predict(x_test)\n",
"print(\"Accuracy in testing \", metrics.accuracy_score(y_test, y_test_pred))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we are going to visualize the DecisionTree classification. It will plot the decision boundaries for each class.\n",
"\n",
"The current version of pydot does not work well in Python 3.\n",
"For obtaining an image, you need to install `pip install pydotplus` and then `conda install graphviz`.\n",
"\n",
"You can skip this example. Since it can require installing additional packages, we include here the result.\n",
"![Decision Tree](files/images/cart.png)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Warning: Not built with libexpat. Table formatting is not available.\n",
"in label of node 0\n",
"in label of node 1\n",
"in label of node 2\n",
"in label of node 3\n",
"in label of node 4\n",
"in label of node 5\n",
"in label of node 6\n",
"in label of node 7\n",
"in label of node 8\n",
"\n",
"Warning: Not built with libexpat. Table formatting is not available.\n",
"in label of node 0\n",
"in label of node 1\n",
"in label of node 2\n",
"in label of node 3\n",
"in label of node 4\n",
"in label of node 5\n",
"in label of node 6\n",
"in label of node 7\n",
"in label of node 8\n",
"\n"
]
},
{
"data": {
"image/png": "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\nPkEMGrC60wAAAABJRU5ErkJggg==\n",
"text/plain": [
"<IPython.core.display.Image object>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from IPython.display import Image \n",
"from sklearn.externals.six import StringIO\n",
"import pydotplus as pydot\n",
"\n",
"dot_data = StringIO() \n",
"tree.export_graphviz(model, out_file=dot_data, \n",
" feature_names=iris.feature_names, \n",
" class_names=iris.target_names, \n",
" filled=True, rounded=True, \n",
" special_characters=True) \n",
"\n",
"\n",
"graph = pydot.graph_from_dot_data(dot_data.getvalue()) \n",
"graph.write_png('iris-tree.png')\n",
"Image(graph.create_png()) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Here we show a graph of the decision tree boundaries. For each pair of iris features, the decision tree learns decision boundaries made of combinations of simple thresholding rules inferred from the training samples.\n",
"\n",
"We are going to import a function defined in the file [util_ds.py](files/util_ds.py) using the *magic command* **%run**."
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7f0a2d296a20>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"%run util_ds\n",
"\n",
"# display plots in the notebook \n",
"%matplotlib inline\n",
"plot_tree_iris()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Next we are going to export the pseudocode of the the learnt decision tree."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"if ( petal width (cm) <= -0.415243178606 ) {\n",
" return setosa ( 42 examples )\n",
"}\n",
"else {\n",
" if ( petal width (cm) <= 0.861689627171 ) {\n",
" if ( petal length (cm) <= 0.818572163582 ) {\n",
" return versicolor ( 37 examples )\n",
" return virginica ( 1 examples )\n",
" }\n",
" else {\n",
" return versicolor ( 1 examples )\n",
" return virginica ( 2 examples )\n",
" }\n",
" }\n",
" else {\n",
" if ( petal length (cm) <= 0.707377433777 ) {\n",
" return versicolor ( 1 examples )\n",
" }\n",
" else {\n",
" return virginica ( 28 examples )\n",
" }\n",
" }\n",
"}\n"
]
}
],
"source": [
"%run util_ds\n",
"get_code(model, iris.feature_names, iris.target_names)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also obtain the feature importance of the fitted model as follows."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']\n",
"[ 0. 0. 0.05947455 0.94052545]\n"
]
}
],
"source": [
"print(iris.feature_names)\n",
"print(model.feature_importances_)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see that the most important feature for this classifier is `petal width`."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Evaluating the algorithm"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Precision, recall and f-score"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For evaluating classification algorithms, we usually calculate three metrics: precision, recall and F1-score\n",
"\n",
"* **Precision**: This computes the proportion of instances predicted as positives that were correctly evaluated (it measures how right our classifier is when it says that an instance is positive).\n",
"* **Recall**: This counts the proportion of positive instances that were correctly evaluated (measuring how right our classifier is when faced with a positive instance).\n",
"* **F1-score**: This is the harmonic mean of precision and recall, and tries to combine both in a single number."
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" precision recall f1-score support\n",
"\n",
" setosa 1.00 1.00 1.00 8\n",
" versicolor 0.79 1.00 0.88 11\n",
" virginica 1.00 0.84 0.91 19\n",
"\n",
"avg / total 0.94 0.92 0.92 38\n",
"\n"
]
}
],
"source": [
"print(metrics.classification_report(y_test, y_test_pred,target_names=iris.target_names))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Confusion matrix"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Another useful metric is the confusion matrix"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[[ 8 0 0]\n",
" [ 0 11 0]\n",
" [ 0 3 16]]\n"
]
}
],
"source": [
"print(metrics.confusion_matrix(y_test, y_test_pred))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We see we classify well all the 'setosa' and 'versicolor' samples. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### K-Fold cross validation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In order to avoid bias in the training and testing dataset partition, it is recommended to use **k-fold validation**.\n",
"\n",
"Sklearn comes with other strategies for [cross validation](http://scikit-learn.org/stable/modules/cross_validation.html#cross-validation), such as stratified K-fold, label k-fold, Leave-One-Out, Leave-P-Out, Leave-One-Label-Out, Leave-P-Label-Out or Shuffle & Split."
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"[ 1. 0.8 1. 0.93333333 0.93333333 1. 1.\n",
" 1. 0.86666667 0.93333333]\n"
]
}
],
"source": [
"from sklearn.cross_validation import cross_val_score, KFold\n",
"from sklearn.pipeline import Pipeline\n",
"from sklearn.preprocessing import StandardScaler\n",
"\n",
"# create a composite estimator made by a pipeline of preprocessing and the KNN model\n",
"model = Pipeline([\n",
" ('scaler', StandardScaler()),\n",
" ('DecisionTree', DecisionTreeClassifier())\n",
"])\n",
"\n",
"# create a k-fold cross validation iterator of k=10 folds\n",
"\n",
"cv = KFold(x_iris.shape[0], 10, shuffle=True, random_state=33)\n",
"\n",
"# by default the score used is the one returned by score method of the estimator (accuracy)\n",
"scores = cross_val_score(model, x_iris, y_iris, cv=cv)\n",
"print(scores)"
]
},
{
"cell_type": "markdown",
"metadata": {
"collapsed": true
},
"source": [
"We get an array of k scores. We can calculate the mean and the standard error to obtain a final figure"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean score: 0.947 (+/- 0.022)\n"
]
}
],
"source": [
"from scipy.stats import sem\n",
"def mean_score(scores):\n",
" return (\"Mean score: {0:.3f} (+/- {1:.3f})\").format(np.mean(scores), sem(scores))\n",
"print(mean_score(scores))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"So, we get an average accuracy of 0.947."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## References"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* [Plot the decision surface of a decision tree on the iris dataset](http://scikit-learn.org/stable/auto_examples/tree/plot_iris.html)\n",
"* [Learning scikit-learn: Machine Learning in Python](http://proquest.safaribooksonline.com/book/programming/python/9781783281930/1dot-machine-learning-a-gentle-introduction/ch01s02_html), Raúl Garreta; Guillermo Moncecchi, Packt Publishing, 2013.\n",
"* [Python Machine Learning](http://proquest.safaribooksonline.com/book/programming/python/9781783555130), Sebastian Raschka, Packt Publishing, 2015.\n",
"* [Parameter estimation using grid search with cross-validation](http://scikit-learn.org/stable/auto_examples/model_selection/grid_search_digits.html)\n",
"* [Decision trees in python with scikit-learn and pandas](http://chrisstrelioff.ws/sandbox/2015/06/08/decision_trees_in_python_with_scikit_learn_and_pandas.html)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Licence\n",
"The notebook is freely licensed under under the [Creative Commons Attribution Share-Alike license](https://creativecommons.org/licenses/by/2.0/). \n",
"\n",
"© 2016 Carlos A. Iglesias, Universidad Politécnica de Madrid."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.1"
}
},
"nbformat": 4,
"nbformat_minor": 0
}