{"cells": [{"cell_type": "markdown", "metadata": {}, "source": ["# R\u00e9partir en base d'apprentissage et de test\n", "\n", "C'est un probl\u00e8me plut\u00f4t facile puisqu'il s'agit de r\u00e9partir al\u00e9atoirement les lignes d'une base de donn\u00e9es d'un c\u00f4t\u00e9 ou de l'autre. Lorsque le probl\u00e8me de machine learning \u00e0 r\u00e9soudre est un probl\u00e8me de classification, il faut s'assurer que chaque c\u00f4t\u00e9 contient une proportion raisonnable de chaque classe."]}, {"cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [{"data": {"text/html": ["
run previous cell, wait for 2 seconds
\n", ""], "text/plain": [""]}, "execution_count": 2, "metadata": {}, "output_type": "execute_result"}], "source": ["from jyquickhelper import add_notebook_menu\n", "add_notebook_menu()"]}, {"cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": ["import matplotlib.pyplot as plt\n", "%matplotlib inline"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## R\u00e9partition na\u00efve\n", "\n", "On consid\u00e8re une base de donn\u00e9es qu'on divise en 2/3 apprentissage, 1/3 test. On note cette proportion $t$. Deux classes 0 et 1, la proportion de la classe 1 est de $p$ qu'on choisit petit."]}, {"cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [{"data": {"text/plain": ["40"]}, "execution_count": 4, "metadata": {}, "output_type": "execute_result"}], "source": ["import random\n", "def generate_dataset(n, t):\n", " return [1 if random.random() < t else 0 for i in range(0,n)]\n", "\n", "ens = generate_dataset(4000, 0.01)\n", "sum(ens)"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Et on divise en base d'apprentissage et de test."]}, {"cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["2683 27 0.01006336190831159\n", "1317 13 0.009870918754745633\n"]}], "source": ["def custom_split_train_test(ens, p):\n", " choice = generate_dataset(len(ens), p)\n", " train = [x for x, c in zip(ens, choice) if c == 1]\n", " test = [x for x, c in zip(ens, choice) if c == 0]\n", " return train, test\n", "\n", "train, test = custom_split_train_test(ens, 0.66)\n", "print(len(train), sum(train), sum(train)/len(train))\n", "print(len(test), sum(test), sum(test)/len(test))"]}, {"cell_type": "markdown", "metadata": {}, "source": ["On recommence un grand nombre de fois et on repr\u00e9sente la proportion obtenue dans la base de test."]}, {"cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": ["tirages = [sum(test)/len(test) for train, test in [custom_split_train_test(ens, 0.66) for i in range(0,100)]]"]}, {"cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [{"data": {"image/png": "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\n", "text/plain": ["
"]}, "metadata": {}, "output_type": "display_data"}], "source": ["plt.plot(tirages, \"o\")\n", "plt.ylabel(\"proportion classe 1\")\n", "plt.xlabel(\"tirages\");"]}, {"cell_type": "markdown", "metadata": {}, "source": ["On consid\u00e8re maintenant la moyenne, les valeurs extr\u00eames de la proportion en faisant varier $p$."]}, {"cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": ["ps = [0.001 * i for i in range(1, 50)]\n", "tmin, tmax, tmean = [], [], []\n", "for p in ps:\n", " ens = generate_dataset(4000, p)\n", " tirages = [sum(test)/len(test) for train, test in [custom_split_train_test(ens, 0.66) for i in range(0,200)]]\n", " tirages.sort()\n", " tmin.append(tirages[int(len(tirages)*0.05)])\n", " tmax.append(tirages[-int(len(tirages)*0.05)])\n", " tmean.append(sum(tirages) / len(tirages))"]}, {"cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [{"data": {"image/png": "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\n", "text/plain": ["
"]}, "metadata": {}, "output_type": "display_data"}], "source": ["fig, ax = plt.subplots(1, 1)\n", "ax.plot(ps, ps, \"--\", label=\"expected proportion\")\n", "ax.plot(ps, tmin, label=\"min\")\n", "ax.plot(ps, tmax, label=\"max\")\n", "ax.plot(ps, tmean, label=\"mean\")\n", "ax.legend();"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Et [train_test_split](http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html)..."]}, {"cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": ["from sklearn.model_selection import train_test_split\n", "import pandas\n", "\n", "ps = [0.001 * i for i in range(1, 50)]\n", "tmin, tmax, tmean = [], [], []\n", "for p in ps:\n", " ens = pandas.Series(generate_dataset(4000, p))\n", " tirages = [sum(test)/len(test) for train, test in [train_test_split(ens, test_size=0.66) for i in range(0,200)]]\n", " tirages.sort()\n", " tmin.append(tirages[int(len(tirages)*0.05)])\n", " tmax.append(tirages[-int(len(tirages)*0.05)])\n", " tmean.append(sum(tirages) / len(tirages))"]}, {"cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [{"data": {"image/png": "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\n", "text/plain": ["
"]}, "metadata": {}, "output_type": "display_data"}], "source": ["fig, ax = plt.subplots(1, 1)\n", "ax.plot(ps, ps, \"--\", label=\"expected proportion\")\n", "ax.plot(ps, tmin, label=\"min\")\n", "ax.plot(ps, tmax, label=\"max\")\n", "ax.plot(ps, tmean, label=\"mean\")\n", "ax.set_title(\"train_test_split from sklearn\")\n", "ax.legend();"]}, {"cell_type": "markdown", "metadata": {}, "source": ["L'\u00e9cart entre les extr\u00eames para\u00eet plus petit. Le g\u00e9n\u00e9rateur pseudo al\u00e9atoire utilis\u00e9 par [scikit-learn](http://scikit-learn.org/) para\u00eet de meilleur qualit\u00e9. Nous y reviendront peut-\u00eatre un jour."]}, {"cell_type": "markdown", "metadata": {}, "source": ["## R\u00e9partition stratifi\u00e9e"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Nous utilisons maintenant le param\u00e8tre *stratify* qui permet de s'assurer que les deux classes sont \u00e9quitablement r\u00e9parties entre les deux ensembles *train* et *test*."]}, {"cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": ["from sklearn.model_selection import train_test_split\n", "import pandas\n", "\n", "ps = [0.001 * i for i in range(1, 50)]\n", "tmin, tmax, tmean = [], [], []\n", "for p in ps:\n", " ens = pandas.Series(generate_dataset(4000, p))\n", " \n", " traintest = []\n", " excs = []\n", " for i in range(0, 200):\n", " try:\n", " train, test = train_test_split(ens, test_size=0.66, stratify=ens)\n", " traintest.append((train,test))\n", " except ValueError as e:\n", " print(\"Skipping: small class too small in one side\", e)\n", " excs.append(e)\n", " if len(traintest) < 100:\n", " ex = excs[0] if len(excs) > 0 else \"no exception\"\n", " raise Exception(\"Too few, you should check the implementation is ok.\\n{0}\".format(ex))\n", " tirages = [sum(test)/len(test) for train, test in traintest]\n", " tirages.sort()\n", " tmin.append(tirages[int(len(tirages)*0.05)])\n", " tmax.append(tirages[-int(len(tirages)*0.05)])\n", " tmean.append(sum(tirages) / len(tirages))"]}, {"cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [{"data": {"image/png": "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\n", "text/plain": ["
"]}, "metadata": {}, "output_type": "display_data"}], "source": ["fig, ax = plt.subplots(1, 1)\n", "ax.plot(ps, ps, \"--\", label=\"expected proportion\")\n", "ax.plot(ps, tmin, label=\"min\")\n", "ax.plot(ps, tmax, label=\"max\")\n", "ax.plot(ps, tmean, label=\"mean\")\n", "ax.set_title(\"stratified train_test_split from sklearn\")\n", "ax.legend();"]}, {"cell_type": "markdown", "metadata": {}, "source": ["La proportion initiale est bien respect\u00e9e. Comment faire cela en pratique ? Le plus simple est sans doute de :\n", "\n", "* De trier les observations qui appartiennent \u00e0 chaque classe.\n", "* De les permuter de fa\u00e7on al\u00e9atoire.\n", "* Puis de prendre les premiers \u00e9l\u00e9ments pour la base d'apprentissage dans chaque classe et les derniers pour la base de test."]}, {"cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": ["def custom_statitied_split_train_test(ens, p, stratify):\n", " strat = set(stratify)\n", " train = []\n", " test = []\n", " for st in strat:\n", " cl = [e for e, s in zip(ens, stratify) if s == st]\n", " random.shuffle(cl)\n", " i = int(len(cl) * p)\n", " train.extend(cl[:i])\n", " test.extend(cl[i:])\n", " return train, test"]}, {"cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": ["ps = [0.001 * i for i in range(1, 50)]\n", "tmin, tmax, tmean = [], [], []\n", "for p in ps:\n", " ens = generate_dataset(4000, p)\n", " tirages = [sum(test)/len(test) for train, test in [custom_statitied_split_train_test(ens, \n", " p=0.66, stratify=ens) for i in range(0,200)]]\n", " tirages.sort()\n", " tmin.append(tirages[int(len(tirages)*0.05)])\n", " tmax.append(tirages[-int(len(tirages)*0.05)])\n", " tmean.append(sum(tirages) / len(tirages))"]}, {"cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [{"data": {"image/png": "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\n", "text/plain": ["
"]}, "metadata": {}, "output_type": "display_data"}], "source": ["import math\n", "fig, ax = plt.subplots(1, 1)\n", "dd = tn[-1] - (ts[-1] - tn[-1])*1.3\n", "ax.plot(ns, [x * dd / ns[-1] for x in ns], label=\"O(x)\")\n", "ax.plot(ns, [x * math.log(x) * ns[0] * dd / ns[-1] / (ns[0] * math.log(ns[0])) for x in ns], label=\"O(x ln x)\")\n", "ax.plot(ns, tn, label=\"split\")\n", "ax.plot(ns, ts, label=\"stratified split\")\n", "ax.set_title(\"processing time for train_test_split\")\n", "ax.grid(True)\n", "ax.set_xscale(\"log\", nonposx='clip')\n", "ax.set_yscale(\"log\", nonposy='clip')\n", "ax.set_xlabel(\"N\")\n", "ax.set_ylabel(\"time(s)\")\n", "ax.legend();"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Le co\u00fbt de la fonction [train_test_split](http://scikit-learn.org/stable/modules/generated/sklearn.model_selection.train_test_split.html) semble \u00eatre entre $O(n)$ et $O(n \\ln n)$. Regardons."]}, {"cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [{"data": {"image/png": "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\n", "text/plain": ["
"]}, "metadata": {}, "output_type": "display_data"}], "source": ["import math\n", "fig, ax = plt.subplots(1, 1)\n", "ax.plot(ns, [(x / tn[-1]) / (n * math.log(n) / (ns[-1] * math.log(ns[-1]))) for x, n in zip(tn, ns)], \n", " label=\"split / n ln s\")\n", "ax.plot(ns, [(x / ts[-1]) / (n * math.log(n) / (ns[-1] * math.log(ns[-1]))) for x, n in zip(ts, ns)], \n", " label=\"stratified / n ln s\")\n", "ax.plot(ns, [(x / tn[-1]) / (n / ns[-1]) for x, n in zip(tn, ns)], label=\"split / n\")\n", "ax.plot(ns, [(x / ts[-1]) / (n / ns[-1]) for x, n in zip(ts, ns)], label=\"stratified / n\")\n", "\n", "ax.set_title(\"processing time for train_test_split\")\n", "ax.grid(True)\n", "ax.set_xscale(\"log\", nonposx='clip')\n", "ax.set_xlabel(\"N\")\n", "ax.set_ylabel(\"time(s) / (s ln s)\")\n", "ax.set_ylim([0.5,1.5])\n", "ax.legend();"]}, {"cell_type": "markdown", "metadata": {}, "source": ["C'est difficile \u00e0 voir sur ce sch\u00e9ma. Il faudrait tirer plus d'exemple, regader les quantiles plut\u00f4t que la seule m\u00e9diane. Le [code de scikit-learn](https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/model_selection/_split.py#L1048) est plus explicite, une permutation pr\u00e9c\u00e8de la r\u00e9partition en train / test."]}, {"cell_type": "markdown", "metadata": {}, "source": ["## Streaming splitting\n", "\n", "Streaming veut dire qu'on traite les donn\u00e9es sous la forme d'un flux et qu'on ne sait pas combien il y en. Concr\u00e8tement, il faut commencer la r\u00e9partition train / test au moment sans savoir quand elle s'arr\u00eatera. Par cons\u00e9quent, il faut qu'\u00e0 tout instant, on soit capable d'interrompre la r\u00e9partition et celle-ci doit \u00eatre valide.\n", "\n", "Le premier algorithme qui consiste \u00e0 tirer un nombre al\u00e9atoire et \u00e0 le r\u00e9partir en train ou test selon le nombre tir\u00e9. Chaque observation est trait\u00e9e ind\u00e9pendamment. A tout moment, la r\u00e9partition peut \u00eatre interrompue. En pratique, on impl\u00e9mente ce type de processus sous la forme d'it\u00e9rateur ou de mapper. C'est une fonction qui accepte un it\u00e9rateur sur un ensemble et qui retourne un it\u00e9rateur sur les valeurs transform\u00e9es. Dans notre cas, on retourne l'observation, suivi de 0 si elle est class\u00e9e en *train* et 1 en *test*."]}, {"cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [], "source": ["def streaming_split_train_test(stream, p):\n", " for obs in stream:\n", " x = random.random()\n", " yield obs, 0 if x <= p else 1"]}, {"cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["obs=0 train/test=1\n", "obs=0 train/test=0\n", "obs=0 train/test=0\n", "obs=0 train/test=1\n", "obs=0 train/test=0\n", "obs=1 train/test=0\n", "obs=0 train/test=0\n", "obs=0 train/test=0\n", "obs=0 train/test=0\n", "obs=0 train/test=0\n"]}], "source": ["def iterate_data(n, t):\n", " while n > 0:\n", " yield 1 if random.random() < t else 0\n", " n -= 1\n", "\n", "for obs, s in streaming_split_train_test(iterate_data(10, 0.05), 0.66):\n", " print(\"obs={0} train/test={1}\".format(obs, s))"]}, {"cell_type": "markdown", "metadata": {}, "source": ["La r\u00e9partition stratifi\u00e9e repose sur une permutation al\u00e9atoire et cela implique d'avoir acc\u00e8s \u00e0 l'int\u00e9gralit\u00e9 des donn\u00e9es au pr\u00e9alable. En *streaming*, ce n'est pas possible. Il faut donc penser \u00e0 autre chose pour obtenir une version stratifi\u00e9e de la version *streaming*. Rien n'emp\u00eache en version *streaming* de garder les derni\u00e8res observations en m\u00e9moire pour faire une mini-permutation. Nous allons introduire quelques changements :\n", "\n", "1. Le *stream* est maintenant un flux sur deux valeurs, l'observation et la classe \u00e0 laquelle il appartient.\n", "2. La fonction va conserver les derni\u00e8res valeurs pour chaque classe.\n", "3. La fonction va produire des observations de temps en temps quand elle sera s\u00fbre que les observations seront stratifi\u00e9es.\n", "4. Nuos allons compter les observations distribu\u00e9es dans chaque base."]}, {"cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [], "source": ["def streaming_stratified_split_train_test(stream, p):\n", " n = max(1/p, 1/(1-p))\n", " if n > 10000:\n", " raise Exception(\"Cette r\u00e9partition train / test est vraiment d\u00e9s\u00e9quilibr\u00e9e.\")\n", " memory = {}\n", " for obs, strat in stream:\n", " if strat not in memory:\n", " memory[strat] = []\n", " memory[strat].append(obs)\n", "\n", " for k in memory:\n", " v = memory[k]\n", " if len(v) >= n:\n", " # on permute al\u00e9atoirement\n", " random.shuffle(v)\n", " i = int(len(v) * p + 0.5)\n", " for j in range(0,i):\n", " yield v[j], 0 # apprentissage\n", " for j in range(i,len(v)):\n", " yield v[j], 1 # test\n", " # on efface de la m\u00e9moire les informations produites\n", " memory[k] = []\n", "\n", " # lorsqu'on a fini, il faut tout de m\u00eame r\u00e9partir les \n", " # observations stock\u00e9es\n", " for k in memory:\n", " v = memory[k]\n", " # on permute al\u00e9atoirement\n", " random.shuffle(v)\n", " i = int(len(v) * p)\n", " for j in range(0,i):\n", " yield v[j], 0 # apprentissage\n", " for j in range(i,len(v)):\n", " yield v[j], 1 # test"]}, {"cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["(10000, 2)\n"]}, {"data": {"text/html": ["
"], "text/plain": ["obs 0 1\n", "train_test \n", "0 6346 320\n", "1 3174 160"]}, "execution_count": 24, "metadata": {}, "output_type": "execute_result"}], "source": ["df2 = df.copy()\n", "df2[\"un\"] = 1\n", "piv = df2.groupby([\"obs\", \"train_test\"], as_index=False).count().pivot(\"train_test\", \"obs\", \"un\")\n", "piv"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Il y a juste un petit probl\u00e8me avec cette impl\u00e9mentation. On multiplie la taille du buffer par un r\u00e9el. Je sugg\u00e8re d'enlever le nombre 0.5 dans le code pour voir ce qu'il se passe. La somme des arrondis est loin d'\u00eatre un arrondi m\u00eame si $N$ choisi tel que $N = \\max(\\frac{1}{p}, \\frac{1}{1-p})$."]}, {"cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [{"data": {"text/html": ["
\n", "\n", "
\n", " \n", "
\n", "
obs
\n", "
0
\n", "
1
\n", "
sum
\n", "
ratio
\n", "
\n", "
\n", "
train_test
\n", "
\n", "
\n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
0
\n", "
6346
\n", "
320
\n", "
6666
\n", "
0.048005
\n", "
\n", "
\n", "
1
\n", "
3174
\n", "
160
\n", "
3334
\n", "
0.047990
\n", "
\n", " \n", "
\n", "
"], "text/plain": ["obs 0 1 sum ratio\n", "train_test \n", "0 6346 320 6666 0.048005\n", "1 3174 160 3334 0.047990"]}, "execution_count": 25, "metadata": {}, "output_type": "execute_result"}], "source": ["piv[\"sum\"] = piv[0] + piv[1]\n", "piv[\"ratio\"] = piv[1] / piv[\"sum\"]\n", "piv"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Il faut corriger ces erreurs d'arrondi. On s'inspire de l'algorithme de [Bresenham](https://fr.wikipedia.org/wiki/Algorithme_de_trac%C3%A9_de_segment_de_Bresenham) et m\u00e9moriser les \u00e9l\u00e9ments r\u00e9partis."]}, {"cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": ["def streaming_stratified_split_train_test2(stream, p):\n", " n = max(1/p, 1/(1-p))\n", " if n > 10000:\n", " raise Exception(\"Cette r\u00e9partition train / test est vraiment d\u00e9s\u00e9quilibr\u00e9e.\")\n", " counts = {}\n", " memory = {}\n", " for obs, strat in stream:\n", " if strat not in memory:\n", " memory[strat] = []\n", " memory[strat].append(obs)\n", "\n", " for k in memory:\n", " v = memory[k]\n", " if len(v) >= n:\n", " # on permute al\u00e9atoirement\n", " random.shuffle(v)\n", " if (0,k) in counts:\n", " tt = counts[1,k] + counts[0,k]\n", " delta = - int(counts[0,k] - tt*p + 0.5)\n", " else:\n", " delta = 0\n", " i = int(len(v) * p + 0.5)\n", " i += delta\n", " i = max(0, min(len(v), i))\n", " for j in range(0,i):\n", " yield v[j], 0 # apprentissage\n", " for j in range(i,len(v)):\n", " yield v[j], 1 # test\n", " if (0,k) not in counts:\n", " counts[0,k] = i\n", " counts[1,k] = len(v)-i\n", " else:\n", " counts[0,k] += i\n", " counts[1,k] += len(v)-i\n", " # on efface de la m\u00e9moire les informations produites\n", " memory[k] = []\n", "\n", " # lorsqu'on a fini, il faut tout de m\u00eame r\u00e9partir les \n", " # observations stock\u00e9es\n", " for k in memory:\n", " v = memory[k]\n", " # on permute al\u00e9atoirement\n", " random.shuffle(v)\n", " if (0,k) in counts:\n", " tt = counts[1,k] + counts[0,k]\n", " delta = - int(counts[0,k] - tt*p + 0.5)\n", " else:\n", " delta = 0\n", " i = int(len(v) * p + 0.5)\n", " i += delta\n", " i = max(0, min(len(v), i))\n", " for j in range(0,i):\n", " yield v[j], 0 # apprentissage\n", " for j in range(i,len(v)):\n", " yield v[j], 1 # test\n", " if (0,k) not in counts:\n", " counts[0,k] = i\n", " counts[1,k] = len(v)-i\n", " else:\n", " counts[0,k] += i\n", " counts[1,k] += len(v)-i "]}, {"cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["ratio de classe 1 dans l'\u00e9chantillon entier 0.04980\n"]}, {"data": {"text/html": ["
\n", "\n", "
\n", " \n", "
\n", "
obs
\n", "
0
\n", "
1
\n", "
sum
\n", "
ratio
\n", "
\n", "
\n", "
train_test
\n", "
\n", "
\n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
0
\n", "
6272
\n", "
329
\n", "
6601
\n", "
0.049841
\n", "
\n", "
\n", "
1
\n", "
3230
\n", "
169
\n", "
3399
\n", "
0.049721
\n", "
\n", " \n", "
\n", "
"], "text/plain": ["obs 0 1 sum ratio\n", "train_test \n", "0 6272 329 6601 0.049841\n", "1 3230 169 3399 0.049721"]}, "execution_count": 27, "metadata": {}, "output_type": "execute_result"}], "source": ["iter = streaming_stratified_split_train_test2( ((i,i) for i in iterate_data(10000, 0.05)), 0.66)\n", "df = pandas.DataFrame(iter)\n", "df.columns = [\"obs\", \"train_test\"]\n", "df2 = df.copy()\n", "df2[\"un\"] = 1\n", "piv = df2.groupby([\"obs\", \"train_test\"], as_index=False).count().pivot(\"train_test\", \"obs\", \"un\")\n", "piv[\"sum\"] = piv[0] + piv[1]\n", "piv[\"ratio\"] = piv[1] / piv[\"sum\"]\n", "print(\"ratio de classe 1 dans l'\u00e9chantillon entier %1.5f\" % \n", " ((piv.iloc[1,1] + piv.iloc[0,1]) / (piv.iloc[0,1] + piv.iloc[0,0] + piv.iloc[1,1] + piv.iloc[1,0]) ))\n", "piv"]}, {"cell_type": "markdown", "metadata": {}, "source": ["Pas trop mal. Le dernier inconv\u00e9nient est la taille de la fen\u00eatre. Dans l'exemple qui suit, elle sera de 3. L'algorithme va donc grouper les \u00e9l\u00e9ments par trois, les permuter al\u00e9atoirement et les laisser filer. Nous ne pourrons jamais avoir trois \u00e9l\u00e9ments de suite du m\u00eame c\u00f4t\u00e9 *train* ou *test*. On peut bidouiller comme suit (ligne marqu\u00e9es ``# changement``). La fonction qui suit ne permet toujours pas d'avoir de grandes s\u00e9quences r\u00e9partie du m\u00eame c\u00f4t\u00e9 mais ce sera l'inconv\u00e9nient de ce type d'algorithme. La taille du buffer limite cette possibilit\u00e9."]}, {"cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [], "source": ["def streaming_stratified_split_train_test3(stream, p):\n", " n = 2 * max(1/p, 1/(1-p)) # changement\n", " if n > 10000:\n", " raise Exception(\"Cette r\u00e9partition train / test est vraiment d\u00e9s\u00e9quilibr\u00e9e.\")\n", " counts = {}\n", " memory = {}\n", " for obs, strat in stream:\n", " if strat not in memory:\n", " memory[strat] = []\n", " memory[strat].append(obs)\n", "\n", " for k in memory:\n", " v = memory[k]\n", " if len(v) >= n + random.randint(0, 10): # changement\n", " # on permute al\u00e9atoirement\n", " random.shuffle(v)\n", " if (0,k) in counts:\n", " tt = counts[1,k] + counts[0,k]\n", " delta = - int(counts[0,k] - tt*p + 0.5)\n", " else:\n", " delta = 0\n", " i = int(len(v) * p + 0.5)\n", " i += delta\n", " i = max(0, min(len(v), i))\n", " for j in range(0,i):\n", " yield v[j], 0 # apprentissage\n", " for j in range(i,len(v)):\n", " yield v[j], 1 # test\n", " if (0,k) not in counts:\n", " counts[0,k] = i\n", " counts[1,k] = len(v)-i\n", " else:\n", " counts[0,k] += i\n", " counts[1,k] += len(v)-i\n", " # on efface de la m\u00e9moire les informations produites\n", " memory[k] = []\n", "\n", " # lorsqu'on a fini, il faut tout de m\u00eame r\u00e9partir les \n", " # observations stock\u00e9es\n", " for k in memory:\n", " v = memory[k]\n", " # on permute al\u00e9atoirement\n", " random.shuffle(v)\n", " if (0,k) in counts:\n", " tt = counts[1,k] + counts[0,k]\n", " delta = - int(counts[0,k] - tt*p + 0.5)\n", " else:\n", " delta = 0\n", " i = int(len(v) * p + 0.5)\n", " i += delta\n", " i = max(0, min(len(v), i))\n", " for j in range(0,i):\n", " yield v[j], 0 # apprentissage\n", " for j in range(i,len(v)):\n", " yield v[j], 1 # test\n", " if (0,k) not in counts:\n", " counts[0,k] = i\n", " counts[1,k] = len(v)-i\n", " else:\n", " counts[0,k] += i\n", " counts[1,k] += len(v)-i "]}, {"cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [{"name": "stdout", "output_type": "stream", "text": ["ratio de classe 1 dans l'\u00e9chantillon entier 0.05000\n"]}, {"data": {"text/html": ["
\n", "\n", "
\n", " \n", "
\n", "
obs
\n", "
0
\n", "
1
\n", "
sum
\n", "
ratio
\n", "
\n", "
\n", "
train_test
\n", "
\n", "
\n", "
\n", "
\n", "
\n", " \n", " \n", "
\n", "
0
\n", "
6270
\n", "
329
\n", "
6599
\n", "
0.049856
\n", "
\n", "
\n", "
1
\n", "
3230
\n", "
171
\n", "
3401
\n", "
0.050279
\n", "
\n", " \n", "
\n", "
"], "text/plain": ["obs 0 1 sum ratio\n", "train_test \n", "0 6270 329 6599 0.049856\n", "1 3230 171 3401 0.050279"]}, "execution_count": 29, "metadata": {}, "output_type": "execute_result"}], "source": ["iter = streaming_stratified_split_train_test3( ((i,i) for i in iterate_data(10000, 0.05)), 0.66)\n", "df = pandas.DataFrame(iter)\n", "df.columns = [\"obs\", \"train_test\"]\n", "df2 = df.copy()\n", "df2[\"un\"] = 1\n", "piv = df2.groupby([\"obs\", \"train_test\"], as_index=False).count().pivot(\"train_test\", \"obs\", \"un\")\n", "piv[\"sum\"] = piv[0] + piv[1]\n", "piv[\"ratio\"] = piv[1] / piv[\"sum\"]\n", "print(\"ratio de classe 1 dans l'\u00e9chantillon entier %1.5f\" % \n", " ((piv.iloc[1,1] + piv.iloc[0,1]) / (piv.iloc[0,1] + piv.iloc[0,0] + piv.iloc[1,1] + piv.iloc[1,0]) ))\n", "piv"]}, {"cell_type": "markdown", "metadata": {}, "source": ["## Streaming distribu\u00e9\n", "\n", "C'est possible mais c'est un peu plus compliqu\u00e9 parce que le hasard en distribu\u00e9, c'est compliqu\u00e9. On n'est jamais s\u00fbr que des s\u00e9ries pseudo-al\u00e9atoires soient tout-\u00e0-fait ind\u00e9pendantes lorsqu'elles sont g\u00e9n\u00e9r\u00e9es en parall\u00e8les."]}, {"cell_type": "code", "execution_count": 29, "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.0"}}, "nbformat": 4, "nbformat_minor": 2}