{"id":16715,"date":"2018-07-12T14:49:11","date_gmt":"2018-07-12T18:49:11","guid":{"rendered":"https:\/\/www.crim.ca\/?post_type=blogue&#038;p=16715"},"modified":"2023-05-25T10:40:54","modified_gmt":"2023-05-25T14:40:54","slug":"manipuler-les-variables-categoriques-dans-un-jeu-de-donnees","status":"publish","type":"blogue","link":"https:\/\/www.crim.ca\/fr\/blogue\/manipuler-les-variables-categoriques-dans-un-jeu-de-donnees\/","title":{"rendered":"Manipuler les variables cat\u00e9goriques dans un jeu de donn\u00e9es"},"content":{"rendered":"<div class=\"o dz\">\n<div class=\"eo cf fi fj fk fl fm fn fo fp fq\">\n<article>\n<div class=\"l\">\n<div class=\"l\">\n<section>\n<div class=\"iw ix iy iz ja\">\n<p id=\"062a\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">D\u2019une mani\u00e8re g\u00e9n\u00e9rale, un jeu de donn\u00e9es (on exclut les donn\u00e9es textuelles et les images) comporte deux types de variables : les variables quantitatives et les variables qualitatives.<\/p>\n<figure class=\"la lb lc ld hf le gt gu paragraph-image\">\n<div class=\"gt gu kz\"><img fetchpriority=\"high\" decoding=\"async\" class=\"cf lf lg\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/512\/1*k6yfyTO1pLGKXXcpLxuAFw.jpeg\" alt=\"\" width=\"256\" height=\"343\" \/><\/div><figcaption class=\"lh bm gv gt gu li lj bn b bo bp co\" data-selectable-paragraph=\"\">D\u00e8s l\u2019antiquit\u00e9, le concept de cat\u00e9gories a \u00e9t\u00e9 formalis\u00e9 par Aristote dans son ouvrage\u00a0<em class=\"lk\">Les Cat\u00e9gories<\/em>.<\/figcaption><\/figure>\n<p id=\"e2ba\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Une variable quantitative est une variable qui admet des valeurs num\u00e9riques, continues ou discr\u00e8tes. Par exemple, la taille d\u2019un individu, le salaire d\u2019un employ\u00e9, la vitesse d\u2019une voiture sont des variables quantitatives. Ces variables \u00e9tant num\u00e9riques, leur traitement par les algorithmes d\u2019apprentissage automatique est plus simple, c\u2019est-\u00e0-dire qu\u2019elles peuvent \u00eatre utilis\u00e9es directement sans n\u00e9cessiter une transformation pr\u00e9alable.<\/p>\n<p id=\"5331\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Une variable qualitative quant \u00e0 elle prend des valeurs appel\u00e9es cat\u00e9gories, modalit\u00e9s ou niveaux qui n\u2019ont pas de sens quantitatif. Par exemple, le genre d\u2019un individu est une variable cat\u00e9gorique avec deux (ou plus) modalit\u00e9s :\u00a0<em class=\"ky\">masculin<\/em>\u00a0et\u00a0<em class=\"ky\">f\u00e9minin<\/em>. Aussi, des statistiques telles que la moyenne n\u2019ont pas de sens sur ces donn\u00e9es. La pr\u00e9sence de ces variables dans les donn\u00e9es complique g\u00e9n\u00e9ralement l\u2019apprentissage. En effet, la plupart des algorithmes d\u2019apprentissage automatique prennent des valeurs num\u00e9riques en entr\u00e9e. Ainsi, il faut trouver une fa\u00e7on de transformer nos modalit\u00e9s en donn\u00e9es num\u00e9riques.<\/p>\n<p id=\"6cec\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">De plus, la fa\u00e7on dont cette transformation est op\u00e9r\u00e9e est tr\u00e8s importante. En effet, le codage des variables cat\u00e9goriques nuit g\u00e9n\u00e9ralement \u00e0 la performance des algorithmes d\u2019apprentissage. Un codage peut s\u2019av\u00e9rer plus judicieux qu\u2019un autre. Par exemple, les for\u00eats al\u00e9atoires, un type d\u2019algorithme d\u2019apprentissage automatique, peinent \u00e0 capturer l\u2019information des variables cat\u00e9goriques comportant un grand nombre de modalit\u00e9s si celles-ci sont trait\u00e9es avec la technique d\u2019encodage\u00a0<em class=\"ky\">one-hot encoding<\/em>\u00a0pr\u00e9sent\u00e9e \u00e0 la section suivante. C\u2019est ainsi que des algorithmes d\u2019apprentissage plus sp\u00e9cifiques tels que\u00a0<em class=\"ky\">Catboost,\u00a0<\/em>que nous d\u00e9crivons plus bas, ont vu le jour.<\/p>\n<p id=\"8ef5\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Dans cet article, nous pr\u00e9sentons diff\u00e9rentes m\u00e9thodes et astuces pour g\u00e9rer les variables cat\u00e9goriques.<\/p>\n<p id=\"6023\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">L\u2019exemple ci-dessous sert d\u2019illustration \u00e0 certaines m\u00e9thodes tout le long de l\u2019article.<\/p>\n<figure class=\"la lb lc ld hf le gt gu paragraph-image\">\n<div class=\"gt gu ll\"><img decoding=\"async\" class=\"cf lf lg\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/582\/1*UChHnw0I-p1z_Qn-O-iUVw.png\" alt=\"\" width=\"291\" height=\"202\" \/><\/div><figcaption class=\"lh bm gv gt gu li lj bn b bo bp co\" data-selectable-paragraph=\"\">Exemple de jeu de donn\u00e9es.<\/figcaption><\/figure>\n<h2 id=\"5145\" class=\"lm ln jd bn lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj gi\"><strong class=\"ba\">One-hot encoding<\/strong><\/h2>\n<p id=\"2c19\" class=\"pw-post-body-paragraph ka kb jd kc b kd mk kf kg kh ml kj kk kl mm kn ko kp mn kr ks kt mo kv kw kx iw gi\" data-selectable-paragraph=\"\">Le\u00a0<em class=\"ky\">one hot encoding<\/em>\u00a0est la m\u00e9thode la plus populaire pour transformer une variable cat\u00e9gorique en variable num\u00e9rique. Sa popularit\u00e9 r\u00e9side principalement dans la facilit\u00e9 d\u2019application. De plus, pour beaucoup de probl\u00e8mes, elle donne de bons r\u00e9sultats. Son principe est le suivant :<\/p>\n<p id=\"7963\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Consid\u00e9rons une variable cat\u00e9gorique X qui admet\u00a0<em class=\"ky\">K\u00a0<\/em>modalit\u00e9s\u00a0<em class=\"ky\">m1<\/em>,\u00a0<em class=\"ky\">m2<\/em>, \u2026,\u00a0<em class=\"ky\">mK<\/em>. Le\u00a0<em class=\"ky\">one hot encoding<\/em>\u00a0consiste \u00e0 cr\u00e9er\u00a0<em class=\"ky\">K\u00a0<\/em>variables indicatrices, soit un vecteur de taille\u00a0<em class=\"ky\">K<\/em>\u00a0qui a des 0 partout et un 1 \u00e0 la position\u00a0<em class=\"ky\">i\u00a0<\/em>correspondant \u00e0 la modalit\u00e9\u00a0<em class=\"ky\">mi<\/em>. On remplace donc la variable cat\u00e9gorique par\u00a0<em class=\"ky\">K\u00a0<\/em>variables num\u00e9riques.<\/p>\n<p id=\"7d4c\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Si l\u2019on consid\u00e8re l\u2019exemple pr\u00e9c\u00e9dent et qu\u2019on suppose que les cat\u00e9gories disponibles sont uniquement celles affich\u00e9es, on a alors :<\/p>\n<figure class=\"la lb lc ld hf le gt gu paragraph-image\">\n<div class=\"gt gu mp\"><img decoding=\"async\" class=\"cf lf lg\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/1284\/1*z0pQvmTHekIKiNVF4p5INg.png\" alt=\"\" width=\"642\" height=\"202\" \/><\/div><figcaption class=\"lh bm gv gt gu li lj bn b bo bp co\" data-selectable-paragraph=\"\">R\u00e9sultat du\u00a0<em class=\"lk\">one-hot encoding<\/em>.<\/figcaption><\/figure>\n<p id=\"eb44\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\"><strong class=\"kc je\">Avantages\u00a0<\/strong>: simple, intuitif, rapide \u00e0 mettre en place.<\/p>\n<div><\/div>\n<p id=\"628c\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\"><strong class=\"kc je\">Inconv\u00e9nients<\/strong>\u00a0: Lorsque le nombre de modalit\u00e9s est \u00e9lev\u00e9 (sup\u00e9rieur \u00e0 100 par exemple), le nombre de nouvelles variables cr\u00e9\u00e9es est \u00e9galement \u00e9lev\u00e9. Ainsi, on se retrouve avec un jeu de donn\u00e9es beaucoup plus volumineux, qui occupe plus d\u2019espace en m\u00e9moire et dont le traitement par les algorithmes d\u2019apprentissage devient plus difficile. Aussi, certains algorithmes, notamment quelques impl\u00e9mentations des for\u00eats d\u2019arbres d\u00e9cisionnels, n\u2019arrivent pas \u00e0 exploiter au mieux les informations contenues dans ces variables lorsque ce nombre de modalit\u00e9s est trop grand (voir [1] pour plus de d\u00e9tails).<\/p>\n<h2 id=\"cd9f\" class=\"lm ln jd bn lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj gi\"><strong class=\"ba\">R\u00e9duction du nombre de modalit\u00e9s<\/strong><\/h2>\n<p id=\"c8a7\" class=\"pw-post-body-paragraph ka kb jd kc b kd mk kf kg kh ml kj kk kl mm kn ko kp mn kr ks kt mo kv kw kx iw gi\" data-selectable-paragraph=\"\">La connaissance m\u00e9tier peut aider \u00e0 r\u00e9duire le nombre de modalit\u00e9s. En effet, une compr\u00e9hension des cat\u00e9gories peut permettre de les regrouper efficacement. Un regroupement naturel se fait lorsque les modalit\u00e9s sont hi\u00e9rarchiques, c\u2019est-\u00e0-dire qu\u2019il est possible de d\u00e9finir une nouvelle cat\u00e9gorie qui englobe d\u2019autres cat\u00e9gories. Supposons une variable dont les cat\u00e9gories sont les quartiers d\u2019une ville : ces cat\u00e9gories peuvent par exemple \u00eatre regroup\u00e9es par arrondissement, c\u2019est-\u00e0-dire que les quartiers d\u2019un m\u00eame arrondissement auront la m\u00eame modalit\u00e9. Il s\u2019agit d\u2019un cas assez fr\u00e9quent. Toutefois, signalons que ces regroupements peuvent introduire un biais dans le mod\u00e8le.<\/p>\n<div><\/div>\n<p id=\"9282\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Une seconde fa\u00e7on de s\u2019en tirer avec un nombre de cat\u00e9gories \u00e9lev\u00e9 consiste \u00e0 essayer de fusionner les modalit\u00e9s \u00e0 faible effectif. On peut combiner les modalit\u00e9s qui apparaissent tr\u00e8s peu fr\u00e9quemment dans les donn\u00e9es. On effectue un tableau des effectifs des modalit\u00e9s, et celles dont la fr\u00e9quence est inf\u00e9rieure \u00e0 un certain seuil sont mises ensemble dans une m\u00eame cat\u00e9gorie \u00abautre\u00bb par exemple. Ensuite, un\u00a0<em class=\"ky\">one-hot encoding<\/em>\u00a0peut \u00eatre appliqu\u00e9 sur la nouvelle variable.<\/p>\n<h2 id=\"d134\" class=\"lm ln jd bn lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj gi\"><strong class=\"ba\">Variables ordinales<\/strong><\/h2>\n<p id=\"da2e\" class=\"pw-post-body-paragraph ka kb jd kc b kd mk kf kg kh ml kj kk kl mm kn ko kp mn kr ks kt mo kv kw kx iw gi\" data-selectable-paragraph=\"\">Les variables ordinales sont des variables cat\u00e9goriques qui pr\u00e9sentent une notion d\u2019ordre, c\u2019est-\u00e0-dire qu\u2019un classement de leurs modalit\u00e9s est possible. Par exemple, la variable\u00a0<em class=\"ky\">Tranche d\u2019\u00e2ge<\/em>\u00a0qui prendrait les valeurs\u00a0<em class=\"ky\">b\u00e9b\u00e9, adolescent, enfant, adulte, personne \u00e2g\u00e9e\u00a0<\/em>est une variable ordinale. En effet nous pouvons ordonner les modalit\u00e9s de mani\u00e8re croissante comme suit :\u00a0<em class=\"ky\">b\u00e9b\u00e9 &lt; enfant &lt; adolescent &lt; adulte &lt; personne \u00e2g\u00e9e.<\/em><\/p>\n<p id=\"7ee2\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Dans le cas de telles variables, une alternative au\u00a0<em class=\"ky\">one-hot-encoding<\/em>\u00a0consiste \u00e0 utiliser le rang pour encoder les modalit\u00e9s, ce qui rend alors la variable quantitative. Dans l\u2019exemple\u00a0<em class=\"ky\">Tranche d\u2019\u00e2ge<\/em>, nous aurions par exemple\u00a0<em class=\"ky\">b\u00e9b\u00e9 = 1, enfant = 2, adolescent=3,\u00a0<\/em>etc.<\/p>\n<p id=\"7597\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">La connaissance des modalit\u00e9s peut permettre d\u2019associer d\u2019autres valeurs num\u00e9riques aux modalit\u00e9s, autre que le rang. Dans le cas de\u00a0<em class=\"ky\">Tranche d\u2019\u00e2ge,\u00a0<\/em>nous savons que l\u2019adolescence va d\u2019environ 12 \u00e0 17 ans, l\u2019\u00e2ge adulte de 25 \u00e0 65 ans. Ainsi la moyenne ((12 +17) \/ 2 = 14.5) de la plage de valeurs peut \u00eatre pr\u00e9f\u00e9r\u00e9e au rang.<\/p>\n<p id=\"be6c\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Les jours de la semaine et les jours du mois peuvent \u00eatre \u00e9galement trait\u00e9s comme des variables ordinales.<\/p>\n<h2 id=\"a3d4\" class=\"lm ln jd bn lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj gi\"><strong class=\"ba\"><em class=\"lk\">Impact encoding<\/em><\/strong><\/h2>\n<p id=\"807e\" class=\"pw-post-body-paragraph ka kb jd kc b kd mk kf kg kh ml kj kk kl mm kn ko kp mn kr ks kt mo kv kw kx iw gi\" data-selectable-paragraph=\"\">Lorsque le nombre de cat\u00e9gories devient tr\u00e8s grand l\u2019encodage par variables indicatrices peut devenir incommode. Une m\u00e9thode alternative au\u00a0<em class=\"ky\">clustering<\/em>\u00a0ou \u00e0 la troncation des cat\u00e9gories consiste \u00e0 caract\u00e9riser les cat\u00e9gories par le lien qu\u2019elles entretiennent avec la variable cible\u00a0<em class=\"ky\">y<\/em>\u00a0: il s\u2019agit de l\u2019<em class=\"ky\">impact encoding<\/em>.<\/p>\n<p id=\"73c3\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Cette m\u00e9thode est aussi connue sous les noms :\u00a0<em class=\"ky\">likelihood encoding<\/em>,\u00a0<em class=\"ky\">target coding<\/em>,\u00a0<em class=\"ky\">conditional-probability encoding<\/em>,\u00a0<em class=\"ky\">weight of evidence<\/em>\u00a0([9]).<\/p>\n<div><\/div>\n<p id=\"c676\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\"><strong class=\"kc je\">D\u00e9finition\u00a0<\/strong>: Pour un probl\u00e8me de r\u00e9gression ayant pour variable cible\u00a0<em class=\"ky\">y<\/em>, soit\u00a0<em class=\"ky\">X<\/em>, une variable cat\u00e9gorique ayant\u00a0<em class=\"ky\">K<\/em>\u00a0cat\u00e9gories\u00a0<em class=\"ky\">m1<\/em>, \u2026,\u00a0<em class=\"ky\">mK<\/em>. Chaque cat\u00e9gorie\u00a0<em class=\"ky\">mk<\/em>\u00a0est encod\u00e9e par sa valeur d\u2019impact :<\/p>\n<figure class=\"la lb lc ld hf le gt gu paragraph-image\">\n<div class=\"gt gu mq\"><img loading=\"lazy\" decoding=\"async\" class=\"cf lf lg\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/534\/1*C3ULJRD5KpCh874mu-Qq9g.png\" alt=\"\" width=\"267\" height=\"19\" \/><\/div>\n<\/figure>\n<p id=\"2b08\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">\ud835\udd3c[<em class=\"ky\">y<\/em>|X=<em class=\"ky\">mk<\/em>] correspond \u00e0 l\u2019esp\u00e9rance de la cible\u00a0<em class=\"ky\">y\u00a0<\/em>sachant que la variable\u00a0<em class=\"ky\">X\u00a0<\/em>est fix\u00e9e \u00e0 la modalit\u00e9\u00a0<em class=\"ky\">mk<\/em>. Pour un jeu d\u2019entra\u00eenement de taille\u00a0<em class=\"ky\">n\u00a0<\/em>contenant des \u00e9chantillons {<em class=\"ky\">(xi, yi)<\/em>, 1\u2264<em class=\"ky\">i<\/em>\u2264<em class=\"ky\">n<\/em>} ind\u00e9pendants et identiquement distribu\u00e9s, l\u2019estimateur de cette esp\u00e9rance est la moyenne des valeurs de\u00a0<em class=\"ky\">yi<\/em>\u00a0pour lesquelles la modalit\u00e9\u00a0<em class=\"ky\">xi\u00a0<\/em>est \u00e9gale \u00e0<em class=\"ky\">\u00a0mk\u00a0<\/em>:<\/p>\n<figure class=\"la lb lc ld hf le gt gu paragraph-image\">\n<div class=\"gt gu mr\"><img loading=\"lazy\" decoding=\"async\" class=\"cf lf lg\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/396\/1*EhparLW2K8aDfeId1zevTQ.png\" alt=\"\" width=\"198\" height=\"48\" \/><\/div>\n<\/figure>\n<p id=\"541e\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">o\u00f9\u00a0<em class=\"ky\">Sk<\/em>\u00a0est l\u2019ensemble des indices\u00a0<em class=\"ky\">i\u00a0<\/em>des observations telles que\u00a0<em class=\"ky\">xi\u00a0<\/em>soit \u00e9gal \u00e0\u00a0<em class=\"ky\">mk<\/em>\u00a0et\u00a0<em class=\"ky\">nk<\/em>\u00a0la cardinalit\u00e9 de cet ensemble.<\/p>\n<p id=\"af96\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">L\u2019estimateur de l\u2019esp\u00e9rance de\u00a0<em class=\"ky\">y\u00a0<\/em>est simplement sa moyenne empirique :<\/p>\n<figure class=\"la lb lc ld hf le gt gu paragraph-image\">\n<div class=\"gt gu ms\"><img loading=\"lazy\" decoding=\"async\" class=\"cf lf lg\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/232\/1*waM1SCPlHyuzfhZhr9qxhg.png\" alt=\"\" width=\"116\" height=\"51\" \/><\/div>\n<\/figure>\n<p id=\"283a\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Notons qu\u2019il existe d\u2019autres variantes \u00e0 la d\u00e9finition donn\u00e9e ci-haut. Par exemple, dans [8], les deux expressions sont pond\u00e9r\u00e9es par un param\u00e8tre compris entre 0 et 1.<\/p>\n<p id=\"cdc7\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Pour illustrer l\u2019<em class=\"ky\">impact encoding, c<\/em>onsid\u00e9rons la variable\u00a0<em class=\"ky\">produit\u00a0<\/em>dans notre exemple pr\u00e9c\u00e9dent. Elle a trois modalit\u00e9s, \u00e0 savoir\u00a0<em class=\"ky\">chemises, chaussures\u00a0<\/em>et\u00a0<em class=\"ky\">parfums.\u00a0<\/em>La moyenne empirique est (50,99 + 44 + 120 + 45)\/4 = 64,9975. On a alors :<\/p>\n<p id=\"889f\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">impact(chemises) = (50,99 + 45)\/2\u201364,9975 = -17<\/p>\n<p id=\"05d6\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">impact(chaussures) = 44\u201364,9975 = -21<\/p>\n<p id=\"9349\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">impact(parfum) = 120\u201364,9975 = 55<\/p>\n<figure class=\"la lb lc ld hf le gt gu paragraph-image\">\n<div class=\"mu mv dq mw cf mx\" tabindex=\"0\" role=\"button\">\n<div class=\"gt gu mt\"><img loading=\"lazy\" decoding=\"async\" class=\"cf lf lg\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*5vxvtbYN5qEmU9YKwD3UnA.png\" alt=\"\" width=\"700\" height=\"230\" \/><\/div>\n<\/div><figcaption class=\"lh bm gv gt gu li lj bn b bo bp co\" data-selectable-paragraph=\"\">Calcul de l\u2019impact encoding de la modalit\u00e9 chemise.<\/figcaption><\/figure>\n<p id=\"cc80\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Cet encodage a l\u2019avantage d\u2019\u00eatre tr\u00e8s compact :\u00a0<strong class=\"kc je\">le nombre de descripteurs d\u2019une variable est constant\u00a0<\/strong>par rapport au nombre de cat\u00e9gories. Cependant, cet encodage entra\u00eene\u00a0<strong class=\"kc je\">une perte d\u2019information<\/strong>\u00a0: seule une valeur de \u00abcorr\u00e9lation\u00bb avec la cible\u00a0<em class=\"ky\">y<\/em>\u00a0est retenue. Cela signifie que si deux cat\u00e9gories ont des valeurs proches pour la cible\u00a0<em class=\"ky\">y<\/em>\u00a0en moyenne, elles ne pourront pas \u00eatre distingu\u00e9es par le mod\u00e8le.<\/p>\n<p id=\"8570\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Pour rem\u00e9dier \u00e0 cette perte d\u2019information, il est possible de garder des variables indicatrices pour les cat\u00e9gories les plus dominantes. Une alternative est d\u2019encoder des combinaisons de variables : parfois, une cat\u00e9gorie seule ne sera pas corr\u00e9l\u00e9e avec la cible\u00a0<em class=\"ky\">y<\/em>, mais la combinaison de deux variables cat\u00e9goriques peut \u00eatre \u00abpr\u00e9dictive\u00bb de la cible. En pratique, cela consiste \u00e0 identifier les paires (voire triplets) de variables cat\u00e9goriques qui peuvent avoir une interaction avec la variable cible et encoder la concat\u00e9nation des instances de ces variables; une connaissance m\u00e9tier aide souvent \u00e0 identifier ces combinaisons de variables int\u00e9ressantes. Cette m\u00e9thode peut m\u00eame \u00eatre \u00e9tendue \u00e0 l\u2019encodage des variables non cat\u00e9goriques, en transformant les variables continues en variables binaires, par discr\u00e9tisation et binarisation ([6], [7]).<\/p>\n<p id=\"f598\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">L\u2019<em class=\"ky\">impact encoding<\/em>\u00a0est\u00a0<strong class=\"kc je\">une forme de\u00a0<em class=\"ky\">model stacking<\/em><\/strong>\u00a0(empilement de mod\u00e8les) : dans un premier temps, des mod\u00e8les simples (calculs des \ud835\udd3c[y|<em class=\"ky\">xk<\/em>]) sont entra\u00een\u00e9s sur chacune des variables cat\u00e9goriques. Les pr\u00e9dictions en sortie de ces mod\u00e8les sont alors utilis\u00e9es comme descripteurs dans un second mod\u00e8le.<\/p>\n<figure class=\"la lb lc ld hf le gt gu paragraph-image\">\n<div class=\"mu mv dq mw cf mx\" tabindex=\"0\" role=\"button\">\n<div class=\"gt gu my\"><img loading=\"lazy\" decoding=\"async\" class=\"cf lf lg\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/1400\/1*bxhcUAPZqIPDSGGkAgauAA.png\" alt=\"\" width=\"700\" height=\"286\" \/><\/div>\n<\/div><figcaption class=\"lh bm gv gt gu li lj bn b bo bp co\" data-selectable-paragraph=\"\">Illustration de l\u2019impact encoding.<\/figcaption><\/figure>\n<div><\/div>\n<p id=\"746e\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Comme pour toute m\u00e9thode de\u00a0<em class=\"ky\">stacking<\/em>, il y a un fort risque de surapprentissage. En effet, les nouveaux descripteurs peuvent \u00eatre tr\u00e8s corr\u00e9l\u00e9s \u00e0 la cible, donnant ainsi des r\u00e9sultats trop optimistes. Il convient alors de calculer l\u2019impact sur un petit jeu de donn\u00e9es distinct du jeu d\u2019entra\u00eenement utilis\u00e9 pour le mod\u00e8le. Habituellement une m\u00e9thode de\u00a0<em class=\"ky\">cross-validation<\/em>\u00a0(validation crois\u00e9e) est utilis\u00e9e.<\/p>\n<p id=\"9364\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Une application de ces m\u00e9thodes est faite dans\u00a0<strong class=\"kc je\">Catboost<\/strong>, une impl\u00e9mentation de l\u2019algorithme de\u00a0<em class=\"ky\">gradient boosting<\/em>\u00a0maintenu par Yandex. Par d\u00e9faut, toutes les variables cat\u00e9goriques avec plus de deux cat\u00e9gories sont encod\u00e9es par\u00a0<em class=\"ky\">impact encoding<\/em>\u00a0(ou variantes).<\/p>\n<p id=\"cc31\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Dans\u00a0<em class=\"ky\">Catboost<\/em><strong class=\"kc je\">,<\/strong>\u00a0l\u2019<em class=\"ky\">impact encoding<\/em>\u00a0n\u2019est r\u00e9alis\u00e9 qu\u2019avec des variables cibles binaires (0\/1). Dans le cas o\u00f9 le probl\u00e8me n\u2019est pas une classification binaire, la variable cible est transform\u00e9e en plusieurs variables binaires et, pour chacune de ces variables, un encodage par impact est r\u00e9alis\u00e9. Par exemple, si pour un probl\u00e8me de classification, la variable cible est cat\u00e9gorique, elle est convertie en\u00a0<em class=\"ky\">K<\/em>\u00a0variables binaires par encodage\u00a0<em class=\"ky\">one-hot<\/em>.<\/p>\n<p id=\"7b8c\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\"><strong class=\"kc je\">Avantages\u00a0<\/strong>: Le nombre de descripteurs produit ne d\u00e9pend pas du nombre de cat\u00e9gories. C\u2019est une forme d\u2019encodage relativement simple.<\/p>\n<div><\/div>\n<p id=\"728b\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\"><strong class=\"kc je\">Inconv\u00e9nients\u00a0<\/strong>: Une complexit\u00e9 d\u2019impl\u00e9mentation due au risque de surapprentissage (l\u2019utilisation de biblioth\u00e8ques comme\u00a0<em class=\"ky\">vtreat<\/em>\u00a0ou\u00a0<em class=\"ky\">catboost<\/em>\u00a0est recommand\u00e9e).<\/p>\n<h2 id=\"ad03\" class=\"lm ln jd bn lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj gi\"><strong class=\"ba\">M\u00e9thodes d\u2019embeddings<\/strong><\/h2>\n<p id=\"ad4b\" class=\"pw-post-body-paragraph ka kb jd kc b kd mk kf kg kh ml kj kk kl mm kn ko kp mn kr ks kt mo kv kw kx iw gi\" data-selectable-paragraph=\"\">Cette m\u00e9thode utilise des techniques de l\u2019apprentissage profond; elle tire son inspiration de mod\u00e8les comme\u00a0<a class=\"au mz\" href=\"https:\/\/arxiv.org\/pdf\/1301.3781.pdf\" target=\"_blank\" rel=\"noopener ugc nofollow\">word2vec<\/a>\u00a0sur les donn\u00e9es textuelles et qui donnent des r\u00e9sultats tr\u00e8s impressionnants.<\/p>\n<p id=\"64a8\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Il s\u2019agit de cr\u00e9er une repr\u00e9sentation de chaque modalit\u00e9 d\u2019une variable cat\u00e9gorique en un vecteur num\u00e9rique de taille fixe (<em class=\"ky\">e\u00a0<\/em>par exemple). Ainsi la modalit\u00e9\u00a0<em class=\"ky\">dior\u00a0<\/em>de la variable\u00a0<em class=\"ky\">marque\u00a0<\/em>de notre exemple peut \u00eatre repr\u00e9sent\u00e9e par le vecteur (0,54, 0,28) pour\u00a0<em class=\"ky\">e=2<\/em>\u00a0par exemple. L\u2019utilisation des\u00a0<em class=\"ky\">embeddings<\/em>\u00a0permet entre autres une r\u00e9duction de la dimensionnalit\u00e9 puisque la taille du vecteur\u00a0<em class=\"ky\">e<\/em>\u00a0peut \u00eatre choisie tr\u00e8s petite par rapport au nombre de modalit\u00e9s. En effet, plut\u00f4t que de cr\u00e9er une variable pour chaque modalit\u00e9, ici seulement\u00a0<em class=\"ky\">e\u00a0<\/em>variables sont cr\u00e9\u00e9es.<\/p>\n<div><\/div>\n<p id=\"7453\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\">Concr\u00e8tement, l\u2019obtention de ces\u00a0<em class=\"ky\">embeddings<\/em>\u00a0se fait par l\u2019entra\u00eenement d\u2019un r\u00e9seau de neurones (souvent un perceptron multicouche) avec en entr\u00e9e uniquement les variables cat\u00e9goriques. D\u2019abord, un\u00a0<em class=\"ky\">one-hot encoding<\/em>\u00a0est appliqu\u00e9 \u00e0 la variable afin d\u2019\u00eatre mise en entr\u00e9e du r\u00e9seau. G\u00e9n\u00e9ralement, une ou deux couches cach\u00e9es sont suffisantes. La premi\u00e8re couche cach\u00e9e poss\u00e8de\u00a0<em class=\"ky\">e\u00a0<\/em>neurones. Le r\u00e9seau est alors entra\u00een\u00e9 sur la m\u00eame t\u00e2che que celle initialement d\u00e9finie. Puis, la sortie de la premi\u00e8re couche cach\u00e9e constitue alors le vecteur d\u2019<em class=\"ky\">embeddings\u00a0<\/em>([10]). On concat\u00e8ne ensuite ce vecteur aux donn\u00e9es initiales (cr\u00e9ation de\u00a0<em class=\"ky\">e<\/em>\u00a0variables). Ces donn\u00e9es sont ensuite utilis\u00e9es dans l\u2019ajustement du mod\u00e8le final. Il existe dans la litt\u00e9rature diverses variantes sur la mani\u00e8re d\u2019obtenir ces\u00a0<em class=\"ky\">embeddings<\/em>. En outre, rien n\u2019emp\u00eache de mettre plus de deux couches cach\u00e9es et de retenir la sortie de la deuxi\u00e8me plut\u00f4t que celle de la premi\u00e8re. Par ailleurs, le r\u00e9seau peut \u00eatre entra\u00een\u00e9 sur une t\u00e2che autre que la t\u00e2che initiale.<\/p>\n<figure class=\"la lb lc ld hf le gt gu paragraph-image\">\n<div class=\"gt gu na\"><img loading=\"lazy\" decoding=\"async\" class=\"cf lf lg\" role=\"presentation\" src=\"https:\/\/miro.medium.com\/max\/964\/1*7O9DUwsZnMU5zp6MjGa4BQ.png\" alt=\"\" width=\"482\" height=\"373\" \/><\/div><figcaption class=\"lh bm gv gt gu li lj bn b bo bp co\" data-selectable-paragraph=\"\">Perceptron multicouche avec deux couches cach\u00e9es (image tir\u00e9e de [11]).<\/figcaption><\/figure>\n<p id=\"18fb\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\"><strong class=\"kc je\">Avantages<\/strong>\u00a0: Les\u00a0<em class=\"ky\">embeddings<\/em>\u00a0permettent une r\u00e9duction de la dimension; dans certains cas, leur utilisation donne des performances nettement meilleures. De plus, ils peuvent permettre d\u2019\u00e9viter l\u2019introduction de biais lors de la r\u00e9duction des modalit\u00e9s par la connaissance m\u00e9tier.<\/p>\n<p id=\"3c57\" class=\"pw-post-body-paragraph ka kb jd kc b kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx iw gi\" data-selectable-paragraph=\"\"><strong class=\"kc je\">Inconv\u00e9nients<\/strong>\u00a0: La n\u00e9cessit\u00e9 d\u2019entra\u00eener un r\u00e9seau de neurones peut freiner certains utilisateurs (peu familiers avec l\u2019apprentissage profond), surtout si le mod\u00e8le final retenu est un mod\u00e8le simple comme une r\u00e9gression lin\u00e9aire. Aussi, on perd en interpr\u00e9tabilit\u00e9 des variables cat\u00e9goriques.<\/p>\n<h2 id=\"1a77\" class=\"lm ln jd bn lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj gi\"><strong class=\"ba\">Conclusion<\/strong><\/h2>\n<div><\/div>\n<p id=\"ddf8\" class=\"pw-post-body-paragraph ka kb jd kc b kd mk kf kg kh ml kj kk kl mm kn ko kp mn kr ks kt mo kv kw kx iw gi\" data-selectable-paragraph=\"\">Les variables cat\u00e9goriques sont tr\u00e8s fr\u00e9quentes dans les donn\u00e9es et il faut leur accorder une attention minutieuse. En effet, leur traitement ad\u00e9quat peut permettre d\u2019am\u00e9liorer consid\u00e9rablement les performances d\u2019un mod\u00e8le. Il est important de noter que les techniques pr\u00e9sent\u00e9es ici ne sont que quelques strat\u00e9gies \u00e0 explorer et qu\u2019il en existe beaucoup d\u2019autres. Aussi, face \u00e0 une nouvelle t\u00e2che, il faut tester les diff\u00e9rents encodages pour voir celles qui donnent les meilleurs r\u00e9sultats.<\/p>\n<h2 id=\"c726\" class=\"lm ln jd bn lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj gi\"><strong class=\"ba\">R\u00e9f\u00e9rences<\/strong><\/h2>\n<ol class=\"\">\n<li id=\"390e\" class=\"nb nc jd kc b kd mk kh ml kl nd kp ne kt nf kx ng nh ni nj gi\" data-selectable-paragraph=\"\"><a class=\"au mz\" href=\"https:\/\/roamanalytics.com\/2016\/10\/28\/are-categorical-variables-getting-lost-in-your-random-forests\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">https:\/\/roamanalytics.com\/2016\/10\/28\/are-categorical-variables-getting-lost-in-your-random-forests\/<\/a><\/li>\n<li id=\"ffdb\" class=\"nb nc jd kc b kd nk kh nl kl nm kp nn kt no kx ng nh ni nj gi\" data-selectable-paragraph=\"\"><em class=\"ky\">vtreat: a data.frame Processor for Predictive Modeling<\/em>\u00a0, article associ\u00e9 \u00e0 la biblioth\u00e8que de g\u00e9nie de descripteurs vtreat, utilis\u00e9 comme principale r\u00e9f\u00e9rence de ce billet :\u00a0<a class=\"au mz\" href=\"https:\/\/arxiv.org\/pdf\/1611.09477.pdf\" target=\"_blank\" rel=\"noopener ugc nofollow\">https:\/\/arxiv.org\/pdf\/1611.09477.pdf<\/a><\/li>\n<li id=\"b230\" class=\"nb nc jd kc b kd nk kh nl kl nm kp nn kt no kx ng nh ni nj gi\" data-selectable-paragraph=\"\"><em class=\"ky\">Transforming categorical features to numerical features<\/em>,<em class=\"ky\">\u00a0<\/em>de la documentation de Catboost :\u00a0<a class=\"au mz\" href=\"https:\/\/tech.yandex.com\/catboost\/doc\/dg\/concepts\/algorithm-main-stages_cat-to-numberic-docpage\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">https:\/\/tech.yandex.com\/catboost\/doc\/dg\/concepts\/algorithm-main-stages_cat-to-numberic-docpage\/<\/a><\/li>\n<li id=\"7a3e\" class=\"nb nc jd kc b kd nk kh nl kl nm kp nn kt no kx ng nh ni nj gi\" data-selectable-paragraph=\"\">Tutoriel sur l\u2019<em class=\"ky\">impact encoding<\/em>\u00a0de variables cat\u00e9gorielles :\u00a0<a class=\"au mz\" href=\"https:\/\/github.com\/Dpananos\/Categorical-Features\" target=\"_blank\" rel=\"noopener ugc nofollow\">https:\/\/github.com\/Dpananos\/Categorical-Features<\/a><\/li>\n<li id=\"7ccd\" class=\"nb nc jd kc b kd nk kh nl kl nm kp nn kt no kx ng nh ni nj gi\" data-selectable-paragraph=\"\"><em class=\"ky\">Efficient Estimation of Word Representations in Vector Space<\/em>\u00a0:\u00a0<a class=\"au mz\" href=\"https:\/\/arxiv.org\/pdf\/1301.3781.pdf\" target=\"_blank\" rel=\"noopener ugc nofollow\">https:\/\/arxiv.org\/pdf\/1301.3781.pdf<\/a><\/li>\n<li id=\"efcb\" class=\"nb nc jd kc b kd nk kh nl kl nm kp nn kt no kx ng nh ni nj gi\" data-selectable-paragraph=\"\">Page \u00ab<em class=\"ky\">binarization<\/em>\u00bb de la documentation de Catboost :\u00a0<a class=\"au mz\" href=\"https:\/\/tech.yandex.com\/catboost\/doc\/dg\/concepts\/binarization-docpage\/\" target=\"_blank\" rel=\"noopener ugc nofollow\">https:\/\/tech.yandex.com\/catboost\/doc\/dg\/concepts\/binarization-docpage\/<\/a><\/li>\n<li id=\"3e9f\" class=\"nb nc jd kc b kd nk kh nl kl nm kp nn kt no kx ng nh ni nj gi\" data-selectable-paragraph=\"\"><a class=\"au mz\" href=\"https:\/\/books.google.fr\/books?id=MBPaDAAAQBAJ&amp;pg=PT102#v=onepage&amp;q&amp;f=false\" target=\"_blank\" rel=\"noopener ugc nofollow\">https:\/\/books.google.fr\/books?id=MBPaDAAAQBAJ&amp;pg=PT102#v=onepage&amp;q&amp;f=false<\/a><\/li>\n<li id=\"3aa9\" class=\"nb nc jd kc b kd nk kh nl kl nm kp nn kt no kx ng nh ni nj gi\" data-selectable-paragraph=\"\"><a class=\"au mz\" href=\"https:\/\/kaggle2.blob.core.windows.net\/forum-message-attachments\/225952\/7441\/high%20cardinality%20categoricals.pdf\" target=\"_blank\" rel=\"noopener ugc nofollow\">https:\/\/kaggle2.blob.core.windows.net\/forum-message-attachments\/225952\/7441\/high%20cardinality%20categoricals.pdf<\/a><\/li>\n<li id=\"bc8e\" class=\"nb nc jd kc b kd nk kh nl kl nm kp nn kt no kx ng nh ni nj gi\" data-selectable-paragraph=\"\"><em class=\"ky\">Weight of Evidence<\/em>, un outil surtout utilis\u00e9 en \u00e9conom\u00e9trie, analogue \u00e0 l\u2019<em class=\"ky\">impact encoding\u00a0<\/em>:\u00a0<a class=\"au mz\" href=\"https:\/\/www.listendata.com\/2015\/03\/weight-of-evidence-woe-and-information.html\" target=\"_blank\" rel=\"noopener ugc nofollow\">https:\/\/www.listendata.com\/2015\/03\/weight-of-evidence-woe-and-information.html<\/a><\/li>\n<li id=\"f6d5\" class=\"nb nc jd kc b kd nk kh nl kl nm kp nn kt no kx ng nh ni nj gi\" data-selectable-paragraph=\"\">Entity Embeddings of Categorical Variables :\u00a0<a class=\"au mz\" href=\"https:\/\/arxiv.org\/pdf\/1604.06737.pdf\" target=\"_blank\" rel=\"noopener ugc nofollow\">https:\/\/arxiv.org\/pdf\/1604.06737.pdf<\/a><\/li>\n<li id=\"73ac\" class=\"nb nc jd kc b kd nk kh nl kl nm kp nn kt no kx ng nh ni nj gi\" data-selectable-paragraph=\"\"><a class=\"au mz\" href=\"https:\/\/commons.wikimedia.org\/wiki\/File:Perceptron_4layers.png\" target=\"_blank\" rel=\"noopener ugc nofollow\">https:\/\/commons.wikimedia.org\/wiki\/File:Perceptron_4layers.png<\/a><\/li>\n<\/ol>\n<\/div>\n<\/section>\n<\/div>\n<\/div>\n<\/article>\n<\/div>\n<\/div>\n<footer class=\"oz pa pb pc o ao pd dd c\">\n<div class=\"l pe\">\n<div class=\"o dz\">\n<div class=\"eo cf fi fj fk fl fm fn fo fp fq\">\n<div class=\"o u pf\">\n<div class=\"o ao hk\">\n<div class=\"pg l\">\n<div class=\"o ao hk\">\n<div class=\"pw-multi-vote-count l oi oj ok ol om on oo\"><\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/footer>\n","protected":false},"excerpt":{"rendered":"<p>D\u2019une mani\u00e8re g\u00e9n\u00e9rale, un jeu de donn\u00e9es (on exclut les donn\u00e9es textuelles et les images) comporte deux types de variables : les variables quantitatives et les variables qualitatives. D\u00e8s l\u2019antiquit\u00e9, le concept de cat\u00e9gories a \u00e9t\u00e9 formalis\u00e9 par Aristote dans son ouvrage\u00a0Les Cat\u00e9gories. Une variable quantitative est une variable qui admet des valeurs num\u00e9riques, continues [&hellip;]<\/p>\n","protected":false},"author":18,"featured_media":16720,"menu_order":0,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":"","_links_to":"","_links_to_target":""},"mots_cles":[351,360,359],"categorie_blogue":[344],"class_list":["post-16715","blogue","type-blogue","status-publish","format-standard","has-post-thumbnail","hentry","mots_cles-structurees","mots_cles-encodage","mots_cles-variables-categoriques","categorie_blogue-science-des-donnees"],"acf":[],"_links":{"self":[{"href":"https:\/\/www.crim.ca\/fr\/wp-json\/wp\/v2\/blogue\/16715","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.crim.ca\/fr\/wp-json\/wp\/v2\/blogue"}],"about":[{"href":"https:\/\/www.crim.ca\/fr\/wp-json\/wp\/v2\/types\/blogue"}],"author":[{"embeddable":true,"href":"https:\/\/www.crim.ca\/fr\/wp-json\/wp\/v2\/users\/18"}],"version-history":[{"count":3,"href":"https:\/\/www.crim.ca\/fr\/wp-json\/wp\/v2\/blogue\/16715\/revisions"}],"predecessor-version":[{"id":21791,"href":"https:\/\/www.crim.ca\/fr\/wp-json\/wp\/v2\/blogue\/16715\/revisions\/21791"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.crim.ca\/fr\/wp-json\/wp\/v2\/media\/16720"}],"wp:attachment":[{"href":"https:\/\/www.crim.ca\/fr\/wp-json\/wp\/v2\/media?parent=16715"}],"wp:term":[{"taxonomy":"mots_cles","embeddable":true,"href":"https:\/\/www.crim.ca\/fr\/wp-json\/wp\/v2\/mots_cles?post=16715"},{"taxonomy":"categorie_blogue","embeddable":true,"href":"https:\/\/www.crim.ca\/fr\/wp-json\/wp\/v2\/categorie_blogue?post=16715"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}