From a6f634e7927357b703e5fd6a6ef1822967153d92 Mon Sep 17 00:00:00 2001 From: Cyrille BERTELLE <cyrille.bertelle@univ-lehavre.fr> Date: Tue, 17 Nov 2020 12:12:56 +0100 Subject: [PATCH] Upload New File --- ...ocs-apa-chap3-regression-polynomiale.ipynb | 737 ++++++++++++++++++ 1 file changed, 737 insertions(+) create mode 100644 m2iwocs-apa-chap3-regression-polynomiale.ipynb diff --git a/m2iwocs-apa-chap3-regression-polynomiale.ipynb b/m2iwocs-apa-chap3-regression-polynomiale.ipynb new file mode 100644 index 0000000..05be04d --- /dev/null +++ b/m2iwocs-apa-chap3-regression-polynomiale.ipynb @@ -0,0 +1,737 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Chapitre 3 : Régression polynomiale, \n", + "## Over-fitting, under-fitting et régularisation" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Références** :\n", + "- [Le data scientist - régression polynomiale avec Python](https://ledatascientist.com/regression-polynomiale-avec-python/) : suite d'un cours sur le [régression linéaire](https://ledatascientist.com/creer-un-modele-de-regression-lineaire-avec-python/) ; utilse la bibliothèque Seaborn ; Utilise la bibliothèque sklearn ; programmes accessible via des notebooks.\n", + "- [Regression polynomiale avec scikit-learn](https://darques.eu/blog/index.php/2017/05/09/regression-polynomiale-avec-scikit-learn/)\n", + "- [Implémentaer une regression linéaire polynomiale avec scikit-learn et python3](https://moonbooks.org/Articles/Implementer-une-regression-lineaire-polynomiale-avec-scikit-learn-et-python-3/)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "%matplotlib inline" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Modéliser des données par une régression polynomiale " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Dans ce chapitre, on s'intéresse à un nouveau type de régression qui est la régression polynomiale. \n", + "\n", + "Dans un premier temps, on décrit ce nouveau modèle qui va généraliser le modèle linéaire vu précédemment.\n", + "\n", + "Ce modèle va soulever des questionnements qui sont d'importance pour la data science : l'over-fitting (sur-apprentissage) ou l'under-fitting (sous-apprentissage). \n", + "\n", + "Pour analyser ces questions, on va introduire le compromis biais-variance qui permet d'introduire des mesures aidant à analyser ces phénomènes. \n", + "\n", + "On présente enfin des techniques de régularisation qui permettent d'automatiser des mécanismes de contrôle pour gérer ces phénomènes liès à l'analyse des données et afin de produire des modèles pertinents.\n", + "\n", + "Par ailleurs, après avoir introduit les outils mathématiques matriciels qui sont à la base des algorithmes de régression (minimisation de critères de moindres carrés, méthode de descente), on va maintenant s'intéresser à l'utilisation de fonctions déjà définies dans les bibliothèques Python dédiées au machine learning et notamment aux fonctions disponibles dans la bibliothèque Scikit-learn ou sklearn.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Jusqu'à présent, nous avons présenté des modèles de régression linéaire qui consiste à mettre en évidence des relations de linéarité entre des données : on cherche à retrouver des corrélations entre les variables des données démontrant qu'elles peuvent se positionner ou s'approcher d'une droite ou d'un plan, notamment lorsque l'on est respectivement en dimension 2 ou 3.\n", + "\n", + "Si maintenant, nous disposons de données qui ne présentent pas cette propriété de linéarité, il faut alors trouver d'autres modèles ou hypothèses pour réussir à dégager des relations comme illustrées dans la figure suivante.\n", + "\n", + "<img src=\"images/tds-regpol1.png\" width=\"500\"/>" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le propos de ce chapitre consiste alors à généraliser le modèle linéaire ou l'hypothèse de linéarité par des modèles polynomiaux.\n", + "\n", + "Nous représentons ci-dessous sur l'intervalle \\[-3, 3\\], 3 polynomes de degré respectif 1, 2 et 3 permettant ainsi de comprendre l'enrichissement apporté par l'usage de polynomes de divers degrés pour définir des hypothèses." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAAFlCAYAAAA3apYyAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4xLjMsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+AADFEAAAgAElEQVR4nOzdZ3gc5fX38e9s065671Zx71WSG92ATRJC6Cl0CB0ChIQQwkMnkPCnhk4oCZAAgQQSAiYU44olufcmrXrf1arsatvM82Jk2QYDxpY0KudzXXONpF1pjwy2frrLuRVN0xBCCCGEEL3HZHQBQgghhBBDjQQsIYQQQoheJgFLCCGEEKKXScASQgghhOhlErCEEEIIIXqZBCwhhBBCiF5mMbqA/SUnJ2t5eXlGlyGEEEII8a3WrFnTrGlaysEeG1ABKy8vj9LSUqPLEEIIIYT4VoqiVHzdYzJFKIQQQgjRyyRgCSGEEEL0MglYQgghhBC9TAKWEEIIIUQvk4AlhBBCCNHLJGAJIYQQQvQyCVhCCCGEEL1MApYQQgghRC+TgCWEEEII0cskYAkhhBBC9DIJWEIIIYQQvUwClhBCCCGGlOU1y3F1uQytQQKWEEIIIYaMRm8jNy25iT+U/MHQOoZfwFJVoysQQgghRB95bO1jhNQQ10y/xtA6hlfA8lTDU3Ngz2dGVyKEEEKIXraxaSPv7XmPCyddyIiYEYbWMrwCVjgAJjO8egYsexg0zeiKhBBCCNELVE3lweIHSXGkcNmUy4wuZ5gFrMSRcNnHMOl0+OQueOM86PIYXZUQQgghjtD7Ze+zsXkjN8y6gShrlNHlDLOABWCLgjP/DAt/Dzs+gOdPgMZtRlclhBBCiMPkDXp5ZM0jTEmewg9G/sDocoDhGLAAFAXmXg0X/Qe62vSQtekfRlclhBBCiMPwwqYXaPI1cUvRLZiUgRFtBkYVRsmdB1cshfSp8Pal8N9fQShgdFVCCCGEOERV7VW8suUVfjDyB0xLmWZ0OT2Gd8ACiM3QR7LmXAPFz8HL39N3GwohhBBiwHu49GHMJjM3zLzB6FIOIAELwGyFRffD2a9A43Z49hjY86nRVQkhhBDiG6ysXcnHlR9z2ZTLSItKM7qcA0jA2t+kH8Hln0FUKvz1DFjyoDQmFUIIIQagQDjA71f/npyYHC6cdKHR5XyFBKwvSx4DP/8Epp4DS+6H186EzmajqxJCCCHEfv6y9S8425zcOvtWIswRRpfzFRKwDsYWBac/Cz94FJwr4JmjoXK10VUJIYQQAqjrqOPZDc+yIGcBR2UdZXQ5ByUB6+soChRcDJd+BBabvvh95Z+k+7sQQghhsL0HOd9SeIvBlXw9CVjfJnM6XP45jF0EH92md3/3uY2uSgghhBiWltcs5+PKj7li2hVkRGcYXc7X6pWApSjKi4qiNCqKsnm/jyUqivI/RVF2dd8TeuO1DOGIh3NfhYX3w84P9V2G1WuMrkoIIYQYVvYubM+LzeOCiRcYXc436q0RrJeBRV/62G+ATzRNGwN80v3+4KUoMPcauGQxaMCLC2HVUzJlKIQQQvSTl7e8TGV7JbcW3YrNbDO6nG/UKwFL07SlgOtLHz4NeKX77VeAH/XGaxkuuwCuXApjTobFt8qUoRBCCNEPqtureX7j85yUexLzsuYZXc636ss1WGmaptUBdN9T+/C1+pcjAX78mn5g9M4P4ZljoKrE6KqEEEKIIUnTNO5dfS8mxcSvC39tdDmHxPBF7oqiXK4oSqmiKKVNTU1Gl3Po9h4YfcliUICXFsHyR6UxqRBCCNHLFjsXs6JmBdfNuI70qHSjyzkkfRmwGhRFyQDovjce7Emapj2naVqBpmkFKSkpfVhOH8kugCuWwfjvw8d3wGtnQccgCopCCCHEAObxe3ig+AEmJk3kJ+N/YnQ5h6wvA9Z7wN7e9RcC7/bhaxnLEa+fY/j9h8G5HJ6ZD2WfG12VEEIIMeg9uvZR3H43d8y9A7PJbHQ5h6y32jT8DVgFjFMUpVpRlEuBB4CTFEXZBZzU/f7QpShQeCn8/FOwx8FfToNP7oFw0OjKhBBCiEFpXeM6/rHzH5w34TwmJk00upzvRNEGUJuBgoICrbS01OgyjlygEz74Nax7FbKL4MwXICHX6KqEEEKIQSMYDnL2v8/GG/Lyr9P+RaQ10uiSvkJRlDWaphUc7DHDF7kPSbYoOO1JOPPP0LRdP8tw89tGVyWEEEIMGi9teYk9nj3cNvu2ARmuvo0ErL405Sy4chmkjIV/XALvXqOPbgkhhBDia1W0VfDshmc5Kfckjh1xrNHlHBYJWH0tIQ8u/gCOugnWvaYfs1O7zuiqhBBCiAFJ1VTuWHkHEeYIflM0eA+BkYDVH8xWOPEOuPA9CHjhhZOkZ5YQQghxEG/ueJM1DWu4ufBmUiMHb49yCVj9Kf8YuGoFjFuk98z664+grdboqoQQQogBobajlkfWPMKcjDmcPvp0o8s5IhKw+ltkIpzzVzj1cagugafnwbZ/G12VEEIIYShN07hr1V1oaNw5704URTG6pCMiAcsIigKzLoQrlkJ8rn5g9LvXgL/D6MqEEEIIQ7y7511W1q7khpk3kBWdZXQ5R0wClpGSx8Cl/4Ojf6kvgH/mKDk0WgghxLDT5G3iDyV/YGbqTH48/sdGl9MrJGAZzWKDBf8PLv4vqGF4cSEseQDCIaMrE0IIIfqcpmnc88U9BMIB7pp3FyZlaESTofFdDAW58+Cq5TDlbFjyez1oNe82uiohhBCiT33o/JDPqj7jmunXkBeXZ3Q5vUYC1kBij4MznoWzXoKW3fDs0VDyAgyg44yEEEKI3tLkbeK+1fcxJXkK50883+hyepUErIFo8hlw9SrImQPv/xJeOxva642uSgghhOg1mqZxx8o78If83HfUfVhMFqNL6lUSsAaq2Ew47x343kPgXA5PzYEt/zS6KiGEEKJXvLPrHZbVLOOGWTeQH5dvdDm9TgLWQKYoUPRz/TzDhHx46yL9TEOvy+jKhBBCiMNW3V7NH0r+QFF6ET8Z/xOjy+kTErAGg73tHI7/HWx9F56aC7v+Z3RVQgghxHemaiq/W/E7FEXhnvn3DJldg182NL+rochsgWN/BT//VO8G/9pZ8N714G83ujIhhBDikP11619Z07CGWwpvITM60+hy+owErMEmYxpcvgTm/wLW/gWemgdlnxtdlRBCCPGtylrLeHzt4xyXfRw/Gv0jo8vpUxKwBiNLBJx0N1yyGMxW+MsP4f2b5agdIYQQA1YgHOA3y35DpDWSO+bdMejPGvw2ErAGs5zZcOVymHO13i/rmfngXGF0VUIIIcRXPLHuCba5tnH3vLtJdiQbXU6fk4A12NkiYdHv9aN2UODl78EHt0Cg0+jKhBBCCABW1a7i5S0vc87Yczg+53ijy+kXErCGitx5cNUKKLoCVj8DT8+D8mVGVyWEEGKYc3e5uW35bYyMG8nNhTcbXU6/kYA1lNii4Ht/gIs/AMUEr/wA/nOT7DQUQghhiL3d2lv9rTx4zIM4LA6jS+o3ErCGotx5cOUKmHstlL6o7zTc86nRVQkhhBhm3tr5Fp9VfcYvZv6C8YnjjS6nX0nAGqpskbDwPrj0I33X4V9Ph39dAz630ZUJIYQYBspay/hjyR+ZlzlvyB3kfCgkYA11I4r0nYZH3QQb/gZPzoZt/za6KiGEEENYV6iLXy/9NQ6Lg3vn3ztku7V/k+H3HQ9HVjuceAdc/hlEp8Ib58GbF0B7g9GVCSGEGIL+UPIHdrh3cN9R95ESmWJ0OYaQgDWcZEyDn38GC+6AHR/Ck0Ww9q+gaUZXJoQQYoj4oPwD3tr5FpdMvoSjs482uhzDSMAabsxWOPomvaVD2iR471q9E3zLHqMrE0IIMchVtFVw58o7mZE6g2tnXGt0OYaSgDVcJY+BC/8DP3gUajfofbOWPQzhoNGVCSGEGIT8YT+/XPJLrGYrfzjmD1hNVqNLMpQErOHMZIKCi+Ga1TDmJPjkLnjueKheY3RlQgghBpk/lvyRHe4d3H/U/aRHpRtdjuEkYAmIzYBzX9Uvbwu8sAD++2voajO6MiGEEIPAh84PeWPHG1w86WKOyT7G6HIGBAlYYp8Jp+qjWUWXQ/Fz+iL4re/JInghhBBfq6y1jDtW3MG0lGlcN/M6o8sZMCRgiQPZY/Xjdi77BCKT4c3z4W8/gdZKoysTQggxwHQGO7lhyQ3YLXYeOvahYb/uan8SsMTBZc+Cy5fAyfdC+ed6g9Llj8oieCGEEIB+zuDtK26nsq2Sh459SNZdfYkELPH1zBaYd50+bTjyePj4Dnj2GKhYZXRlQgghDPbSlpf4X8X/uHHWjRSmFxpdzoAjAUt8u/gc+Mnr8OPX9YXvLy2Cd6+BzhajKxNCCGGA1XWreWztYyzMW8gFEy8wupwBSQKWOHTjv6+PZs27Hjb8Hf40C0pfAlU1ujIhhBD9pL6znl99/ivyYvO4e97dKIpidEkDkgQs8d1ERMPJ98AVyyB1IvznBvjziVC7zujKhBBC9LGuUBc3fnYjATXAo8c/SqQ10uiSBiwJWOLwpE2Ei96H05+D1iq9Qen7vwSf2+jKhBBC9AFN07hz1Z1sbtnMfUfdR35cvtElDWgSsMThUxSYdi5cW6L3zip9EZ6YBWtekWlDIYQYYl7a8hLvl73PtdOvZUHOAqPLGfAkYIkj54jXe2ddsRSSx8K/r9e7wcuRO0IIMSR8XvU5j655lEV5i7h86uVGlzMoSMASvSd9Clz8gT5t2FYDL5wA714LHU1GVyaEEOIw7Xbv5pZltzAhaQJ3z5dF7YdKApboXT3ThqV6D60Nf9OnDVc9JU1KhRBikGntauW6T6/Dbrbz2PGP4bA4jC5p0JCAJfqGPVbvAn/VSsgugMW3wtPzYfcnRlcmhBDiEATVIDd/fjMN3gYeO+Ex6dT+HUnAEn0rZRyc9zb85O8QDsCrZ+hnG7rKjK5MCCHE19A0jXtW3cPq+tXcOe9OpqVMM7qkQUcCluh7igLjTtGblJ54J5Qv1c82/Oh26PIYXZ0QQogveX7T8/xz9z+5ctqV/HDUD40uZ1CSgCX6jyUCjroRrlsDU86BlU/A4zO7u8GHja5OCCEE8H7Z+zyx7glOHXkqV0+72uhyBi0JWKL/xaTDj56Eyz+D5DF6N/hnj4GyJUZXJoQQw1ppfSm3r7idgrQC7px3p+wYPAJ9HrAURVmkKMoORVF2K4rym75+vW/S0NbFokeXcvu/NvPu+hrqPD4jyxGZM/S2Dme/Av42+Mtp8Pq50LTT6MqEEGLYKfeU84vPfkF2TDaPHv8oNrPN6JIGNUtffnFFUczAk8BJQDVQoijKe5qmbe3L1/067V1BUmIieGdtNX/9ogKArHgHRfmJFOQlUJSXyOjUaEns/UlRYNKPYOwiWP00LHsYnpoDBZfAcbdCVJLRFQohxJDX7Gvm6o+vxmKy8OSCJ4mLiDO6pEFP0TSt7764oswF7tQ0bWH3+7cCaJr2+4M9v6CgQCstLe2zevYKhVW217dTXO6itMJFcbmb5g4/AAmRVmblJlKUn0BBXiKTM+OwWWQmtd90NsOS3+vrsmzRcMwvoegKsNqNrkwIIYakjkAHlyy+BGebkxdOfoGpKVONLmnQUBRljaZpBQd9rI8D1lnAIk3TLut+/3xgtqZp1x7s+f0VsL5M0zQqWrwUO12UOl2UON2UN3cCYLeamDEigcI8PXDNzE0gOqJPB/4EQNMOfZfhrsUQNwJOuB2mnA0mCbtCCNFbAuEAV398NWsa1vD4CY9zdPbRRpc0qBgZsM4GFn4pYBVpmnbdfs+5HLgcICcnZ1ZFRUWf1fNdNLX7KXW6KHa6KHG62FrbhqqBSYFJmXE9U4oFeYmkxEQYXe7QVfY5/O92qNsA6VPh5Htg5HFGVyWEEINeWA3zq6W/4n8V/+P+o+7n1FGnGl3SoGNkwBqQU4SHo8MfYm2Fuyd0ratsxR9SAchPjqIgN4HC/EQK8xLJS4qUdVy9SVVh89vwyd3gqYTRJ+r9tNKnGF2ZEEIMSpqmcd/q+3hjxxvcXHAzF0660OiSBiUjA5YF2AksAGqAEuCnmqZtOdjzB3LA+rJASGVzrYeScn1KsbTCRatXP2svOTqCwrwECvP0wDUhIwaLWaa2jliwC0qeh6UP6Q1Kp54Dx98GCblGVyaEEIPK0+uf5qkNT3Hx5Iu5adZNRpczaBkWsLpf/HvAo4AZeFHTtPu+7rmDKWB9mapq7GnqoMTppsTporjcRU2r3gYiymZmZu6+wDV9RDwOm9ngigcxnxuWPwqrnwFNhYJL4ZibISrZ6MqEEGLAe23bazxQ/ACnjTqNe+bfIzMuR8DQgPVdDOaAdTB1Hp8euMr1dVw7GtrRNLCaFSZnxfUEroLcBBKipN/Id+apgc8fgHWvgjUK5l0Lc6+BiBijKxNCiAHp7Z1vc+eqO1mQs4CHjn0Ii0k2bR0JCVgDhMcbZE2l3hai1OliY7WHQFhfxzUmNZqCPL09RGFeIlnxDvmt4lA17YBP74Ft/4bIJDj6l/qolrR2EEKIHv8p+w+/XfZb5mfN57HjH5NGor1AAtYA1RUMs6GqldIKfVpxjdNNuz8EQEacXR/hyk+kMC+BsakxmEwSuL5RzRp9IXzZEojNgmNvgek/A7P8hiaEGN4+rviYmz+/mVlps3hywZPYLfILaG+QgDVIhFWNHfXtlHS3hihxumho0xugxjmszOpex1WUn8DkrDgiLLKO66DKPodP7tIDV+JIvSP85DPBJH9eQojhZ2n1Un7x2S+YnDSZZ096lkhrpNElDRkSsAYpTdOodvsoLt8XuPY06Q1QIywmpo2I72mAOis3gVi71eCKBxBNgx3/hc/uh4bNkDIejv8tTPihfjyPEEIMA6tqV3HtJ9cyOmE0L5z8AjE2WaPamyRgDSEtHX69LUR34Npc20ZY1VAUGJ8eS1F34CrKTyQtVoaAUVXY+k/47PfQsktvVnr8b/WzDyVoCSGGsBU1K7j+0+vJi8vjzyf/mXh7vNElDTkSsIawTn+I9VWtPSNcayta8QXDAOQkRnbvVNSboI5Mjhq+C+fDIdj0ln7OYWsFZM6A434LY06SoCWEGHKWVi/lxs9uZGT8SJ4/6XkJV31EAtYwEgyrbK1t6wlcpU43LZ0BAJKibBTs1wB1YmYs1uHWADUchA1/g6V/hNZKyCrQ12iNXiBBSwgxJCypWsJNS25iTMIYnjvpOeIi4owuaciSgDWMaZpGWXNnT8f5EqeLSpcXgEibmRk58T2Ba0ZOPJG2YbLjLhSADa/rXeE9VZBdqO86HH2iBC0hxKD1SeUn3Pz5zUxInMAzJz1DrC3W6JKGNAlY4gANbV36CFe5i2Knm+31bWgamE0KkzNj9ean3VOLSdFD/CDrUADWvwrLHtaDVuYMPWjJGi0hxCDzkfMjbll6CxOTJ/LMic/IgvZ+IAFLfKO2riBru3txlZS7WV/dSqD7IOtRKVE9I1xF+YlkJwzRBqihAGz8uz6i1VqhL4Y/9tcw7vtgGmbTqEKIQeedXe9w16q7mJYyjacWPEW0LdrokoYFCVjiO/GHwmyq9hywW7GtS2+AmhYb0RO4CvMSGZceg3koNUANB/XF8Ev/CK4ySJkAR98Ek86QhqVCiAHp5c0v839r/o/5WfN55LhHcFgcRpc0bEjAEkdEVTV2NrYfsI6rztMFQIzd0tMAtTAvkanZcditQ6ChZzgEW/+lj2g1bYOEfDjqRpj2E7DI8RJCCONpmsbj6x7nhU0vsChvEfcfdT9Ws/RD7E8SsESv2tsAtbTC1XOY9a7GDgBsZhNTs+N6jviZlZtInGMQ/4VXVb1h6dI/Qt16iMnUD5WeeSFEyBC8EMIYYTXM/avv582db3LW2LP43ezfYZbTKvqdBCzR59ydAUor9CnFYqeLTdUeQt0NUMelxXQvnE+gKD+RjLhBOHytabDnE1j2CFQsB0cCFF0Bs6+AyESjqxNCDCP+sJ/blt/GYudiLpl8CTfMvGForo0dBCRgiX7nC4S/1ADVTWdAb4CaneDYbx1XAqNTowfXPw5VxbD8EX1kyxoJsy6COVdD/AijKxNCDHEev4frP72etY1ruWnWTVw8+WKjSxrWJGAJw4XCKtvqDjzIurlDb4CaEGllVq5+iHVBXiKTM+OwWQbBzr3GbbD8Udj8D32Ea8pZMO96SJ9sdGVCiCGopqOGqz6+iur2au476j5OyT/F6JKGPQlY4rB5g15afC14Ah7a/G0997ZAG76QD1/IR1e4i66QfoXUEGEtjKqpPXdFUTAr5n2XyYzVZCUUsuLxQnObRn1rGHenAmEHFiWSUUkpTM1Mp2BEFkePyiclagD3c2mtgi+ehjUvQ7ATRi2A+ddD/rHSS0sI0Su2tGzhmo+vIaAGePz4xylIP+jPdNHPJGCJg/KH/dR21FLTUUNNew01nTXUddTR5Gui2ddMk7cJb8j7tZ9vUkw4LA7sZjt2ix272Y7VbMWkmDAr5p67hkZYDRPW9CukhgiqQT2chbrwh/34w/5vrFXRbDjMcSTZE8mKTWVEbDqpkamkRabpV1QaGVEZRFoje/uP6dD53FD6InzxDHQ2QvoUmHut3uJBdh4KIQ7T0uql3Pz5zSREJPD0iU8zMn6k0SWJbhKwhrm2QBu73bsp85Ttu1rLqOusO+B5VpOV9Kh0UhwppESmkOJIIdmRTLIjmfiIeGIjYom1dV8RsdhMtl5bOxVWw3hDXtoD7bQH2mkLtNHU2cqmujq2NdbidDfS5G1BNXWgWNqx2NrRTB1f+TqJ9kSyorPIjM4kKzqLnJgccmJzyIvNI9mR3D9rvYJdsPENWPUkNO/Qdx7Ovlxfq+VI6PvXF0IMCZqm8Zetf+HhNQ8zLmEcTy54kpTIFKPLEvuRgDWMuLpcbGnewnbXdra5trGtZRvVHdU9j9vNdvLj8smPyycvLo/s6GyyorPIis4iJTIFkzJw1z4FQipbaj2UOF0Ul7spqWikLdiCydJGXEwnWSk+YqLbweLCE2ygtrOWkBrq+fxISyQ5sTnkx+UzKm4UI+NHMipuFCNiR2A19UErCVXVdx6ufALKPwdrFMz4Gcy+EpJG9f7rCSGGjEA4wN2r7ubdPe9yUu5J3Dv/XmNH6MVBScAaolRNpay1jPVN61nXuI4NTRuoaKvoeXxEzAgmJE5gQtIExiaMZWTcSDKjMwd0iPouVFVjT1MHxd3nKpY43dS0+gCIspmZkRvH+Oww6Ukd2Bwt1HZW4Wxz4vQ4qemo6fk6FpOFvNg8xiWOY2zC2J4rxZHSeyNedRvhi6dg89t6t/ixC2HOVbJOSwjxFc2+Zm787EbWN63nqmlXceW0K4fMv9tDjQSsIULTNCrbK/mi9gtW16+muL4Yj98D6FNj01KmMT11OlOSpzA+cfywPOizttVHidNFaXfH+R0N7WgaWM0Kk7PiKOo+yHpiVgStoRrKWsvY3bqb3a272eHaQYO3oedrJdoTewLq3nt2dPaRha72Bn2dVumfobMJUidC0eUw9VywyW+nQgx3213bue7T62jtauXeo+5lYd5Co0sS30AC1iDmDXpZWbuSpdVLWVW3ivrOegDSo9KZnT6bwvRCpqdOJycmZ3D1kuonHm+QNZX7Os5vrPYQCOsHWY9Jje7pOF+Yl0h2QiQev4ed7p3sdO/Up1lbtrGndQ8hTZ9qjLXFMjl5MpOTJzMleQqTkyeT7Ej+7oUFu/TRrNVPQ/0msMfDzPOh8DJIyOvFPwEhxGDx7z3/5u5VdxMXEcfjJzzOxKSJRpckvoUErEGmrqOOJdVL+Lzqc4rriwmqQWKsMczJnMOcjDnMzpgtgeowdQXDbKzeu45Lb4Da7tfDU2acnYK8xJ7QNTY1BpNJwR/2s9u9my0tW9jaspXNzZvZ3bqbsKY3Ts2IymBayrSea3zi+EM/D0zToPILWP0MbPs3aCqMO0UPWiOPB5NMCwgx1AXCAR4sfpA3d75JQVoBfzz2j4f3i5vodxKwBoH6znoWOxez2LmYTc2bAMiNzeXY7GM5bsRxTE+d3jcLsYe5sKqxvb6NUqe7Zy1XY7veMiLWbtEDV3fH+SnZcURY9LO+fCEf213b2dS0iY3NG9nQtKFndDHCHMGkpEnMSJ3BzLSZTEuZRlxE3LcX46nRpw/XvAzeZkgcBYWXwvSfyu5DIYaouo46blpyE5tbNnPxpIu5fub1WEwWo8sSh0gC1gDV4mvhg/IPWOxczPqm9QBMSJzAwryFnJBzAvlx+QZXOPxomkaVy0ex09VzrmJZUycANouJ6dnxFHZ3nJ+Vm0CsfV/obehsYEPTBjY0bWB903q2tmzt2cU4On40s9JmMSttFgVpBd+81Trkh63vQcnzULUaLA69S3zhpZA5o0+/fyFE/1lZs5Jblt1CUA1y7/x7OTH3RKNLEt+RBKwBJBgOsrRmKf/a/S+WVy8npIUYlzCOhXkLWZi3kJzYHKNLFF/S0uHX13B1h67NtW2EVQ2TAuPTY/U1XPmJFOUlkhpr7/k8X8jH5ubNrGtcx9qGtaxvWk9nUA9rOTE5FKQXUJBWQGF6IelR6Qd/8bqN+oL4jW9C0AsZ06HgYph8FkRE98e3L4ToZUE1yFPrn+LPm/7MqPhRPHLcI+TF5RldljgMErAGgD2te/jHzn/wftn7uP1ukh3JnDrqVE4bdRqj4qUn0mDS6Q+xvqqV4nL9TMV1la34gvp6rJzESArz9p2rODI5qmetXEgNscO1g9KGUkrrS1nTuIb2QDugTwcXphdSlF5EYXrhV9dfdHn0kFX6EjRuAVsMTD1HD1vpU/r1+xdCHL7q9mpuWXoLG5s3csaYM7il8BbpbzWIScAySEgN8VnVZ/x9+98pri/GYrJw/Ijj+dHoHzEvc57Msw8A4Y5OgpUVBBsaCLe0EGpuIdTcTKilGbWtHbWrC9XnRfP6ULu60ELdjUsVUFD0HlZmM0FrBB0mG62qmaawCY9iw2OLIhgdR2JWKlm5GYwal8OYSSOxZ6SjWK2E1TC7WndRXFdMSX0JpQ2ldL035pUAACAASURBVAT17vSj40czJ0Pf1DArbRbRtu7RKk2DqmJY8xJs+SeEuvRpw5kXwuQzwR5r0J+kEOLb/Lfsv9zzxT0oKPy/ef+PRXmLjC5JHCEJWP2sxdfCWzvf4q2db9HobSQzKpOzx53NGWPOINGeaHR5w1LY46Fr61a6tm7FX1ZGoKKCQEUF4abmrzzXFB2NJSkJU1wcJocDk8OB4rBjckSiWK16yNE0QP+7owVDqD4fqteL6vOien34PW2EXS7Mvq+e5aih4I9LwJKeQWxeNo68PGy5uZhzsqmIC7Dat43V9cWsbVyLP+zHrJiZnDyZuZlzmZsxlykpU/QNDz63Pqq15hV9VMsaqZ97OPMCGFEkDUyFGCA6g508UPwA/9r9L6alTOPBYx4kKzrL6LJEL5CA1U+cHievbH2F93a/R0ANMD9zPj8e/2OOzjoas8lsdHnDhqaqdG3bhnd1MV2bN+PbsplgRWXP4+bkZGy5uQdc1ox0zEnJWJKTMNnt3/DVvxs1ECDsdtNQWc+OrU6qdzpxO6tRmhpI8bWS5nWR5nVj1tSezzHFxBAxahSW0SNpSnewOa6Nz63llAR2omoqUdYoCtMKmZM5h3mZ88iLyUWpXQdrX4ZNb0OwE5LGwIzzYNqPIeZr1ncJIfpccV0xt6+4nXpvPZdNuYyrpl0lsxdDiASsPrahaQMvb36ZTyo/wWqyctro07hg4gWyaLEfBaqq6Fy5is5Vq/B+8QXh1lYArJmZ2CdNwj55MvbJk3BMmoQ5Pt7gaqGtK8iaCr356do9TdTtLCfV00hmZzMTQ27GdjWT3FSFpaO953NMKcl489MoS4cvYhopiXPREguZ0VnMy5rH/Mz5zE6cRMyuj2H9a1C5ChQzjDkJpv8Mxi4Ci83A71qI4cMb9PLY2sd4ffvr5Mbmcu/8e5meOt3oskQvk4DVR0rqS3h6w9OU1JcQa4vl3HHn8tMJP5UGcf3EX1ZG24cf0v7Bh/h37QLAkpZG1Ny5RM2bS+TsOVjTUg2u8tD4Q2E2VXsO2K3Y5guS4G9neqiFuSYPE9rrSKorR6l06gdJA6G4KKpHOFib3M6W9CDlmRbGjJjG/Mz5HBWdx4SylZg2vgHtdXovrclnwfSfQOZMmUIUoo+sb1zPbctvo7K9kvMmnMf1M6/HYXEYXZboAxKwetn+wSrFkcLFky/mzDFnyk6QfhCorsbz7ru0f7hYD1WKgmPmTGIXnkzUUUdjy88bEh3uVVVjZ2N7zxE/JU4XdZ4uAJIsKgvt7RQFmxjZUkHknu0Ey8sB0BRoSrWzIcPP9myFhlEJjJ04n/nWRObXbCZhx0f6wvjkcfr04dRzIC7byG9ViCGjM9jJE+ue4PVtr5MZnck98++hML3Q6LJEH5KA1UvWNqzlyfVPUlxfTLIjmcumXMaZY87Ebum9NTviq7RQiI4lS3D//Q06V6wA6A5VC4lZeDLWtDSDK+wf1W4vJc595yruatR3HNrMJopSrJygNDPZU0VyxU4CG9ajdeiPe6JNbM3W2DZCIThlFGMz0ziqYTeTqtZiRoG8o/SgNeGH4DB++lSIweizys+4b/V9NHobOWfcOdw460airFFGlyX6mASsI1TWWsYjax9hSdUSkh3JXDr5Us4ae5YEqz4WbGik9Y03aP3HPwg1NmJJTSX+7LOJP+tMrBkZRpdnOFdnQF/H5dRHuDZVewipGooC41OjWODopKCtkqzqnQTXl6I06jsm2xywbYRCeb4d+5hkppgamN9cSYJihbELYcrZMOZksMr/30J8m4bOBh4ofoCPKz9mdPxo7ph7h6y1GkYkYB2mJm8TT214ind2vYPD4uCyKZfxswk/k7n0PhaorqHlhefxvP0OWihE1FFHkfDjc4k+9lgUi+y++Tq+QJh1VW5Ku9dxra1w0xnQG6BmxdlZkBBmbkcF2RWb0DaWYm1wA+CJhC25Cq35kSQldVBICxNMdkzjfwBTzoT848Asf+5C7C+oBvn79r/z5PonCakhrpx2JRdOulDOjB1mJGB9R76Qjxc3v8grW14hqAY5d9y5XD71culh1cf8ZWW0PPscnv/8B8VkIu7000m67FJsOXJ80OEIhVW217f3dJwvcbpp7tAPsk6ItHJ8XJhjOp2kOYuxb9qE3a0f49MYBzvzzGgZQfIS25ntcBA34TSYdDrkzgNpOSKGuZW1K3mw+EHKPGXMy5zH72b/jhGxI4wuSxhAAtYh0jSNjyo+4qHSh6jvrGdh3kJ+MeMX8henjwVra2l8+BHa3n8fJSKChHPPIfGSS4bN2qr+omkazhZvzy7FEqeb8mY9VNktCidG+5nfvp308tUkbNtDhE/vWu9Mg/oRGtFpXUxJszFu4qkok8+AnDkStsSwUtVexUMlD/Fp1adkR2fz68Jfc9yI44bExhpxeCRgHYLd7t08UPwAq+tXMy5hHLfOvpVZabMMqWW4CHd00vL887hefhmAxAvOJ/Gii7AkJRlb2DDS2N7FGqeb4u51XFtr21A1sGhhTrS6mN22lhFlG0krb8AShoAFdmdDICtIZraFWbNOInryWZA7X6YRxZDl8Xt4cfOLvLr1VcwmM5dPvZzzJ55PhDnC6NKEwSRgfYPOYCdPrn+S17e9TpQ1iutmXMdZY8+STrt9SAuHaX37bZoef4JwczOxp55K6o03YM3MNLq0Ya/DH2JthZtSp4tip4v1Va10BVXsIT8LQrsocK9hVNluUpp8ALiioTZHJSIbJhYVMarofJSRx4JFfvCIwc8f9vO3bX/j+U3P0x5o5wcjf8AvZv6CtCgZXRc6CVhf4/Oqz7l39b00dDZw1tizuG7GdSTYE/rt9Ycj35Yt1N1+O/6t23DMnEnab27BMXWq0WWJrxEIqWyu9eiBq9xNaYWLVm+QZG8Lx3iLKWzZypjyeqK6NFSgKh06R6ikTs5l5okXEDXph3IAtRh0wmqY/5T9hz+t/xP1nfXMz5rPjTNvZFziOKNLE9+mrQ52/Fe/Rh4H867r05eTgPUlzb5mHix+kA+dH8q22n6i+v00/+lJWl58EXNiAum//S0xixbJ2oVBRlU19jR1UOx0Uep0U1zuos7dydi2bcz1rKawvozcui5MGngjoCZbwzImjjHHnsTo469AiZf1jGLgCqthFjsX8+zGZynzlDEpaRI3zrqR2RmzjS5NfB1Ng6btsP19PVTVrNE/npAPc66G2Zf36ctLwOqmaRr/3P1PHip9iK5QF1dMvYJLJl+C1SzbavuSd80a6m77HQGnk7gzziDtll9jjoszuizRS2pbfT29uEqdbqqrapnpWclRLWuZVO0isV3/N6YhATz5ZhJnTGTqDy8nbswJYDIZXL0QEFJDfFD+Ac9tfA5nm5PR8aO5ctqVnJx7svwSOBCF/FCxAnZ8CDs/hNYK/eNZs2Dc92D89yFlfL8cByYBq1tJfQmXLL6EWWmzuGPuHeTH5ffZawl91Krxof/D/eqrWDMySL/nbqLnzze6LNHHPN4gayr1KcWS8hZcu9ZwdMunTG8oZ2RNgIgQBM1QkwXq2ERyjjmRCd+7Dku0nOEp+lcgHOC/5f/lhU0vUNFWwdiEsVw57UoW5CzApEj4H1Da6mD3x7DrI9jzKQQ6wGLXpwHHLoSxp0Bs/zegloC1nxU1K5ibOVf+8vQxf1k5NTfdhH/7dhJ+9jNSb7oRU5QcGzEcdQXDbKz2UOJ0sWZ3DcrGf1HQUMyYWjdZzfq/P22R0JBrIXLqKCb+4CIyC06Tw6hFn/H4Pby18y1e3/Y6Tb4mxieO58qpV3J8zvHys2GgCIegplQPVLs+gvpN+sdjMroD1SLIPxZsxp4BLAFL9CvPe+9Rd+ddmGw2Mh74PTHHHWd0SWIACasa2+vbKHW6Wb9hLQkbXmds7W7yq/3EevXn1CeBZ2QUybMLmXb6DcRkyeJiceRqOmp4deurvL3rbXwhH3Mz5nLRpIuYmzlXpgIHAncF7PlEH6EqWwp+Dyhmvefe6BP1I7zSJg2oX74kYIl+ofp81N97L56338ExaxZZ//cQ1vR0o8sSA5ymaVS6vBTvaWb38n8Qt/l9sqsbya0NYwtByAS16QreUYlkHnsiM350A7ZoOZRaHJqwGmZF7Qre3PEmS6uXYlbMnJJ/ChdOulB2BRrN1wrO5VC2BMo+g5bd+sfjRsCoE/Rr5HED+hB6CViizwUqK6m+5hr8u/eQdMXlpFx7rZwbKA5bc4ef1VvLqfjoaaK2ryajqo2sBg0T0GWFmiwTXaPTGXHsKcw69WosdmOnCcTA4+py8c9d/+StnW9R01FDkj2JM8eeydljzyY9Sn7xM0TQB1WroXypHqpq14GmgjUK8uZ3h6oFkDxmQI1SfZM+C1iKopwN3AlMAIo0TSvd77FbgUuBMHC9pmmLv+3rScAanLwlJVRfdz1oGpkP/58sZBe9zhsI8cWaUio/eJqI7ZtJr/aS7up+LAJqss10jcwg45jvMefUK7BK4BqWgmqQZdXLeG/Pe3xe/TkhNURBWgHnjj+XBSMWyI7x/hbyQ3UpOJfpoaq6BMIBfdovu0AfnRp5HGQVgMVmbK2HqS8D1gRABZ4Fbt4bsBRFmQj8DSgCMoGPgbGapoW/6etJwBp8Wt9+h7o778SWnc2IZ57GlptrdEliGAiGVYpXfozzwxex7thBenUXKa36Y94IqMky481LI3nOAuadfg2RMdIWZKjSNI3tru28t+c93i97H7ffTaI9ke+P/D5njjmTUfGjjC5x+Ah0QlUxVKzUr+oSCPsBBTKmQt7RkH8M5MwdMg2I+3yKUFGUJRwYsG4F0DTt993vLwbu1DRt1Td9HQlYg4emqjQ9/DAtL/yZqHlzyXrkEeltJQyjaRprV3zI7g9fxrRjJ6nVXaS69cf8VqhJN9E+Ip6oaUUUnXE1aSPGGFuwOCKaprHDvYPFzsV85PyIyvZKrCYrx404jtNGnca8rHlYTTJa1ec6GqHyC33ar/ILqFsPaggUE6RP1c8ozZsPufPAMTRPSTEiYP0J+ELTtFe73/8z8IGmaf84yOdeDlwOkJOTM6uiouKI6xF9S/X5qPnVr+j4+BPif3wu6bfdhmKVf8zEwLKt9FO2/Pcl1G3bSKzpJKMJTBqoCtQngzszEmXsKMafdC4T5v8Ik9lsdMniG4TVMJtbNrOkaklPqDIrZgrTCzk572ROzj2ZuAj5Ja/PqGFo3KqPSlWVQNUX4CrTHzNHQNZMfbdf7lEwomjIjFB9myMKWIqifAwcbEXgbZqmvdv9nCUcGLCeBFZ9KWD9V9O0t7/ptWQEa+ALt7dTddVV+NasJe3W35Bw/vmyvVkMCrUV2yl55ym8m9YQU91KZr2KI6A/1u6AhnQzXSMSSZxewPTvX0RSrpyRabT2QDsralewrHoZy6qX4fa7DwhVC3IWkGhPNLrMoamtTj92pmaNHqpq1kKwU38sMhlGzIac2fp0X8a0YXvA+zcFrG/d5qVp2omH8ZrVwP6HjmUDtYfxdcQAEnK7qbrs53Tt2EHW/z1E7Pe+Z3RJQhyyzNzxnHbj4z3vd3Z2sOr9l2hc9SHWihqSG/yMXNqEaekHND7+AVvjwJVuhdw00mbOZuwJPyUxZ6KB38HQ5w/72di0kdV1q1ldt5rNzZsJaSHiIuKYnzmfY7OPZX7WfBmp6m2dLVC3DmrX6zv7atZAe53+mMkCaZNhxs8gu1C/EvIGzS4/I/XVFOEk4HX2LXL/BBgji9wHr2BDI5WXXkKwqpqsxx6V5qFiyFFVjU1bNrB18csEt68lut5FSlOYZM++57TEQmuaFXKSiZ0wiex5p5Iz9XgsFpkiPxztgXY2NW1iQ9MG1jauZV3jOvxhPybFxOSkyRRlFHFM9jFMSZ6CxSRtX46YpunBqX4T1G3U10zVbQBP1b7nJI2GzJn6uX5ZsyB9MlgdxtU8wPXlLsLTgSeAFKAVWK9p2sLux24DLgFCwA2apn3wbV9PAtbAFKiupvLiSwi3tJD99NNEzS4yuiQh+pymadS0+ihZvYzG1W9jcW4hvtlDUkuYFLe+ngv0vlzNySa60qMw52USN2kmWYWLyBo9Q9oC7Kcr1MXu1t1sd21nc/NmNjRtYE/rHjQ0FBTGJIyhKL2I2RmzmZU2ixhbjNElD27BLmjeAQ1boXGLHqrqN4G3Zd9zEkdB5nTImK7f06cO6KaeA5E0GhWHzV9eTuVFF6N2dZHz/HM4psq6FDF8uTsDlFa42bRlI96N7xFTu5mUNhfxrQGSWug56gf04NWSaMKb4kDLTsUxehzxE2aRPnYGGVljh+wut6AapLq9mnJPOeWecna17mJ7y3bK28pRNRWAGFsMU1OmMi1lGtNTpjMleQrRtmiDK/92mqahBYNoPh9q96V1daEFAqh+P1ogiBYIoAWDEA6hhcNo4TCEVTRVn8BRTCZA0afYTAqKxYpis6JYrSg2GyabDcXuwBQVte+KdHR/3kGEg/pi86bt0LRDX4jesFXvir530sgcAakTIH2KHqLSp+hHzgyTheh9SQKWOCzBmhqc552P5veT89JL2MeNNbokIQYUXyDM+qpWSpwu1pfX07V7JWM61pLlrSKxo4NoT5CYVo14j8L+Px477OBKMONNdhBKTcCcnU3EiDxiR4wiKX88yckjSLAnDMgQpmoqHr+Hus46ajtqqemooa6zjpqOGiraKqhqqyKkhXqenxqZyoTECYxLHNdzz4rO6tdDlTVNQ/P7Cbe1oba377u3t++7d3SitrejdnYQ7uhE7ehA7ezUL6+3546q9lvdPRQFU3Q05thILJFWzBEqZosfi6kdi9KC1RHEEhnG6lAxZ2SjpE2GtImQOlEPUomjwCxTrH1BApb4zoKNjVScdz7h1lZy//IK9vHjjS5JiAEvFFbZVtdOsdNFqdNFidNFoMPFeNXJLHUb+eFaojtcmFs7MXtUIj0KMe0Kli/9zPZGgCsa2mIt+OIdBJJi0JLi0BLiMCcmYk1OwZ6chj0xCYctCofF0XNFmCOwKBYsJgtmk1m/K2ZUTf3K1RXuwh/20xXad28LtNEeaO+52gJttHS10OxrptnXjMvnOiBAAURZo8iMziQnJof8uHz9is0nLy6vV6b6NE1D8/kIt3egdrQfGI7a2gm3t6EecG8n3ObpeVv1ePRRpW9iNushJioKU0zMgSNIUZHdI0mRmByRmBx2FLsdk8OBEhGBKSICxWZDiYhAsdr0ESmzGcxm/W4yo5hNe78ZNFUDNFBVtFCoZ9RLa29Bc1WjNlWgNlehttShuhtR21yEO7yE/SbCfhOhgJlw0EbYB1r4wJ/hitWKNScHW24utpwcbHm52PLyiRg3FkvC0OxFZSQJWOI7CbndVF5wAYGaWnJf/DOO6dONLkmIQUnTNJwtXkqcLkrKXZRWuClv1re6J1gDLErvZH68mwmBSmwte2irr6ajyU2gI4zmNWPymojoVHB4FcwHGThRFX00rMOh39sdCp128EXoIc0boeCzgc8Gfhv4LeC3KfgtELBC0AwhMwQt+qHaIYv+NVUTaIqCw+IgxhZDkj2JJEcSyY5kkh3JJNmTyIjKIDMqgwx7GjHmSBRVRQsGUQMB6L7rU2Z+tK4u1C4/mr/73uVD9fr0kSFf993bidrZPVK03+hRuKMDtaMDwt+4RwosFsyxsZhjYjDFxWGOjsYUF4s5JhZzbAym2DjMMdGY9j4nJqb7Hos5JhrF4ej7ljO+Vn1BuacaWqvAUwnuCmitALcTujwHPj8mQx99SsyHpFGQPBaSxui7+Cw2NFUl7HYTrK8n1NBAsL6eYE0NgYoKghWVBCor0fz+fX9EqalEjB+Hfdx4IsaPwzFtOtasTGm1cwQkYIlDFu7ooPKii/Hv3MmI554las4co0sSYkhpbO9ijdNNcfcI19baNlQNzCaFiRmxFOYlMjfTREGshwR/NbidaM1lhOvLCddXEWpqoqtLo9NvoStg1kc0Qja0kA0tYEbxg8mvYuoKo6hH+O+72XzA2p+er6bpoy+9Ml1mNmNyOPTRoagoTNHRB4wcmaP3hqFoTNEx3VNl3R+LjcUUHdN/AenrhEPQ2QQd9dDeoO/Ua6+Dthpoq913+du+9L1HQHyOHpgS8iAhF+JzIXGkHqpsUUdUlqaqhBoa8JeV4d+xE/+O7XRt34G/rAy6R/QsKSk4pk/HMWMGjhnTcUyeLI2jvwMJWOKQqD4flT//Ob71G8j+0xPSikGIftDhD7G2wq2PcjldrKtsxR/Sg0t+chQFuQkU5idSmJdIXlIkiqbqP7zdFfpISFs1eGr0H+Z77z4XmqavcVZDJtSggqpaUa0JaJZ4VEssqjkGzRyFZnJ0X3Y0bGCOQDNFgMmqT2WpYWC/4LI3xJhNKGYLimXfFNjehdo902RWm75w22FHibBjskfoU2t2O4pDX8itWK0DbwQlHNRHm7wt4HOB16W/7W2BzmbobNQDVWezflxMZxP7xc9uCsSk66NQsZn6FTcC4kdAXA7EZUNUCnzd4vU+pAUC+Hfvxrt+Pb716/GtW0+wSm/VYIqKIrKoiKj584maPw9bXt7A++8zgEjAEt9KC4epvu56OpYs0ZuInnKK0SUJMSwFQiqbaz2UlLsocboprXDR6tVHG1JiIijMS6AwTw9cEzJiMZsO8sMv2AUd+42ktNfrQaCjUQ8HHQ3Q0QTeZggHvr6YiDhwxOl3eyxExO67R0TrIyy2/e7WSLDaweLYd7dE6JfZBmZr99125I0q1bAehNSgfg/5IdR14D3o1a+AV+9CHvSBv0MfSQp0gL9dv7raoKtVn6Lzte7rWH4w1iiISoboVD0gRSVDdDrEpHXf0yE6Tb8PojYdoaYmvGvX0blqJZ0rVvYELktmBjHHHU/MyScTWTALxSKL5fcnAUt8q4bfP4DrlVdI+93vSDzvZ0aXI4Topqoau5s6etZxlTjd1LT6AIiOsDAzN4HC7lGu6SPisVu/w5mKmqYHjZ7RmRbwufWw4XPrl9elB5K9QcTv0e+BDv1g38Om6F3CTWb9ruxtX7Df43tr1NT9ru5g9ZURo+/AYoeIGD0URsSAPa77itf7QO19OzKx+0oCR/fbRzhtN1gEKivpXLmSjuXL6Vy+Aq2rC3NCAtELTiD2pJOImjsXxWYzukzDScAS38j9t79Rf9fdJJx/Pum3/dbocoQQ36K21dczpVjqdLOjoR1NA6tZYUpWXM8IV0FeAvGRffhDMBTQg1agU78HvfroWcin34M+CPv1UbK9o0x739bC+iiUGtKDkxqmJzT1/FzSQDHr4UtRuu+mfSNhJov+tsnaPVJm3+9u6x5Ri9RDkTUSbJF6qBpEI0sDger10rF8Oe0f/Y+OJUtQOzowx8cTe+qpxJ9xOvYJE4wu0TASsMTX6li2jKorryL66KPJfvJP+pZiIcSg4vEGKa1wdbeHcLOxupVg9/b9sWnRFOQlUtQduLITIg2uVgxmaiBA58qVeN59l46PP0ELBokYP574M04n9tRTh10rCAlY4qC6duyk4qc/xZqTQ96rf8UUNTyGvoUY6rqCYTZUtVJa4aa43MXaCjftfn06LzPOTmF+Yk/oGpMajelg67iE+Bbh1lY877+P55//omvzZpSICOJ+eCoJ55+PfezwaEwtAUt8RbCxEee5P4ZwmLw338Canm50SUKIPhJWNbbXt1G6tz1EuYvGdr0/UpzDSkFugh648hOYnBVHhEVGssV307VjJ+7XXsPz7rtofj9R8+aScMEFRB9zzNcf8zMESMASB9ACASouvIiu7dvJe+1V7BMnGl2SEKIfaZpGpctLidOtL5yvcFHWpO+ci7CYmDYivmdKcVZuAjF2WbMkDk3I7ab1zbdwv/46oYYGbCNHknzVVcR+75QhuQRFApY4QP199+P+61/JeuRhaccghACgucPffbyP3pNrS20bYVXDpMD49FiK8vXAVZSXSGqs3ehyxQCnBYO0Lf6Ilmefxb9rlx60rr6a2FMWDamgJQFL9PC8/z61v7yZxAsvIO3WW40uRwgxQHX6Q6yvaqW43EVphYu1Fa34gvpxNblJkRTk6lOKBXmJjEyOkmaU4qA0VaX9o//R/OSTetAaNYqUa64m5pRThsT/MxKwBAD+3bspP+dc7OPHk/vKy3IcghDikAXDKltr2yhxurpDlxtXp96kNCnKRsF+DVAnZcZiMQ/ddTfiu/ty0HJMm0barb8Z9GfdSsAShDs6cZ59NuG2NvLfeQdrWqrRJQkhBjFN09jT1NnTj6vk/7d392FRXnf6wO/DOwqCqKg4KhiJIigaRWKiCIoaNVUkNpJ1Gy3bGFNau7X9JW0TNW5jNbvRbTbJJluitbVqsc2LGiMKUVpJapQoRAKxQdQIYhB5l5eB4fv7g3GEMCAML8/A3J/r4rqYZ545c88hyDfnOc85V4pxrbhxAdR+TvaYMsrTVHBNGeWJfk5cAZwaC62yg4dwc8cO1N+8iQGPPgrvn62H4/DhWkezCAssGyciyP/3n6IiKQmjfv979A+drnUkIuqDbpTVGBc/LcaZKyX48kY5RAAHO4XAER6mFeenjR6IQW7OWsclDTXcvo2it99G8a7fA0phUGwsBj29BnbOveu/CxZYNq74D3/AN1u3wfvnP8OgH/xA6zhEZCPKqutw7uuSxsnzl0uQnlcKvXEj6/uG9G+cOD/aC9P9vKAb6Non5uRQx9Tl56Nw+w6Uf/ghnHx9MfzX/4F+ISFax2o3Flg2rObLL3H5u4/fXamd/4ARkUZq6w24kFdmulMx7UoxymsaF0AdNsCl2TyuccPczW9kTX3S7U8+QcHGTajLy4NnzAp4/+xnsHd31zrWPbHAslENNTW4vHw5DGVlGHPokM1tYUBE1q2hQfDPwoq763FdKUZBWQ0AwN3FAVNH3y24Juk8OraRNfU6ea0emQAAIABJREFUDVVVuPk/r6H4j3+Ew5AhGLZpI9znzNE6VptYYNmoO+tdjYyPh9usmVrHISJqk4ggr6S6cV/Fy42jXDmFlQAAJ3s7TNJ5IMTPCyG+AzF1tBc8XHkndF9UfeECCl7YgNqLF+HxWDSGPf887PpZ5x6aLLBsUOWpVFx76ikM/N73MOz5X2kdh4jIIsW39fjsaonpTsULeWWobxAoBYwb6t44wuXXuK/iMA8ugNpXSF0dbr7xBm793+/gNHo0fLa/AtfAQK1jtcACy8bUFxcjd+lSOHh6wvcvf4GdC//RIaK+oVpvQPq1UlPBde5qCW7rGxdA1Q10NW7x0zjKNdbbjfNOe7nbn57B9WefRX1xMbx/+lN4rV5lVXsbssCyISKCvB//GLf/9nf4/uUAXMaP1zoSEVG3qTc0ILugotl6XEWVjQugDuznaCq2pvl6IcjHA04O1vPHmdqnvqQEBRs2oDL5I/R/+GH4/OfLcBg0SOtYAFhg2ZSSv/wFNzZshPezz2JQ7Pe1jkNE1KNEBFduVZkmzZ+9Uowrt6oAAC6Odphs3Mg6xM8LD4waiP7OXAC1NxARlCYcwDdbt8Leywu6116Da5D2lwxZYNmIuuvXkfvod+AyaRJG7dppVcOoRERaKayoQdqVEtO+ilnXy9EggL2dwoThAxDi27iv4tTRXhji3rsWurQ11V98gbwf/RiG4mIM//V/wGPJEk3zsMCyASKCa2vXourMWYw5fBhOuhFaRyIiskqVtfU4d7XEuOJ8Mc5/XYpa4wKoYwb3b7Ye1+hB/TiPy8rU37qF/H//KarOnoXX6tXw/vnPoBy0GYlsq8Di2GgfUf7BEdz+298x9Je/YHFFRNQGN2cHhN0/BGH3DwEA6OsbkHm9zHRZ8dgX3+BAWh4AYIi7c+McLuOK8wHDB3ABVI05DBqEUbt24puX/xPFu3ej5uKXGLFjh9Wt9cgRrD6gvqQEuYsWw3HUSPju2wdlz8X4iIgs1dAgyLlZ2TiH63Ixzl4pQX5p40bWbs4OmDLq7jyuySM9uQCqhkrfeRc3XnwRjjodRsbH9/gAAy8R9nH5/+9ZlCcmwu+dv8Ll/vu1jkNE1Ofkl1Y37qlo3Ffx4jcVAABHe4WJIzxMlxSn+Q6EZz8njdPalqq0NFz7YRzsnJ0x8nf/B5eAgB57bxZYfVjl3/+Oa2uexuAf/hBD1v1Y6zhERDahrKoOn319d8X5z/NKUWdo/Ht6/1A3U8EV4ueFEZ6uGqft+2q/+gpfP7UGDRUV0L3xOvo/+GCPvC8LrD7KUHkbud/5Duz69YPfe+/Czon/10REpIWaOgMyjAugnrlSgnNXS1BZ27iRtY+HC0L8GhdAne7rBX9vN9hxHleXqysowLU1a1B75Sp8tm2Fx+LF3f6enOTeR9387/9G/Y0bGL1vL4srIiINuTjaI3TMIISOaVwA09Ag+PJGeeMcrqsl+MelWziYfh0A4OHqiGmjB5r2VZw4wpMLoHYBx+HDMfpPf8K1uDhc/9nPYSgqgteqVZrlYYHVS1VnfoGSffsw8F/+Bf2mTNE6DhERNWFvpxDo44FAHw+sftgPIoKvi6tw9kqJsegqxkdfFgIAnB0aF0C9M4dr6uiBcHfhRtaWsPfwwKidO3H92edgN8BD0yy8RNgLSUMDrv7LSuivXcN9iUdh7+6udSQiIuqgospapF25u5H1F9fLYWgQ2CkgwLgAaohxqx/vAdxTtiNEpEfWL+Mlwj6m7OAhVKenY/hvfsPiioiolxrs5oxHgobhkaBhAIDbtfU4//XdjawTzl7D7k+uAABGD+pnXIurcV/FMYP7cwHUNlhD33AEq5cxVFTg0sJFcBoxAqP37+N2OEREfVSdoQFfXC83LYCadrUExbcbN7Ie1N+p2YrzgT4D4GDPvwc9jSNYfUjR62/AcOsWhr75JosrIqI+zNG+cW7W5JGeeCpsDEQEl27eNm3xk3alBMe++AYA0M/JHg+MGohpvgMx3dcLk0d5op8T/8Rrib3fi9Tm5KB47154Ll8O14lBWschIqIepJTCWG83jPV2Q8z0UQCAG2U1SLt6d8X5Vz/6CiKAg51C4AgPTPdtvKQY4usFr/6827wn8RJhLyEi+Do2FjVfZOG+xKNw8PLSOhIREVmZ8po6fHa18U7FtCslSM8rhd64kfV9Q/pjup+XaV9F3UBXq5ir1JvxEmEfUHHsOKr+cRpDN7zA4oqIiMwa4OKIiHHeiBjnDaBxAdQL+WWNc7iulODI5wXYf+YaAGDoAOcmdyp6Ydwwd25k3YU4gtULNNTU4NKiRbB3HwC/d/4K5cC6mIiIOq6hQfDPwgrTJcWzV4pRUFYDAHB3ccDU0Xcnzk/SeXAj63vgCFYvV/zHPai/XgCfP2xjcUVERBazs1MYP2wAxg8bgO/N8IWIIL+0unGLn8slSLtSjJSLFwEATvZ2mKTzMK04P3W0FzxcuQBqe3EEy8rVl5Tg0vwF6Dd1Kka+9abWcYiIqI8rvq1HmnFZiDOXi5GZX4b6BoFSwLih7qZNrEN8B2K4h21vZM0RrF7s1lv/h4bbt+H9s/VaRyEiIhvg1d8J8wOHYX5g4wKo1XoDzl8rwdnLJUi7Wox3z+Vhz+mrAADdQFdM9zVuZO03EPcNcePEeSMWWFZMn5eH4n374BG9DM7+/lrHISIiG+TqZI+H7huMh+4bDACoNzQgu6DCtOL837+6iXfP5wMABvZzbCy2jPsqBo3wgKONLoDKAsuK3fztq1D29hjy4x9rHYWIiAgA4GBvh4k6D0zUeSB2ZuNG1lduVZlWnD97pRhJWY0LoLo42mHKyIGmS4pTRg2Em7NtlB628Sl7oeovvkD5Bx9g0Jo1cBw6VOs4REREZiml4De4P/wG98fjISMBAIXlNaa7FM9eKcbrJ75CgwD2dgoTTBtZNy6COsTdWeNP0D06NcldKfVfAL4DQA/gEoDvi0ip8blfAvg3AAYA60Tk2L3a4yT3RncWFa3N/hL3JR3nhs5ERNSrVdTUmTayPnO5GOnXSlFrXAB1zOD+pn0Vp/t5YZRXv14zj6s7J7knAfiliNQrpV4G8EsAzymlJgCIARAIwAdAslLqfhExdPL9bMLt1I8bFxX91S9ZXBERUa/n7uKIsPuHIOz+IQAAfX0DMq+XmdbjOp71DQ6k5QEAhrg7I6TJRtYBwwf0ygVQO1VgicjxJg9PA1hu/H4pgD+LSC2Ay0qpHADTAfyjM+9nC8RgQOH27XAcORIDY2K0jkNERNTlnBzs8MCogXhg1EA8PbtxAdScm5WNlxSNRdeHF24AANycHfDA6IEIGd14SXHKKM9esQBqV87BigWQYPx+BBoLrjvyjMdaUEqtAbAGAEaNGtWFcXqn8qOJqP3yS/i88gqUEzfmJCKivs/OTuH+oe64f6g7VoaOBgDkl1YjzTiH6+zlEmxP+icAwNFeYeIID9MI1zTfgfDsZ31/L+85B0splQxgmJmnnheRg8ZzngcwDUC0iIhS6g0A/xCRPxmf3wngQxF5p633svU5WGIwIPc7S6Ds7eF38H0oO9u8tZWIiOjbSqv0+OxqCc4Y91X8PK8UdYbGGub+oW5391X088IIz55ZALVTc7BEJPIeja8C8CiAuXK3WssDMLLJaToA19sX13aVf3gU+txcjPjtb1lcERERNeHZzwlzA4ZibkDjnfU1dQZkXCs13qlYgkPp17H3068BAD4eLlj1kC+enn2fZnk7dYlQKfUIgOcAzBaRqiZPHQKwTym1A42T3P0BnOnMe/V1YjCg6H//F8733w/3+fO0jkNERGTVXBztETpmEELHDAIAGBoEX94oN83hcnXSdp5WZ+dgvQ7AGUCS8ZbK0yKyVkS+UEodAJAFoB5AHO8gbFv5hx9Cf/kyRrz6KkeviIiIOsjeTiHQxwOBPh5Y/bCf1nE6fRfh2Dae2wJgS2fatxViMKDojf+F87hxcJ/X5hVZIiIi6gU4VGIFyo8cgf7KFQyO+yFHr4iIiPoA/jXXmNTXo+h/34Tz+PFwj+ToFRERUV/AAktjHL0iIiLqe/gXXUOm0auAAI5eERER9SEssDRUfvQo9FevYkjcD3vNxpZERER0byywNCIiuBX/Npz9x8Jtzhyt4xAREVEXYoGlkdt//ztq//lPeP3bv3HuFRERUR/Dv+wauRX/NhyGD4fH4sVaRyEiIqIuxgJLA9Xp6ahKS8Og1augHB21jkNERERdjAWWBorefht2Hh7wXL5c6yhERETUDVhg9bDaS5dQmfwRvFb+C+z699c6DhEREXUDFlg97NbOXVAuLhj4r/+qdRQiIiLqJiywelDdjRsoO3wYntHRcPDy0joOERERdRMWWD2o+A9/BBoa4BX7fa2jEBERUTdigdVDDGVlKE1IwIBHHoGTTqd1HCIiIupGLLB6SEnCATRUVWHQD/5N6yhERETUzVhg9QCpq0PJvn3o9+CDcAkI0DoOERERdTMWWD2g4qOPUH/jBrye/J7WUYiIiKgHsMDqAcV7/gRHnQ5us2drHYWIiIh6AAusblb9xReo/uwzDPzXlVD29lrHISIioh7AAqublez5E1S/fvCMjtY6ChEREfUQFljdqP7WLZQfOQLPqCjYDxigdRwiIiLqISywulFJQgKkro7b4hAREdkYFljdRPR6lO7/M/rPmgXnMX5axyEiIqIexAKrm5QfO476mzfh9T2OXhEREdkaFljdpPhPe+Dk64v+M2dqHYWIiIh6mIPWAfqi6owM1GR8jqEvvABlxxqWiDqnrq4OeXl5qKmp0ToKkU1ycXGBTqeDo6Nju1/DAqsblOzbBzs3N3hERWkdhYj6gLy8PLi7u8PX1xdKKa3jENkUEcGtW7eQl5cHP7/2z6nm8EoXM5SWovxoIjyWLIG9W3+t4xBRH1BTU4NBgwaxuCLSgFIKgwYN6vAIMgusLlZ28CBEr4fnise1jkJEfQiLKyLtWPL7xwKrC4kIShIOwDU4GC7jxmkdh4iIiDTCAqsLVaelQZ+bC88VK7SOQkRERBpigdWFShIOwM7dHQMWPqJ1FCIiItIQC6wuUl9Sgopjx+CxZAnsXF21jkNEpKnq6mrMnj0bBoPB7PN6vR5hYWGor6/v0VyxsbHw9vZGUFBQs+OJiYkYN24cxo4di23btlncfk1NDaZPn47g4GAEBgZi06ZNnY1MvRQLrC5S9v5BSF0dJ7cTEQHYtWsXoqOjYW9vb/Z5JycnzJ07FwkJCT2aa/Xq1UhMTGx2zGAwIC4uDkePHkVWVhb279+PrKwsi9p3dnbGiRMnkJGRgfT0dCQmJuL06dNdEZ16GRZYXUBEUHrgAFynTIHL/fdrHYeIqFvExMRgxYoVCA0NxejRo3HkyJFWz927dy+WLl1qehwREYGkpCQAwAsvvIB169YhKioKe/fu7fbcTYWFhcHLy6vZsTNnzmDs2LEYM2YMnJycEBMTg4MHD1rUvlIKbm5uABoXiK2rqzPdgWauD6jv4kKjXaDqzFnoL1/G8G1btY5CRH3c5sNfIOt6eZe2OcFnADZ9J/Ce52VkZCAqKgoJCQlITU3F+vXrsXjx4hbn6fV65ObmwtfX13Rs8+bN2LhxIwoLC3H+/HkcOnQIAHD27NkWr581axYqKipaHH/llVcQGRnZgU/WPvn5+Rg5cqTpsU6nw6effmpxewaDAVOnTkVOTg7i4uIQGhoKoPU+oL6JBVYXKE1IgN2AARjwCCe3E1HfVF1djaKiItOcogkTJqCkpAS5ubnYsmULysrK8Ne//hUAUFRUBE9Pz2avDwsLg4hgx44dSElJMV06dHJyQkVFBdzd3U3nnjp1qsP5IiMjcePGjRbHt2zZ0mwkzRwRaXHM3LpH7X0Pe3t7pKeno7S0FMuWLUNmZiaCgoJa7QPqm1hgdVJ9cTHKk5IwMCYGdi4uWschoj6uPSNN3SEzMxP+/v5wMf47d+7cOQQHB2PMmDHYuXMnli9fbjrX1dW1xarXFy5cQEFBAQYPHtysmKqtrTW1eYclI1jJyckWfzadTodr166ZHufl5cHHx6fT7+Hp6Ynw8HAkJiYiKCio1T6gvolzsDqp7L33gbo6DOTkdiLqwzIyMvD111+jpqYGt2/fxqZNm/DTn/7U7LkDBw6EwWAwFVkFBQVYuXIlDh48iP79++PYsWMAgFu3bmHIkCEtNtA9deoU0tPTW3x1x+VBAAgJCcFXX32Fy5cvQ6/X489//jOWLFliUVs3b95EaWkpgMZRv+TkZIwfP77VPqC+iwVWJ4gISt95B65TpsB57Fit4xARdZuMjAysXLkS4eHhCAkJwTPPPIOHH3641fPnz5+P1NRUVFVVITo6Gtu3b0dAQAA2bNiAF198EQBw8uRJLFq0qIc+QaMnnngCM2bMwMWLF6HT6bBz5044ODjg9ddfx4IFCxAQEIDHH38cgYGWjRQWFBQgIiICkyZNQkhICObNm4c5c+a02gfUdylz1561Mm3aNElLS9M6RrtVZ2TgyooYDH/p1/BsMjxORNSVsrOzERAQoGmGsLAwxMfHY9y3tgG7desWnn/+eSQlJeEHP/gBfvnLXwIAzp8/jx07dmDPnj2tthkdHY2tW7e2aJPIGpn7PVRKfSYi08ydzzlYnVD63ntQLi5w5+R2IurjLl26BH9//xbHBw0ahLfeeqvF8SlTpiAiIgIGg8HsZG69Xo+oqCgWV9RnscCyUENtLco/PAr3efNgb1zzhIior8rPz+/wa2JjY1t9zsnJCU8++WRnIhFZNc7BslDliRNoKC+H57IoraMQERGRlWGBZaHS996Dw/Dh6GdcQI6IiIjoDhZYFqj7phC3Uz+Gx5IlUFwojoiIiL6FBZYFyj84DDQ0wCOq7dWBiYiIyDZ1qsBSSv1aKfW5UipdKXVcKeVjPK6UUv+jlMoxPv9A18TVnoig9L33Gte+8vPTOg4RERFZoc6OYP2XiEwSkckAPgCw0Xh8IQB/49caAG928n2sRk1mJvQ5l+DBye1ERETUik4VWCLSdEv3/gDurFq6FMAfpdFpAJ5KqeGdeS9rUfbee1DOzhiwcKHWUYiIiMhKdXodLKXUFgBPAigDEGE8PALAtSan5RmPFZh5/Ro0jnJh1KhRnY3TrRr0epQd+RDukZGw50adRERE1Ip7jmAppZKVUplmvpYCgIg8LyIjAewF8KM7LzPTlNk9eUTkdyIyTUSmDRkyxNLP0SMqT5xEQ1kZPJYt0zoKERFRM++//z6eeuopLF26FMePH9c6js27Z4ElIpEiEmTm6+C3Tt0H4DHj93kARjZ5TgfgetdE1k7Ze+/BYehQ9J/xoNZRiIisWnV1NWbPng2DwWD2eb1ej7CwMNTX1/dortjYWHh7eyMoKKjZ8cTERIwbNw5jx47Ftm3bLG6/pqYG06dPR3BwMAIDA7Fp06bORm63qKgoxMfHY/fu3UhISOix9yXzOnsXYdONqZYA+NL4/SEATxrvJnwQQJmItLg82JvUl5Sg8uOP4fGdR7n2FRHRPezatQvR0dFm9yEEGrfKmTt3bo8XAqtXr0ZiYmKzYwaDAXFxcTh69CiysrKwf/9+ZGVlWdS+s7MzTpw4gYyMDKSnpyMxMRGnT5/uUBspKSlYvXq1Re8PAC+99BLi4uIsfj11jc7eRbjNeLnwcwDzAfzEePxDALkAcgDEA/hhJ99HcxXHjgH19Rjw6KNaRyEi0kRMTAxWrFiB0NBQjB49GkeOHGn13L1792Lp0rtrBUZERCApKQkA8MILL2DdunWIiorC3r17uz13U2FhYfDy8mp27MyZMxg7dizGjBkDJycnxMTE4ODBb1+kaR+lFNyM+9PW1dWhrq4OSjXOmjHXB5ZorR0RwXPPPYeFCxfigQf6zOpIvVanJrmLyGOtHBcAfap8LvvgAzjddx+cufM7EdmojIwMREVFISEhAampqVi/fj0WL17c4jy9Xo/c3Fz4+vqajm3evBkbN25EYWEhzp8/j0OHDgEAzp492+L1s2bNQkVFRYvjr7zyCiIjI7vuAxnl5+dj5Mi7s1p0Oh0+/fRTi9szGAyYOnUqcnJyEBcXh1Djlmqt9UFHtdbOa6+9huTkZJSVlSEnJwdr1661+DNQ53X6LkJbUFdQgOq0zzDkJ+tM/ydCRKSJo78Ablzo2jaHTQQWtj3vqLq6GkVFRaY5RRMmTEBJSYnZc4uKiuDp6dnsWFhYGEQEO3bsQEpKiunSoZOTEyoqKuDe5M7sU6dOdfgjREZG4saNGy2Ob9mypdlImjmNYwLNmfu3vr3vYW9vj/T0dJSWlmLZsmXIzMxEUFBQq31wR2hoKGpra1FZWYni4mJMnjwZAPDyyy9jwYIFpvNaa2fdunUWj4pR12OB1Q7lH34IABiwaJHGSYiItJGZmQl/f3+4uLgAAM6dO4fg4GC8//77OHLkCAoLCxEXF4f58+fD1dUVNTU1zV5/4cIFFBQUYPDgwc2KqdraWlObd1gygpWcnGzxZ9PpdLh27e7KQnl5efDx8en0e3h6eiI8PByJiYkICgpqtQ/uuDNqlpKSgt27d2P37t1m271XO2QlRMRqvqZOnSrW6NKyZZL73ce1jkFENiorK0vrCBIfHy8jRoyQ6upqqayslIceekhSU1NNzxcXF0tsbKzpsU6nk+rqahERuX79ukycOFGysrIkMjJSEhMTRUSkqKhIxo8f37MfREQuX74sgYGBpsd1dXXi5+cnubm5UltbK5MmTZLMzEyL2i4sLJSSkhIREamqqpKZM2fK4cOHW+0Dc06ePCmrVq0y+1xH2qGuZe73EECatFLTcLPne6jNzUVtVjY8FnP0iohsV0ZGBlauXInw8HCEhITgmWeewcMPP2x6/tt3rs2fPx+pqamoqqpCdHQ0tm/fjoCAAGzYsAEvvvgiAODkyZNY1MNXBp544gnMmDEDFy9ehE6nw86dO+Hg4IDXX38dCxYsQEBAAB5//HEEBgZa1H5BQQEiIiIwadIkhISEYN68eZgzZ06rfdARbfUlWR8lZq49a2XatGmSlpamdYxmbv7Payh6802M/VsKHL29tY5DRDYoOzsbAQEBmmYICwtDfHw8xn3rRh8RwS9+8QvMmzev2eW78+fPY8eOHdizZ0+rbUZHR2Pr1q0t2iSyRuZ+D5VSn4nINHPncw5WG0QEZUc+QL/QUBZXRGTTLl26BH9//xbHW7tzbcqUKYiIiIDBYDC7FpZer0dUVBSLK+qzOILVhuoLmbjy3e9i+Eu/hufy5VrHISIbZQ0jWES2rqMjWJyD1YbyI0cAR0e4z5undRQiIiLqRVhgtUIMBpR/+CHcZs2CvYeH1nGIiIioF2GB1YqqtM9QX1gIj0dbrlJMRERE1BYWWK0o/+ADqH794BYRoXUUIiIi6mVYYJkhdXWoOH4c7nPmwM7VVes4RERE1MuwwDLj9qdnYCgrw4BFC7WOQkRERL0QCywzKo4dg12/fujfZJViIiIiovZigfUtUl+PiuRkuIWHw87ZWes4RERE1AuxwPqWqrTPYCgpgfuCBVpHISIiol6KBda3VBw/BuXqCrewWVpHISIiarf3338fTz31FJYuXYrjx49rHaeZ7OxsrF27FsuXL8ebb76pdZwewQKrCTEYUJ6UBLdZs3j3IBFRJ1RXV2P27NkwGAxmn9fr9QgLC0N9fX2P5oqNjYW3tzeCgoKaHU9MTMS4ceMwduxYbNu2zeL2a2pqMH36dAQHByMwMBCbNm3qbOR2i4qKQnx8PHbv3o2EhASL22lPX/j6+mLixImYPHkypk0zu1NMMwEBAXjrrbdw4MABWNOWeN2JBVYT1efPw3CzCO4L5msdhYioV9u1axeio6PNbvQMAE5OTpg7d26nCgFLrF69GomJic2OGQwGxMXF4ejRo8jKysL+/fuRlZVlUfvOzs44ceIEMjIykJ6ejsTERJw+fbpDbaSkpGD16tUWvT8AvPTSS4iLi7Oo/Y70xcmTJ5Gent7ugunQoUOYOXMm5s6d267zezsWWE2UHz8O5eQEt9nhWkchIrI6MTExWLFiBUJDQzF69GgcOXKk1XP37t2LpUuXmh5HREQgKSkJAPDCCy9g3bp1iIqKwt69e7s9d1NhYWHw8vJqduzMmTMYO3YsxowZAycnJ8TExODgwYMWta+UgpubGwCgrq4OdXV1UEoBMN8HlmitHRHBc889h4ULF+KBBx6wqO2u6IvW8i1ZsgSffPJJj//MteKgdQBrIQ0NqDiehP6zZsHerb/WcYiIrE5GRgaioqKQkJCA1NRUrF+/HosXt9xOTK/XIzc3F76+vqZjmzdvxsaNG1FYWIjz58/j0KFDAICzZ8+2eP2sWbNQUVHR4vgrr7yCyMjIrvtARvn5+Rg5cqTpsU6nw6effmpxewaDAVOnTkVOTg7i4uIQGhoKoPU+6KjW2nnttdeQnJyMsrIy5OTkYO3atR1uu719oZTC/PnzoZTC008/jTVr1rSZLyUlBe+++y5qa2uxaNEiCz5178MCy6jm889Rf+MGBvz037WOQkTUqpfPvIwvi7/s0jbHe43Hc9Ofa/Oc6upqFBUVmeYUTZgwASUlJWbPLSoqgqenZ7NjYWFhEBHs2LEDKSkppkuHTk5OqKiogLu7u+ncU6dOdfgzREZG4saNGy2Ob9mypdlImjki0uLYnVEnS97D3t4e6enpKC0txbJly5CZmYmgoKBW++CO0NBQ1NbWorKyEsXFxZg8eTIA4OWXX8aCJne2t9bOunXr2hwVa0/77e2Ljz/+GD4+PigsLMS8efMwfvx4hIWFtZovPDwc4eHhrWbri1hgGZUfOw44OnLvQSIiMzIzM+Hv7w8XFxcAwLlz5xAcHIzs7Gy8+uqrKCoqwty5c/HMM8/A1dUVNTU1zV5/4cIFFBQUYPDgwc2KqdraWlObd1jVHVqWAAAQQUlEQVQygpWcnGzxZ9PpdLh27ZrpcV5eHnx8fDr9Hp6enggPD0diYiKCgoJa7YM77owUpaSkYPfu3di9e7fZdu/VTmva0357++LOMW9vbyxbtgxnzpwxFViW5utzRMRqvqZOnSpaaGhokK/mzJWra9Zo8v5ERG3JysrSOoLEx8fLiBEjpLq6WiorK+Whhx6S1NRU0/MGg0FiY2NNj3U6nVRXV4uIyPXr12XixImSlZUlkZGRkpiYKCIiRUVFMn78+J79ICJy+fJlCQwMND2uq6sTPz8/yc3NldraWpk0aZJkZmZa1HZhYaGUlJSIiEhVVZXMnDlTDh8+3GofmHPy5ElZtWqV2ec60o4l7benLyorK6W8vNz0/YwZM+To0aNdls9amfs9BJAmrdQ0nOQOoOaLLNTl52PAfC4uSkRkTkZGBlauXInw8HCEhITgmWeewcPG7cTM3R02f/58pKamoqqqCtHR0di+fTsCAgKwYcMGvPjiiwAa70Lr6fk4TzzxBGbMmIGLFy9Cp9Nh586dcHBwwOuvv44FCxYgICAAjz/+OAIDAy1qv6CgABEREZg0aRJCQkIwb948zJkzp9U+6Ii2+rKrtNUXixYtwvXr1/HNN99g5syZCA4OxvTp07F48WI88sgjPZKvN1Fi5nqrVqZNmyZarI9RuH0Hbv3+97g/9RTsvzVvgIhIa9nZ2QgICNA0Q1hYGOLj4zFu3LhWz1m8eLHpzsLz589jx44d2LNnT6vnR0dHY+vWrW22SWQtzP0eKqU+ExGzC4HZ/BwsEUH58WPoP306iysiolZcunQJ/v7+LY63dnfYlClTEBERAYPBYHYtLL1ej6ioKBZX1GfZfIFV+9VXqLv6NQZ9P1brKEREVis/P9/s8bbuDouNbf3fVScnJzz55JNdEY3IKtn8HKzKEycBgHcPEhERUZex+QKr4sQJuEyaBMeh3lpHISIioj7Cpgusum8KUfP553Cfw9ErIiIi6jo2XWBVpqQAANzmzNE2CBEREfUpNl1gVZz4CI46HZzN3BlDREREZCmbLbAabt9G1T9Ow33uHLP7LBERERFZymYLrMqPP4bo9XCL4OVBIiIi6lq2W2CdOAk7Dw/0m/qA1lGIiIioj7HJAkvq61GZkgK3sDAoR0et4xAREXXa+++/j6eeegpLly7F8ePHtY7TTHZ2NtauXYvly5fjzTff1DqOWbdv38bUqVPxwQcfdEl7NllgVaenw1BaCve5vDxIRNQdqqurMXv2bBgMBrPP6/V6hIWFob6+vkdzxcbGwtvbG0FBQc2OJyYmYty4cRg7diy2bdtmcfs1NTWYPn06goODERgYiE2bNnU2crtFRUUhPj4eu3fvRkJCgsXttKcvfH19MXHiREyePBnTppndiq+ZgIAAvPXWWzhw4AA6s+dwe7Jdu3YNERERCAgIQGBgIF599dV2tf3yyy/j8ccftzjbt9lkgVXx0QnA0RH9Z87UOgoRUZ+0a9cuREdHm92HEGjcKmfu3LmdKgQssXr1aiQmJjY7ZjAYEBcXh6NHjyIrKwv79+9HVlaWRe07OzvjxIkTyMjIQHp6OhITE3H69OkOtZGSkoLVq1db9P4A8NJLLyEuLs6i9jvSFydPnkR6enq7C6ZDhw5h5syZmDt3brvOtzSbg4MDtm/fjuzsbJw+fRpvvPHGPX+eycnJmDBhAoYOHWpRNnNsrsASEVSc+Aj9Q0Nh7+amdRwiol4jJiYGK1asQGhoKEaPHo0jR460eu7evXuxdOlS0+OIiAgkJSUBAF544QWsW7cOUVFR2Lt3b7fnbiosLAxeXl7Njp05cwZjx47FmDFj4OTkhJiYGBw8eNCi9pVScDP+bamrq0NdXZ3pTnVzfWCJ1toRETz33HNYuHAhHnjAsvnFXdEXreVbsmQJPvnkE4t/5u3NNnz4cNPnd3d3R0BAgGkvzdaynTx5EqdPn8a+ffsQHx+PhoYGizI2ZXObPetzc1F39Wt4rVqldRQiol4lIyMDUVFRSEhIQGpqKtavX4/Fixe3OE+v1yM3Nxe+vr6mY5s3b8bGjRtRWFiI8+fP49ChQwCAs2fPtnj9rFmzUFFR0eL4K6+8gsjIyK77QEb5+fkYOXKk6bFOp8Onn35qcXsGgwFTp05FTk4O4uLiEBoaCqD1Puio1tp57bXXkJycjLKyMuTk5GDt2rUdbru9faGUwvz586GUwtNPP401a9a0mS8lJQXvvvsuamtrsWjRIgs+tWU/pytXruD8+fP3/Bls2bIFALB7924MHjwYdnadH3+yuQKr4sQJAIA7V28nol7oxm9+g9rsL7u0TeeA8Rj2q1+1eU51dTWKiopMc4omTJiAkpISs+cWFRXB09Oz2bGwsDCICHbs2IGUlBTTpUMnJydUVFTA3d3ddO6pU6c6/BkiIyNx48aNFse3bNnSbCTNHBFpcczc+ojtfQ97e3ukp6ejtLQUy5YtQ2ZmJoKCglrtgztCQ0NRW1uLyspKFBcXY/LkyQAa5wYtWLDAdF5r7axbt67NUbH2tN/evvj444/h4+ODwsJCzJs3D+PHj0dYWFir+cLDwxEeHt5qtvb0bXuz3VFZWYnHHnsMv/3tbzFgwIBWszXVmUuz32ZzBVblRyfgMmECHIcN0zoKEVGvkZmZCX9/f7i4uAAAzp07h+DgYACNd1+FhYVh8+bNePTRR+Hq6oqamppmr79w4QIKCgowePDgZsVUbW2tqc07LBnBSk5Otviz6XQ6XLt2zfQ4Ly8PPj4+nX4PT09PhIeHIzExEUFBQa32wR13RmNSUlKwe/du7N6922y792qnNe1pv719ceeYt7c3li1bhjNnzpgKLEvytadv25sNaLw8+9hjj2HlypWIjo42Hbe07ywiIlbzNXXqVOlOdTdvStb4ACl8/fVufR8ioq6UlZWldQSJj4+XESNGSHV1tVRWVspDDz0kqampIiKyYcMG2bZtmxw+fNh0vk6nk+rqahERuX79ukycOFGysrIkMjJSEhMTRUSkqKhIxo8f3+Of5fLlyxIYGGh6XFdXJ35+fpKbmyu1tbUyadIkyczMtKjtwsJCKSkpERGRqqoqmTlzphw+fLjVPjDn5MmTsmrVKrPPdaQdS9pvT19UVlZKeXm56fsZM2bI0aNHuyxfa9r7c2poaJDvfe978pOf/KTZ8c5mM/d7CCBNWqlpNC+qmn51d4FV889/ypVVq6U6O7tb34eIqCtZQ4H1ox/9SJ599lkJDQ2VgIAA2bNnj4iIJCUlyf79++X3v/99swIrNjZWkpKS5Pbt2/Lggw/K8ePHRUTkb3/7mzz44IMiIvKXv/xF1q9f36OfIyYmRoYNGyYODg4yYsQIefvtt0VE5MiRI+Lv7y9jxoyRl156yeL2MzIyZPLkyTJx4kQJDAyUzZs3t9kH5rRWAHW0nY62f0drfbFw4ULJz8+XS5cuyaRJk2TSpEkyYcIE0zldla8tbf2c7uQ7deqUAJCJEydKcHCwBAcHy5EjRzqdraMFlhIz1zS1Mm3aNOnM+hhERH1RdnY2AgICNM0QFhaG+Ph4jBs3rtnx559/Hrdv30ZWVhZcXV3x3nvvwc7ODufPn8eOHTuwZ8+eVtuMjo7G1q1bW7RJZI3M/R4qpT4TEbMLgdncHCwiIuq4S5cuwd/fv8Xx1u6+mjJlCiIiImAwGMyuhaXX6xEVFcXiivosjmAREVk5axjBIrJ1HR3B6pKFRpVSP1dKiVJqsPGxUkr9j1IqRyn1uVKKOyoTERGRzeh0gaWUGglgHoCvmxxeCMDf+LUGgHXu7EhERETUDbpiBOu/ATwLoOm1xqUA/micZH8agKdSangXvBcRERGR1etUgaWUWgIgX0QyvvXUCADXmjzOMx4z18YapVSaUirt5s2bnYlDREREZBXueRehUioZgLllz58H8CsA8829zMwxs7PpReR3AH4HNE5yv1ceIiJbJCJtbgtCRN3HkhsC71lgiYjZfQmUUhMB+AHIMP7S6wCcU0pNR+OI1cgmp+sAXO9wOiIigouLC27duoVBgwaxyCLqYSKCW7dutdjS6V4sXgdLRC4A8L7zWCl1BcA0ESlSSh0C8COl1J8BhAIoE5ECS9+LiMiW6XQ65OXlgdMoiLTh4uICnU7Xodd010KjHwJYBCAHQBWA73fT+xAR9XmOjo7w8/PTOgYRdUCXFVgi4tvkewEQ11VtExEREfUmXbLQKBERERHdxQKLiIiIqItZ1V6ESqmbAK5qnUMDgwEUaR3CirF/7o191Db2z72xj9rG/rk3W+yj0SIyxNwTVlVg2SqlVFprm0US+6c92EdtY//cG/uobeyfe2MfNcdLhERERERdjAUWERERURdjgWUdfqd1ACvH/rk39lHb2D/3xj5qG/vn3thHTXAOFhEREVEX4wgWERERURdjgWUllFK/Vkp9rpRKV0odV0r5aJ3Jmiil/ksp9aWxj95TSnlqncmaKKW+q5T6QinVoJTiXTxNKKUeUUpdVErlKKV+oXUea6OU2qWUKlRKZWqdxRoppUYqpU4qpbKNv2M/0TqTNVFKuSilziilMoz9s1nrTNaClwithFJqgIiUG79fB2CCiKzVOJbVUErNB3BCROqVUi8DgIg8p3Esq6GUCgDQAOD/APxcRNI0jmQVlFL2AP4JYB6APABnATwhIlmaBrMiSqkwAJUA/igiQVrnsTZKqeEAhovIOaWUO4DPAETxv6FGSikFoL+IVCqlHAGkAviJiJzWOJrmOIJlJe4UV0b9AbDybUJEjotIvfHhaQAd29a8jxORbBG5qHUOKzQdQI6I5IqIHsCfASzVOJNVEZG/AyjWOoe1EpECETln/L4CQDaAEdqmsh7SqNL40NH4xb9fYIFlVZRSW5RS1wCsBLBR6zxWLBbAUa1DUK8wAsC1Jo/zwD+OZCGllC+AKQA+1TaJdVFK2Sul0gEUAkgSEfYPWGD1KKVUslIq08zXUgAQkedFZCSAvQB+pG3annev/jGe8zyAejT2kU1pT/9QC8rMMf7fNXWYUsoNwDsA/v1bVxxsnogYRGQyGq8sTFdK8VIzAAetA9gSEYls56n7ABwBsKkb41ide/WPUmoVgEcBzBUbnDzYgf9+6K48ACObPNYBuK5RFuqljHOL3gGwV0Te1TqPtRKRUqVUCoBHANj8TRMcwbISSin/Jg+XAPhSqyzWSCn1CIDnACwRkSqt81CvcRaAv1LKTynlBCAGwCGNM1EvYpzEvRNAtojs0DqPtVFKDblzV7dSyhVAJPj3CwDvIrQaSql3AIxD451gVwGsFZF8bVNZD6VUDgBnALeMh07zLsu7lFLLALwGYAiAUgDpIrJA21TWQSm1CMBvAdgD2CUiWzSOZFWUUvsBhAMYDOAbAJtEZKemoayIUmomgFMALqDx32cA+JWIfKhdKuuhlJoE4A9o/P2yA3BARP5D21TWgQUWERERURfjJUIiIiKiLsYCi4iIiKiLscAiIiIi6mIssIiIiIi6GAssIiIioi7GAouIiIioi7HAIiIiIupiLLCIiIiIutj/B+2zdvdpG288AAAAAElFTkSuQmCC\n", + "text/plain": [ + "<Figure size 720x432 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "x = np.linspace(-3.5,3.5,100)\n", + "y1 = -10-3*x\n", + "y2 = -10-3*x+x**2\n", + "y3 = -10-3*x+x**2+0.5*x**3\n", + "y4 = -10-3*x+x**2+0.5*x**3-0.2*x**4\n", + "fig = plt.figure(1, figsize=(10, 6))\n", + "plt.plot(x,y1, label=\"$p_1(x) = -10-3x$\")\n", + "plt.plot(x,y2, label=\"$p_2(x) = -10-3x+x^2$\")\n", + "plt.plot(x,y3, label=\"$p_3(x) = -10-3x+x^2+0.5x^3$\")\n", + "plt.plot(x,y4, label=\"$p_4(x) = -10-3x+x^2+0.5x^3-0.2x^4$\")\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Ainsi nous allons pouvoir formuler à partir d'un jeu de données (X,y) des hypothèses de la forme suivante :\n", + "- si X n'est composé que d'une seule variable explicative (régression univariée), l'hypothèse à base d'un polynome de degré $k$ s'écrit de la manière suivante :\n", + "$$\n", + "h(X) = \\theta_0 + \\Theta_1 X_1 + \\Theta_2 X_1^2 + \\Theta_3 X_1^3 + \\dots = \\theta_0 + \\sum_{j=1}^k \\theta_j X_1^j\n", + "$$\n", + "- si X est composé de plusieurs variables explicatives (régression multivariée), par exemple ici 2, l'hypothèse à base d'un polynome de degré $k$ s'écrit de la manière suivante :\n", + "$$\n", + "h(X) = \\theta_0 + \\sum_{j=1}^k \\left( \\theta_{1,j} X_1^j + \\theta_{2,j} X_2^j \\right)\n", + "$$\n", + "\n", + "En pratique, les calculs (minimisation de critères de moindres carrés, méthode de descente, ...) s'opèrent de la même manière que dans le cas de la régression linéaire univariée ou multivariée (qui correspond au cas $k=1$). La généralisation des formules vues dans le cas linéaire est sans difficulté. Elles ne sont pas reprises ici et font l'objet d'un exercice de TP.\n", + "\n", + "Dans les implémentations qui suivent, nous ne développons donc pas ces formules de calcul mais nous nous intéressons à l'usage de fonctions de calcul implémentées dans la bibliothèse `scikit-learn` ou `sklearn` spécialisée pour le maching learning. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Mise en oeuvre avec `scikit-learn`\n", + "\n", + "Pour comprendre l'intérêt d'une régression polynomiale, nous commençons par générer un jeu de données basée sur l'utilisation d'un polynome dans lequel on introduit du \"bruit\" aléatoire." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "np.random.seed(0)\n", + "x = 2 - 3 * np.random.normal(0, 1, 20)\n", + "y = x - 2 * (x ** 2) + 0.5 * (x ** 3) + np.random.normal(-3, 3, 20)\n", + "plt.scatter(x,y, s=10) # s pour size/taille des points\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nous implémentons ci-dessous un calcul de régression linéaire sur le jeu de données précédent, en utilisant la bibliothèque *scikit-learn* appelée `sklearn`." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x.shape : (20,)\n", + "x.shape : (20, 1)\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "rmse = 15.908242501429998 , r2 = 0.6386750054827146\n" + ] + } + ], + "source": [ + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import mean_squared_error, r2_score\n", + "\n", + "np.random.seed(0)\n", + "x = 2 - 3 * np.random.normal(0, 1, 20)\n", + "y = x - 2 * (x ** 2) + 0.5 * (x ** 3) + np.random.normal(-3, 3, 20)\n", + "print(\"x.shape : \",x.shape) # sert à comprendre la transformation à effectuer\n", + "\n", + "# transformation des vecteurs 1D de format (n,) en une matrice 2D de n lignes et 1 colonne, de format (n,1)\n", + "x = x[:, np.newaxis]\n", + "y = y[:, np.newaxis]\n", + "print(\"x.shape : \",x.shape) # sert à comprendre la transformation effectuée\n", + "\n", + "model = LinearRegression()\n", + "model.fit(x, y)\n", + "y_pred = model.predict(x)\n", + "\n", + "plt.scatter(x, y, s=10)\n", + "plt.plot(x, y_pred, color='r')\n", + "plt.show()\n", + "\n", + "rmse = np.sqrt(mean_squared_error(y,y_pred))\n", + "r2 = r2_score(y,y_pred)\n", + "print(\"rmse =\", rmse, \", r2 =\", r2)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Le programme se termine par le calcul de 2 indicateurs : \n", + "- `rmse` - Root of Mean Squared Error - correspond la distance entre les valeurs prédites, $\\{h(x_i), 0 \\leq i \\leq n\\}$ et les valeurs des données $\\{y_i, 0 \\leq i \\leq n\\}$, c'est à dire \n", + "$$\n", + "\\sqrt{\\frac{1}{n}\\sum_{i=1}^{n}(h(x_i)-y_i)^2} \n", + "$$\n", + "Cet indicateur mesure ainsi la proximité de la courbe de régression (de l'hypothèse) avec les données. Sa valeur numérique dépend de l'ordre de grandeur des données. Il permet donc de comparer deux ou plusieurs hypothèses.\n", + "- `r2` ou `r2_score`, appelé *coefficient de détermination* va permettre d'évaluer la qualité de la prédiction :\n", + "$$\n", + "1-\\frac{\\sum_{i=1}^n (h(x_i)-y_i)^2}{\\sum_{i=1}^n (\\overline{y}-y_i)^2}\n", + "$$\n", + "avec $\\overline{y} = \\frac{1}{n}\\sum_{i=1}^n y_i$.\n", + "Sa valeur numérique est comprise entre 0 et 1. Si il vaut 1, la régression est parfaite par rapport au jeu de données. Si il vaut 0, la régression n'est pas du tout pertinente pour le jeu de données." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Nous allons maintenant passer à une hypothèse basée sur une régression basée sur un polynome d'ordre k :\n", + "$$\n", + "h(x) = \\theta_0 + \\sum_{j=1}^k \\theta_j x^j\n", + "$$\n", + "Cette expression reste linéaire par rapport aux coefficients à calculer, $\\theta_j$. \n", + "\n", + "La manière de traiter le problème avec la bibliothèque `sklearn`est la suivante.\n", + "\n", + "Pour simplifier l'explication, nous allons nous placer dans le cas d'un jeu de données de la forme $(x_i, y_i)$ avec la recherche d'un modèle/hypothèse univarié de regression polynomiale de degré 3 :\n", + "$$\n", + "h(x) = \\theta_0 + \\theta_1 x + \\theta_2 x^2 + \\theta_3 x^3\n", + "$$\n", + "\n", + "On commence par déclarer le degré du modèle :\n", + "\n", + "`poly = PolynomialFeatures(degree=3)`\n", + "\n", + "Ensuite on transforme ou réécrit le modèle précédent sous la forme linéaire suivante : \n", + "$$\n", + "h(t,u,v,w) = \\theta_0 t + \\theta_1 u + \\theta_2 v + \\theta_3 w\n", + "$$\n", + "avec $t=1$, $u=x$, $v=x^2$ et $w=x^3$\n", + "\n", + "On a alors transformé un modèle polynomial de degré 3, à 1 variable explicative $(x)$ en un modèle linéaire à 4 variables explicatives $(t,u,v,w)$.\n", + "\n", + "La fonction\n", + "\n", + "`x_poly = poly.fit_transform(x)`\n", + "\n", + "construit une matrice de données telle que la ligne i correspond à $(t_i, u_i, v_i, w_i)$, c'est à dire\n", + "$(1, x_i, x_i^2, x_i^3)$.\n", + "\n", + "Il ne reste plus qu'à appeler un calcul de régression linéaire dans ce nouvel espace de données, comme cela a été fait dans le script qui précède.\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "x =\n", + " [[-4.7226796 ]\n", + " [-3.60267397]\n", + " [-3.29215704]\n", + " [-2.48223722]\n", + " [-2.36282052]\n", + " [-0.93621395]\n", + " [-0.85026525]\n", + " [-0.28311318]\n", + " [ 0.6684103 ]\n", + " [ 0.76820449]\n", + " [ 0.79952837]\n", + " [ 0.99897702]\n", + " [ 1.0607969 ]\n", + " [ 1.56786929]\n", + " [ 1.63497495]\n", + " [ 2.30965656]\n", + " [ 2.45407162]\n", + " [ 2.61547479]\n", + " [ 4.56228722]\n", + " [ 4.93183364]]\n", + "Donner le degré de régression polynomiale souhaité : \n", + "10\n", + "x_poly =\n", + " [[ 1.00000000e+00 -4.72267960e+00 2.23037026e+01 -1.05333241e+02\n", + " 4.97455149e+02 -2.34932128e+03 1.10950917e+04 -5.23985631e+04\n", + " 2.47461625e+05 -1.16868197e+06 5.51931049e+06]\n", + " [ 1.00000000e+00 -3.60267397e+00 1.29792597e+01 -4.67600412e+01\n", + " 1.68461183e+02 -6.06910720e+02 2.18650145e+03 -7.87725188e+03\n", + " 2.83791703e+04 -1.02240898e+05 3.68340622e+05]\n", + " [ 1.00000000e+00 -3.29215704e+00 1.08382980e+01 -3.56813789e+01\n", + " 1.17468703e+02 -3.86725416e+02 1.27316080e+03 -4.19144529e+03\n", + " 1.37988961e+04 -4.54281330e+04 1.49556548e+05]\n", + " [ 1.00000000e+00 -2.48223722e+00 6.16150161e+00 -1.52943086e+01\n", + " 3.79641021e+01 -9.42359073e+01 2.33915877e+02 -5.80634695e+02\n", + " 1.44127305e+03 -3.57758161e+03 8.88040623e+03]\n", + " [ 1.00000000e+00 -2.36282052e+00 5.58292081e+00 -1.31914399e+01\n", + " 3.11690048e+01 -7.36467642e+01 1.74014086e+02 -4.11164053e+02\n", + " 9.71506861e+02 -2.29549635e+03 5.42384588e+03]\n", + " [ 1.00000000e+00 -9.36213952e-01 8.76496565e-01 -8.20588313e-01\n", + " 7.68246228e-01 -7.19242837e-01 6.73365179e-01 -6.30413876e-01\n", + " 5.90202266e-01 -5.52555596e-01 5.17310259e-01]\n", + " [ 1.00000000e+00 -8.50265253e-01 7.22951000e-01 -6.14700114e-01\n", + " 5.22658148e-01 -4.44398062e-01 3.77856231e-01 -3.21278023e-01\n", + " 2.73171540e-01 -2.32268268e-01 1.97489638e-01]\n", + " [ 1.00000000e+00 -2.83113175e-01 8.01530701e-02 -2.26923902e-02\n", + " 6.42451465e-03 -1.81886474e-03 5.14944573e-04 -1.45787593e-04\n", + " 4.12743885e-05 -1.16853232e-05 3.30826895e-06]\n", + " [ 1.00000000e+00 6.68410302e-01 4.46772332e-01 2.98627229e-01\n", + " 1.99605516e-01 1.33418383e-01 8.91782219e-02 5.96076422e-02\n", + " 3.98423621e-02 2.66310453e-02 1.78004650e-02]\n", + " [ 1.00000000e+00 7.68204494e-01 5.90138145e-01 4.53346775e-01\n", + " 3.48263030e-01 2.67537225e-01 2.05523298e-01 1.57883922e-01\n", + " 1.21287138e-01 9.31733246e-02 7.15761667e-02]\n", + " [ 1.00000000e+00 7.99528375e-01 6.39245622e-01 5.11095014e-01\n", + " 4.08634966e-01 3.26715250e-01 2.61218113e-01 2.08851293e-01\n", + " 1.66982535e-01 1.33507275e-01 1.06742855e-01]\n", + " [ 1.00000000e+00 9.98977018e-01 9.97955082e-01 9.96934192e-01\n", + " 9.95914346e-01 9.94895544e-01 9.93877783e-01 9.92861064e-01\n", + " 9.91845385e-01 9.90830745e-01 9.89817143e-01]\n", + " [ 1.00000000e+00 1.06079690e+00 1.12529005e+00 1.19370419e+00\n", + " 1.26627770e+00 1.34326345e+00 1.42492970e+00 1.51156100e+00\n", + " 1.60345922e+00 1.70094456e+00 1.80435671e+00]\n", + " [ 1.00000000e+00 1.56786929e+00 2.45821410e+00 3.85415839e+00\n", + " 6.04281656e+00 9.47434649e+00 1.48545369e+01 2.32899721e+01\n", + " 3.65156320e+01 5.72517378e+01 8.97632414e+01]\n", + " [ 1.00000000e+00 1.63497495e+00 2.67314309e+00 4.37052199e+00\n", + " 7.14569397e+00 1.16830307e+01 1.91014625e+01 3.12304126e+01\n", + " 5.10609424e+01 8.34833617e+01 1.36493205e+02]\n", + " [ 1.00000000e+00 2.30965656e+00 5.33451340e+00 1.23208939e+01\n", + " 2.84570333e+01 6.57259734e+01 1.51804425e+02 3.50616086e+02\n", + " 8.09802742e+02 1.87036621e+03 4.31990358e+03]\n", + " [ 1.00000000e+00 2.45407162e+00 6.02246754e+00 1.47795667e+01\n", + " 3.62701153e+01 8.90094607e+01 2.18435592e+02 5.36056588e+02\n", + " 1.31552126e+03 3.22838340e+03 7.92268410e+03]\n", + " [ 1.00000000e+00 2.61547479e+00 6.84070838e+00 1.78917003e+01\n", + " 4.67952912e+01 1.22391904e+02 3.20112941e+02 8.37247327e+02\n", + " 2.18979928e+03 5.72736481e+03 1.49797783e+04]\n", + " [ 1.00000000e+00 4.56228722e+00 2.08144647e+01 9.49615661e+01\n", + " 4.33241939e+02 1.97657416e+03 9.01769903e+03 4.11413330e+04\n", + " 1.87698578e+05 8.56334822e+05 3.90684541e+06]\n", + " [ 1.00000000e+00 4.93183364e+00 2.43229830e+01 1.19956906e+02\n", + " 5.91607504e+02 2.91770979e+03 1.43896593e+04 7.09674058e+04\n", + " 3.49999439e+05 1.72613901e+06 8.51303043e+06]]\n", + "rmse = 2.1731828361864 , r2 = 0.993678187628542\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 432x288 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import operator\n", + "\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import mean_squared_error, r2_score\n", + "from sklearn.preprocessing import PolynomialFeatures\n", + "\n", + "np.random.seed(0)\n", + "x = 2 - 3 * np.random.normal(0, 1, 20)\n", + "x.sort()\n", + "y = x - 2 * (x ** 2) + 0.5 * (x ** 3) + np.random.normal(-3, 3, 20)\n", + "\n", + "# transformation des vecteurs 1D en matrice à 1 colonne\n", + "x = x[:, np.newaxis]\n", + "y = y[:, np.newaxis]\n", + "print(\"x =\\n\",x)\n", + "\n", + "#version interactive du choix du polynome\n", + "print(\"Donner le degré de régression polynomiale souhaité : \")\n", + "ndegre=int(input())\n", + "\n", + "polynomial_features= PolynomialFeatures(degree=ndegre)\n", + "x_poly = polynomial_features.fit_transform(x)\n", + "print(\"x_poly =\\n\",x_poly)\n", + "\n", + "model = LinearRegression()\n", + "model.fit(x_poly, y)\n", + "y_poly_pred = model.predict(x_poly)\n", + "\n", + "rmse = np.sqrt(mean_squared_error(y,y_poly_pred))\n", + "r2 = r2_score(y,y_poly_pred)\n", + "print(\"rmse =\", rmse, \", r2 =\", r2)\n", + "\n", + "plt.scatter(x, y, s=10)\n", + "plt.plot(x, y_poly_pred, color='r')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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\n", + "text/plain": [ + "<Figure size 1008x576 with 1 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import operator\n", + "\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import mean_squared_error, r2_score\n", + "from sklearn.preprocessing import PolynomialFeatures\n", + "\n", + "np.random.seed(0)\n", + "x = 2 - 3 * np.random.normal(0, 1, 20)\n", + "x.sort()\n", + "y = x - 2 * (x ** 2) + 0.5 * (x ** 3) + np.random.normal(-3, 3, 20)\n", + "\n", + "# transformation des vecteurs 1D en matrice à 1 colonne\n", + "x = x[:, np.newaxis]\n", + "y = y[:, np.newaxis]\n", + "\n", + "fig = plt.figure(1, figsize=(14, 8))\n", + "\n", + "plt.scatter(x, y, s=10)\n", + "\n", + "for ndegre in [1,2,3,20]:\n", + " polynomial_features= PolynomialFeatures(degree=ndegre)\n", + " x_poly = polynomial_features.fit_transform(x)\n", + "\n", + " model = LinearRegression()\n", + " model.fit(x_poly, y)\n", + " y_poly_pred = model.predict(x_poly)\n", + "\n", + " #rmse = np.sqrt(mean_squared_error(y,y_poly_pred))\n", + " #r2 = r2_score(y,y_poly_pred)\n", + " #print(\"rmse =\", rmse, \", r2 =\", r2)\n", + "\n", + " plt.plot(x, y_poly_pred, label=\"degre \"+str(ndegre))\n", + "\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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27JFRLK9AA8CO4BEIPSmbf8C9gF7gI4p1ndKWrcPeDEz52nSpIkopYqenTt3OjuEdCUkJDg7BLlw4YKsWbNGJk2aJM8880yqbU2bNpU//vhDEhMTpVOnTrJ48eI0nx8xYoS8+uqrIiKya9cuadeunb3tsccek88//1xERK5cuSKnT58WEZGRI0fKuHHjRERk3LhxMmrUKBEROXbsmGzYsEFeeuklGT9+vH2c//3vf+Lv7y8XL16Ua9euSfv27WXv3r0ZHuv06dPi5+cnhw4dso8tYl3zunXryv79++XKlSsSFBQkO3bsSPO9unfvLjNmzBARkbFjx9rHPX78uNx2221y5coVEREpW7asw+var18/+eabb9KsTy+uo0ePSkREhIiInDt3Tnx9fVPFdfjwYenQoYPUrl1b4uLiHJ7T0b91YJOkkxdz2vLeDnQHVqdcaYxpCPQG/JOS9SfGGDdjjBvwMXAv0BDok7SvUkoVeOXKlWPMmDGEhYWxdu1avLy8eOmll2jRogWhoaFs3ryZjh07Uq9ePT799FMAYmNjadWqFSEhIQQEBLBmzRoAfv31V1q0aEHjxo158MEHuXDhQpbjKVu2LHfffTelSpVKtT42NpZz587RokULjDE89thjdtW3lHbu3En79u0BaNCgAQcPHuTYsWOcO3eO1atXM2jQIABKlChBpUqVAFi4cCH9+vUDoF+/fvZxq1atStOmTSlevHiqc+zatYvmzZtTpkwZ3N3dad26NQsWLMjwWF999RXdu3endu3a9rHBKi/r4+ND3bp1KVGiBL17904zkv/8+fOsWLHCbnkbYzh//jwiwoULF6hcuTLu7tkb7pVeXDVq1KBx48YAlC9fHj8/P44cOWJ/bvjw4bz99tu5Or1tjpK3iOwSkT0ONnUF5orIFRGJwmplN0ta9onIARG5CsxN2lcppQq8ixcvEhAQwPr167n77rsBqFWrFmvXrqVly5b079+f+fPns27dOsaMGQNY/8Pv2LEjkZGRbN26lZCQEE6cOMHrr7/OsmXL2Lx5M6GhoUyYMCHN+caPH2933aZchg4dmmGcR44cwdPT037v6emZKpkkCw4O5rvvvgOsxHjo0CFiYmI4cOAAVapUYcCAATRq1IjHH3+cixcvAnDs2DFq1KgBWEkruchMegICAli9ejUnT54kPj6exYsXEx0dneGx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/fRT4PnExES6dOnCyJEjqVGjBgCzZs2id+/eXHfddcTGxgLw3nvv0bVrV+Lj47nzzjvJzMzM9/6jR49m5MiRVMqexbG+bk+tUBTep2vHDhg5Evr0gYED/a5GREpRUlIS48aNY/HixUycOJEFCxYEtt1xxx28+uqrJCUl8eKLL/Kb7FtH77vvPu677z4WLFhA48aN8xxv/vz5PPPMMyQnJ7NixQo++OADvv32W5YsWUJYWBjvv/9+vhrWrl3LBx98QEJCApdddhmrV6/Ot4+UX+o2P12PPQaHDsGoUaCBMyIVypw5cxg0aBDVqlUDYMCAAQAcPHiQ7777jsGDBwf2PXr0KADff/89kydPBuC6667jwZyBrkDXrl0DtwnNnDmTpKQkumRPr3zkyJGgreqjR48SHh7OwoULmThxIrfeeitz5swpgU8rZZHC+3QsXAhvvAG//S20a+d3NSLig2AjhLOysqhduzZLliwp1LGqV68e+N7MGD58OM+eZIrliIgIrrnmGgAGDRrELbeUr2UipGDqNi+srCy45x5v+tORI/2uRkR80KtXLyZNmsSRI0c4cOAA//3vfwGoVasWzZs3Z/z48YAXxEuXLgUgMTGRjz76CIBx48ad8NgXX3wxEyZMCAxA++WXX9i4cWO+/a666iq+/PJLAGbPnk2bNm2K7wNKmafwLqx334V58+D556FWLb+rEREfdOrUiSFDhhAfH88111xDz549A9vef/993njjDTp06EB0dDRTpkwB4JVXXuGll16ia9eubNu2jbPOOivosaOionj66ae59NJLiYuLo0+fPmzbln/V5EceeYSPPvqI2NhYHn30UcaMGVMyH1bKJOct8lW2JSQk2MKFC/0uA/btg7ZtoXlz+PZbrdUt4pMVK1bQvn17v8solMOHD1O1alWcc4wbN46xY8cGgl0k2L9p51ySmSUE21/XvAvjz3/2RplPm6bgFpFCSUpK4p577sHMqF27Nm+++abfJUkIU3ifqhUrvJHlt90GCUH/EBIROaGePXsGrn+LFJWaj6fCDO67D6pX9xYgERER8ZHC+1RMngwzZnjd5vXq+V2NiEiBZsyYQefOnYmNjaVz586BUenHW7p0Kd27dyc2NpYrr7yS/fv3A7B792569+5NjRo1uOeee4K+dsCAAcTExAR+fvLJJ2nSpAnx8fHEx8fzySefFFjLgQMHAvvGx8dTt25d7r//fgC+/vprOnXqROXKlZkwYUKe9+3Xrx+1a9fmiiuuyPP8bbfdRocOHYiLi+Paa6/l4MGDAGzatInevXvTsWNH4uLiAnXl2LRpEzVq1AjMTb9y5co8ddWqVYtXXnkFgIceeoh27doRFxfHoEGD2Lt3b4HH2rx5M71796Z9+/ZER0fz17/+Nei5PC1mdtoPYDCwHMgCEo7b9iiwBlgJ9M31fL/s59YAj5zK+3Tu3Nl8c/iwWWSkWUyMWXq6f3WISEBycrLfJZxQRkaG3yXYokWLbMuWLWZm9uOPP1rjxo2D7peQkGCzZs0yM7M33njD/vjHP5qZ2cGDB23OnDk2evRou/vuu/O97qOPPrJhw4ZZdHR04LknnnjCXnjhhdOupVOnTjZ79mwzM1u/fr0tXbrUbrzxRhs/fnye/b744gubOnWq9e/fP8/z+/btC3z/wAMP2LPPPmtmZrfffrv9/e9/NzOz5cuXW7NmzfK87uqrr7Zrr702aO0ZGRnWoEED27Bhg5mZTZ8+3dKzc+Dhhx+2hx9+uMBjbd261ZKSkszMbP/+/da6dWtbvnx50M8f7N80sNBOkItFbXkvA64Gvs79pHMuChgKRGeH9d+dc2HOuTDgNeAyIAoYlr1v2fXCC7Bhg3e9u7KGCIhIfjVq1GDkyJF069aN77//nsjISP7whz/QvXt3EhISWLRoEX379qVly5b84x//AGDbtm306tWL+Ph4YmJiArOjff7553Tv3p1OnToxePDgQAuyMDp27BiYgjU6OprU1NTATG+5rVy5kl69egHQp0+fwH3o1atXp0ePHoSHh+d7zcGDB3nppZf44x//WGy1rF69mh07dgRuuYuMjCQuLi4wb3tuF198MTVr1sz3fK3sW3fNjCNHjgQm0XHOBXoU9u3bl2dq2smTJ9OiRQuio6OD1j5z5kxatmxJs+wVIy+99FIqZ+dAYmIiKSkpBR6rUaNGdOrUCYCaNWvSvn17tmzZcsJzVRhFCm8zW2FmK4NsGgiMM7OjZrYer5XdNfuxxszWmVkaMC5737Jp40Z49lkYPBh69/a7GhEpow4dOkRMTAzz5s2jR48eAJx77rl8//339OzZk5tvvpkJEyYwd+5cRmZP7vSf//yHvn37smTJEpYuXUp8fDy7du3i6aef5osvvmDRokUkJCTw0ksv5Xu/F154IU/Xbs5jxIgR+fb96KOP6NixI2eeeWa+bTExMUydOhWA8ePHs3nz5pN+1scff5zf/e53galhc/vb3/5GXFwct956K3v27DnlWsaOHcuQIUOKvEb7LbfcQsOGDfnpp5+49957Aa87/7333iMiIoLLL7+cV199FfB+Z88//zxPPPHECY83btw4hg0bFnTbm2++yWWXXXbKx9qwYQOLFy+mW7dup/vx8iippmQTYG6un1OynwPYfNzzxfNJSsKDD3rzlpfyOr0iUgj33w+FnI70pOLjIfs656kICwsLTFWaI2e+89jYWA4ePEjNmjWpWbMm4eHh7N27ly5dunDrrbeSnp7OVVddRXx8PLNnzyY5OZnzzz8fgLS0NLp3757v/R566CEeOoVliJcvX87vf/97Pv/886Db33zzTUaMGMGf//xnBgwYwBlnnFHg8ZYsWcKaNWt4+eWX2bBhQ55td911F48//jjOuUDA574drqBaxo0bx7vvvnvSz3Myb731FpmZmdx777188MEH3HLLLYwdO5abb76Z3/3ud3z//ffceOONLFu2jCeeeIIHHnggsLrb8dLS0pg6dWrQaWqfeeYZKleuzPXXXw9w0mMdPHiQa665hldeeSXQQ1BUJw1v59wXQMMgmx4zsxPNMBDszycjeEs/6Cwxzrk7gDsAmjZterIyi9/MmTBhAjz1FPjx/iISMsLDw/Otw53TuqxUqVKelmalSpXIyMigV69efP3113z88cfceOONPPTQQ5x99tn06dOHsWPHFvh+L7zwQtCVxnr16sWoUaMASElJYdCgQbzzzju0bNky6HHatWsXCNNVq1bx8ccfF/i+33//PUlJSURGRpKRkcGOHTu48MILmTVrFg0aNAjsd/vtt+cZUFZQLUuXLiUjI4POnTsX+N6nKiwsjCFDhvDCCy9wyy238MYbb/DZZ58B0L17d1JTU9m1axfz5s1jwoQJPPzww+zdu5dKlSoRHh4eGKD36aef0qlTpzyfC+Df//4306ZNY+bMmYGegoKOlZ6ezjXXXMP111/P1VdfXSyfEU4hvM3sktM4bgpwbq6fI4Ct2d+f6Pnj3/d14HXwZlg7jRpOX3o6jBjhzaSWa+UfESmDCtFCLks2btxIkyZNuP322zl06BCLFi3iscce4+6772bNmjW0atWKw4cPk5KSkm/e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AcCSJUv48ssvARgwYAAjR4707NOiRQvPrUULFixg5cqVNG/eHIBjx45RqVKlLMfmbXVJTe7zb0rel+KNN5zr3XPmQKFCbkcjIgHCW0JMTU2lTJkyrFmz5qKOVbx4cc9zay233norL7744iXFVaNGDXbu3Ol5HRcXd05PX/yLhs0v1u7d8PzzcN110KWL29GISIBo06YNX3zxBceOHSMhIYGvvvoKgFKlShEaGsq0adMAJxGvXbsWgFatWjF9+nQApk6dmumxO3TowOeff87ff/8NwD///MOOHTuyHFuPHj2YPHky1lqWLl1K6dKlqarLgX5NyftiPfYYnDzpzDIXEcmipk2bctNNNxEZGUmfPn2Ijo72bPv444959913ueKKKwgLC2PmzJkAvP7667z22mu0aNGCPXv2ULp0aa/HbtSoES+88AKdOnWicePGxMTEeJ1wNn78eGrUqEFcXByNGzfmzjvvBKBr167Url2bunXrctddd/HWW2/54BuQnGS8XevwN1FRUXbFihVuhwG//AJXXw2PP+7c3y0iAWP9+vU0bNjQ7TAuSlJSEkWLFsUYw9SpU5kyZYonsUve4u3/pzFmpbU2ytv+uuadVadOOZPTqleHJ55wOxoRyQdWrlzJ/fffj7WWMmXK8N5777kdkvgJJe+smjQJVq506pin3WspIuJL0dHRnuvfIunpmndWHDrkDJW3bg39+rkdjYiI5HNK3lnx9NPwzz8wYQLo3kcRyYPmzZtHs2bNiIiIoFmzZixcuNDrftOmTSMsLIwCBQqQfi7Sxx9/TGRkpOdRoEABz+1vXbp08UzGu+eeezzV3zI7VnJyMrfeeisRERE0bNjQcwvczp07ad++PQ0bNiQsLIw33njD8541a9bQqlUrIiMjiYqKYtmyZYBTPa5x48ae9p9++snznr/++otOnTrRsGFDGjVqxPbt24HMa8AfPnyY6667zvNZJk2adMFjnTZs2DBPhbwcYa295AfQF1gHpAJRZ217HNgCbAQ6p2vvkta2BXgsK+dp1qyZdc3vv1sbFGTtPfe4F4OIZFtsbKzbIWQqJSXF7RDsqlWr7K5du6y11v7++++2WrVqXveLjY21GzZssG3btrXLly/3us9vv/1mQ0NDPa8PHz5srbU2NTXV9u7d206ZMuW8x/r444/tTTfdZK21NjEx0V522WV227Ztdvfu3XblypXWWmuPHDli69WrZ9etW2ettTYmJsbOnj3bWmvtN998Y9u2bWuttTYhIcGmpqZaa61du3atbdCggec8bdu2td99951nv8TERM93sW3bNnvZZZfZ+Ph4z/5jxoyxjzzyiLXW2r///tuWLVvWnjhx4rzHstba5cuX25tvvtkWL17c6/d1+rs4G7DCZpIXs9vz/gPoDfyYvtEY0wjoB4SlJeu3jDFBxpgg4L/AtUAjoH/avv7JWhgxAkqVcu7tFhHJISVKlGD06NG0bNmSJUuWUKtWLZ544gmuvPJKoqKiWLVqFZ07d6ZOnTr873//A2DPnj20adOGyMhIwsPDWbx4MQDfffcdV155JU2bNqVv374cPXr0ouNp0qSJpzBLWFgYx48f91R6S69hw4Y0aNDgvMeaMmUK/fv397wuVaoUACkpKZw8edJTrCazYxljSExMJCUlhWPHjlGoUCFKlSpF1apVadq0KQAlS5akYcOGnjKuxhiOHDkCOD3k05+lRIkSnvMlJiZ6nsfGxpKSkkJMTIxnv9PV7zKrAW+MISEhAWstR48epVy5chQsWPC8xzp16hQPP/wwr7zyynm/s4uVreRtrV1vrd3oZVNPYKq19oS1dhtOL7tF2mOLtfZPa+1JYGravv5pxgxYuNBJ3BUquB2NiOQhiYmJhIeH8+uvv9K6dWsAatasyZIlS4iOjua2227j888/Z+nSpYwePRqATz75hM6dO7NmzRrWrl1LZGQk+/fv54UXXmD+/PmsWrWKqKgoXvNSh+LVV1/NMKx9+jHcS4nn6dOn06RJEwoXLnxJn+3TTz/NkLwBOnfuTKVKlShZsiQ33HDDed9/ww03ULx4capWrUpISAgjR46kXLlyGfbZvn07q1evpmXLloBzT/zDDz9MzZo1GTlyZIZqc1988QWXX3453bp188zY37RpE2XKlKF37940adKEhx9++IIrtN1///2sX7+eatWqERERwRtvvEGBAgXOe6w333yTHj165HjRG1/NNq8OLE33Oi6tDWDnWe0tfRRD9iQlOauGRUTA3Xe7HY2I5KQHHoCLLEd6QZGR8PrrWd49KCiIPn36ZGg7Xe88IiKCo0ePUrJkSUqWLEmRIkU4dOgQzZs3Z/DgwSQnJ8QbKK4AACAASURBVHP99dcTGRnJDz/8QGxsLFdffTUAJ0+e5EovSxQ//PDDPPzwwxeMa926dTz66KN89913Wf4s6f36668UK1aM8PDwDO1z587l+PHjDBw4kIULF3p6qd4sW7aMoKAgdu/ezcGDB4mOjqZjx47Url0bcOrB9+nTh9dff93Tq3/77bcZN24cffr04bPPPuOOO+5g/vz5APTq1YtevXrx448/8tRTTzF//nxSUlJYvHgxq1evJiQkhJtuuon333+fO+64I9O45s6dS2RkJAsXLmTr1q3ExMQQHR2d6bGuvfZapk2bxqJFiy7puzyfC/a8jTHzjTF/eHmcr8fsbVaXPU+7t/MOMcasMMasiI+Pv1CYOe/VV+Gvv5xJagV1R52I5KwiRYoQFBSUoe10T7dAgQIZer0FChQgJSWFNm3a8OOPP1K9enVuueUWT0nTmJgY1qxZw5o1a4iNjeXdd98953xZ6XnHxcXRq1cvJk+eTJ06dS7pc02dOvWcXnf6z9yjR48LFpr55JNP6NKlC8HBwVSqVImrr77aM6EtOTmZPn36MHDgQHr37u15zwcffOB53bdvX8+EtfTatGnD1q1b2b9/PzVq1KBJkybUrl2bggULcv3117Nq1arzxjVp0iR69+6NMYa6desSGhrKhg0bMj3W6tWr2bJlC3Xr1qVWrVokJSVRt27d854jqy6Ylay1HS/huHFAzXSvawC7055n1n72eScCE8GpsHYJMVy6HTucNbpvugnats3VU4tILriIHrI/2bFjB9WrV+euu+4iMTGRVatWMWrUKIYOHepJEklJScTFxVG/fv0M771Qz/vQoUN069aNF1980dOLv1ipqalMmzaNH388Mw3q6NGjJCQkULVqVVJSUpg9e3aG0rDehISEsHDhQm6++WaSkpJYunQpDzzwANZa7rjjDho2bMhDDz2U4T3VqlXjhx9+oF27dixcuJB69eoBsGXLFurUqYMxhlWrVnHy5EnKly9P2bJlOXjwIPHx8VSsWJGFCxcSFeW1mFmGuBYsWEB0dDT79u1j48aN1K5dO9NjdevWjb1793reX6JECbZs2XKxX6t3mc1ku5gHsIh0s81xJqqtBQoDocCfQBDOHwt/prUVStsn7ELHz/XZ5jfcYG3Rotb+9VfunldEfMbfZpufPfM4/czmSZMm2aFDh56z7f3337dhYWE2MjLStm7d2v7555/WWmsXLFhgo6KibEREhI2IiLAzZ8686Hief/55W6xYMXvFFVd4Hvv27bPWWnvHHXd4ZoPPmDHDVq9e3RYqVMhWqlTJdurUyXOM77//3rZs2TLDcffu3euJrVGjRvb++++3ycnJ5z1WQkKCveGGG2yjRo1sw4YN7SuvvGKttXbx4sUWsBEREZ4Yv/nmG8+2pk2b2saNG9sWLVrYFStWWGutfemll2yjRo3sFVdcYVu1amUXL17sie27776zERERNjw83N56662emeNvvPGGrV69ug0KCrJVq1a1d9xxh7XW2l27dtmYmBgbHh5uw8LC7IcffnjBY6WXk7PNs1Xb3BjTC5gAVAQOAWustZ3Tto0CBgMpwAPW2jlp7V2B19OS+XvW2jEXOk+u1jZfsAA6dnQmqT35ZO6cU0R8LhBrm0v+kau1za21XwBfZLJtDHBOYrbWzgZmZ+e8PpOc7NwaFhoK6Ra9FxER8SeaiZXe22/DunXwxRdQpIjb0YiIiHil8qinxcfD6NEQEwM9/ffWcxHJmwYOHEiDBg0IDw/33A52KVauXElERAR169Zl+PDheLs0evDgQXr16kXjxo1p0aIFf/zxh2fbG2+8QXh4OGFhYbyebmLfU0895Skz2qlTJ3bvPjPXeNGiRURGRhIWFkbbtEm+GzduzDCrvVSpUp7jZVbKdMOGDVx55ZUULlyYsWPHZoh53LhxhIWFER4eTv/+/Tl+/DjgLN5y+hzVqlXj+uuvP29cl1JiddGiRZQuXdpznueeey5DbKdOnaJJkyZ0797d05ZTP89MZXYx3J8euTJh7a67rC1Y0Fo/m9QiIjnD3yaspZeSkmK/+eYbm5qaalNTU22/fv3sW2+9dUnHat68uf3ll19samqq7dKli6dkaHojR460zzzzjLXW2vXr19trrrnGWuuURQ0LC7OJiYk2OTnZdujQwW7atMlae6bEqbXOhK67777bWmvtwYMHbcOGDe2OHTustdYzye3sz1e5cmW7fft2a23mpUz37dtnly1bZp944gn76quvet4fFxdna9WqZZOSkqy11vbt29dOmjTpnPP07t3bfvDBB+eN61JKrH7//fe2W7du3r5ua621//nPf2z//v0z7HOxP8/cLo+aN6xcCe+846zXrQktIpILzi6P2rVrV4wxGGNo0aIFcXFxF33MPXv2cOTIEa688kqMMQwaNIgvv/zynP1iY2Pp0KED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\n", + "text/plain": [ + "<Figure size 576x1728 with 6 Axes>" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "import operator\n", + "\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "\n", + "from sklearn.linear_model import LinearRegression\n", + "from sklearn.metrics import mean_squared_error, r2_score\n", + "from sklearn.preprocessing import PolynomialFeatures\n", + "\n", + "np.random.seed(0)\n", + "x = 2 - 3 * np.random.normal(0, 1, 20)\n", + "x.sort()\n", + "y = x - 2 * (x ** 2) + 0.5 * (x ** 3) + np.random.normal(-3, 3, 20)\n", + "\n", + "# transformation des vecteurs 1D en matrice à 1 colonne\n", + "x = x[:, np.newaxis]\n", + "y = y[:, np.newaxis]\n", + "\n", + "fig, g = plt.subplots(6, figsize=(8, 24))\n", + "ig = 0\n", + "\n", + "for ndegre in [1,2,3,6,10,20]:\n", + " g[ig].scatter(x,y,s=10)\n", + " polynomial_features= PolynomialFeatures(degree=ndegre)\n", + " x_poly = polynomial_features.fit_transform(x)\n", + " \n", + " model = LinearRegression()\n", + " model.fit(x_poly, y)\n", + " y_poly_pred = model.predict(x_poly)\n", + "\n", + " rmse = np.sqrt(mean_squared_error(y,y_poly_pred))\n", + " r2 = r2_score(y,y_poly_pred)\n", + " \n", + " g[ig].plot(x, y_poly_pred, c='r', label=\"degre \"+str(ndegre)+\"\\n rmse =\"+str(rmse)+\"\\n r2 =\"+str(r2))\n", + " g[ig].legend()\n", + " ig = ig+1\n", + "\n", + "#plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "La régression polynomiale de degré 20 fait apparaître des irrégularités qui correspondent au \"bruit\" qui est présent dans les données (ici dans la génération des données). On parle alors de phénomène de sur-apprentissage (over-fitting). La courbe s'approche de près des données présentes mais si on ajoutait des données intermédiaires, la courbe du polynome de degré 20 pourrait en être assez distant. \n", + "\n", + "A l'opposé, la régression de degré 1 passe assez loin des données car la complexité du modèle (hypothèse) est trop faible. On parle alors de sous-apprentissage (under-fitting).\n", + "\n", + "Ces deux situations de sous-apprentissage et de sur-apprentissage ne sont pas caractéristiques du problème de régresssion polynomiale mais peut se rencontrer dans bon nombre d'autres types de modèles/hypothèses.\n", + "\n", + "Le phénomène de sur-apprentissage est un problème difficile en science des données, puisqu'il faudrait savoir identifier ou mesurer le bruit présent dans les données. La question est donc de savoir choisir une complexité de modèle pertinente, ici le degré \"optimal\" de régression polynomiale. La notion de **compromis biais-variance** vise à apporter des méthodes d'analyse pour identifier ce degré optimal ou plus généralement les modèles/hypothèses optimaux. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Le compromis biais-variance\n", + "\n", + "**Le biais** correspond à l'écart entre les données et le modèle. Si sa valeur est élevée, cela signifie que l'on est dans la situation de sous-apprentissage. les valeurs de `rmse`ou de `r2` peuvent permettre de mesurer le biais.\n", + "\n", + "**La variance** correspond à l'erreur de généralisation ou de prévision du modèle. Il mesure le phénomène de sur-apprentissage du à l'usage d'un modèle \"trop\" complexe et qui prédit mal les valeurs en dehors des données ou encore qui est très sensible à des petites modifications apportées sur les données. On dira que le modèle n'est pas stable.\n", + "\n", + "On illustre ces valeurs du biais et de la variance sur les calcul de régression polynomiale précédents :\n", + "\n", + "\n", + "\n", + "On peut décrire les tendances d'évolution des valeurs des erreurs de biais (courbe décroissante) et des erreurs de variance (courbe croissante) en fonction de la complexité du modèle comme cela est représenté sur la figure suivante. Un modèle / une hypothèse sera dit optimal lorsque l'on minimise la somme de ces deux erreurs (voir sur la figure). On parle du meilleur compromis biais-variance.\n", + "\n", + "**Attention** : l'erreur totale mentionnée dans ce graphique, ne correspond pas à l'erreur \"classique\" qui consiste à évaluer la distance entre les jeux de données et les valeurs du modèle / de l'hypothèse. Cette erreur \"classique\" s'évalue génaralement en utilsant l'erreur de moindre carrée telle que calculé précédemment avec le coefficient `rmse`. On a vu sur les calculs précédents que ce calcul d'erreur ne permet pas d'évaluer le sur-apprentissage. On va alors définir un nouveau calcul d'erreur appelé *erreur de prédiction attendue* ou *erreur attendue* [3]. C'est cette erreur de prédiction attendue qui est appelée erreur totale sur le graphique ci-dessous. On en donne sa dévinition dans la section relative au compromis biais-variance. \n", + "\n", + "\n", + "\n", + "**Définition mathématique**\n", + "\n", + "Soit un jeu de données $\\{(x_i, y_i); 1 \\leq i \\leq n\\}$, on recherche un modèle/hypothèse $h(x)$ tel que tous les $h(x_i)$ s'approchent \"au mieux\" des $y_i$. Les données $(x_i)$ sont les données d'entrée du modèle (chaque $x_i$ peut être une valeur simple (problème univarié) ou un vecteur de plusieurs valeurs (problème multivarié)) et les données $(y_i)$ sont les données cibles.\n", + "\n", + "La définition mathématique du biais et de la variance d'après [1,2,3], s'obtient en partant de l'hypothèse \"abstraite\" : il existe une fonction $f(x)$ permettant de définir une relation fonctionnelle bruitée : $y_i = f(x_i) + \\epsilon_i$, où $\\epsilon_i$ est un bruit dont la moyenne, $\\mu(\\epsilon)$ est nulle et la variance est notée $\\sigma^2$. \n", + "\n", + "*Rappels* des définitions de la moyenne et de la variance :\n", + "- la moyenne sa calcule ainsi\n", + "$$\\mu(\\epsilon) = \\frac{1}{n} \\sum_{i=1}^{n} \\epsilon_i$$\n", + "- la variance notée $V(x)$ ou $\\sigma^2$, est la moyenne des carrés des écarts à la moyenne \n", + "$$\\sigma^2 = V(x) = \\frac{1}{n}\\sum_{i=1}^{n}(x_i - \\mu(x))^2$$ \n", + "On peut montrer que \n", + "$$\\sigma^2 = V(x) = \\left( \\frac{1}{n}\\sum_{i=1}^n x_i^2 \\right) - \\mu(x)^2 = \\mu(x^2) - \\mu(x)^2$$\n", + "- $\\sigma$ est appelé l'écart-type, c'est donc la racine carrée de la variance, $\\sigma = \\sqrt{V(x)}$. Il permet de mesurer la dispersion des valeurs $x_i$ autour de la moyenne $\\mu(x)$.\n", + "\n", + "A partir du jeu de données $\\{(x_i, y_i); 1 \\leq i \\leq n\\}$, on va construire un ensemble $S$ de $m$ échantillons, que l'on appelle aussi échantillons d'apprentissage, et qui correspondent à des extractions de ce jeu de données de taille inférieure à $n$. Pour chaque échantillon de données, on note $x^p$, l'échantillon $p$ des données d'entrée (attention à la notation, ce n'est pas une élévation à la puissance mais un indice supérieur), on calcule l'hypothèse $h_{x^p}(x))$. Il faut comprendre ici que pour les modèles de regression polynomiale, l'hypothèse est indépendante de l'échantillon : il s'agit notamment de choisir le degré du polynome. Par contre le calcul des coefficients du polynome pour le degré choisit, va dépendre du jeu de données.\n", + "\n", + "A partir de cette échantillonage $S$, on va calculer des *espérances mathématiques* de fonctions, relatives à un nouvel échantillon que l'on va considérer ici comme étant l'ensemble complet des données, c'est à dire $x$ pour les données d'entrée. \n", + "\n", + "Par exemple, $E_S[h(x)]$ correspond à l'espérance mathématique des fonctions hypothèses relatives aux échantillons de $S$. \n", + "\n", + "Une espérance mathématique est un calcul de moyenne pondérée ou la pondération est une probabilité affectée à chaque terme de la moyenne ; la somme des probalités étant égale à 1. Ici, si l'on considère que chaque échantillon a la même importance (ou même probabilité d'apparaître ou d'exister), l'espérance sera calculée comme une moyenne simple.\n", + "\n", + "On calcule déjà une fonction $G(t)$ par\n", + "$$\n", + "G(t) = \\frac{1}{m}\\sum_{x_p \\in S} h_{x_p}(t)\n", + "$$\n", + "où l'on rappelle que $m$ est le nombre d'échantillons $x_p$ dans $S$.\n", + "\n", + "Puis l'espérance de l'hypothèse $h$ pour le jeu de données dont les valeurs d'entrée sont $x = {x_i, 1 \\leq i \\leq n}$ \n", + "$$\n", + "E_S[h(x)] = \\frac{1}{n}\\sum_{i=1}^{n} G(x_i)\n", + "$$\n", + "\n", + "Une fois effectués ces rappels et ces notations (parfois imprécises dans la littérature), on va donner des expressions du biais et de la variance \n", + "\n", + "- le biais se calcule par $$B(h(x))= E[(h-f)(x)]$$, \n", + "- la variance se calcule par $$Var(h(x))=E[h^2(x)]-(E[h(x)])^2$$\n", + "\n", + "On définit ensuite l'*erreur de prédiction attendue* par\n", + "$$\n", + "Err(h(x)) = B^2(h(x)) + Var(h(x)) + \\sigma^2\n", + "$$\n", + "\n", + "On rappelle que l'on a fait l'hypothèse qu'il existait une fonction $f(x)$ telle que $y_i = f(x_i) + \\epsilon_i$, où $\\epsilon_i$ est un bruit dont la variance est notée $\\sigma^2$. \n", + "\n", + "$f(x)$ n'étant pas une fonction connue, on ne pourra pas calculer directement le biais qui mesure l'écart entre l'hypothèse et les données au sens \"classique\". Par contre, il est assez bien estimé par les indicateurs que nous avons utilisés lors des tracés des régression polynomiale, à savoir `rmse`et `r2`. Il faut simplement se rappeler que l'hypothèse de l'existance de $f$ signifie qu'il y a un bruit et que ces indicateurs ne visent donc pas à être trop petits si le bruit est important.\n", + "\n", + "La Variance peut par contre être évaluée, à condition de mettre en place un échantillonage $S$. Elle mesure la dispersion des fonctions hypothèses liées à un échantillon à la moyenne de ces fonctions hypothèses pour tous les échantillons. En cas de sur-apprentissage, cette dispersion peut être grande comme cela a été expliqué dans les exemples précédents. \n", + "\n", + "En conclusion de cette section sur le compromis biais-variance, on constate que la difficulté est de déterminer la fonction $f(x)$ et en conséquence d'évaluer le bruit $\\epsilon_i$ contenu dans les données. Une discussion intéressante à ce sujet fait l'objet du dernier paragraphe de l'entrée relative au dilemme biais-variance sur wikipedia [1] et la référence aux propos de Gerd Gigerenzer et ses co-auteurs [4] qui sortent largement des objectifs de ce cours d'apprentissage. \n", + "\n", + "**Référence sur le compromis biais-variance**\n", + "1. [Dilemme biais-variance : article de Wikipedia](https://fr.wikipedia.org/wiki/Dilemme_biais-variance)\n", + "2. Scott Fortmann-Roe. \"Understanding the Bias-Variance Tradeoff\", [blog en ligne](http://scott.fortmann-roe.com/docs/BiasVariance.html), 2012\n", + "3. T. Hasyie, R. Tibshirani, J. Friedman. \"The Elements of Statistical Learning\", Springer, 2017 (2nd edition)\n", + "4. G. Gigerenzer, H. Brighton (2009) \"Homo Heuristicus: Why biased Minds make Better Inferences\", Topics in Cognitive Science 1, 107-143. Accessible en ligne [ici](https://pure.mpg.de/rest/items/item_2099728/component/file_2563980/content)\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Techniques de régularisation\n", + "Dans les méthodes de régression qui ont été présentées, la fonction de coût $J(\\Theta)$ sert à ajuster les paramètres de la fonction modèle ou hypothèse pour qu'elle s'approche au mieux des données.\n", + "\n", + "Avec la régression polynomiale, il a été constaté que des problème de sur-apprentissagepouvaient apparaître et que si cette fonction de coût était bien minimisée, le modèle pouvait avoir un comportement \"instable\", c'est à dire être très sensible à des modifications mineures des données. Ainsi de petites modifications sur ces données peut générer des nouveaux modèles très différents et présentant surtout des oscillations (observation typiques du sur-apprentissage en régression polynomiale).\n", + "\n", + "Pour pallier à ce problème, l'idée est de contraindre l'espace de recherche des paramètres $\\theta$ et pour cela, il faut donc modifier leur recherche (qui consiste à minimiser la fonction coût), c'est à dire modifier la fonction coût : $J(\\theta)$.\n", + "\n", + "On parle alors de rétressissement de l'espace de recherche d'où le terme de méthodes de $shrinkage* en anglais.\n", + "\n", + "Pratiquement, on va donc modifier la focntion coût en ajoutant une *fonction de pénalité* $P(\\lambda,\\theta)$ qui dépend de $\\theta$ et d'un paramètre $\\lambda$ que l'on va ajuster afin produire l'effet de régularisation souhaitée :\n", + "\n", + "$$\n", + "J(\\theta) = \\frac{1}{2m}\\sum_{i=1}^{m}\\left(h_\\theta(x_i)-y_i\\right)^2+P(\\lambda,\\theta)\n", + "$$\n", + "\n", + "En reprenant les notations utilisées jusqu'alors, à savoir que $\\{(x_i, y_i); 1 \\leq i \\leq m\\}$ correspond aux données et que le modèle ou fonction hypothèse possède $n+1$ paramètres, ${(\\theta_j; 0 \\leq j \\leq n}$.\n", + "\n", + "Plusieurs techniques de régularisation ont été proposées et nous en présentons quelques unes ici. Pour plus de détails, on pourra consulter le livre de Biernat et Lutz [1].\n", + "\n", + "**Régression ridge**\n", + "\n", + "La fonction de pénalisation se base sur l'utilisation de la norme $L_2$ du vecteur $\\theta$. Appelée aussi norme euclidienne, elle correspond aux métriques et notamment aux distances usuelles en géométrie. Par exemple, un cercle de rayon $r$, centré sur l'origine correspond à tous les points de coordonnées $(x,y)$ dont la norme $L_2$ vaut $r$. C'est aussi la norme utilisée dans le critère des moindres carrées. La fonction de pénalisation s'écrit :\n", + "$$\n", + "P_r(\\lambda, \\theta) = \\lambda \\sum_{j=0}^{n}\\theta_j^2\n", + "$$\n", + "et donc la fonction coût \"pénalisée\" s'écrit\n", + "$$\n", + "J(\\theta) = \\frac{1}{2m}\\sum_{i=1}^{m}\\left(h_\\theta(x_i)-y_i\\right)^2+\\lambda \\sum_{j=0}^{n}\\theta_j^2\n", + "$$\n", + "\n", + "**Régression lasso**\n", + "\n", + "La fonction de pénalisation lasso (Least Absolute Shrinkage and Selection Operator) est identique mais se base sur la norme $L_1$ :\n", + "$$\n", + "P_l(\\lambda, \\theta) = \\lambda \\sum_{j=0}^{n} \\lvert \\theta_j \\rvert\n", + "$$\n", + "\n", + "**Régression ElasticNet**\n", + "\n", + "La fonction de pénalisation est une composition des deux précédentes, en ajoutant un nouveau paramètre $\\alpha$ mesurant l'importance donnée à l'une des deux fonctions de pénalisation précédente par rapport à l'autre.\n", + "$$\n", + "P_e(\\lambda, \\theta) = \\lambda \\sum_{j=0}^{n} \\left( \\alpha \\theta_j^2 + (1-\\alpha) \\lvert \\theta_j \\rvert \\right)\n", + "$$\n", + "\n", + "L'impact des techniques de régularisation avec ces fonctions de pénalisation sera étudié dans les TP.\n", + "\n", + "**Références sur les techniques de régularisation**\n", + "1. E. Biernat et M. Lutz (2015) \"Data science : fondamentaux et études de cas: Machine learning avec Python et R\", Editions Eyrolles\n", + "2. [Blog de Xavier Dupré, Régression Ridge, Lasso et nouvel estimateur](http://www.xavierdupre.fr/app/papierstat/helpsphinx/notebooks/2020-02-07_sklapi.html)" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "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.7.4" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} -- GitLab