{ "cells": [ { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "PCA, Nearest-Neighbors Classification and Clustering\n", "====================================================\n", "\n", "*Important:* Please read the [installation page](http://gpeyre.github.io/numerical-tours/installation_matlab/) for details about how to install the toolboxes.\n", "$\\newcommand{\\dotp}[2]{\\langle #1, #2 \\rangle}$\n", "$\\newcommand{\\enscond}[2]{\\lbrace #1, #2 \\rbrace}$\n", "$\\newcommand{\\pd}[2]{ \\frac{ \\partial #1}{\\partial #2} }$\n", "$\\newcommand{\\umin}[1]{\\underset{#1}{\\min}\\;}$\n", "$\\newcommand{\\umax}[1]{\\underset{#1}{\\max}\\;}$\n", "$\\newcommand{\\umin}[1]{\\underset{#1}{\\min}\\;}$\n", "$\\newcommand{\\uargmin}[1]{\\underset{#1}{argmin}\\;}$\n", "$\\newcommand{\\norm}[1]{\\|#1\\|}$\n", "$\\newcommand{\\abs}[1]{\\left|#1\\right|}$\n", "$\\newcommand{\\choice}[1]{ \\left\\{ \\begin{array}{l} #1 \\end{array} \\right. }$\n", "$\\newcommand{\\pa}[1]{\\left(#1\\right)}$\n", "$\\newcommand{\\diag}[1]{{diag}\\left( #1 \\right)}$\n", "$\\newcommand{\\qandq}{\\quad\\text{and}\\quad}$\n", "$\\newcommand{\\qwhereq}{\\quad\\text{where}\\quad}$\n", "$\\newcommand{\\qifq}{ \\quad \\text{if} \\quad }$\n", "$\\newcommand{\\qarrq}{ \\quad \\Longrightarrow \\quad }$\n", "$\\newcommand{\\ZZ}{\\mathbb{Z}}$\n", "$\\newcommand{\\CC}{\\mathbb{C}}$\n", "$\\newcommand{\\RR}{\\mathbb{R}}$\n", "$\\newcommand{\\EE}{\\mathbb{E}}$\n", "$\\newcommand{\\Zz}{\\mathcal{Z}}$\n", "$\\newcommand{\\Ww}{\\mathcal{W}}$\n", "$\\newcommand{\\Vv}{\\mathcal{V}}$\n", "$\\newcommand{\\Nn}{\\mathcal{N}}$\n", "$\\newcommand{\\NN}{\\mathcal{N}}$\n", "$\\newcommand{\\Hh}{\\mathcal{H}}$\n", "$\\newcommand{\\Bb}{\\mathcal{B}}$\n", "$\\newcommand{\\Ee}{\\mathcal{E}}$\n", "$\\newcommand{\\Cc}{\\mathcal{C}}$\n", "$\\newcommand{\\Gg}{\\mathcal{G}}$\n", "$\\newcommand{\\Ss}{\\mathcal{S}}$\n", "$\\newcommand{\\Pp}{\\mathcal{P}}$\n", "$\\newcommand{\\Ff}{\\mathcal{F}}$\n", "$\\newcommand{\\Xx}{\\mathcal{X}}$\n", "$\\newcommand{\\Mm}{\\mathcal{M}}$\n", "$\\newcommand{\\Ii}{\\mathcal{I}}$\n", "$\\newcommand{\\Dd}{\\mathcal{D}}$\n", "$\\newcommand{\\Ll}{\\mathcal{L}}$\n", "$\\newcommand{\\Tt}{\\mathcal{T}}$\n", "$\\newcommand{\\si}{\\sigma}$\n", "$\\newcommand{\\al}{\\alpha}$\n", "$\\newcommand{\\la}{\\lambda}$\n", "$\\newcommand{\\ga}{\\gamma}$\n", "$\\newcommand{\\Ga}{\\Gamma}$\n", "$\\newcommand{\\La}{\\Lambda}$\n", "$\\newcommand{\\si}{\\sigma}$\n", "$\\newcommand{\\Si}{\\Sigma}$\n", "$\\newcommand{\\be}{\\beta}$\n", "$\\newcommand{\\de}{\\delta}$\n", "$\\newcommand{\\De}{\\Delta}$\n", "$\\newcommand{\\phi}{\\varphi}$\n", "$\\newcommand{\\th}{\\theta}$\n", "$\\newcommand{\\om}{\\omega}$\n", "$\\newcommand{\\Om}{\\Omega}$\n", "$\\newcommand{\\eqdef}{\\equiv}$" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "This tour details [Principal Component Analysis](https://en.wikipedia.org/wiki/Principal_component_analysis) (dimentionality reduction), supervised classification using nearest neighbors\n", "and unsupervised [clustering](https://en.wikipedia.org/wiki/Unsupervised_learning) using [$k$-means](https://en.wikipedia.org/wiki/K-means_clustering).\n", "\n", "\n", "We recommend that after doing this Numerical Tours, you apply it to your\n", "own data, for instance using a dataset from [LibSVM](https://www.csie.ntu.edu.tw/~cjlin/libsvmtools/datasets/).\n", "\n", "\n", "_Disclaimer:_ these machine learning tours are intended to be\n", "overly-simplistic implementations and applications of baseline machine learning methods.\n", "For more advanced uses and implementations, we recommend\n", "to use a state-of-the-art library, the most well known being\n", "[Scikit-Learn](http://scikit-learn.org/)." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "addpath('toolbox_general')\n", "addpath('solutions/ml_1_pca_nn')" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Dataset Loading\n", "---------------\n", "We use here the famous\n", "[IRIS dataset](https://en.wikipedia.org/wiki/Iris_flower_data_set) of Fisher.\n", "The data set consists of 50 samples from each of three species of Iris (Iris setosa, Iris virginica and Iris versicolor).\n", " Four features were measured from each sample: the length and the width of the sepals and petals, in centimetres.\n", "\n", "\n", "Helpers." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "SetAR = @(ar)set(gca, 'PlotBoxAspectRatio', [1 ar 1], 'FontSize', 10);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Load the dataset." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "name = 'digits';\n", "name = 'iris';\n", "load(['ml-' name]);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Randomly permute it." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "A = A(randperm(size(A,1)),:);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Separate the features $ (x_i)_{i=1}^n $from the class information.\n", "The feature are stored as the row of a matrix $X \\in \\RR^{n \\times p}$\n", "Be sure to start the class at index 1." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "X = A(:,1:end-1);\n", "y = A(:,end);\n", "y = y-min(y)+1;" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "$n$ is the number of samples, $p$ is the dimensionality of the features,\n", "$k$ is the number of classes." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "[n,p] = size(X);\n", "k = max(y);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Dimenionality Reduction and PCA\n", "-------------------------------\n", "In order to display in 2-D or 3-D the data, [dimensionality reduction](https://en.wikipedia.org/wiki/Dimensionality_reduction)\n", "is needed.\n", "The simplest method is the [Principal Component Analysis](https://en.wikipedia.org/wiki/Principal_component_analysis) (PCA),\n", "which perform an\n", "orthogonal linear projection on the principal axsis (eigenvector) of the\n", "covariance matrix.\n", "\n", "\n", "Compute [empirical mean](https://en.wikipedia.org/wiki/Sample_mean_and_covariance)\n", "$$ m = \\frac{1}{n} \\sum_{i=1}^n x_i \\in \\RR^p $$\n", "and [covariance](https://en.wikipedia.org/wiki/Sample_mean_and_covariance)\n", "$$ C = \\frac{1}{n} \\sum_{i=1}^n (x_i-m) (x_i-m)^\\top \\in \\RR^{p \\times p}. $$\n", "Denoting $\\tilde X = X - 1_p m^\\top $, one has $C=\\tilde X^\\top\n", "\\tilde X$." ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "Xm = @(X)X-repmat(mean(X,1), [size(X,1) 1]);\n", "Cov = @(X)Xm(X)'*Xm(X);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Display the covariance matrix." ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\ns89ardbw8HCt59Kxhw8fpqSkmM3mffv2aT2L/nCGpJkDBw588cUXDx480HoQ/VEUZf369W+++ea5\nc+dCQ0M7OzuLiooSEhIuX76s9Wh68vXXX//85z9/7733rl69Onny5GvXrhUWFiYmJt64cUPr0XRs\n8+bNdXV1HR0dWg+iSwRJVYqitLS0nD179o033uAbqG+spKSkqqpq4cKFFy5cKCoq+uSTT959992v\nvvpq48aNfX19Wk+nGzabrba2dsWKFefOnfvwww8vXrxotVofPHiQk5Oj9Wh6ZbfbS0tLAwICtB5E\nrwiSqpqbmxMTE9etW1dRUaH1LDp2+PBho9G4efPm/r/5ycnJCxcuvHPnjtPp1HY2HTlx4sSECROy\ns7ONRqMQwt/ff926dePHj79y5YrL5dJ6Ov3p6Oh466230tLSzGaz1rPoFUFS1bRp03b8W2pqqtbj\n6JLb7f7yyy8tFsvkyZMHrs+aNUsI0dbWptFcOuNyuTo7O5977rmBv+LSbDYHBQWNHz+ez8t/A9nZ\n2dOmTUtLS9N6EB3joQZVmUymxMREz2vPt6X4bymK8s477wx9fqGpqUkIERkZqcFMOjRu3LizZ88O\nWjx58mRHR0dSUpKfn58mU+nXsWPHLly4UFpayh/dt8G/idAZo9E49NcE19TUfPbZZ1FRUfxGkm+g\nvr6+qqrq2rVr586dS0hIyM7O1noinWlpadmyZUtGRsZTTz2l9Sz6RpCge59++mlmZqa/v/+mTZv4\n/vQbuHLlSmFhYW9vrxAiJCREURStJ9ITRVEyMzNjYmLWrFmj9Sy6xz0k6Fh3d/cf/vCHX//61xMn\nTiwsLJw/f77WE+nSq6++evXq1dra2t///vd//vOfX3755a6uLq2H0o1du3Y1NTXl5uaOG8c/p98W\nf4LQK7vdvnTp0tLS0mXLlp06dSouLk7rifQtKCho7dq1Vqu1vb39/PnzWo+jD3V1dXv27Hn99dfN\nZvP9f3O5XC6X6/79+z09PVoPqDMECbp06NChtLS08ePHHzlyZNu2bSEhIVpPpDMNDQ1vv/32mTNn\nBq0vWrRICFFTU6PFUPpTX1+vKMq2bdviBrh9+/Y//vGPuLi4VatWaT2gznAPCfpjt9tzc3Pj4uL2\n7t078KlljJ7b7S4pKamrq3vppZcGrnsu1oWGhmo0l87MnTt3/fr1gxaLiooCAwOTk5PDwsI0mUq/\nCBJ0RlGU3NzcSZMmUaNvY86cOcHBwQ0NDQ0NDU8//bRnsbe3d//+/UKI559/XtPpdGPevHnz5s0b\ntFhWVhYSEpKRkaHJSLpGkKAzTU1NN2/ejIiI2L59+9CvWq3WGTNmqD+V7gQEBGRnZ2dmZqakpKxe\nvXr27Nm3b9/+6KOP2traXn755cWLF2s9IL6LCBJ05urVq0KIzz///OjRo0O/Hfkr5QAAAI5JREFU\nunz5coI0Sq+88orJZNqyZcuePXs8KyEhIZ5EaTsYvrMM/IwQ4Duuu7u7ra0tPDycXzwBbREkAIAU\neOwbACAFggQAkAJBAgBIgSABAKRAkAAAUiBIAAApECQAgBQIEgBACgQJACAFggQAkAJBAgBIgSAB\nAKRAkAAAUiBIAAApECQAgBQIEgBACv8H9B58loyErUoAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "clf;\n", "imagesc(Cov(X));\n", "colormap jet(256);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Compute PCA ortho-basis using the\n", "[SVD decomposition](https://en.wikipedia.org/wiki/Singular_value_decomposition)\n", "$$ \\tilde X = U \\text{diag}(d) V $$\n", "where $U \\in \\RR^{n \\times p}$ and $V \\in \\RR^{p \\times p}$ have\n", "orthonormal columns. $V$ are the principal directions of variance\n", " and\n", "are order by decreasing variances." ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "[U,D,V] = svd(Xm(X),'econ');" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Compute the feature in the PCA basis, $z_i=V^\\top (x_i-m) $, stored in matrix\n", "format as $Z=\\tilde X V$." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "Z = Xm(X) * V;" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Plot the singular values of the covariances, which corresponds to the standard deviation of the data\n", "along the principal directions." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\nO3PmTMkDye/6tbvJhBCzZs0yGAwvv/zyli1blJG4uDhlF69uYV7yr35NbzINYQnz8NHc3NzY2JiY\nmOg2ITGkpelN1tLS0tDQMGjQIA0tPOHKv/o1vcnkRyABAKRA2zcAQAoEEgBACgQSAEAKBBIAQAoE\nEgBACgQSAEAKBBIAQAoEEgBACgQSAEAKBBIAQAoEEgBACgQSAEAKBBIAQAoEEgBACgQSAEAKBBIA\nQAoEEgBACgQSAEAKBBIAQAoEEgBACgQSAEAKBBIAQAoEEgBACgQSAEAKBBIAQAoEEgBACgQSAEAK\nBBIAQAoEEgBACgQSAEAKBBIAQAoEEgBACgQSAEAKBBIAQAoEEgBACgQSAEAKBBIAQAoEEgBACgQS\nAEAKBBIAQAoEEgBACgQSAEAKBBIAQAoEEgBACgQSAEAKBBIAQAoEEgBACgQSAEAKBBIAQAoEEgBA\nCgQSAEAKBBIAQAoEEgBACgQSAEAKBBIAQAoEEgBACgQSAEAKBBIAQAoEEgBACgQSAEAKBBIAQAoE\nEgBACgQSAEAKBBIAQAoEEgBACgQSAEAKBBIAQAoEEgBACgQSAEAKBBIAQAoEEgBACgQSAEAKBBIA\nQAoEEgBACgQSAEAKBBIAQAoEEgBACgQSAEAK/x89AytLcGRKQQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "clf; \n", "plot(diag(D), '.-', 'LineWidth', 2, 'MarkerSize', 30);\n", "axis tight;\n", "SetAR(1/2);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The first dimensions of the $z_i$ are the optimal way to linearly\n", "embed the data in a low dimensional space.\n", "This can be used for display in 2-D using the first two dimension." ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\nB3RJTUUH4QgNFRY3bR6A2AAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAxMy1BdWctMjAxNyAyMzoyMjo1NQH+/E4AACAA\nSURBVHic7d1/jFxV/f/x99ItP+wCwfiDUj70bsRZlvLDKH4UhTILjVVpUEDFb8DsrEUhJEYJNfmY\ngDtbQTFojEQSidWZhQLx54coEIJLZxoDxa9JjU3AtGl6p7algKBpI63sur2fP+52Op0fd869c+89\n75l5PnJDyuz8ON3emdecc895nwHP8wQAANtOsN0AAABECCQAgBIEEgBABQIJAKACgQQAUIFAAgCo\nQCABAFQgkAAAKhBIAAAVCCQAgAoEEgBABQIJAKACgQQAUIFAAgCoQCABAFQgkAAAKhBIAAAVCCQA\ngAoEEgBABQIJAKACgQQAUIFAAgCoQCABAFQgkAAAKhBIAAAVCCQAgAoEEgBABQIJAKACgQQAUIFA\nAgCoQCABAFQgkAAAKhBIAAAVCCQAgAoEEgBABQIJAKACgQQAUIFAAgCoQCABAFQgkAAAKhBIAAAV\nCCQAgAoEEgBABQIJAKACgQQAUIFAAgCoQCABAFQgkAAAKhBIAAAVCCQAgAoEEgBABQIJAKACgQQA\nUIFAAgCoQCABAFQgkAAAKhBIAAAVCCQAgAoEEgBABQIJAKACgQQAUIFAAgCoQCABAFQgkAAAKhBI\nAAAVCCQAgAoEEgBABQIJAKACgQQAUIFAAgCoQCABAFQgkAAAKhBIAAAVCCQAgAoEEgBABQIJAKAC\ngQQAUIFAAgCoQCABAFQgkAAAKhBIAAAVCCQAgAoEEgBABQIJAKACgQQAUIFAAgCoQCABAFQgkAAA\nKhBIAAAVCCQAgAoEEgBABQIJAKACgQQAUIFAAgCoQCABAFQgkAAAKhBIAAAVCCQAgAoEEgBABQIJ\nAKACgQQAUIFAAgCoQCABAFQgkAAAKhBIAAAVCCQAgAoEEgBABQIJAKACgQQAUIFAAgCoQCABAFQg\nkAAAKhBIAAAVCCQAgAoEEgBABQIJAKACgQQAUIFAAgCoQCABAFQgkAAAKhBIAAAVCCQAgAoEEgBA\n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\n7f4tBw4csNEodTh5oBxDdl3v97///W233XbSSSd961vfWrRoke3m2DE3Nycig4P1X7D8W/yfohEn\nD1Shh6TXunXr3nrrrdpb1q9ff8YZZ1T/9+DBg9/5znd+85vfvOMd7/jhD3/4/ve/P/U2auF/mDYG\nj38LH7WNOHmgEIGk17PPPnvo0KHaW77xjW9UA2nTpk3f/OY3//73v1999dV33XVXbVD1oVNOOUVE\nDh8+XHe7f4v/U1Rx8kAnAkmvP//5z61+VCgU7r333mXLlk1PT3/4wx9Os1U6DQ0NnXrqqXv27Jmf\nn6/tD1UqFRFZunSptZbpw8kDtbiG1H02bdp07733XnLJJb/97W/5QKkaHR2dnZ198cUXa2/cunWr\niJx//vmWGqUOJw80I5C6zPz8/L333nvqqac++OCDQ0NDtpujyMc+9jERue+++6q37N+//9FHH120\naNGVV15pr12KcPJAOWrZdZnt27dfc80155xzzsqVKxt/OjExcfbZZ6ffKg3m5uY+/elP79y5c8WK\nFVdfffWrr7765JNPvv7661/60pfWrVtnu3UqcPJAOa4hdZlt27aJyN/+9reNGzc2/nTNmjV9+5my\nePHi6enp9evXz8zM+AN3S5YsueOOO9auXWu7aVpw8kA5ekjoNXNzc5VKZcmSJUuXLh0YGLDdHACm\nCCQAgApMagAAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAA\nACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUC\nCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBU\nIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIA\nQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAg\nAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAK\nBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIA\nqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgk\nAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCB\nQAIAqEAgAQBUIJAAACoQSAAAFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACoQSAAA\nFQgkAIAKBBIAQAUCCQCgAoEEAFCBQAIAqEAgAQBUIJAAACr8H91ubniUufouAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "col = [ [1 0 0]; [0 1 0]; [0 0 1]; [0 0 0]; [0 1 1]; [1 0 1]; [1 1 0]; ...\n", " [1 .5 .5]; [.5 1 .5]; [.5 .5 1] ]';\n", "ms = 25;\n", "clf; hold on;\n", "lgd = {};\n", "for i=1:min(k,size(col,2))\n", " I = find(y==i);\n", " plot(Z(I,1), Z(I,2), '.', 'Color', col(:,i), 'MarkerSize', ms);\n", " lgd{end+1} = num2str(i);\n", "end\n", "axis tight; axis equal; box on;\n", "legend(lgd, 'Location', 'EastOutside');\n", "SetAR(1);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Similar display in 3-D." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\n9chVo6Tg0uGgF1/82Gdb9nmnv1/ppKevT/Ptqiqjdb1prcmZEvHToXV0dNTlcg0ODtbX18+cOfOd\nd97ZvHnzc88991//9V9z5swxenQARNmBtGbNmrNnz2Z/bf369RU3I//+978/MjIiF3lPmDDhG9/4\nxsGDB1966aUdO3bcc889av0DqicIlEpRf3+BU2osdXp7iaij4GOVZ0w8ToLA0Sm7rH8aqID/5nhb\ntmwZHBy84447/H4/OwP//PPPP/roo6tXrx4cHJw0aZLRAwTICqTBwcHTp09nf+2RRx659NJLqaJm\n5FdffXX+wYULF7700kt//OMfqxmxFgSBenvpzjszDz0UefNN++nTdnak5Alf5UtlWWtIrbrBlkPh\nPw0Uyp4SuVyujo7Cn10MFwwGJ06c+OSTT8rXg7/yla/s2LFj165d+/fvnzlzprHDA6DsQHrjjTcK\n3qOCZuRENDY2VldXl9Mfl52pe//99ws+xKgW5tmfbZ3OZR0dZXy0Vb5UljUqVh5gqsOUSF05UyLO\nqxUkSTpy5IjNZrvm4+u0m5qadu3aNTw8jEACHpTeXLW5ufncuXP79u3LPrhnzx4iamlpKfiQdDrd\n3Ny8evXqnOPsRXvDDTcUfJTP52tvb08mk0rGrQp5C8twOOxyudj+lWWdaWEZo4TDcb6AQn+CQIEA\npVJII3VEIhG3293e3k5EXq9X4banxhodHe3r68t/SR44cICIBN329QQormRhuJJm5O+///727du3\nb9/Omg+OjY3ddttts2fPfvPNN+VHffjhh3Pnzm1paXnrrbfGey59Wpiru0heyVJZec1BZcuYqrzp\ntq29tVlvb4Xdu3fbbLa77rrro48+MnosxjCqJ7WJ6PwjqpMkqXhijYyMfOlLXzpw4MDMmTOXLFny\n7rvvbt269fjx4w8++OCaNWvYfRKJxP33309EyWSSVYTv2LHjW9/61tSpU7/61a/abLajR4/+9Kc/\nPXbs2EMPPbRy5coiTyefCfF6vZ2dneqeCcmuxO0o69zc+NJpamoqcZ9U6sLe8qyZhW5rkpxOPXbK\nsrCcU3Nq/dkYbufOnWvXrpUkKRAIfOYznzF6OMaw2WxGD8EEdD0drSS1jh075nK5mpubRVEURfGW\nW27ZuHFj9qcqtt+dKIp/+tOf5IODg4OLFy9mx2022+c+97lXXnlFYU6Gw+G2tja1wlnrz7YVbA2S\n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\nwgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "clf; hold on;\n", "for i=1:k\n", " I = find(y==i);\n", " plot3(Z(I,1), Z(I,2), Z(I,3), '.', 'Color', col(:,i), 'MarkerSize', ms);\n", "end\n", "view(3); axis tight; axis equal; box on;\n", "legend(lgd, 'Location', 'EastOutside');\n", "SetAR(1);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Supervised Learning: Nearest Neighbor Classification\n", "----------------------------------------------------\n", "Probably the simplest method for supervised classification is [Nearest\n", "Neighbor](https://en.wikipedia.org/wiki/K-nearest_neighbors_algorithm) ($R$-NN), where $R$ is a parameter indexing the number of neighbor.\n", "Increasing $R$ is important to cope with noise and obtain smoother\n", "decision boundary, and hence better generalization performance.\n", "\n", "\n", "The class predicted for a point $x$ is the one which is the most\n", "represented among the $R$ points $(x_i)_i$ which are the closed to\n", "$x$.\n", "\n", "\n", "\n", "Split into training and testing." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "n0 = round(.5*n); n1 = n-n0;\n", "X0 = X(1:n0,:); y0 = y(1:n0);\n", "X1 = X(n0+1:end,:); y1 = y(n0+1:end);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Macro to compute pairwise squared Euclidean distance matrix." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "distmat = @(X,Z)bsxfun(@plus,dot(X',X',1)',dot(Z',Z',1))-2*(X*Z');" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Compute Euclidean distance between some $x$\n", "and all other $x_{1,j}$ in the training set." ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "i = 1; x = X1(i,:); % could be any point\n", "D = distmat(X0,x);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Sort the distance and generate the list of sorted classes $ y_\\sigma = (y_{\\si(i)})_i$. This\n", "generate an indexing $\\si$ (a permutation of $\\{1,\\ldots,n\\}$) such that\n", "$$ \\norm{x-x_{\\si(1)}} \\leq \\norm{x-x_{\\si(2)}} \\leq \\ldots \\leq \\norm{x-x_{\\si(n)}}. $$" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "[~,I] = sort(D);\n", "ys = y(I);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "For a given $R$, one can compute the histogram of class apparition\n", "$$ h_\\ell \\eqdef \\frac{1}{R} \\enscond{ i }{ \\si(i) \\in \\{1,\\ldots,R\\} }\n", " = \\sharp \\si^{-1}( \\{1,\\ldots,R\\} ). $$\n", "The decision class for $x$ is then the maximum of the histogram\n", "$$ c(x) \\eqdef \\text{argmax}_{\\ell} h_\\ell $$" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "c(x)=3 [true class=3]\n" ] } ], "source": [ "R = 5; \n", "h = hist(ys(1:R,:), 1:k) / R;\n", "[~,c] = max(h);\n", "fprintf('c(x)=%d [true class=%d]\\n', c, y1(i));" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Display the histigram $(h_\\ell)_\\ell$ of reparttion of class indexes as $R$ grows." ] }, { "cell_type": "code", "execution_count": 19, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "Rlist = round([.05 .1 .5 1]*n0); % [5 50 100]\n", "clf;\n", "for i=1:length(Rlist)\n", " R = Rlist(i);\n", " h = hist(ys(1:R,:), 1:k)/R;\n", " subplot(length(Rlist),1,i);\n", " bar(1:k,h); \n", " axis([0.5 k+.5 0 1]);\n", " set(gca, 'FontSize', 15);\n", "end" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "__Exercise 1__\n", "\n", "Perform the NN classification for all the points in the test set, and for varying $R$.\n", "Show how the classification score $S$ (number of correctly classified points)\n", "evolves with $R$\n", "lot(1:Rmax, S, '.-', 'MarkerSize', ms);" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\nB3RJTUUH4QgNFRY6E6/8ZQAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAxMy1BdWctMjAxNyAyMzoyMjo1OH9PgPMAACAA\nSURBVHic7d19XFRl/v/xCwYEYgRBqABFC3cQUsvUtLLc1MQia9PapVK3QitvwvImK23XbK0tulHT\nza+PboBNlyjzJtDGJtJSgyH1a0qGkKIgN5YWQ4Eyzszvj/PY+c5vGCYi58zF8Hr+BZ/rXM6Hix69\nOWeuOcfPZrMJAAC8zd/bDQAAIASBBACQBIEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEE\nAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQ\nAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKB\nBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQA\nkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJAC\ngQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEE\nAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQ\nAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKB\nBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkEKAtxvwoMTERG+3AADSKSsr83YLrvlyIAmJ190T\nEhMTu9TP6wZLoWAd7FgKO5n/UueSHQBACgQSAEAKBBIAQAoEku/gErkdS6FgHexYik6BQAIASIFA\nAgBIgUACAEiBQAIASMHHPxjbidSebKipaWhdHzIsXv1mAEB9BJIs9pacmHDnIJdDNptN5WYAQH0E\nklyGJT/v+O3Vw+L/J3uyt5oBADXxHhIAQAoEEgBACgQSAEAKvhxIjT9G+LWDEEK1odqTDW5mtaWt\nKW64X5mOzfJJHfhN7S050YEhN2vesSHA9/jypoZe0Xf0ir5DCDF91siHZt0oWm0ZEEKUfPO08sUF\nHKo92dB6KCYufMsns5SN3R3YudD6hW7708C/Pz/BfXu/6R9szywf4/I3JYQo+eZpl78p5Zfocpby\nS9xXcrz1UHt+Ux0bAnyML58hAQA6EQIJACAFAgkAIAVffg+pi1Pe6nASExfe4VkdGHJZdzP0qy/k\nxgX/ByV3YX9eNX9TQFsIJJ8V26uHy7r7GxG1Naum+qe2hr4yHh96TR+XQx9t/Lqt+yF1QMc6t9ls\nbn6oC9CWl3TgN+VmAd3cuWrt6s+VPUG/Cfe7QgcQSL7sgm/Aa/+QsiHN5ZB9V6GaWwd9cq/aBf95\n3ez/bP/WQfumVuC34j0kAIAUCCQAgBQIJACAFAgkdCbcSuf36Nidqzqm894Pqa325OnQh7GpAZ2M\nT25PUIeb+yF54uU67x4Tdmp4C2dIAAApEEgAACkQSAAAKfAeEgBZXNi7RnXsfkjwIgIJgCw6dtOj\nDty5qmP3Q4KneSGQDAZDfn5+RUWFVqvV6XTp6el9+rj+78nOYrG89957u3btOnbs2MUXXzxo0KBH\nHnkkNDRUnYYBqOaC3PSoPXeuaj1kvx8SvEXt95CWLVs2a9aswsJCrVZrMpny8vJuv/32Xbt2uZny\n888//+Uvf3n22WcPHDhw8cUXV1ZWrl27dsKECZWVlWp1DQDwOFUDqbi4OCcnJz4+ftu2bbm5uVu3\nbl2xYoXZbF60aNHZs2fbmvXSSy8dPHjw3nvv/eKLL7Kzs3fs2DFnzpyTJ0+++uqrajYPAPAoVQNp\nw4YNQoj58+fHxcUplZSUlPHjx9fV1e3evdvllHPnzn3wwQc9e/Z86qmn/P39hRB+fn4zZ84cPHjw\n9u3by8vLVWseAOBRap8haTSaUaNGORbHjBkjhCgqKnI5paKiwmKxXHXVVd26dXOsX3/99Tab7cCB\nA57rFoA8uJ1PV6Depgaz2Xzq1KlevXoFBwc71hMSEoQQ1dXVLmcpu2sCAwOd6gEBAUKImpoaj/QK\nQCbKLm3JbziE30+9MySTyWS1WsPDnXf6K5WGBtefGOjbt68QYv/+/S0tLY515YyqtrbWE60CANSn\nXiCZzWbx3zMbR0pFGW1Nq9XefPPN9fX1zz33nMViUYrZ2dlGo1EI0djY2J6XXvX6qg63DQCdXaID\nb/fijnqX7DQajXAVPEpFGXVp4cKFBw8ezMvL27VrV1JS0tGjR6uqqhYsWPDiiy/27NmzPS89+9HZ\nD83K+x29A0AnVlZWZv9a5kxS7wwpJCRECNHc3OxUVyrKqEu9e/f+6KOPHnzwwUsuueTw4cMDBgx4\n8803k5KShBDtDCQAgPzUO0PSarXdu3evqqqyWCyO50PK51tjYmLczA0LC1u4cKFjJTc3VwhxySWX\neKRXAGilrU19bu5shN9E1VsHJSUlGY3G0tLSQYP+7wZT+/btE0IkJye3NeuVV15paWl54oknHGNs\n+/bt/v7+N910k0cbBgBH7PTzKFU/hzRu3DghRGZmpr1SW1u7fv16jUYzevRopXLmzBm9Xq/X6+3v\nNn333XdZWVkbN260z/ryyy+Lioquu+66iy++WMX2AQAepOoZUlpaWm5urtFonDhxYmpqan19fUFB\nQVNT0/Tp02NjY5VjysvLMzIyhBBGo1HZET59+vTPP//8H//4x549e0aMGFFRUZGXl6fVaufOnatm\n8wAAj1I1kAIDA7Ozs5cuXWowGEpLS4UQoaGh8+bNS09PdzNr8ODBa9aseemllwoKCgoKCjQaTVJS\n0rJly/r3769W4wAAj1P78RNRUVErV650c8Dw4cMddygqRo4cOXLkSE/2BQDwMh5hDgCQAoEEAJAC\ngQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEE\nAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQAoEEAJACgQQAkAKBBACQ\nAoEEAJBCgPovaTAY8vPzKyoqtFqtTqdLT0/v06eP+yk2m2379u0bN248fvx4jx49+vXrd//99yck\nJKjTMABABWqfIS1btmzWrFmFhYVardZkMuXl5d1+++27du1yP2vhwoUZGRlGozE6OrqmpkaZ9ckn\nn6jTMwBABaoGUnFxcU5OTnx8/LZt23Jzc7du3bpixQqz2bxo0aKzZ8+2NauwsHDz5s1JSUmFhYU5\nOTk7duxYvnz5+fPn//73v1ssFjX7BwB4jqqBtGHDBiHE/Pnz4+LilEpKSsr48ePr6up2797d1qy9\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "exo1()" ] }, { "cell_type": "code", "execution_count": 21, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "%% Insert your code here." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "__Exercise 2__\n", "\n", "Display, as a function of the position in 2-D PCA space, the class output by\n", "the $R$-NN method when applied in 2-D.\n", "ounding boxes\n", "est for different R" ] }, { "cell_type": "code", "execution_count": 22, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\n69NpMwAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "exo2()" ] }, { "cell_type": "code", "execution_count": 23, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "%% Insert your code here." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Unsupervised Learning: $k$-means\n", "----------------------------------\n", "In an [un-supervised setting](https://en.wikipedia.org/wiki/Unsupervised_learning), the class information $y$ is not\n", "available. The basic problem is then to recover class information from\n", "the knowledge of $x$ only. This corresponds to the [clustering problem](https://en.wikipedia.org/wiki/Cluster_analysis).\n", "\n", "\n", "Select a subset of classes" ] }, { "cell_type": "code", "execution_count": 24, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "if k>=4\n", "ksvg = k; Xsvg = X; ysvg = y;\n", "k = 3;\n", "I = find(y<=k);\n", "X = X(I,:); y = y(I);\n", "n = length(I);\n", "end" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "PCA" ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "[U,D,V] = svd(Xm(X),'econ');\n", "Z = Xm(X) * V;" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The most basic algorithm is the , which tries to recover the\n", "class index $\\bar y_i=\\ell$ from the distance $ \\norm{x_i-c_\\ell} $\n", "between the feature point $x_i$ and the class centroid $c_\\ell$\n", "(which are the unknown of the problem).\n", "\n", "\n", "It does so by minimizing the following non-convex energy\n", " $$ \\umin{ (c_\\ell)_\\ell } \\sum_i \\umin{\\ell} \\norm{x_i-c_\\ell}^2 $$\n", "\n", "\n", "We first initialize the class centroids $ (c_\\ell)_\\ell $ at random among the points.\n", "They are stored in as the row of a matrix $ C \\in \\RR^{k \\times p} $." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "I = randperm(n); I = I(1:k);\n", "C = X(I,:);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The $k$-means algorithm iterate between first determining the class of\n", "each point using the distance to the centroids\n", " $$ \\forall i \\in \\{1,\\ldots,n\\}, \\quad \\bar y_i \\leftarrow\n", " \\uargmin{\\ell} \\norm{x_i-c_\\ell}. $$" ] }, { "cell_type": "code", "execution_count": 27, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "D = distmat(X,C);\n", "[~,yb] = min(D, [], 2);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Display the centroids and the classes using colors.\n", "This correspodns to a Voronoi diagram segmentation in the high\n", "dimensional space, but here the display is done in 2D." ] }, { "cell_type": "code", "execution_count": 28, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\nB3RJTUUH4QgNFRcAzLgUlgAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAxMy1BdWctMjAxNyAyMzoyMzowMLRfm+EAACAA\nSURBVHic7d1reqM6FoXhlR6JPJKDRxIykpCR4IwEaiRiJvQPJS6XLyBx3cD3PvzoruMLScDLkrak\nt7ZtBQDA2v639gkAACARSAAAIwgkAIAJBBIAwAQCCQBgAoEEADCBQAIAmEAgAQBMIJAAACYQSAAA\nEwgkAIAJBBIAwAQCCQBgAoEEADCBQAIAmEAgAQBMIJAAACYQSAAAEwgkAIAJBBIAwAQCCQBgAoEE\nADCBQAIAmEAgAQBMIJAAACYQSAAAEwgkAIAJBBIAwAQCCQBgAoEEADCBQAIAmEAgAQBMIJAAACYQ\nSAAAEwgkAIAJBBIAwAQCCQBgAoEEADCBQAIAmEAgAQBMIJAAACYQSAAAEwgkAIAJBBIAwAQCCQBg\nAoEEADCBQAIAmEAgAQBMIJAAACYQSAAAEwgkAIAJBBIAwAQCCQBgAoEEADCBQAIAmEAgAQBMIJAA\nACYQSAAAEwgkAIAJBBIAwAQCCQBgAoEEADCBQAIAmEAgAQBMIJAAACYQSAAAEwgkAIAJBBIAwAQC\nCQBgAoEEADCBQAIAmEAgAQBMIJAAACYQSAAAEwgkAIAJBBIAwAQCCQBgAoEEADCBQAIAmEAgAQBM\nIJAAACYQSAAAEwgkAIAJBBIAwAQCCQBgAoEEADCBQAIAmEAgAQBMIJAAACYQSAAAEwgkAIAJBBIA\nwAQCCQBgAoEEADCBQAIAmEAgAQBMIJAAACYQSAAAEwgkAIAJBBIAwAQCCQBgAoEEADCBQAIAmEAg\nAQBMIJAAACYQSAAAEwgkAIAJBBIAwAQCCQBgAoEEADCBQAIAmEAgAQBMIJCAI2rUrH0KwD0CCTiW\nWvWHPk46nXW+6LL26QB/vbVtu/Y5AJhdo+Zb34WKu393crnyd707uRVOC7hBIAGH8Ka3jv/q5CpV\nZBLWRZcdsH+9XXOh/bTIuQAv0UIC9u+kU28Vg5Pz8oucDvAcLSQgUV3r40NvbzqfdbmsfTb9LrrE\n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\nU4kDrryQikBKwGKsAG6x8sK06LJLwGKsAG7Vqs86xzzyyBuTx6OFlIDFWAHcYuWFaRFICViMFcAt\nVl6YFoGUgMVYAdyJafrQPIpEICVgMVYAd8Kk10LFY82CkytUtGopZ4hEUUOaptGpZxkqyhmAI2Ll\nhfEIpGSDF2MFAHQgkAaKX4wVABCDQAIAmEBRAwDABAIJAGACgQQAMIFAAgCYdSc+/QAAAl5JREFU\nQCABAEwgkAAAJhBIAAATCCQAgAkEEgDABAIJAGACgQQAMIFAAgCYQCABAEwgkAAAJhBIAAATCCQA\ngAkEEgDABAIJAGACgQQAMIFAAgCYQCABAEwgkAAAJhBIAAATCCQAgAkEEgDABAIJAGACgQQAMIFA\nAgCYQCABAEwgkAAAJhBIAAATCCQAgAkEEgDABAIJAGACgQQAMIFAAgCYQCABAEwgkAAAJhBIAAAT\nCCQAgAkEEgDABAIJAGACgQQAMIFAAgCYQCABAEwgkAAAJhBIAAATCCQAgAkEEgDABAIJAGACgQQA\nMIFAAgCYQCABAEwgkAAAJhBIAAATCCQAgAkEEgDABAIJAGACgQQAMIFAAgCYQCABAEwgkAAAJhBI\nAAATCCQAgAkEEgDABAIJAGACgQQAMIFAAgCYQCABAEwgkAAAJhBIAAATCCQAgAkEEgDABAIJAGAC\ngQQAMIFAAgCYQCABAEwgkAAAJhBIAAATCCQAgAkEEgDABAIJAGACgQQAMIFAAgCYQCABAEwgkAAA\nJhBIAAATCCQAgAkEEgDABAIJAGACgQQAMIFAAgCYQCABAEwgkAAAJhBIAAATCCQAgAkEEgDABAIJ\nAGACgQQAMIFAAgCYQCABAEwgkAAAJhBIAAATCCQAgAkEEgDABAIJAGACgQQAMIFAAgCYQCABAEwg\nkAAAJhBIAAATCCQAgAkEEgDABAIJAGACgQQAMIFAAgCYQCABAEwgkAAAJhBIAAATCCQAgAkEEgDA\nBAIJAGACgQQAMIFAAgCYQCABAEwgkAAAJhBIAAAT/g9w1xKBnAVpmgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "clf;\n", "hold on;\n", "for i=1:k\n", " I = find(yb==i);\n", " plot(Z(I,1), Z(I,2), '.', 'Color', col(:,i), 'MarkerSize', 25);\n", "end\n", "CV = (C-repmat(mean(X,1), [k 1]))*V;\n", "for i=1:k\n", " plot(CV(i,1), CV(i,2), 'o', 'MarkerFaceColor', col(:,i), 'MarkerSize', 12, 'MarkerEdgeColor', 'k');\n", "end\n", "axis tight; axis equal; axis off;\n", "SetAR(1);" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "The second step of the $k$-means algorithm is to update the centroids\n", "position to be the mean of the points inside each class\n", " $$ \\forall \\ell \\in \\{1,\\ldots,k\\}, \\quad c_\\ell \\leftarrow\n", " \\frac{ \\sum_{i:y_i=\\ell} x_i }{ \\sharp \\{i:y_i=\\ell\\} }. $$" ] }, { "cell_type": "code", "execution_count": 29, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "for l=1:k\n", " C(l,:) = mean( X(yb==l,:), 1 );\n", "end" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "__Exercise 3__\n", "\n", "Peform several step of the $k$-means algorithm.\n", "nit" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjAAAAGkCAIAAACgjIjwAAAACXBIWXMAABcSAAAXEgFnn9JSAAAA\nB3RJTUUH4QgNFRcBu78kAAAAACR0RVh0U29mdHdhcmUATUFUTEFCLCBUaGUgTWF0aFdvcmtzLCBJ\nbmMuPFjdGAAAACJ0RVh0Q3JlYXRpb24gVGltZQAxMy1BdWctMjAxNyAyMzoyMzowMcNYq3cAACAA\nSURBVHic7d1tjB1XfT/w7y6EkDoPrhtjAht8rhUINAlSSrCaguO5fYEUFwh2CQ6q053NiyCktm6K\noBUR3bsR0BjHqKmqPEiIuRtKI6tBkSNbQFA140iW/tA4jrx2hAloJjExsR2yDiQ2jp2d/4uzd3bu\n8zzeOXPm+9G8uL6eOzt35nfu78w5Z86M+b4PIiKioo0XvQNEREQAExIRESmCCYmIiJTAhEREREpg\nQiIiIiUwIRERkRKYkIiISAlMSEREpAQmJCIiUgITEhERKYEJiYiIlMCERERESmBCIiIiJTAhERGR\nEpiQiIhICUxIRESkBCYkIiJSAhMSEREpgQmJiIiUwIRERERKYEIiIiIlMCEREZESmJCIiEgJTEhE\nRKQEJiQiIlICExIRESmBCYmIiJTAhEREREpgQiIiIiUwIRERkRKYkIiISAlMSEREpAQmJCIiUgIT\nEhERKYEJiYiIlMCERERESmBCIiIiJTAhERGREpiQiIhICUxIRESkBCYkIiJSAhMSEREp4e1F7wB1\nOnTokOM48vXmzZtXrlxZ1J6cOHHi4MGDR48eFUJcf/31y5cvH7Dya6+9dvr0aQBXXHHFqHaQyqp0\nQf7mm28ePnx4bm7u8ssvv/baa9/3vveNeD+rwifFPPDAA8HZ2b9/v3zzoYce2r59+/bt2+fm5kaw\nD/Pz83fccUc4TpYtW/blL3/59ddf7/eR66+/Xq557ty5EewhlVqJgnxhYeFb3/rWhRdeGF5z48aN\nv/zlL0ewk1XDhKScnmX1yiuvlO9897vfzXsHzp49e8011/Ssvtx88809882ePXuCdZiQaKgSBfmt\nt97ac7VVq1b95je/yXs/q4Z9SNTpm9/85uHDhwFccskl27Zte/TRR2+77baxsTEAP/zhD7/3ve+F\nVz527Ni99967adOmYvaVKJGIQf6jH/3of/7nf+TrDRs2bNu2zTAMudrx48fvvPPOgnZfX0VnROqU\nrPJ4/vz5I0eO/O53v4v4V379618fOXKk53/VajX5tx5++OHgzU984hPyzS1btsh3nnzyyYsuuqg7\noniFREOVJcg/9rGPyXc2b94crLZ161b55h/90R8x2rPFKyTVffzjH5+YmDh27Jj855e+9KWJiYnP\nfOYzwQo//elPb7rppksvvfTqq69evnz5hz/84W984xu+74c38tnPfnZiYmJiYmLXrl0HDhxYu3bt\nxMSEYRjdf+7VV191XVe+/uQnPxm8/+lPf1q+eOutt+SLs2fPnjlzJrPvSRWmbJAfPHhQvvinf/qn\nYLW//du/lS9Onz79y1/+MvnXpi4cZae6l19++aWXXgr+OT8/Pz8/Hwzy2bZt29133x2Un4WFhbm5\nubm5uWefffaRRx4JrmBOnDghN3Lw4MHbb7/997//fb8/d/HFFz///PMAxsfH3/Oe98g3z5w584Mf\n/EC+DmqRa9asueuuu+Tro0ePPvbYYxl9Y6ocNYP8t7/9bbCR6667Lvj4+fPn5YuxsbH3vve9Kb87\ntSn6Eo06dbRm2La9e/fuyy+/XL6zdevW3bt379u3z/f9ffv2yebsCy+88O6773788cfvuuuuYATt\nPffcE2xz3bp18s1ly5bJF6tXr/7oRz86dGd27NixZcuWiYkJ+SnTNN94443u1WzbDvaZjRg0VCmC\n/Pz588ePHz9+/PiJEyfC63/+85+Xa37wgx/M+sBUHROScqI3rwcjrb///e8Hb+7atUu+uXLlytOn\nT8s3g7IK4FOf+tTJkycj7sxNN90UfPDaa689fvx4z9WYkCiWMga57/tvvvnm3/3d3wUr7969O/Y3\np4HYh1RWr7322oEDBwCMj49feeWV/6/lT/7kT/74j/8YwMmTJ//3f/+341OXX375zp07g6roUGvX\nrv3Yxz52ySWXADh06NDVV1+9c+fOTL8HUV9KBfnc3Nyf//mf/+d//qf85z333PNXf/VXib8a9cQ+\npLI6dOiQfLGwsBCu4oX95je/6Xjn5ptv7jk0rp/t27cD+MMf/mCa5s6dO0+dOvWVr3xl8+bNiXaZ\nKB5Fgtz3/fvvv/9f/uVfzp49C2D58uUPP/zw5z73uVjfhaJgQiorWTYAjI+PX3XVVT3XWVhY6Hhn\naB/snj175Jwu69atCwYdvfOd7/zqV78qq40vvvji008/fcMNN6TYd6JIVAjys2fPfv7zn3/88cfl\n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\nr5DSPOC5vD2DuovYi9/NkL3BZSypAzDIdZQ4yKWSxngFElKaiWJmZrLbFcpM3HYmAa+BGR9jAp6G\n09gxyHWUpjG1vDGue5MdEk0rGVbGnkHdxerFX2ymC2h5Qhnk2kk8VAVlPp+6XyEh/rSSYSXtGdRd\n9OYIE83FbKT3lJ0Mcu0kaHPTIMYrcIUUaB/bH0lJewZ1F70X30bdEB6mp2Ga+e6TIhjkuog1VEUI\nTWK8Sgkp4HmYmopUYit4cMqAJ3A4HqOSq+YJrECTXbeIncDl7RnUHU/gcDxGJVfNE1jJhIRoDbRs\nx1AYT+BwPEYlV8ETWNWExAdWlhxP4HA8RiVXwRNYyT6ksHAnsDY9g1XCEzgcj1HJVecEVj4hERGR\nGqraZEdERIphQiIiIiUwIRERkRKYkIiISAlMSEREpAQmJCIiUgITEhERKYEJiYiIlMCERERESmBC\nIiIiJTAhERGREpiQiIhICUxIRESkBCYkIiJSAhMSEREpgQmJiIiUwIRERERKYEIiIiIlMCEREZES\nmJCIiEgJTEhERKQEJiQiIlICExIRESmBCYmIiJTAhEREREpgQiIiIiUwIRERkRKYkIiISAlMSERE\npAQmJCIiUgITEhERKYEJiYiIlMCERERESmBCIiIiJTAhERGREpiQiIhICUxIRESkBCYkIiJSAhMS\nEREpgQmJiIiUwIRERERKYEIiIiIlMCEREZESmJCIiEgJTEhERKQEJiQiIlICExIRESmBCYmIiJTA\nhEREREpgQiIiIiUwIRERkRKYkIiISAlMSEREpAQmJCIiUgITEhERKYEJiYiIlMCERERESmBCIiIi\nJTAhERGREpiQiIhICUxIRESkBCYkIiJSAhMSEREpgQmJiIiUwIRERERKYEIiIiIlMCEREZESmJCI\niEgJTEhERKQEJiQiIlICExIRESmBCYmIiJTAhEREREpgQiIiIiUwIRERkRKYkIiISAlMSEREpAQm\nJCIiUgITEhERKYEJiYiIlMCERERESmBCIiIiJTAhERGREpiQiIhICUxIRESkBCYkIiJSAhMSEREp\ngQmJiIiUwIRERERKYEIiIiIlMCEREZESmJCIiEgJTEhERKQEJiQiIlICExIRESmBCYmIiJTw9qJ3\ngDodOnTIcRz5evPmzStXrixqT06cOHHw4MGjR48KIa6//vrly5enWY2qqXTxLL322munT58GcMUV\nVwzY4N69ey+44IJrrrnm/e9/f/Z7XEE+KeaBBx4Izs7+/fvlmw899ND27du3b98+Nzc3gn2Yn5+/\n4447wnGybNmyL3/5y6+//nqC1ajKesazP9qQThCo119/vVzz3Llz3f+7e/fu6667bmxsLNjghg0b\nnn/++Ty/RCUwISmnZwG+8sor5Tvf/e53896Bs2fPXnPNNT2rLzfffHNQPiOuRhXXLyGNLKQTBOqe\nPXuCdbpX2L179zve8Y7urdVqtVdeeSXX76I99iFRp29+85uHDx8GcMkll2zbtu3RRx+97bbbZGXw\nhz/84fe+971YqxEVK1agHjt27N577920aVO/rf3iF7/467/+6zfffBPAP//zP//85z//7//+74mJ\nCQCu637961/P98tor+iMSJ2SXSGdP3/+yJEjv/vd7yL+lV//+tdHjhzp+V+1Wk3+rYcffjh48xOf\n+IR8c8uWLbFWo4pLfIUUK6TTx/OTTz550UUXdf9Cdlwh3XXXXfL9O+64I3gzyGpr1qyJsrfUD6+Q\nVPfxj398YmLi2LFj8p9f+tKXJiYmPvOZzwQr/PSnP73pppsuvfTSq6++evny5R/+8Ie/8Y1v+L4f\n3shnP/vZiYmJiYmJXbt2HThwYO3atRMTE4ZhdP+5V1991XVd+fqTn/xk8P6nP/1p+eKtt96KvhpR\nt/QhnXk8Azh79uyZM2cG7/mZM2eazaZ8/ZWvfCV4f8uWLW+88cYbb7wxNzcX5QhQPxxlp7qXX375\npZdeCv45Pz8/Pz//vve9T/5z27Ztd999d1CoFhYW5ubm5ubmnn322UceeSSo8Z04cUJu5ODBg7ff\nfvvvf//7fn/u4osvfv755wGMj4+/5z3vkW+eOXPmBz/4gXwtq5YRVyPqlj6kM49nAGvWrAmufo4e\nPfrYY491b+3AgQPz8/MAhBDvf//7H3rooX379h09evTP/uzPbrnllvXr1yc+JrSo6Es06tTRxGHb\n9u7duy+//HL5ztatW3fv3r1v3z7f9/ft2yebwi+88MK777778ccfv+uuu4Jhtffcc0+wzXXr1sk3\nly1bJl+sXr36ox/96NCd2bFjx5YtW2QTOQDTNN94443Eq1EFdTfZpQ/pvOPZtu1gn8NNdo8++qh8\n8y/+4i9uueWW8A/p2NjYP/7jP3IsT0pMSMqJ3ocUjEz9/ve/H7y5a9cu+ebKlStPnz4t3wwKMIBP\nfepTJ0+ejLgzN910U/DBa6+99vjx42lWowqK1YcUMaTzjud+Celb3/pWOAldccUVGzZsCL4IgPvv\nvz/WwaEO7EMqq3379h04cEC+/pu/+ZuxlqDidvLkyf/6r//q+NTtt9/+xBNPBJXTofbu3ev7/pkz\nZzZv3nzo0KFVq1atXr068WpEAyQI6ZziuZ/wH3r22WePHTu2Z8+eF198Meg6kbYS3QAAFVtJREFU\n2rp1689//vPoG6QO7EMqq7Nnz8oX4+PjV111Vc91FhYWOt5573vfO3ize/bskffVr1u3Luj4fec7\n3/nVr351586dAF588cWnn376+PHjUVa74YYbknw3qqQEIZ1VPEcM1He/+93B6z/90z8Nvx4fH5f7\n9tJLL33wgx+MsjXqxoRUVsG9fr7v79+//+KLL47yqQsuuGDwCi+88MJ9990H4PDhw0EBBnD+/Png\n9fz8fMTVouwSkZQgpLOK54h7eMMNN1xwwQXnzp0D8NJLLwkh5PsnT54MMiXnEEqDTXYlc+LECfli\n1apVsm/W9/0nnngiWGFhYWHr1q2bNm3atGnTyy+/HHf7H/rQh+SLH//4x88880zw/oMPPihfjI2N\nrV27NuJqcf86VVCuIZ1toK5cuXLDhg3y9fbt24P377//fvlixYoVwXBBSoBXSOVwySWXyBcPPvjg\n66+/ftVVV01OTt57771btmwB8MUvfvGpp5669dZbT5069cgjj8jCXK/Xwy0MEa1bt+4jH/nI/v37\nFxYWDMO48847V61a9dhjj/3sZz+TK9xyyy2XXXZZxNWy+fKko9GEdOaB+oUvfEEOsnjggQeOHTv2\nl3/5l//3f/8X3Bj7r//6r7F2jzoVOKCCeuo5Kqljasgbb7xRvv+5z32u52l917ve9dxzzwXbDEYl\nfe1rXxu6AwcPHuzXWvKBD3zg1KlTsVajius3yi5NSOcRz2H9RtlJ//Ef/9Fza/V6/fz58wkPE/m+\nz1F2ZbFjx46NGzd2T+m4c+dOy7LCXbvj4+MbN2586qmngsaKuK677rojR47cdttt4Qb6Sy+9dHp6\n+umnn77sssvgeZFWI+pvZCGdeaD+/d//vWVZN954Y7DByy677Otf//pPfvKTt73tbQn2kAJjfvsc\nM6Sy8+fPv/rqq2+99daKFSsuvPDC8H+98sorhw8fXrZs2Zo1a1asWJHJnzt37tyvfvWrY8eO1Wq1\n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\nAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "exo3()" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "%% Insert your code here." ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "Display the histogram of (true, i.e. according to $y$) class inside\n", "each estimated class (i.e. according to $\\bar y$)." ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [ { "data": { "image/png": "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\nhf8L/ULTP0Hka4gAAAAASUVORK5CYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "clf\n", "for l=1:k\n", " I = find(yb==l);\n", " h = hist(y(I),1:k); h = h/sum(h);\n", " subplot(k,1,l);\n", " bar(1:k,h); \n", " axis([0.5 k+.5 0 1]);\n", " set(gca, 'FontSize', 10);\n", "end" ] }, { "cell_type": "markdown", "metadata": { "deletable": true, "editable": true }, "source": [ "__Exercise 4__\n", "\n", "Implement better initialization strategies such as farthest point sampling or\n", "." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "exo4()" ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false, "deletable": true, "editable": true }, "outputs": [], "source": [ "%% Insert your code here." ] }, { "cell_type": "raw", "metadata": { "deletable": true, "editable": true }, "source": [ "" ] } ], "metadata": { "kernelspec": { "display_name": "Matlab", "language": "matlab", "name": "matlab" }, "language_info": { "codemirror_mode": "octave", "file_extension": ".m", "help_links": [ { "text": "MetaKernel Magics", "url": "https://github.com/calysto/metakernel/blob/master/metakernel/magics/README.md" } ], "mimetype": "text/x-octave", "name": "matlab", "version": "0.11.0" } }, "nbformat": 4, "nbformat_minor": 0 }