diff --git a/README.md b/README.md index 943cde28..f3f93b25 100644 --- a/README.md +++ b/README.md @@ -118,13 +118,13 @@ follows: ```python import pandas as pd -from menelaus.concept_drift import ADWIN +from menelaus.concept_drift import ADWINOutcome from menelaus.data_drift import KdqTreeStreaming df = pd.read_csv('example.csv') # use a detector that searches for concept drift -detector = ADWIN() +detector = ADWINOutcome() for i, row in df.iterrows(): detector.update(row['y_true'], row['y_predicted'], X=None) if detector.drift_state is not None: diff --git a/docs/source/examples/change_detection/change_detection_examples.ipynb b/docs/source/examples/change_detection/change_detection_examples.ipynb index a8f532b0..126e8761 100644 --- a/docs/source/examples/change_detection/change_detection_examples.ipynb +++ b/docs/source/examples/change_detection/change_detection_examples.ipynb @@ -19,13 +19,18 @@ "conditional distributions P(y|var1) and P(y|var2). The drift occurs from index \n", "1000 to 1250, and affects 66% of the sample.\n", "\n", + "Rainfall is a real source of weather data. We use the first 1000 samples, where\n", + "no drift has been injected; but many features are cyclical, and haven't been\n", + "corrected, so change does occur.\n", + "\n", "These change detectors can be applied to any given single variable; below, \n", - "they are applied to var2." + "they are applied to `var2` and the `max_sustained_wind_speed` columns in the \n", + "respective datasets." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 1, "metadata": {}, "outputs": [], "source": [ @@ -35,13 +40,13 @@ "import pandas as pd\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", - "from menelaus.change_detection import PageHinkley, CUSUM\n", - "from menelaus.datasets import fetch_circle_data" + "from menelaus.change_detection import ADWIN, CUSUM, PageHinkley\n", + "from menelaus.datasets import fetch_circle_data, fetch_rainfall_data" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 2, "metadata": {}, "outputs": [], "source": [ @@ -49,27 +54,48 @@ "\n", "# read in Circle dataset\n", "df = fetch_circle_data()\n", - "drift_start, drift_end = 1000, 1250" + "drift_start, drift_end = 1000, 1250\n", + "\n", + "rainfall_df = fetch_rainfall_data()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Page-Hinkley (PH) Test" + "## Cumulative Sum (CUSUM) Test" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- This monitors a moving average of var2, starting from an initial estimate of mean\n", + "and standard deviation.\n", + "\n", + "- It will only alarm if 50 or more samples have been observed since\n", + "initialization/drift.\n", + "\n", + "- This will alarm if var2 passes a critical value controlled by delta and\n", + "threshold in either direction, positive or negative.\n", + "\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "## Setup ##\n", - "\n", - "# Set up one-directional PH test: this will only alarm if the mean of the\n", - "# monitored variable decreases, and only after seeing 30 or more samples.\n", - "ph = PageHinkley(delta=0.01, threshold=15, direction=\"negative\", burn_in=30)\n", + "cusum = CUSUM(\n", + " target=np.mean(df.loc[:drift_start, \"var2\"]), # mean / std of 'Var 2' pre-drift\n", + " sd_hat=np.std(df.loc[:drift_start, \"var2\"]),\n", + " burn_in=50,\n", + " delta=0.005,\n", + " threshold=40,\n", + " direction=None,\n", + ")\n", "\n", "# setup DF to record results\n", "status = pd.DataFrame(columns=[\"index\", \"actual value\", \"drift_detected\"])\n", @@ -77,15 +103,38 @@ "# iterate through data; feed each sample to the detector, in turn\n", "for i in range(len(df)):\n", " obs = df[\"var2\"][i]\n", - " ph.update(X=obs)\n", - " status.loc[i] = [i, obs, ph.drift_state]" + " cusum.update(obs)\n", + " status.loc[i] = [i, obs, cusum.drift_state]" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 6, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "## Plotting ##\n", "\n", @@ -95,7 +144,7 @@ "plt.grid(False, axis=\"x\")\n", "plt.xticks(fontsize=16)\n", "plt.yticks(fontsize=16)\n", - "plt.title(\"PH Test Results\", fontsize=22)\n", + "plt.title(\"CUSUM Test Results\", fontsize=22)\n", "plt.ylabel(\"Value\", fontsize=18)\n", "plt.xlabel(\"Index\", fontsize=18)\n", "ylims = [-0.05, 1.1]\n", @@ -117,44 +166,29 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Page-Hinkley alarms shortly after the drift induction window closes, and then makes\n", - "several apparently erroneous alarms afterwards. The parameters may not be\n", - "well-chosen for the new regime.\n", - "Change detection algorithms come out of process control, so a priori\n", - "characterization of the bounds of the process, not performed here, would not\n", - "be unreasonable.\n" + "CUSUM alarms several times within the drift induction window, roughly halfway\n", + "through. After the alarm is reset, change is detected a few more times,\n", + "including an apparently erroneous detection after the drift induction window\n", + "is passed. The current threshold settings may then be too sensitive for the\n", + "new regime.\n" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 7, "metadata": {}, "outputs": [], "source": [ + "\n", "plt.show()\n", - "# plt.savefig(\"example_Page-Hinkley_detections.png\")" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## Cumulative Sum (CUSUM) Test" + "# plt.savefig(\"example_CUSUM_detections.png\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "- This monitors a moving average of var2, starting from an initial estimate of mean\n", - "and standard deviation.\n", - "\n", - "- It will only alarm if 50 or more samples have been observed since\n", - "initialization/drift.\n", - "\n", - "- This will alarm if var2 passes a critical value controlled by delta and\n", - "threshold in either direction, positive or negative.\n", - "\n" + "## Page-Hinkley (PH) Test" ] }, { @@ -164,14 +198,10 @@ "outputs": [], "source": [ "## Setup ##\n", - "cusum = CUSUM(\n", - " target=np.mean(df.loc[:drift_start, \"var2\"]), # mean / std of 'Var 2' pre-drift\n", - " sd_hat=np.std(df.loc[:drift_start, \"var2\"]),\n", - " burn_in=50,\n", - " delta=0.005,\n", - " threshold=40,\n", - " direction=None,\n", - ")\n", + "\n", + "# Set up one-directional PH test: this will only alarm if the mean of the\n", + "# monitored variable decreases, and only after seeing 30 or more samples.\n", + "ph = PageHinkley(delta=0.01, threshold=15, direction=\"negative\", burn_in=30)\n", "\n", "# setup DF to record results\n", "status = pd.DataFrame(columns=[\"index\", \"actual value\", \"drift_detected\"])\n", @@ -179,8 +209,8 @@ "# iterate through data; feed each sample to the detector, in turn\n", "for i in range(len(df)):\n", " obs = df[\"var2\"][i]\n", - " cusum.update(obs)\n", - " status.loc[i] = [i, obs, cusum.drift_state]" + " ph.update(X=obs)\n", + " status.loc[i] = [i, obs, ph.drift_state]" ] }, { @@ -197,7 +227,7 @@ "plt.grid(False, axis=\"x\")\n", "plt.xticks(fontsize=16)\n", "plt.yticks(fontsize=16)\n", - "plt.title(\"CUSUM Test Results\", fontsize=22)\n", + "plt.title(\"PH Test Results\", fontsize=22)\n", "plt.ylabel(\"Value\", fontsize=18)\n", "plt.xlabel(\"Index\", fontsize=18)\n", "ylims = [-0.05, 1.1]\n", @@ -212,29 +242,130 @@ " label=\"Drift Detected\",\n", " color=\"red\",\n", ")\n", - "plt.legend()" + "plt.legend()\n", + "plt.show()\n", + "# plt.savefig(\"example_Page-Hinkley_detections.png\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "CUSUM alarms several times within the drift induction window, roughly halfway\n", - "through. After the alarm is reset, change is detected a few more times,\n", - "including an apparently erroneous detection after the drift induction window\n", - "is passed. The current threshold settings may then be too sensitive for the\n", - "new regime.\n" + "Page-Hinkley alarms shortly after the drift induction window closes, and then makes\n", + "several apparently erroneous alarms afterwards. The parameters may not be\n", + "well-chosen for the new regime.\n", + "Change detection algorithms come out of process control, so a priori\n", + "characterization of the bounds of the process, not performed here, would not\n", + "be unreasonable.\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## ADaptive WINdowing (ADWIN)\n", + "\n", + "ADWIN is a change detection algorithm that can be used to monitor a real-valued number. ADWIN maintains a window of the data stream, which grows to the right as new elements are received. When the mean of the feature in one of the subwindows is different enough, ADWIN drops older elements in its window until this ceases to be the case." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "metadata": {}, "outputs": [], "source": [ + "## Setup ##\n", + "\n", + "adwin = ADWIN()\n", + "\n", + "# setup DF to record results\n", + "status = pd.DataFrame(columns=[\"index\", \"actual value\", \"drift_detected\", \"ADWIN mean\"])\n", + "df2 = rainfall_df.loc[:1000, 'max_sustained_wind_speed']\n", + "rec_list = []\n", + "\n", + "# iterate through data; feed each sample to the detector, in turn\n", + "for i in range(len(df2)):\n", + " obs = df2[i]\n", + " adwin.update(X=obs)\n", + " status.loc[i] = [i, obs, adwin.drift_state, adwin.mean()]\n", + "\n", + " #monitor the size of ADWIN's window as it changes\n", + " if adwin.drift_state == \"drift\":\n", + " retrain_start = adwin.retraining_recs[0]\n", + " retrain_end = adwin.retraining_recs[1]\n", + " rec_list.append([retrain_start, retrain_end])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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vatf6W7fvp1jjjmGSy+9lEmTJnHxxRezYsUKFi5cyMSJE3n99dd5/fXXWbBgAXPmzOHEE09k8+bNANx+++1cfvnlALzzzjtMnz6djo6OqNt58cUXmT17NrNnz2bOnDm0traycuVKzjnnnPAy11xzDffddx8A3/zmN5k6dSozZ87k61//Oq+88gr/+te/uP7665k9ezYffPABf/jDH5g/fz6zZs3iYx/7WHjbt9xyC7fddhtgeu7ccMMNHHfccUyaNImXXnoJgEAgwPXXX8/8+fOZOXMmv//97wEzm9s111zD5MmTOf3009m/f3/MsnvjjTf46Ec/CsATTzxBcXExnZ2deDweJpx+OtCz59S4ceP47ne/y9y5c5kxYwabNm0CoLGxkSVLljBt2jSuuOIKtNYxt9ne3s7ZZ5/NrFmzmD59Og8//HA47W984xvMmDGD4447ji1btgBw4MABPvaxjzF//nzmz5/Pyy+/HE7n8ssv57jjjmPOnDk88cQTALjdbj75yU8yZcoUzj//fNxud8xYkiE9n4QQQgghhBBCiDy3fEMDFcV2KortAOHX5Rsa+t37acuWLfzjH//g3nvvZf78+Tz44IOsXr2af/3rX/zoRz/iz3/+My+99BI2m40VK1bw7W9/m3/+859ce+21LF68mMcee4wf/vCH/P73v6ekpCTqNm677TZ+/etfs3DhQtra2nA6nTHjaWxs5LHHHmPTpk0opWhubqayspJzzz2Xc845hwsuuACAyspKrrzySgBuvPFG7rnnHr70pS8dlp7f7+f111/nqaee4tZbb2XFihXcc889VFRU8MYbb+D1elm4cCFLlixh3bp1bN68mY0bN9LQ0MDUqVPDDWy9zZkzh/Xr1wPw0ksvMX36dN544w38fj/Hz5wZdZ2amhrWrl3Lb37zG2677Tb++Mc/cuutt3LSSSdx880385///Id77rknZtksX76cUaNG8Z///AcAl6u78bGiooJ33nmHP//5z3zlK1/hySef5Nprr+W6667jpJNOYufOnZx55pnU1dXxwx/+kFNPPZV7772X5uZmjjvuOE4//fTwPqyrq+Ptt99m7ty5MWNJhjQ+CSGEEEIIIYQQeW5Ps5uRFT0bbMqdNvY0979nyvjx45kxYwYA06ZN47TTTkMpxYwZM9i+fTsul4tLLrmE999/H6UUPp8PAIvFwn333cfMmTP5v//7PxYuXBhzGwsXLuSrX/0qF198MR/96Ec54ogjYi5bUVGB0+nkc5/7HOecc06P3lGRNmzYwI033khzczNtbW2ceeaZUZcL9U469thj2b59OwDPPPMMb7/9drhXksvl4v3332fVqlVcdNFFWK1WRo0axamnnhozTpvNxlFHHUVdXR2vv/46X/3qV1m1ahWBQICT583rM5ZHH30UgFWrVoV/P/vssxk6dGjMbc6YMYOvfe1r3HDDDZxzzjmcfPLJ4c8uuuii8Ot1110HwIoVK3qMk9XS0kJbWxvPPPMM//rXv8I9xDweDzt37mTVqlV8+ctfBmDmzJnMjNGIlix57E4IIYQQQgghhMhzoyuLafX4e7zX6vEzurK432k7HI7w7xaLJfy3xWLB7/dz0003ccopp7Bhwwb+/e9/4/F4wsu///77lJWVsXfv3rjb+OY3v8kf//hH3G43CxcuZNOmTdhsNoLBYHiZULo2m43XX3+dCy64gCeffJKlS5dGTfPSSy/lV7/6Fe+88w7f/e53e8QVLX9WqxW/35Sh1pq7776b9evXs379erZt28aSJUv6KqrDLFq0iKeffhq73c7pp5/O6tWrWb16NScfe2zCsSRj0qRJrF27lhkzZnDjjTf2GFNKKXXY78FgkNdeey2czz179lBWVobWmn/+85/h93fu3MmUKVOSjidR0vgkhBBCCCGEEELkuaXTa3G5fbjcPoJah39fOr0249t2uVyMHj0aIDwmU+j9L3/5y6xatYrGxsa4s8J98MEHzJgxgxtuuIH58+ezadMmjjzySDZu3IjX66W5uZnnnnsOgLa2NlwuF//v//0/br/9dt566y0AysvLaW1tDafZ2trKyJEj8fl8PPDAA0nl6cwzz+S3v/1tuBfXe++9R3t7O4sWLeLhhx8mEAhQX1/PCy+8EDedk08+mTvuuIMFCxYwbNgwGhsb2bx5M9MnTUo4lkWLFvHggw8C8PTTT3Po0KGYy+7du5eSkhI+/elPc/3117N27drwZ6Hxnx5++GEWLFgAwJIlS7j77rvDy4QeEzzzzDO5++67w+NLrVu37rBYNmzYwNtvv51wPuKRx+6EEEIIIYQQQog8N2VkBVctGt9jtrsL5x+RldnuvvGNb3DJJZfwgx/8gLPPPjv8/nXXXccXv/hFJk2axD333MMpp5zCokWLGD58+GFp3HHHHbzwwgtYLBamTZvGWWedhcPh4BOf+ATTp09n/PjxzJkzBzCNSueddx4ejwetNb/85S8B+OQnP8mVV17JXXfdxSOPPML3v/99jj/+eIYNG8bxxx/fo2GqL1dccQXbt29n7ty5aK0ZNmwYjz/+OOeffz7PP/88U6dOZezYseFGnFiOP/54GhoaWLRoEWAeVdu3b1+PXkh9+e53v8tFF13EtGnTOPHEExk7dmzMZd955x2uv/56LBYLdrud3/72t+HPDh06xMyZM3E4HDz00EMA3HXXXXzxi19k5syZ+P1+Fi1axO9+9ztuuukmvvKVrzBz5kyCwSDjx4/nySef5POf/zyXXXYZU6ZMYcqUKRwbowdXslS8UdQHonnz5uk1a9bkOgwhhBBCCDGQLF5sXleuHNwxDHayD6QMIKkyqKury+ijTiKHumYEZPLkrGxu3LhxrFmzhpqamqxsL1rdVUq9qbWOOtiVPHYnhBBCCCGEEEIIITJGHrsTQgghhBBCCCFEWvzpT3/izjvv7PHewoUL+fWvf52jiNLj/PPPZ9u2bT3e++lPfxpzhr3+amxs5LTTTjvs/eeee47q6urD3g/N4pevpPFJCCGEEEIIIYQQaXHZZZdx2WWX5TqMtHvssceyur3q6urw4OADgTx2J4QQQgghhBBCCCEyRhqfhBBCCCGEEEIIIUTGSOOTEEIIIYQQQgghhMgYaXwSQgghhBBCCCEGsccffxylFJs2bQq/t337doqLi5kzZw5TpkzhuOOO47777gNAa01NTQ2HDh0CoL6+HqUUq1evDq8/bNgwGhsbueWWW7jtttsAuPTSSxk9ejRerxeAgwcPMm7cuOxkUuSUND4JIYQQQgghhBCD2EMPPcRJJ53EQw891OP9o446inXr1lFXV8ff/vY37rjjDv70pz+hlOKEE07g1VdfBeCVV15hzpw5vPLKKwBs3ryZ6urqqLOyWa1W7r333sxnSuQVaXwSQgghhBBCCCEGqba2NlavXs0999zD3/72t5jLTZgwgV/+8pfcddddAJx44onhxqZXXnmF6667rkdj1MKFC6Om85WvfIXbb78dv98fc1vbt2/nmGOO4dJLL2XSpElcfPHFrFixgoULFzJx4kRef/11ANrb27n88ss57rjjmDNnDk888UR4/ZNPPpm5c+cyd+7ccJwrV65k8eLFXHDBBRxzzDFcfPHFaK2TLDGRCml8EkIIIYQQQgghckypzP3E88QTT7B06VImTZpEdXU1b775Zsxl586dG340b+HCheFGnddff53zzz+fXbt2Aabx6cQTT4yaxtixYznppJP4y1/+EjeuLVu28LWvfY1NmzaxadMmHnzwQVavXs1tt93Gj370IwB++MMfcuqpp/L666/zwgsvcP3119Pe3s7w4cN59tlnWbt2LQ8//DBf/vKXw+muW7eOO+64g40bN7J161Zefvnl+AUk0kIan4QQQgghhBBCiEHqoYce4pOf/CQAn/zkJw979C5SZC+h+fPns27dOtrb2/H5fJSVlTFhwgS2bNkSt+cTwLe+9S1+/vOfEwwGYy4zfvx4ZsyYgcViYdq0aZx22mkopZgxYwbbt28H4JlnnuEnP/kJs2fPZvHixXg8Hnbu3InP5+PKK69kxowZfPzjH2fjxo3hdI877jiOOOIILBYLs2fPDqclMsuW6wCEEEIIIYQQQgiRfU1NTTz//PO88847KKUIBAIopfj5z38edfl169YxZcoUAEpKSpg4cSL33nsvc+fOBeCEE07gqaeeYv/+/UyePDnmdidOnMjs2bP5+9//HnMZh8MR/t1isYT/tlgs4Uf2tNb885//PGxbt9xyC7W1tbz11lsEg0GcTmfUdK1Wa9zH/0T6SM8nIYQQQgghhBAix7TO3E8sjzzyCJ/5zGfYsWMH27dvZ9euXYwfP56XXnrpsGW3b9/O17/+db70pS+F3zvxxBO54447WLBgAQALFizgzjvv5IQTTkD18bzfd77znfAseKk688wzufvuu8M9statWweAy+Vi5MiRWCwW/vKXvxAIBPq1HdF/0vgkhBBCCCGEEEIMQg899BDnn39+j/c+9rGPhR+9++CDD5gzZw5TpkzhE5/4BF/+8pe57LLLwssuXLiQrVu3hhuf5s6dy+7du2OO9xRp2rRp4R5Tqbrpppvw+XzMnDmTadOmcdNNNwHwhS98gfvvv59Zs2axadMmSktL+7Ud0X9qsI3sPm/ePL1mzZpchyGEEEIIIQaSxYvN68qVgzuGwU72gZQBJFUGdXV14cfYxACzebN5jfP4YSGLVneVUm9qredFW156PgkhhBBCCCGEEEKIjCm4xiel1GKllI7y05zr2IQQQgghhBBCCCFET4U8292XgTci/pYh6oUQQgghhBBCCCHyTCE3PtVprV/LdRBCCCGEEEIIIYQQIraCe+xOCCGEEEIIIYQQQhSOQm58ekApFVBKNSqlHlRKjc11QEIIIYQQQgghhBCip0JsfHIBvwCuAE4Fvg+cDryqlBoebQWl1FVKqTVKqTUHDhzIXqRCCCGEEEIIIUQes1qtzJ49m2nTpjFr1ix+8YtfEAwGoy67d+9eLrjggvDfF110ETNnzuT222/njjvuoKOjI+p6ixcvZvLkycycOZNjjjmGa665hubm5j5j+9GPfpRSngBWrlzJK6+8kvR648aN4+DBgylvV0RXcI1PWut1Wuuva63/rbV+UWt9B7AUqMUMQh5tnWVa63la63nDhg3LZrhCCCGEEEIIIUTeKi4uZv369bz77rs8++yzPP3009x6662HLef3+xk1ahSPPPIIAPv27eONN97g7bff5rrrrovb+ATwwAMP8Pbbb/P222/jcDg477zz+owtF41PIjMKecDxMK31WqXUe8D8XMcihBBC1NW7WL6hgT3NbkZXFrN0ei1TRlbkOqy8k85ykjIvfLIPhRAi94YPH86yZcuYP38+t9xyC/fffz+PPvoobW1tBAIB7r//fs455xw2bNjAkiVL2LNnD7Nnz+b8889n7969nHLKKdTU1PDCCy/E3EZRURE/+9nPOProo3nrrbeYNWsWf/3rX7nrrrvo7Ozk+OOP5ze/+Q3f+c53cLvd4V5ZDzzwQNTlrFYry5cv59vf/jaBQICamhruuecefve732G1WvnrX//K3XffzTHHHMPVV1/Nzp07AbjjjjtYuHAhjY2NXHTRRezZs4cFCxagtc5WcQ8qA6LxKYLUEiGEEDlVV+9i2aptVBTbGVnhxOX2sWzVNq5aNF6+SEdIZzlJmRc+2YdCCNFl8eL0prdyZdKrTJgwgUAgwP79+wFYu3Ytb7/9NlVVVWzfvj283L/+9S/OOecc1q9fD8Cf/vQnXnjhBWpqavrchtVqZdasWWzatImioiIefvhhXn75Zex2O1/4whd44IEH+MlPfsKvfvWrcPp1dXVRlzvrrLO48sorWbVqFePHj6epqYmqqiquvvpqysrK+PrXvw7Apz71Ka677jpOOukkdu7cyZlnnkldXR233norJ510EjfffDP/+c9/uOeee5IuM9G3AdH4pJSaB0wGHsl1LEIIIQa35RsaqCi2U1FsBwi/Lt/QIF+iI6SznKTMC5/sQyGEyF9nnHEGVVVVaU831MPoueee480332T+fPMgk9vtZvjww4dzjrXca6+9xqJFixg/fjxAzFhXrFjBxo0bw3+3tLTQ1tbGqlWrePTRRwE4++yzGTp0aPoyKcIKrvFJKfUAsA1YCzQDc4BvAXuAu3IXmRBCCAF7mt2MrHD2eK/caWNPsztHEeWndJaTlHnhk30ohBBdUuiplG5bt27FarWGG4BKS0vTvo1AIMA777zDlClT2L9/P5dccgk//vGP466jtY663L///e+EthkMBnnttddwOp19LyzSruAGHAc2AOcCfwL+C3wFeBQ4XmstQ9ILIYTIqdGVxbR6/D3ea/X4GV1ZnKOI8lM6y0nKvPDJPhRCiPxw4MABrr76aq655hqUUkmtW15eTmtra5/L+Xw+vvWtbzFmzBhmzpzJaaedxiOPPBJ+zK+pqYkdO3YAYLfb8fl8ADGXO+GEE1i1ahXbtm0Lvx8tniVLlnD33XeH/w49zrdo0SIefPBBAJ5++mkOHTqUVL5FYgqu8Ulr/WOt9UytdYXW2q61HqO1vkprXZ/r2IQQQoil02txuX243D6CWod/Xzq9Nteh5ZV0lpOUeeGTfSiEELkTOaj36aefzpIlS/jud7+bdDpXXXUVS5cu5ZRTTon6+cUXX8zMmTOZPn067e3tPPHEEwBMnTqVH/zgByxZsoSZM2dyxhlnUF9fH05z5syZXHzxxTGXGzZsGMuWLeOjH/0os2bN4sILLwTgwx/+MI899hizZ8/mpZde4q677mLNmjXMnDmTqVOn8rvf/Q6A7373u6xatYpp06bx6KOPMnbs2FSKUfRBDbaR3OfNm6fXrFmT6zCEEEIMMIsjBgjt6PTT1O7D6w/gsFmpKrVTUlRwT7pnXDrLScq88BX8Ply/npWzZ+f2kZnQeSgPHtsZtGQfSBlAUmVQV1fHlClTMhqOyJHNm83r5Mm5jSNDotVdpdSbWut50ZYvoCu6EEIIURhKimyF9aU5R9JZTlLmhU/2oRBCCDFwyRVeCCGESIOVg/k/vEKI9E+PLoQQQgwgBTfmkxBCCCGEEEIIIYQoHNL4JIQQQgghhBBCCCEyRhqfhBBCCCGEEEIIIUTGSOOTEEIIIYQQQgghhMgYaXwSQgghhBBCCCEGKaUUX/va18J/33bbbdxyyy1p3ca7777LqaeeyuTJk5k4cSLf//730VoDcMstt3DbbbeldXupuO+++9i7d2/47yuuuIKNGzf2K02tNTU1NRw6dAiA+vp6lFKsXr06vMywYcNobGxMaXtlZWX9ii+bpPFJCCGEEEIIIYQYpBwOB48++igHDx7MSPput5tzzz2Xb37zm2zevJm33nqLV155hd/85jcZ2R5AIBBIep3ejU9//OMfmTp1ar/iUEpxwgkn8OqrrwLwyiuvMGfOHF555RUANm/eTHV1NdXV1WnZXj6TxichhBBCCCGEEGKQstlsXHXVVdx+++2HfXbgwAE+9rGPMX/+fObPn8/LL78MwIwZM2hubkZrTXV1NX/+858B+OxnP8uzzz7bI40HH3yQhQsXsmTJEgBKSkr41a9+xU9+8pPwMm+99RYLFixg4sSJ/OEPfwBML6FFixYxe/Zspk+fzksvvQTAM888w4IFC5g7dy4f//jHaWtrA2DcuHHccMMNzJ07l5///Occd9xx4fS3b9/OjBkzAPje977H/PnzmT59OldddRVaax555BHWrFnDxRdfzOzZs3G73SxevJg1a9YA8NBDDzFjxgymT5/ODTfcEE63rKyM73znO8yaNYsTTjiBhoaGw8rwxBNPDDc2vfLKK1x33XU9GqMWLlwI0GN7sdLdtm0bCxYsYMaMGdx4443hbWituf7665k+fTozZszg4YcfBuCLX/wi//rXvwA4//zzufzyywG49957+c53vkN7eztnn302s2bNYvr06eH1MkEan4QQQgghhBBCiDywePHitP4k6otf/CIPPPAALperx/vXXnst1113HW+88Qb//Oc/ueKKKwBYuHAhL7/8Mu+++y4TJkwINwy9+uqrnHjiiT3SePfddzn22GN7vHfUUUfR1tZGS0sLAG+//TbPP/88r776Kt/73vfYu3cvDz74IGeeeSbr16/nrbfeYvbs2Rw8eJAf/OAHrFixgrVr1zJv3jx++ctfhtOtrq5m7dq1fPOb36Szs5Nt27YB8PDDD3PhhRcCcM011/DGG2+wYcMG3G43Tz75JBdccAHz5s3jgQceYP369RQXF4fT3Lt3LzfccAPPP/8869ev54033uDxxx8HoL29nRNOOIG33nqLRYsWhRvOIi1cuDDc+PT6669z/vnns2vXLsA0PvUur3jpXnvt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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "## Plotting ##\n", + "\n", + "# plot the monitored variable and the status of the detector\n", + "plt.figure(figsize=(20, 6))\n", + "plt.scatter(\"index\", \"actual value\", data=status, label=\"max_sustained_wind_speed\", alpha=.5)\n", + "plt.plot(\"index\", \"ADWIN mean\", data=status, color='blue', linewidth=3)\n", + "plt.grid(False, axis=\"x\")\n", + "plt.xticks(fontsize=16)\n", + "plt.yticks(fontsize=16)\n", + "plt.title(\"ADWIN Results\", fontsize=22)\n", + "plt.ylabel(\"Value\", fontsize=18)\n", + "plt.xlabel(\"Index\", fontsize=18)\n", + "ylims = [-2, 6]\n", + "plt.ylim(ylims)\n", "\n", + "plt.vlines(\n", + " x=status.loc[status[\"drift_detected\"] == \"drift\"][\"index\"],\n", + " ymin=ylims[0],\n", + " ymax=ylims[1],\n", + " label=\"Drift Detected\",\n", + " color=\"red\",\n", + ")\n", + "\n", + "# Create a list of lines that indicate the retraining windows.\n", + "# Space them evenly, vertically.\n", + "rec_list = pd.DataFrame(rec_list)\n", + "rec_list[\"y_val\"] = np.linspace(\n", + " start=0.6 * (ylims[1] - ylims[0]) + ylims[0],\n", + " stop=0.8 * ylims[1],\n", + " num=len(rec_list),\n", + ")\n", + "\n", + "# Draw green lines that indicate where retraining occurred\n", + "plt.hlines(\n", + " y=rec_list[\"y_val\"][::-1],\n", + " xmin=rec_list[0],\n", + " xmax=rec_list[1],\n", + " color=\"black\",\n", + " label=\"New Observation Windows\",\n", + ")\n", + "\n", + "plt.legend()\n", "plt.show()\n", - "# plt.savefig(\"example_CUSUM_detections.png\")" + "# plt.savefig(\"example_ADWIN.png\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "ADWIN monitors the running average of the `max_sustained_wind_speed` column and, once that mean begins to change enough around index 600, shrinks its observation window (in black) to only include more recent samples. This process repeats as further changes are detected. We can see that the size of the observation window shrinks and grows as the incoming data changes." ] } ], diff --git a/docs/source/examples/concept_drift/concept_drift_examples.ipynb b/docs/source/examples/concept_drift/concept_drift_examples.ipynb index 379848f8..4acd3979 100644 --- a/docs/source/examples/concept_drift/concept_drift_examples.ipynb +++ b/docs/source/examples/concept_drift/concept_drift_examples.ipynb @@ -19,7 +19,7 @@ "conditional distributions P(y|var1) and P(y|var2). The drift occurs from index \n", "1000 to 1250, and affects 66% of the sample.\n", "\n", - "Rainfall is a real data source that concept drift has been injected into. This\n", + "Rainfall is a real data source into which concept drift has been injected. This\n", "set contains approximately 18,000 samples, and the data has been standardized.\n", "Drift starts from index 12,000 and continues through the rest of the dataset.\n", "In this example, we take the first 10,000 samples of the dataset for training\n", @@ -51,9 +51,8 @@ "from sklearn.linear_model import SGDClassifier\n", "from sklearn import svm\n", "from sklearn.base import clone\n", - "from menelaus.concept_drift import LinearFourRates, ADWIN, DDM, EDDM, STEPD, MD3\n", - "from menelaus.datasets import fetch_circle_data\n", - "from menelaus.datasets import fetch_rainfall_data" + "from menelaus.concept_drift import LinearFourRates, ADWINOutcome, DDM, EDDM, STEPD, MD3\n", + "from menelaus.datasets import fetch_circle_data, fetch_rainfall_data" ] }, { @@ -265,12 +264,14 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "ADWIN can be used to monitor the accuracy of a classifier. ADWIN maintains a window of the data stream, which grows to the right as new elements are received. When the mean of the feature in one of the subwindows is different enough, ADWIN drops older elements in its window until this ceases to be the case." + "ADWIN is a change detection algorithm that can be used to monitor a real-valued number. ADWIN maintains a window of the data stream, which grows to the right as new elements are received. When the mean of the feature in one of the subwindows is different enough, ADWIN drops older elements in its window until this ceases to be the case.\n", + "\n", + "It can be used to monitor the accuracy of a classifier by checking `y_true == y_pred` at each time step. So, for convenience, `concept_drift.ADWINOutcome`, takes `y_true` and `y_pred` as arugments, as shown below. `change_detection.ADWIN` can be used more generally, as shown in the change detection examples." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 36, "metadata": {}, "outputs": [], "source": [ @@ -279,12 +280,18 @@ "# Set up classifier: train on first training_size rows\n", "X_train = df.loc[0:training_size, [\"var1\", \"var2\"]]\n", "y_train = df.loc[0:training_size, \"y\"]\n", + "X_test = df.loc[training_size:len(df), [\"var1\", \"var2\"]]\n", + "y_pred = df.loc[training_size:len(df), \"y\"]\n", "\n", "np.random.seed(123)\n", "clf = GaussianNB()\n", "clf.fit(X_train, y_train)\n", "\n", - "adwin = ADWIN()\n", + "# get running accuracy from the original classifier to compare performance\n", + "acc_orig = np.cumsum(clf.predict(X_test) == y_pred)\n", + "acc_orig = acc_orig / np.cumsum(np.repeat(1, len(acc_orig)))\n", + "\n", + "adwin = ADWINOutcome()\n", "\n", "# Set up DF to record results.\n", "status = pd.DataFrame(\n", @@ -296,7 +303,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 37, "metadata": {}, "outputs": [], "source": [ @@ -336,19 +343,35 @@ " clf = GaussianNB()\n", " clf.fit(X_train, y_train)\n", "\n", - " n += 1" + " n += 1\n", + "\n", + "status['original_accuracy'] = acc_orig" ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 42, "metadata": {}, - "outputs": [], + "outputs": [ + { + "data": { + "image/png": "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9+9Pnz592H333Vm4cCGrVq3ihz/8IT179qR379785je/WWNsAFOmTGHgwIFANvPqxBNPZMCAAZx44onMnDmTvffem1133ZVdd92VSZMmVRzv8ssvp1evXvTp04cLLriAN954g1133bXi+ddee22Nx42dV8GTJEmSJEmZMWPgtNOgPKh5++3sMcCQIfXqcvr06ey2225rbPvc5z5H586def311wF47rnnePHFF+nYsSMzZ86saHfjjTey+eabM2PGDF566SXKysryHuO1115j7Nix3HzzzXzrW9/ir3/9K0OHDuXII4/k1FNPBeDCCy/klltu4eyzz65xvOPGjeOhhx7ilVde4Te/+Q0nnHACy5cv59hjj2XcuHH069ePTz75hLZt23LTTTcxc+ZMpk6dSqtWrZg3b16t78eMGTOYOHEibdu2ZcmSJTz00EO0adOG1157jeOPP54pU6bwwAMPMH78eP7973/Trl075s2bR8eOHdl0002ZOnUqZWVl3HrrrRWhXlPgDChJkiRJkpQZMeKz8KnckiXZ9iIaNGgQHTt2XGv7xIkTK2oxlc8yyqdr164V4dRuu+1WEWK99NJL7L333vTq1YsxY8Ywffr0GscxZcoUtthiCzp37sz+++/P888/z7x583j11VfZZptt6NevH5AFaK1ateLhhx/m9NNPp1WrbH5PvtdQ1eDBg2nbti0AK1as4NRTT6VXr14cc8wxzJgxA4CHH36Yk08+mXbt2q3R7ymnnMKtt97KqlWrGDduHCeccEKtx2ssDKAkSZIkSVJm1qy6bS9A9+7defbZZ9fY9sknnzBr1iy+/OUvA7DJJpvUu3+AjTfeuOLnli1bVtRXGjZsGNdffz3Tpk3jpz/9KcuWLauxn7Fjx/LKK6/QpUsXvvSlL/HJJ5/w17/+tc7jadWqFatXrwZY65iVX+s111zD1ltvzQsvvMCUKVOqLcxe7qijjuKBBx7g/vvvZ7fddqNTp051HlupGEBJkiRJkqRM5851216A/fffnyVLlvDHP/4RgFWrVvGDH/yAYcOGVczwqc6AAQP485//DGRL16ZNm1anYy9cuJBtttmGFStWMKaWWlarV6/mz3/+M9OmTWPmzJnMnDmT8ePHM3bsWHbeeWdmz57N5MmTK/pduXIlgwYN4re//W1F4FW+BK9Lly4VoVtNAdaCBQvYZpttaNGiBbfffjurVq0Cshlht956a0XNqvJ+27Rpw0EHHcSZZ57ZpJbfgQGUJEmSJEkqd+mlUDUUatcu215PEcHf/vY3/vKXv7Djjjuy00470aZNG375y1/Wuu/w4cOZM2cO3bt358ILL6RHjx5suummBR/75z//OXvssQcDBgzgK1/5So1tn3jiCb7whS+w7bbbVmzbZ599mDFjBnPnzmXcuHGcffbZ9OnTh0GDBrFs2TJOOeUUOnfuTO/evenTpw9/+tOfAPjpT3/KueeeS9++fWnZsmWNr+8Pf/gDffr04ZVXXqmYHXXwwQczePBg+vbtS1lZGVdddVXFPkOGDKFFixYceOCBBb8PjUGklEo9hpLo27dvKq+cL0nasF3z0H9KPQSpRucN2qnwxrmr7DBhQsMNoBh9NsV+N3S+r1KT9fLLL9OtW7fCdxgzJqv5NGtWNvPp0kvrXYB8Xa1atYoVK1bQpk0b3njjDQ444ABeffVVWrduXZLxNAZXXXUVCxYs4Oc//3mph5L33IqIZ1NKfau29Sp4kiRJkiTpM0OGlCxwqmrJkiXsu+++rFixgpQSN9544wYdPh1xxBG88cYbPProo6UeSp0ZQEmSJEmSpEapQ4cOuHrpM3/7299KPYR6swaUJEmSJEmSisoASpIkSZIkSUXlEjxJkmpxw0snlnoI2sCNf69t4Y3Lpmb3tw1suAEUo8+m2O+GrmwqE6aWlXoUkqQmqqQzoCLiixFxV0QsiIhPIuLuiOhcwH59I+KmiHglIpZExKyIGBMRXdfHuCVJkiRJklS4ks2Aioh2wKPAp8BJQAJ+ATwWEb1TSotr2P04oAdwHTAd+ALwv8CUiChLKb1T1MFLkjYo/9Pz9lIPQRu48wbtVHjjgQOz+2snNNwAitFnU+x3Q1f+vkpSPbRs2ZJevXqxcuVKunbtyu23385mm21Wbft77rmHnXbaie7du9fpOPfeey8zZszgggsuqNN+99xzD0cccQQvv/wyX/nKV+q0rwpTyhlQpwI7AIenlO5JKY0HBgPbA6fXsu/lKaUBKaUbU0r/Sin9CTgY2DzXryRJkiRJaiTatm3L1KlTeemll+jYsSM33HBDje3vueceZsyYkfe5lStXVrvf4MGD6xw+AYwdO5avfvWrjB07ts771sWqVauK2n9jVsoAajDwdErp9fINKaW3gCeBw2raMaU0J8+2t4E5ZLOhJEmSJElSPYyZNoYu13ahxSUt6HJtF8ZMG9Og/e+111689957ALzxxhscfPDB7Lbbbuy999688sorTJo0iXvvvZfzzz+fsrIy3njjDQYOHMj3vvc9+vbty8iRI7nvvvvYY4892GWXXTjggAP44IMPALjttts466yzABg2bBjnnHMO/fv3Z4cdduCuu+7KO55FixYxceJEbrnlFu68886K7atWreKHP/whPXv2pHfv3vzmN78BYPLkyfTv358+ffqw++67s3DhwjWOC3DooYcyYcIEANq3b88PfvAD+vTpw1NPPcXPfvYz+vXrR8+ePTnttNNIKQHw+uuvc8ABB9CnTx923XVX3njjDb797W9zzz33VPQ7ZMgQxo8f3zAfxHpWyiLkPYB879p04Ji6dhYR3YCtgJfXcVySJEmSJG2Qxkwbw2n3ncaSFUsAeHvB25x232kADOk1ZJ37X7VqFY888gjf/e53ATjttNMYPXo0O+64I//+978ZPnw4jz76KIMHD+bQQw/l6KOPrth3+fLlTJkyBYD58+fz9NNPExH87ne/44orruDqq69e63izZ89m4sSJvPLKKwwePHiN/sqNHz+egw8+mJ122olOnTrx7LPPsttuu3HTTTcxc+ZMpk6dSqtWrZg3bx7Lly/n2GOPZdy4cfTr149PPvmEtm1rvljI4sWL2WOPPSrG1717dy666CIATjzxRO6//36++c1vMmTIEC644AKOOOIIli1bxurVq/nud7/LNddcw+GHH86CBQuYNGkSf/jDH+r35pdYKQOojsD8PNvnkS2lK1hEtAJGk82AuqWGdqcBpwF07lxrrXNJkiRJkjYoIx4ZURE+lVuyYgkjHhmxTgHU0qVLKSsr47333qNbt24MGjSIRYsWMWnSJI455rM5KJ9++mm1fRx77LEVP7/77rsce+yxzJ49m+XLl9O1a/5rkh1++OG0aNGC7t27V8ySqmrs2LGce+65ABx33HGMHTuW3XbbjYcffpgzzjiDVq2y6KRjx45MmzaNbbbZhn79+gHwuc99rtbX3rJlS4466qiKx4899hhXXHEFS5YsYd68efTo0YOBAwfy3nvvccQRRwDQpk0bAL72ta8xfPhw5syZw1//+leOOuqoivE0NU1z1Gu7HugPfCOllC/UAiCldBNwE0Dfvn3TehqbJEmSJElNwqwFs+q0vVDlNaCWLFnCQQcdxA033MCwYcPYbLPNmDp1akF9bLLJJhU/n3322Xz/+99n8ODBTJgwgYsvvjjvPhtvvHHFz+VL3SqbN28ejz76KNOmTSMiWLVqFRHBlVdeWafX16pVK1avXl3xeNmyZRU/t2nThpYtW1ZsHz58OFOmTOGLX/wiF1988Rpt8/n2t7/NHXfcwZ133smtt95ap3E1JqWsATWf/DOdqpsZlVdEXEY2q+k7KaV/NtDYJEmSJEna4HTeNP9qoeq211W7du247rrruPrqq2nXrh1du3blL3/5C5AFRC+88AIAHTp0YOHChdX2s2DBAr7whawE9LosSbvrrrs48cQTefvtt5k5cybvvPMOXbt25YknnmDQoEH89re/rSh6Pm/ePHbeeWdmz57N5MmTAVi4cCErV66kS5cuTJ06ldWrV/POO+/wzDPP5D1eedi0xRZbsGjRooq6VB06dGC77barqPf06aefsmRJNhNt2LBhXHvttQB1vipgY1LKAGo6WR2oqroD+UvdVxERI4AfA+eklLxGtiRJkiRJ6+DS/S+l3Ubt1tjWbqN2XLr/pQ12jF122YXevXszduxYxowZwy233EKfPn3o0aNHRYHt4447jiuvvJJddtmFN954Y60+Lr74Yo455hh22203tthii3qPZezYsRXL3sodddRRjB07llNOOYXOnTvTu3dv+vTpw5/+9Cdat27NuHHjOPvss+nTpw+DBg1i2bJlDBgwgK5du9K9e3fOOeccdt1117zH22yzzTj11FPp2bMnBx10UMVSPoDbb7+d6667jt69e9O/f3/++9//ArD11lvTrVs3Tj755Hq/zsYg8k1BWy8HjvgecBWwU0rpzdy2LsBrwAUppbWrh625/znASGBESumXdT1+3759U3nxMknShu2ah/5T6iFINTpv0E6FNx44MLvPXXmnQRSjz6bY74bO91Vqsl5++WW6detWcPsx08Yw4pERzFowi86bdubS/S9tkALkqp8lS5bQq1cvnnvuOTbddNNSD2cN+c6tiHg2pdS3attS1oC6GTgLGB8RFwIJ+DnwDvDb8kYRsT3wBvCzlNLPctuOA64FHgQejYg9K/X7SUqpoBlUkiRJkiRpTUN6DTFwaiQefvhhvvvd73Leeec1uvCprkoWQKWUFkfEfsA1wO1AAI8A30spLarUNICWrLlc8ODc9oNzt8r+BQws0rAlSQ1k4G0DSz2ECu/OX1rqIUg1Gv9ezZd3XkPZ1Oy+If8bK0afRe53wtSyhu1TkqQSOOCAA3j77bdLPYwGUdKr4KWUZgFH1dJmJlnYVHnbMGBYscYlSZIkSZKkhlPSAEqStOGaMGxCqYdQwRpQauzqVQPq2gkNN4Bi9Lk++pUkSY1GKa+CJ0mSJEmSpA2AAZQkSZIkSZKKygBKkiRJkiQVVcuWLSkrK6NHjx706dOHq6++mtWrV+dt+/7773P00UdXPD7++OPp3bs311xzDddeey1LlizJu9/AgQOZMmVKncbVvn37OrUvN3XqVP7xj39UPL733nu57LLL6tVXZeeddx7XXnttxeODDjqIU045peLxD37wA37961/X63jDhg3jrrvuWucx1pc1oCRJkiRJ2oA0dP3LQmoVtm3blqlTpwLw4YcfcsIJJ/DJJ59wySWXrNFu5cqVbLvtthVByX//+18mT57M66+/DkCXLl0YOnQo7dq1a9DXUFdTp05lypQpHHLIIQAMHjyYwYMHr3O/AwYM4M9//jPf+973WL16NR999BGffPJJxfOTJk3immuuYc8992yQ461PzoCSJEmSJEnrzVZbbcVNN93E9ddfT0qJ2267jcGDB7Pffvux//77M3PmTHr27AnAgQceyHvvvUdZWRmXXHIJ77//Pvvuuy/77rtvjcdo3749I0aMoE+fPuy555588MEHALz11lvstdde9OrViwsvvLCi/YQJEzj00EMrHp911lncdtttAEyePJn+/fvTp08fdt99dxYsWMBFF13EuHHjKCsrY9y4cdx2222cddZZAMycOZP99tuP3r17s//++zNr1iwgm4F0zjnn0L9/f3bYYYe8s5H69+/PU089BcD06dPp2bMnHTp0YP78+Xz66ae8/PLL7Lrrrmscr7p+U0qcddZZ7LzzzhxwwAF8+OGHFcd55JFH2GWXXejVqxff+c53+PTTT5k8eTJHHnkkAOPHj6dt27YsX76cZcuWscMOOxT46VbPAEqSJEmSJK1XO+ywA6tWraoIRZ577jnuuusu/vWvf63R7t577+VLX/oSU6dO5ac//Snbbrstjz32GI899liN/S9evJg999yTF154gX322Yebb74ZgHPPPZczzzyTadOmsc0229Q6zuXLl3PssccycuRIXnjhBR5++GE22WQTfvazn3HssccydepUjj322DX2OfvssznppJN48cUXGTJkCOecc07Fc7Nnz2bixIncf//9XHDBBWsdb9ttt6VVq1bMmjWLSZMmsddee7HHHnvw1FNPMWXKFHr16kXr1q3X2i9fv3/729949dVXmTFjBn/84x+ZNGkSAMuWLWPYsGGMGzeOadOmsXLlSkaNGsUuu+xSMUvtiSeeoGfPnkyePJl///vf7LHHHrW+V7UxgJIkSZIkSSU1aNAgOnbs2GD9tW7dumJG02677cbMmTMBePLJJzn++OMBOPHEE2vt59VXX2WbbbahX79+AHzuc5+jVauaqxk99dRTnHDCCRXHmDhxYsVzhx9+OC1atKB79+4Vs7Kq6t+/P5MmTaoIoPbaa6+KxwMGDMi7T75+H3/8cY4//nhatmzJtttuy3777Vfxmrp27cpOO2VLJ0866SQef/xxWrVqxZe+9CVefvllnnnmGb7//e/z+OOP88QTT7D33nvX+l7VxgBKkiRJkiStV2+++SYtW7Zkq622AmCTTTZp0P432mgjIgLICqCvXLmy4rny7ZW1atVqjaLoy5Yta9DxlNt4440rfk4p5W0zYMAAJk2axLRp0+jZsyd77rknTz31FJMmTaJ///717rcQ++yzDw888AAbbbQRBxxwABMnTmTixIkGUJIkSZIkqWmZM2cOZ5xxBmeddVbeMKgmHTp0YOHChfU+9oABA7jzzjsBGDNmTMX27bffnhkzZvDpp5/y8ccf88gjjwCw8847M3v2bCZPngzAwoULWblyZY3j6N+//xrHqGt4079/f+6//346duxIy5Yt6dixIx9//DFPPfVUtQFUPvvssw/jxo1j1apVzJ49u2LZ4s4778zMmTMrCrvffvvtfO1rXwNg77335tprr2WvvfZiyy23ZO7cubz66qsVNbnWhVfBk6RmYuBtA0s9hCbr3flLSz0EqUbj32tbeOOyqdl9Q/5OKEafuX4nTC1r2D4lSY3S0qVLKSsrY8WKFbRq1YoTTzyR73//+3Xu57TTTuPggw+uqAVVVyNHjuSEE07g8ssv57DDDqvY/sUvfpFvfetb9OzZk65du7LLLrsA2VK+cePGcfbZZ7N06VLatm3Lww8/zL777stll11GWVkZP/nJT9Y4xm9+8xtOPvlkrrzySrbccktuvfXWOo2xV69efPTRRxXL+Mq3LVq0iC222KLgfo444ggeffRRunfvTufOndlrr70AaNOmDbfeeivHHHMMK1eupF+/fpxxxhkA7LHHHnzwwQfss88+APTu3Zv//ve/dQ4K84l1mZrVlPXt2zdNmTKl1MOQpAZjAFV/BlBq7LbbvA4BVK54KGVlDTeAYvSZ63fC1DKYMKFh+x04MLtv6H43dL6vUpP18ssv061bt1IPQ81QvnMrIp5NKfWt2tYZUJLUTEwYNqHUQ2iyrnnoP6UeglSj8wbtVHjj8pDg2gkNN4Bi9Fm5X0mS1OxZA0qSJEmSJElFZQAlSZIkSZKkojKAkiRJkiRJUlEZQEmSJEmSJKmoDKAkSZIkSZJUVAZQkiRJkiSpqFq2bElZWRk9evSgT58+XH311axevTpv2/fff5+jjz664vHxxx9P7969ueaaa7j22mtZsmRJ3v0GDhzIzjvvTO/evfnKV77CWWedxccff1zr2H75y1/W6zUBTJgwgUmTJtV5vy5duvDRRx/V+7hNkQGUJEmSJEkqqrZt2zJ16lSmT5/OQw89xAMPPMAll1yyVruVK1ey7bbbctdddwHw3//+l8mTJ/Piiy9y3nnn1RhAAYwZM4YXX3yRF198kY033pjDDjus1rGVIoDaEBlASZIkSZKk9Warrbbipptu4vrrryelxG233cbgwYPZb7/92H///Zk5cyY9e/YE4MADD+S9996jrKyMSy65hPfff599992Xfffdt8ZjtG7dmiuuuIJZs2bxwgsvAHDHHXew++67U1ZWxumnn86qVau44IILWLp0KWVlZQwZMqTadgAPPvggu+66K3369KkY5+jRo7nmmmsoKyvjiSeeYM6cORx11FH069ePfv368eSTTwIwd+5cDjzwQHr06MEpp5xCSqlYb2+j1arUA5AkSZIkSevRwIEN29+ECXXeZYcddmDVqlV8+OGHADz33HO8+OKLdOzYkZkzZ1a0u/feezn00EOZOnUqALfeeiuPPfYYW2yxRa3HaNmyJX369OGVV16hdevWjBs3jieffJKNNtqI4cOHM2bMGC677DKuv/76iv5ffvnlvO2+/vWvc+qpp/L444/TtWtX5s2bR8eOHTnjjDNo3749P/zhDwE44YQTOO+88/jqV7/KrFmzOOigg3j55Ze55JJL+OpXv8pFF13E3//+d2655ZY6v2dNnQGUpPVu4G0DSz0EaQ3vzl9a6iFINRr/XtvCG5dNze4b8ndt2VQmTC1ruP4kSapi0KBBdOzYscH7LZ9p9Mgjj/Dss8/Sr18/AJYuXcpWW221Vvvq2j399NPss88+dO3aFaDasT788MPMmDGj4vEnn3zCokWLePzxx7n77rsB+MY3vsHmm2/ecC+yiTCAkiRJkiRpQ1KPGUsN7c0336Rly5YVIdAmm2zS4MdYtWoV06ZNo1u3bnz44YecdNJJ/OpXv6pxn5RS3nb33XdfQcdcvXo1Tz/9NG3atKn3uJsrAyhJ692EYRNKPQRpDdc89J9SD0Gq0XmDdiq8cfmyimsnNNwAGnqphiRpgzZnzhzOOOMMzjrrLCKiTvt26NCBhQsX1roEb8WKFYwYMYIvfvGL9O7dm1atWnHYYYdx3nnnsdVWWzFv3jwWLlzI9ttvz0YbbcSKFSvYaKON2H///fO223PPPRk+fDhvvfXWGkvwOnTowCeffFJx3AMPPJDf/OY3nH/++QBMnTqVsrIy9tlnH/70pz9x4YUX8sADDzB//vy6v3FNnEXIJUmSJElSUZUX+u7RowcHHHAABx54ID/96U/r3M9pp53GwQcfXG0R8iFDhtC7d2969uzJ4sWLGT9+PADdu3fnF7/4BQceeCC9e/dm0KBBzJ49u6LP3r17M2TIkGrbbbnlltx0000ceeSR9OnTh2OPPRaAb37zm/ztb3+rKEJ+3XXXMWXKFHr37k337t0ZPXo0AD/96U95/PHH6dGjB3fffTedO3euz9vYpMWGWHkdoG/fvmnKlCmlHoYkqRFwBpQau3rNgGrI5RXF6LMp9ruh832VmqyXX36Zbt26lXoYaobynVsR8WxKqW/Vts6AkiRJkiRJUlEZQEmSJEmSJKmoDKAkSZIkSZJUVAZQkiRJkiRJKioDKEmSJEmSJBWVAZQkSZIkSZKKygBKkiRJkiQVVcuWLSkrK6Nnz55885vf5OOPP66x/T333MOMGTPqfJx7772Xyy67rMY277//PkcffXSd+64qpcQWW2zB/PnzAZg9ezYRwcSJEyvabLnllsydO5dTTjmlzq+nffv26zzGxqRVqQcgNVYDbxtY6iFIWk/enb+01EOQajT+vbaFNy6byoSpZUUbiyRJ9dG2bVumTp0KwEknncQNN9zAiBEjqm1/zz33cOihh9K9e/e1nlu5ciWtWuWPMwYPHszgwYNrHMu2227LXXfdVfjgqxER7Lnnnjz11FMccsghTJo0iV122YVJkybx1a9+lVdffZVOnTrRqVMnfve7363z8Zo6Z0BJkiRJkqT1Zq+99uK9994D4I033uDggw9mt912Y++99+aVV15h0qRJ3HvvvZx//vmUlZXxxhtvMHDgQL73ve/Rt29fRo4cyX333ccee+zBLrvswgEHHMAHH3wAwG233cZZZ50FwLBhwzjnnHPo378/O+ywQ0XoNHPmTHr27FnR/sgjj+Tggw9mxx135Ec/+lHFOG+55RZ22mkndt99d0499dSKfivr378/kyZNAmDSpEmcd955PPXUUxWPBwwYAMDAgQOZMmUKkM1sGjFiBH369GHPPfesGPtbb73FXnvtRa9evbjwwgsrjpFS4vzzz6dnz5706tWLcePGAfA///M/3HvvvQAcccQRfOc73wHg97//PSNGjGDx4sV84xvfoE+fPvTs2bNiv1JxBpRUjQnDJpR6CJLWk2se+k+phyDV6LxBOxXeeODAoo1DktQ8NPRqj7p8d1q1ahWPPPII3/3udwE47bTTGD16NDvuuCP//ve/GT58OI8++iiDBw/m0EMPXWOp3PLlyytCnPnz5/P0008TEfzud7/jiiuu4Oqrr17reLNnz2bixIm88sorDB48OO/Su6lTp/L888+z8cYbs/POO3P22WfTsmVLfv7zn/Pcc8/RoUMH9ttvP/r06bPWvgMGDOCSSy4B4JlnnuGSSy5h5MiRQBZA9e/ff619Fi9ezJ577smll17Kj370I26++WYuvPBCzj33XM4880y+/e1vc8MNN1S0v/vuu5k6dSovvPACH330Ef369WOfffZh77335oknnmDw4MG89957zJ49G4AnnniC4447jgcffJBtt92Wv//97wAsWLCgsA+pSJwBJUmSJEmSimrp0qWUlZXx+c9/ng8++IBBgwaxaNEiJk2axDHHHENZWRmnn356RYiSz7HHHlvx87vvvstBBx1Er169uPLKK5k+fXrefQ4//HBatGhB9+7dK2YaVbX//vuz6aab0qZNG7p3787bb7/NM888w9e+9jU6duzIRhttxDHHHJN33379+vH888+zePFiVqxYQfv27dlhhx14/fXX15gBVVnr1q059NBDAdhtt92YOXMmAE8++STHH388ACeeeGJF+4kTJ3L88cfTsmVLtt56a772ta8xefLkigBqxowZdO/ena233prZs2fz1FNP0b9/f3r16sVDDz3Ej3/8Y5544gk23XTTat/b9cEZUJIkSZIkbUBKsdqjvAbUkiVLOOigg7jhhhsYNmwYm222WUVtqNpssskmFT+fffbZfP/732fw4MFMmDCBiy++OO8+G2+8ccXPKaVa27Rs2ZKVK1cWNB6Adu3aseOOO/L73/+eXXfdFYA999yTf/zjH3z44YfsvPPOa+2z0UYbERF5j1e+vRBf+MIX+Pjjj3nwwQfZZ599mDdvHn/+859p3749HTp0oEOHDjz33HP84x//4MILL2T//ffnoosuKrj/huYMKEmSJEmStF60a9eO6667jquvvpp27drRtWtX/vKXvwBZQPTCCy8A0KFDBxYuXFhtPwsWLOALX/gCAH/4wx8afJz9+vXjX//6F/Pnz2flypX89a9/rbZt//79ufbaa9lrr72ArMbVyJEj2XPPPesUKA0YMIA777wTgDFjxlRs33vvvRk3bhyrVq1izpw5PP744+y+++5AFnZde+21FUvyrrrqKvbee28gu9pfu3btGDp0KOeffz7PPfdcnd+HhmQAJUmSJEmS1ptddtmF3r17M3bsWMaMGcMtt9xCnz596NGjB+PHjwfguOOO48orr2SXXXbhjTfeWKuPiy++mGOOOYbddtuNLbbYosHH+IUvfIH/9//+H7vvvjsDBgygS5cu1S5hGzBgAG+++WZFALXrrrvy7rvv5q3/VJORI0dyww030KtXr4oi7ZAVGO/duzd9+vRhv/3244orruDzn/88kIVTK1eu5Mtf/jK77ror8+bNqwigpk2bxu67705ZWRmXXHLJGoXNSyGqm4LW3PXt2zeVFy+TJG3YLEKuxq5eRcgnTGi4ARSjz6bY74bO91Vqsl5++WW6detW6mE0OYsWLaJ9+/asXLmy4ipzRxxxRKmH1ajkO7ci4tmUUt+qbZ0BJUmSJEmSVMXFF19MWVkZPXv2pGvXrhx++OGlHlKTZhFySZIkSZKkKq666qpSD6FZcQaUJEmSJEmSisoASpIkSZKkZm5Drf+s4qnrOVXSACoivhgRd0XEgoj4JCLujojOBe7bJiKujIjZEbE0Ip6KiH2KPWZJkiRJkpqSNm3aMHfuXEMoNZiUEnPn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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], "source": [ "## Plotting ##\n", "\n", "plt.figure(figsize=(20, 6))\n", - "plt.scatter(\"index\", \"accuracy\", data=status, label=\"Accuracy\")\n", + "plt.scatter(\"index\", \"original_accuracy\", data=status, label=\"Original Accuracy\", color='red')\n", + "plt.scatter(\"index\", \"accuracy\", data=status, label=\"Retrain Accuracy\", color='green')\n", "plt.grid(False, axis=\"x\")\n", "plt.xticks(fontsize=16)\n", "plt.yticks(fontsize=16)\n", @@ -387,7 +410,9 @@ " label=\"Retraining Windows\",\n", ")\n", "\n", - "plt.legend(loc='lower right')" + "plt.legend(loc='lower right')\n", + "plt.show()\n", + "# plt.savefig(\"example_ADWINOutcome.png\")" ] }, { @@ -396,19 +421,10 @@ "source": [ "\n", "After drift is induced, the accuracy decreases enough for ADWIN to shrink its\n", - "window and alarm; subsequent windows also include data from the old regime,\n", - "so drift continues to be detected until the window shrinks enough to be\n", - "comprised mostly by the new regime.\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "plt.show()\n", - "# plt.savefig(\"example_ADWIN.png\")" + "window and alarm; subsequent windows also include data from the old regime, so\n", + "drift continues to be detected until the window shrinks enough to be comprised\n", + "mostly by the new regime. We can see that, by retraining on the new window of\n", + "data reported by ADWIN, the accuracy of the classifier is improved over time." ] }, { @@ -1155,4 +1171,4 @@ }, "nbformat": 4, "nbformat_minor": 2 -} +} \ No newline at end of file diff --git a/examples/change_detection_examples.py b/examples/change_detection_examples.py index 90aa8af3..ef727b8a 100644 --- a/examples/change_detection_examples.py +++ b/examples/change_detection_examples.py @@ -11,10 +11,15 @@ # conditional distributions P(y|var1) and P(y|var2). The drift occurs from index # 1000 to 1250, and affects 66% of the sample. # +# Rainfall is a real source of weather data. We use the first 1000 samples, where +# no drift has been injected; but many features are cyclical, and haven't been +# corrected, so change does occur. +# # These change detectors can be applied to any given single variable; below, -# they are applied to var2. +# they are applied to `var2` and the `max_sustained_wind_speed` columns in the +# respective datasets. -# In[ ]: +# In[1]: ## Imports ## @@ -23,11 +28,11 @@ import pandas as pd import numpy as np import matplotlib.pyplot as plt -from menelaus.change_detection import PageHinkley, CUSUM -from menelaus.datasets import fetch_circle_data +from menelaus.change_detection import ADWIN, CUSUM, PageHinkley +from menelaus.datasets import fetch_circle_data, fetch_rainfall_data -# In[ ]: +# In[2]: ## Import Data ## @@ -36,17 +41,34 @@ df = fetch_circle_data() drift_start, drift_end = 1000, 1250 +rainfall_df = fetch_rainfall_data() -# ## Page-Hinkley (PH) Test -# In[ ]: +# ## Cumulative Sum (CUSUM) Test +# - This monitors a moving average of var2, starting from an initial estimate of mean +# and standard deviation. +# +# - It will only alarm if 50 or more samples have been observed since +# initialization/drift. +# +# - This will alarm if var2 passes a critical value controlled by delta and +# threshold in either direction, positive or negative. +# +# -## Setup ## +# In[5]: -# Set up one-directional PH test: this will only alarm if the mean of the -# monitored variable decreases, and only after seeing 30 or more samples. -ph = PageHinkley(delta=0.01, threshold=15, direction="negative", burn_in=30) + +## Setup ## +cusum = CUSUM( + target=np.mean(df.loc[:drift_start, "var2"]), # mean / std of 'Var 2' pre-drift + sd_hat=np.std(df.loc[:drift_start, "var2"]), + burn_in=50, + delta=0.005, + threshold=40, + direction=None, +) # setup DF to record results status = pd.DataFrame(columns=["index", "actual value", "drift_detected"]) @@ -54,11 +76,11 @@ # iterate through data; feed each sample to the detector, in turn for i in range(len(df)): obs = df["var2"][i] - ph.update(X=obs) - status.loc[i] = [i, obs, ph.drift_state] + cusum.update(obs) + status.loc[i] = [i, obs, cusum.drift_state] -# In[ ]: +# In[6]: ## Plotting ## @@ -69,7 +91,7 @@ plt.grid(False, axis="x") plt.xticks(fontsize=16) plt.yticks(fontsize=16) -plt.title("PH Test Results", fontsize=22) +plt.title("CUSUM Test Results", fontsize=22) plt.ylabel("Value", fontsize=18) plt.xlabel("Index", fontsize=18) ylims = [-0.05, 1.1] @@ -87,46 +109,31 @@ plt.legend() -# Page-Hinkley alarms shortly after the drift induction window closes, and then makes -# several apparently erroneous alarms afterwards. The parameters may not be -# well-chosen for the new regime. -# Change detection algorithms come out of process control, so a priori -# characterization of the bounds of the process, not performed here, would not -# be unreasonable. +# CUSUM alarms several times within the drift induction window, roughly halfway +# through. After the alarm is reset, change is detected a few more times, +# including an apparently erroneous detection after the drift induction window +# is passed. The current threshold settings may then be too sensitive for the +# new regime. # -# In[ ]: +# In[7]: -plt.show() -# plt.savefig("example_Page-Hinkley_detections.png") +plt.show() +# plt.savefig("example_CUSUM_detections.png") -# ## Cumulative Sum (CUSUM) Test -# - This monitors a moving average of var2, starting from an initial estimate of mean -# and standard deviation. -# -# - It will only alarm if 50 or more samples have been observed since -# initialization/drift. -# -# - This will alarm if var2 passes a critical value controlled by delta and -# threshold in either direction, positive or negative. -# -# +# ## Page-Hinkley (PH) Test # In[ ]: ## Setup ## -cusum = CUSUM( - target=np.mean(df.loc[:drift_start, "var2"]), # mean / std of 'Var 2' pre-drift - sd_hat=np.std(df.loc[:drift_start, "var2"]), - burn_in=50, - delta=0.005, - threshold=40, - direction=None, -) + +# Set up one-directional PH test: this will only alarm if the mean of the +# monitored variable decreases, and only after seeing 30 or more samples. +ph = PageHinkley(delta=0.01, threshold=15, direction="negative", burn_in=30) # setup DF to record results status = pd.DataFrame(columns=["index", "actual value", "drift_detected"]) @@ -134,8 +141,8 @@ # iterate through data; feed each sample to the detector, in turn for i in range(len(df)): obs = df["var2"][i] - cusum.update(obs) - status.loc[i] = [i, obs, cusum.drift_state] + ph.update(X=obs) + status.loc[i] = [i, obs, ph.drift_state] # In[ ]: @@ -149,7 +156,7 @@ plt.grid(False, axis="x") plt.xticks(fontsize=16) plt.yticks(fontsize=16) -plt.title("CUSUM Test Results", fontsize=22) +plt.title("PH Test Results", fontsize=22) plt.ylabel("Value", fontsize=18) plt.xlabel("Index", fontsize=18) ylims = [-0.05, 1.1] @@ -165,19 +172,94 @@ color="red", ) plt.legend() +plt.show() +# plt.savefig("example_Page-Hinkley_detections.png") -# CUSUM alarms several times within the drift induction window, roughly halfway -# through. After the alarm is reset, change is detected a few more times, -# including an apparently erroneous detection after the drift induction window -# is passed. The current threshold settings may then be too sensitive for the -# new regime. +# Page-Hinkley alarms shortly after the drift induction window closes, and then makes +# several apparently erroneous alarms afterwards. The parameters may not be +# well-chosen for the new regime. +# Change detection algorithms come out of process control, so a priori +# characterization of the bounds of the process, not performed here, would not +# be unreasonable. # -# In[ ]: +# ## ADaptive WINdowing (ADWIN) +# +# ADWIN is a change detection algorithm that can be used to monitor a real-valued number. ADWIN maintains a window of the data stream, which grows to the right as new elements are received. When the mean of the feature in one of the subwindows is different enough, ADWIN drops older elements in its window until this ceases to be the case. +# In[3]: +## Setup ## + +adwin = ADWIN() + +# setup DF to record results +status = pd.DataFrame(columns=["index", "actual value", "drift_detected", "ADWIN mean"]) +df2 = rainfall_df.loc[:1000, 'max_sustained_wind_speed'] +rec_list = [] + +# iterate through data; feed each sample to the detector, in turn +for i in range(len(df2)): + obs = df2[i] + adwin.update(X=obs) + status.loc[i] = [i, obs, adwin.drift_state, adwin.mean()] + + #monitor the size of ADWIN's window as it changes + if adwin.drift_state == "drift": + retrain_start = adwin.retraining_recs[0] + retrain_end = adwin.retraining_recs[1] + rec_list.append([retrain_start, retrain_end]) + + +# In[4]: + + +## Plotting ## + +# plot the monitored variable and the status of the detector +plt.figure(figsize=(20, 6)) +plt.scatter("index", "actual value", data=status, label="max_sustained_wind_speed", alpha=.5) +plt.plot("index", "ADWIN mean", data=status, color='blue', linewidth=3) +plt.grid(False, axis="x") +plt.xticks(fontsize=16) +plt.yticks(fontsize=16) +plt.title("ADWIN Results", fontsize=22) +plt.ylabel("Value", fontsize=18) +plt.xlabel("Index", fontsize=18) +ylims = [-2, 6] +plt.ylim(ylims) + +plt.vlines( + x=status.loc[status["drift_detected"] == "drift"]["index"], + ymin=ylims[0], + ymax=ylims[1], + label="Drift Detected", + color="red", +) + +# Create a list of lines that indicate the retraining windows. +# Space them evenly, vertically. +rec_list = pd.DataFrame(rec_list) +rec_list["y_val"] = np.linspace( + start=0.6 * (ylims[1] - ylims[0]) + ylims[0], + stop=0.8 * ylims[1], + num=len(rec_list), +) + +# Draw green lines that indicate where retraining occurred +plt.hlines( + y=rec_list["y_val"][::-1], + xmin=rec_list[0], + xmax=rec_list[1], + color="black", + label="New Observation Windows", +) + +plt.legend() plt.show() -# plt.savefig("example_CUSUM_detections.png") +# plt.savefig("example_ADWIN.png") + +# ADWIN monitors the running average of the `max_sustained_wind_speed` column and, once that mean begins to change enough around index 600, shrinks its observation window (in black) to only include more recent samples. This process repeats as further changes are detected. We can see that the size of the observation window shrinks and grows as the incoming data changes. diff --git a/examples/concept_drift_examples.py b/examples/concept_drift_examples.py index efcc927c..8fd20b7f 100644 --- a/examples/concept_drift_examples.py +++ b/examples/concept_drift_examples.py @@ -3,28 +3,28 @@ # # Concept Drift Detector Examples -# The examples in this notebook show how to set up, run, and produce output from detectors in the -# concept_drift module. The parameters aren't necessarily tuned for best +# The examples in this notebook show how to set up, run, and produce output from detectors in the +# concept_drift module. The parameters aren't necessarily tuned for best # performance for the input data, just notional. -# -# Circle is a synthetic data source, where drift occurs in both var1, var2, and the -# conditional distributions P(y|var1) and P(y|var2). The drift occurs from index +# +# Circle is a synthetic data source, where drift occurs in both var1, var2, and the +# conditional distributions P(y|var1) and P(y|var2). The drift occurs from index # 1000 to 1250, and affects 66% of the sample. -# -# Rainfall is a real data source that concept drift has been injected into. This +# +# Rainfall is a real data source into which concept drift has been injected. This # set contains approximately 18,000 samples, and the data has been standardized. # Drift starts from index 12,000 and continues through the rest of the dataset. # In this example, we take the first 10,000 samples of the dataset for training # an initial classifier, and then use the remaining samples for testing. -# -# These detectors are generally to be applied to the true class and predicted class +# +# These detectors are generally to be applied to the true class and predicted class # from a particular model. So, each of the summary plots displays the running # accuracy of the classifier alongside the drift detector's output. -# -# They also track the indices of portions of the incoming data stream which are -# more similar to each other -- i.e., data that seems to be part of the same +# +# They also track the indices of portions of the incoming data stream which are +# more similar to each other -- i.e., data that seems to be part of the same # concept, which could be used to retrain a model. -# +# # NOTE: The LinearFourRates example has a relatively long runtime, roughly 5 minutes. # In[ ]: @@ -39,9 +39,8 @@ from sklearn.linear_model import SGDClassifier from sklearn import svm from sklearn.base import clone -from menelaus.concept_drift import LinearFourRates, ADWIN, DDM, EDDM, STEPD, MD3 -from menelaus.datasets import fetch_circle_data -from menelaus.datasets import fetch_rainfall_data +from menelaus.concept_drift import LinearFourRates, ADWINOutcome, DDM, EDDM, STEPD, MD3 +from menelaus.datasets import fetch_circle_data, fetch_rainfall_data # In[ ]: @@ -58,8 +57,27 @@ rainfall_df = fetch_rainfall_data() rainfall_drift_start, rainfall_drift_end = 12000, 18158 rainfall_training_size = 10000 -rainfall_columns = ["temperature", "dew_point", "sea_level_pressure", "visibility", "average_wind_speed", "max_sustained_wind_speed", "minimum_temperature", "maximum_temperature", "rain"] -rainfall_features = ["temperature", "dew_point", "sea_level_pressure", "visibility", "average_wind_speed", "max_sustained_wind_speed", "minimum_temperature", "maximum_temperature"] +rainfall_columns = [ + "temperature", + "dew_point", + "sea_level_pressure", + "visibility", + "average_wind_speed", + "max_sustained_wind_speed", + "minimum_temperature", + "maximum_temperature", + "rain", +] +rainfall_features = [ + "temperature", + "dew_point", + "sea_level_pressure", + "visibility", + "average_wind_speed", + "max_sustained_wind_speed", + "minimum_temperature", + "maximum_temperature", +] rainfall_df[rainfall_features] = rainfall_df[rainfall_features].astype(float) @@ -196,16 +214,16 @@ plt.legend() -# +# # One of the four rates immediately passes outside its threshold when drift is # induced. The same occurs shortly after leaving the drift region. The # recommended retraining data includes most of the drift induction window and # the data after regime change. -# +# # The classifier's accuracy decreases again later, which causes the detector to # enter a "warning" state. Note that the retraining recommendations *begin* with # the index corresponding to the warning state, and end where drift is detected. -# +# # In[ ]: @@ -215,9 +233,11 @@ # ## ADaptive WINdowing (ADWIN) -# ADWIN can be used to monitor the accuracy of a classifier. ADWIN maintains a window of the data stream, which grows to the right as new elements are received. When the mean of the feature in one of the subwindows is different enough, ADWIN drops older elements in its window until this ceases to be the case. +# ADWIN is a change detection algorithm that can be used to monitor a real-valued number. ADWIN maintains a window of the data stream, which grows to the right as new elements are received. When the mean of the feature in one of the subwindows is different enough, ADWIN drops older elements in its window until this ceases to be the case. +# +# It can be used to monitor the accuracy of a classifier by checking `y_true == y_pred` at each time step. So, for convenience, `concept_drift.ADWINOutcome`, takes `y_true` and `y_pred` as arugments, as shown below. `change_detection.ADWIN` can be used more generally, as shown in the change detection examples. -# In[ ]: +# In[36]: ## Setup ## @@ -225,12 +245,18 @@ # Set up classifier: train on first training_size rows X_train = df.loc[0:training_size, ["var1", "var2"]] y_train = df.loc[0:training_size, "y"] +X_test = df.loc[training_size : len(df), ["var1", "var2"]] +y_pred = df.loc[training_size : len(df), "y"] np.random.seed(123) clf = GaussianNB() clf.fit(X_train, y_train) -adwin = ADWIN() +# get running accuracy from the original classifier to compare performance +acc_orig = np.cumsum(clf.predict(X_test) == y_pred) +acc_orig = acc_orig / np.cumsum(np.repeat(1, len(acc_orig))) + +adwin = ADWINOutcome() # Set up DF to record results. status = pd.DataFrame( @@ -240,7 +266,7 @@ rec_list = [] -# In[ ]: +# In[37]: # run ADWIN @@ -281,14 +307,19 @@ n += 1 +status["original_accuracy"] = acc_orig -# In[ ]: + +# In[42]: ## Plotting ## plt.figure(figsize=(20, 6)) -plt.scatter("index", "accuracy", data=status, label="Accuracy") +plt.scatter( + "index", "original_accuracy", data=status, label="Original Accuracy", color="red" +) +plt.scatter("index", "accuracy", data=status, label="Retrain Accuracy", color="green") plt.grid(False, axis="x") plt.xticks(fontsize=16) plt.yticks(fontsize=16) @@ -327,22 +358,17 @@ label="Retraining Windows", ) -plt.legend(loc='lower right') +plt.legend(loc="lower right") +plt.show() +# plt.savefig("example_ADWINOutcome.png") -# +# # After drift is induced, the accuracy decreases enough for ADWIN to shrink its -# window and alarm; subsequent windows also include data from the old regime, -# so drift continues to be detected until the window shrinks enough to be -# comprised mostly by the new regime. -# - -# In[ ]: - - -plt.show() -# plt.savefig("example_ADWIN.png") - +# window and alarm; subsequent windows also include data from the old regime, so +# drift continues to be detected until the window shrinks enough to be comprised +# mostly by the new regime. We can see that, by retraining on the new window of +# data reported by ADWIN, the accuracy of the classifier is improved over time. # ## Drift Detection Method (DDM) @@ -361,7 +387,7 @@ clf.fit(X_train, y_train) -# +# # These parameter values are chosen somewhat arbitrarily. # At least 100 samples must be seen before DDM tests for drift (the n_threshold # parameter); the other two define the warning and drift regions. The minimum @@ -369,7 +395,7 @@ # warning_scale and drift_scale roughly correspond to how many standard standard # deviations away the current estimate must be in order for the detector to # alarm. -# +# # In[ ]: @@ -479,12 +505,12 @@ plt.legend() -# +# # DDM initially alarms during the drift induction window, triggering retraining. # The subsequent dip in accuracy is large enough to put the detector in the # "warning" state, but not large enough for "drift" to be identified. -# -# +# +# # In[ ]: @@ -512,13 +538,13 @@ # - n_threshold specifies the number of new samples which must be observed before # tests for drift are run. -# +# # - The warning_thresh and drift_thresh values roughly correspond to the ratio of # the 95th percentile for the current distance distribution vs. the 95th percentile # for the "best" distance distribution observed so far. So, lower values correspond to less conservative monitoring - the current # distance between errors is allowed to be a smaller fraction of the "best" # distance. -# +# # In[ ]: @@ -632,7 +658,7 @@ # retraining. The later increase in the error rate causes the detector to enter # the warning state, but is not large enough to be identified as drift with this # threshold setting. -# +# # In[ ]: @@ -764,14 +790,14 @@ label="Retraining Windows", ) -plt.legend(loc='upper left') +plt.legend(loc="upper left") # STEPD identifies drift quite early in the drift induction window, triggering # retraining on a relatively small amount of data; after this, the online # classifier updates sufficiently that its accuracy is roughly flat over the # remaining data, albeit with a big enough change to trigger more warnings. -# +# # In[ ]: @@ -795,7 +821,7 @@ y_train = rainfall_df.loc[0:rainfall_training_size, "rain"] np.random.seed(123) -clf = svm.SVC(kernel='linear') +clf = svm.SVC(kernel="linear") clf.fit(X_train, y_train.values.ravel()) retrain_clf = clone(clf) retrain_clf.fit(X_train, y_train.values.ravel()) @@ -807,7 +833,14 @@ # Set up DF to record results. status = pd.DataFrame( - columns=["index", "y", "margin_density", "original_accuracy", "retrain_accuracy", "drift_detected"] + columns=[ + "index", + "y", + "margin_density", + "original_accuracy", + "retrain_accuracy", + "drift_detected", + ] ) correct_orig, correct_retrain = 0, 0 n = 1 @@ -825,7 +858,7 @@ y_pred_orig = int(clf.predict(X_test)) y_pred_retrain = int(retrain_clf.predict(X_test)) y_true = int(rainfall_df.loc[[i], "rain"]) - + # increment accuracy if y_pred_orig == y_true: correct_orig += 1 @@ -839,7 +872,9 @@ oracle_label = rainfall_df.loc[[i], rainfall_columns] md3.give_oracle_label(oracle_label) if md3.waiting_for_oracle == False: - retrain_clf.fit(md3.reference_batch_features, md3.reference_batch_target.values.ravel()) + retrain_clf.fit( + md3.reference_batch_features, md3.reference_batch_target.values.ravel() + ) status.loc[i] = [ i, y_true, @@ -860,13 +895,13 @@ accuracy_retrain, md3.drift_state, ] - + # If there was a drift warning, track the window of the labeled # oracle data used if md3.drift_state == "warning": oracle_start = i + 1 oracle_end = i + md3.oracle_data_length_required - + oracle_list.append([oracle_start, oracle_end]) n += 1 @@ -879,8 +914,12 @@ plt.figure(figsize=(20, 6)) plt.scatter("index", "margin_density", data=status, label="Margin Density") -plt.scatter("index", "original_accuracy", data=status, label="Original Accuracy", color="red") -plt.scatter("index", "retrain_accuracy", data=status, label="Retrain Accuracy", color="green") +plt.scatter( + "index", "original_accuracy", data=status, label="Original Accuracy", color="red" +) +plt.scatter( + "index", "retrain_accuracy", data=status, label="Retrain Accuracy", color="green" +) plt.grid(False, axis="x") plt.xticks(fontsize=16) plt.yticks(fontsize=16) @@ -890,7 +929,9 @@ ylims = [-0.05, 1.1] plt.ylim(ylims) -plt.axvspan(rainfall_drift_start, rainfall_drift_end, alpha=0.5, label="Drift Induction Window") +plt.axvspan( + rainfall_drift_start, rainfall_drift_end, alpha=0.5, label="Drift Induction Window" +) # Draw red lines that indicate where drift was detected plt.vlines( @@ -939,4 +980,3 @@ plt.show() # plt.savefig("example_MD3.png") - diff --git a/setup.cfg b/setup.cfg index c6f1d114..c0f97825 100644 --- a/setup.cfg +++ b/setup.cfg @@ -3,7 +3,7 @@ [metadata] name = menelaus -version = 0.1.2 +version = 0.2.0 license = Apache 2.0 description = This library implements algorithms for detecting data drift and concept drift for ML and statistics applications. long_description = file: readme_short.rst diff --git a/src/menelaus/change_detection/__init__.py b/src/menelaus/change_detection/__init__.py index cdf054d2..7b3a133c 100644 --- a/src/menelaus/change_detection/__init__.py +++ b/src/menelaus/change_detection/__init__.py @@ -6,5 +6,6 @@ either upward or downward changes in a sequence. """ -from menelaus.change_detection.page_hinkley import PageHinkley +from menelaus.change_detection.adwin import ADWIN from menelaus.change_detection.cusum import CUSUM +from menelaus.change_detection.page_hinkley import PageHinkley diff --git a/src/menelaus/concept_drift/adwin.py b/src/menelaus/change_detection/adwin.py similarity index 95% rename from src/menelaus/concept_drift/adwin.py rename to src/menelaus/change_detection/adwin.py index 5e2fe160..54bdbc3b 100644 --- a/src/menelaus/concept_drift/adwin.py +++ b/src/menelaus/change_detection/adwin.py @@ -1,3 +1,5 @@ +# most of these get called within loops (or an outer loop on the detector), +# so this is more efficient from numpy import ( power, log, @@ -7,15 +9,13 @@ zeros, ) -# most of these get called within loops (or an outer loop on the detector), -# so this is more efficient -from menelaus.drift_detector import DriftDetector +from menelaus.drift_detector import StreamingDetector -class ADWIN(DriftDetector): +class ADWIN(StreamingDetector): """ADWIN (ADaptive WINdowing) is a drift detection algorithm which uses a sliding window to estimate the running mean and variance of a given - statistic. + real-valued number. As each sample is added, ADWIN stores a running estimate (mean and variance) for a given statistic, calculated over a sliding window which will grow to @@ -37,17 +37,15 @@ class ADWIN(DriftDetector): Ref. :cite:t:`bifet2007learning` Attributes: - total_updates (int): number of samples the drift detector has ever + total_samples (int): number of samples the drift detector has ever been updated with - updates_since_reset (int): number of samples since the last time the + samples_since_reset (int): number of samples since the last time the drift detector was reset drift_state (str): detector's current drift state. Can take values ``"drift"`` or ``None``. """ - input_type = "stream" - def __init__( self, delta=0.002, @@ -104,21 +102,15 @@ def __init__( self._window_size = 0 self._retraining_recs = [None, None] - def update(self, y_true=None, y_pred=None, X=None): + def update(self, X, y_true=None, y_pred=None): """Update the detector with a new sample. Args: - y_true: actual class of next sample - y_pred: predicted class of next sample - X: next sample in the stream of data - not used in ADWIN + y_true: actual class of next sample - not used for change detectors + y_pred: predicted class of next sample - not used for change detectors + X: next sample in the stream of data """ - # Technically, ADWIN could monitor the running mean of some feature - # aside from accuracy, but that leads to potentially indeterminate input - # (user passes the full y_true, y_pred, X triplet), so -- maybe if - # there's a big enough need. - new_value = int(y_true == y_pred) - if self.drift_state is not None: # note that the other attributes should *not* be initialized after drift self.reset() @@ -126,7 +118,7 @@ def update(self, y_true=None, y_pred=None, X=None): super().update(X, y_true, y_pred) # add new sample to the head of the window self._window_size += 1 - self._add_sample(new_value) + self._add_sample(X) self._shrink_window() def reset(self): @@ -228,7 +220,7 @@ def _shrink_window(self): size and set the ``drift_state`` to ``"drift"``. """ if ( - self.total_updates % self.new_sample_thresh == 0 + self.total_samples % self.new_sample_thresh == 0 and self._window_size > self.window_size_thresh ): # either we reduced the window and must restart to check the new @@ -280,8 +272,8 @@ def _shrink_window(self): if self._window_size > 0: n_elements0 -= self._remove_last() self._retraining_recs = ( - self.total_updates - self._window_size, - self.total_updates - 1, + self.total_samples - self._window_size, + self.total_samples - 1, ) exit_shrink = True break diff --git a/src/menelaus/concept_drift/__init__.py b/src/menelaus/concept_drift/__init__.py index 3e88fd48..9de6612b 100644 --- a/src/menelaus/concept_drift/__init__.py +++ b/src/menelaus/concept_drift/__init__.py @@ -12,7 +12,7 @@ multiple metrics simultaneously, such as true positive, false positive, true negative, and false negative rates. """ -from menelaus.concept_drift.adwin import ADWIN +from menelaus.concept_drift.adwin_outcome import ADWINOutcome from menelaus.concept_drift.ddm import DDM from menelaus.concept_drift.eddm import EDDM from menelaus.concept_drift.lfr import LinearFourRates diff --git a/src/menelaus/concept_drift/adwin_outcome.py b/src/menelaus/concept_drift/adwin_outcome.py new file mode 100644 index 00000000..39e8203a --- /dev/null +++ b/src/menelaus/concept_drift/adwin_outcome.py @@ -0,0 +1,127 @@ +from menelaus.change_detection.adwin import ADWIN + + +class ADWINOutcome(ADWIN): + """ADWIN (ADaptive WINdowing) is a drift detection algorithm which uses a + sliding window to estimate the running mean and variance of a given + real-valued number. ADWINOutcome specifically expects ``y_true``, ``y_pred``, and + uses that input to monitor the running accuracy of a classifier. + + As each sample is added, ADWIN stores a running estimate (mean and variance) + for a given statistic, calculated over a sliding window which will grow to + the right until drift is detected. The condition for drift is defined over + pairs of subwindows at certain cutpoints within the current window. If, for + any such pair, the difference between the running estimates of the statistic + is over a certain threshold (controlled by delta), we identify drift, and + remove the oldest elements of the window until all differences are again + below the threshold. + + The running estimates in each subwindow are maintained by storing summaries + of the elements in "buckets," which, in this implementation, are themselves + stored in the ``bucket_row_list`` attribute, whose total size scales with the + ``max_buckets`` parameter. + + When drift occurs, the index of the element at the beginning of ADWIN's new + window is stored in ``self.retraining_recs``. + + Ref. :cite:t:`bifet2007learning` + + Attributes: + total_samples (int): number of samples the drift detector has ever + been updated with + samples_since_reset (int): number of samples since the last time the + drift detector was reset + drift_state (str): detector's current drift state. Can take values + ``"drift"`` or ``None``. + + """ + + def __init__( + self, + delta=0.002, + max_buckets=5, + new_sample_thresh=32, + window_size_thresh=10, + subwindow_size_thresh=5, + conservative_bound=False, + ): + """ + + Args: + delta (float, optional): confidence value on on 0 to 1. ADWIN will + incorrectly detect drift with at most probability ``delta``, and + correctly detect drift with at least probability ``1 - delta``. + Defaults to 0.002. + max_buckets (int, optional): the maximum number of buckets to + maintain in each BucketRow. Corresponds to the "M" parameter in + Bifet 2006. Defaults to 5. + new_sample_thresh (int, optional): the drift detection procedure + will run every ``new_sample_thresh samples``, not in between. + Defaults to 32. + window_size_thresh (int, optional): the minimum number of samples in + the window required to check for drift. Defaults to 10. + subwindow_size_thresh (int, optional): the minimum number of samples + in each subwindow reqired to check it for drift. Defaults to 5. + conservative_bound (bool, optional): whether to assume a 'large + enough' sample when constructing drift cutoff. Defaults to ``False``. + + Raises: + ValueError: If ``ADWIN.delta`` is not on the range 0 to 1. + """ + super().__init__( + delta=0.002, + max_buckets=5, + new_sample_thresh=32, + window_size_thresh=10, + subwindow_size_thresh=5, + conservative_bound=False, + ) + + def update(self, y_true, y_pred, X=None): + """Update the detector with a new sample. + + Args: + y_true: actual class of next sample + y_pred: predicted class of next sample + X: next sample in the stream of data. Not used for this + accuracy-based ADWIN. See ``change_detection.ADWIN`` for that + application. + """ + + new_value = int(y_true == y_pred) + + # This class is here to avoid asking the user to provide such a direct + # function of (y_true, y_pred) in the X argument, which is unintuitive. + super().update(new_value, y_true=None, y_pred=None) + + def reset(self): + """Initialize the detector's drift state and other relevant attributes. + Intended for use after ``drift_state == 'drift'``. + """ + super().reset() + + @property + def retraining_recs(self): + """Recommended indices for retraining. If drift is detected, + set to ``[beginning of ADWIN's new window, end of ADWIN's new window]``. + If these are e.g. the 5th and 13th sample that ADWIN has been updated + with, the values with be ``[4, 12]``. + + Returns: + list: the current retraining recommendations + """ + return self._retraining_recs + + def mean(self): + """ + Returns: + float: the estimated average of the passed stream, using the current window + """ + return super().mean() + + def variance(self): + """ + Returns: + float: the estimated variance of the passed stream, using the current window + """ + return super().variance() diff --git a/src/menelaus/concept_drift/eddm.py b/src/menelaus/concept_drift/eddm.py index 187c43ec..7504e2dc 100644 --- a/src/menelaus/concept_drift/eddm.py +++ b/src/menelaus/concept_drift/eddm.py @@ -39,12 +39,13 @@ class EDDM(DriftDetector): def __init__(self, n_threshold=30, warning_thresh=0.95, drift_thresh=0.9): """ - :param n_threshold: the minimum number of samples required to test - whether drift has occurred - :param warning_thresh: defines the threshold over which to enter the - warning state. - :param drift_thresh: defines the threshold over which to enter the - drift state. + Args: + n_threshold (int, optional): the minimum number of samples required + to test whether drift has occurred. Defaults to 30. + warning_thresh (float, optional): defines the threshold over which + to enter the warning state. Defaults to 0.95. + drift_thresh (float, optional): defines the threshold over which to + enter the drift state. Defaults to 0.9. """ super().__init__() self.warning_thresh = warning_thresh diff --git a/src/menelaus/concept_drift/lfr.py b/src/menelaus/concept_drift/lfr.py index 68afbf63..6ccf2643 100644 --- a/src/menelaus/concept_drift/lfr.py +++ b/src/menelaus/concept_drift/lfr.py @@ -46,6 +46,7 @@ def __init__( subsample=1, rates_tracked=["tpr", "tnr", "ppv", "npv"], parallelize=False, + round_val=4, ): """ Args: @@ -76,6 +77,10 @@ def __init__( algorithm will be parallelized or not. Advantageous for large datasets, but will slow down runtime for fewer data due to overhead of threading. Defaults to False. + round_val: number of decimal points the estimate rate is rounded to + when stored in bounds dictionary. The greater the ``round_val``, the + more precise the bounds dictionary will be, and the longer the + runtime. (Default value = 4) """ super().__init__() self.time_decay_factor = time_decay_factor @@ -86,6 +91,7 @@ def __init__( self.subsample = subsample self.rates_tracked = rates_tracked self.parallelize = parallelize + self.round_val = round_val self.all_drift_states = [] self._warning_states = { 0: {"tpr": False, "tnr": False, "ppv": False, "npv": False} @@ -126,7 +132,7 @@ def reset(self): # LFR.update(1,1) without misinterpretation, but exposes them to a # potential issue where LFR.update(X, y, y) would assign arguments # incorrectly. - def update(self, y_true, y_pred, X=None, round_val=4): + def update(self, y_true, y_pred, X=None): """Update detector with a new observation: #. Updates confusion matrix (``self._confusion``) with new predictions @@ -143,10 +149,6 @@ def update(self, y_true, y_pred, X=None, round_val=4): y_true: actual class y_pred: predicted class X: new sample - not used in LFR - round_val: number of decimal points the estimate rate is rounded to - when stored in bounds dictionary. The greater the ``round_val``, the - more precise the bounds dictionary will be, and the longer the - runtime. (Default value = 4) """ if self.drift_state == "drift": @@ -216,8 +218,8 @@ def _calculate_rate_bounds(rate): est_rate = new_rates[rate] curr_denom = self._denominators[rate + "_N"] - r_est_rate = round(est_rate, round_val) - r_curr_denom = round(curr_denom, round_val) + r_est_rate = round(est_rate, self.round_val) + r_curr_denom = round(curr_denom, self.round_val) bound_dict = self._update_bounds_dict( est_rate, curr_denom, r_est_rate, r_curr_denom diff --git a/src/menelaus/datasets/make_example_data.py b/src/menelaus/datasets/make_example_data.py index 748031a3..b150db1b 100644 --- a/src/menelaus/datasets/make_example_data.py +++ b/src/menelaus/datasets/make_example_data.py @@ -165,4 +165,5 @@ def fetch_rainfall_data(): ], ) df = df.iloc[1:, :].reset_index(drop=True) + df = df.apply(pd.to_numeric) return df diff --git a/tests/menelaus/concept_drift/test_adwin.py b/tests/menelaus/change_detection/test_adwin.py similarity index 87% rename from tests/menelaus/concept_drift/test_adwin.py rename to tests/menelaus/change_detection/test_adwin.py index 02d104a5..3595f729 100644 --- a/tests/menelaus/concept_drift/test_adwin.py +++ b/tests/menelaus/change_detection/test_adwin.py @@ -1,6 +1,6 @@ """Methods for checking simple behaviors of ADWIN.""" import pytest -from menelaus.concept_drift.adwin import ADWIN, _BucketRow, _BucketRowList +from menelaus.change_detection.adwin import ADWIN, _BucketRow, _BucketRowList def test_compression(): @@ -10,9 +10,9 @@ def test_compression(): max_buckets = 1 det = ADWIN(max_buckets=max_buckets, delta=0.000001) n_samples = 10 - for element in [(1, 0), (0, 0), (1, 1)]: + for element in [1, 2, 3]: for _ in range(n_samples): - det.update(y_true=element[0], y_pred=element[1]) + det.update(element) curr = det._bucket_row_list.head overflow = False @@ -35,7 +35,7 @@ def test_mean(): assert det.mean() == 0 n_samples = 5 for _ in range(n_samples): - det.update(y_true=1, y_pred=1) + det.update(1) assert det.mean() == 1 @@ -45,8 +45,8 @@ def test_variance(): assert det.variance() == 0 n_samples = 10 for _ in range(n_samples): - det.update(y_true=1, y_pred=1) - det.update(y_true=0, y_pred=1) + det.update(1) + det.update(0) assert det.variance() == 0.25 @@ -56,13 +56,13 @@ def test_drift(): - ADWIN.retraining_recs takes on the proper values before and after drift """ det = ADWIN(new_sample_thresh=2) - n_samples = 50 + n_samples = 20 for _ in range(n_samples): - det.update(y_true=1, y_pred=1) + det.update(0.1) drift_found = False for _ in range(n_samples): - det.update(y_true=1, y_pred=0) + det.update(100) drift_found = (det.drift_state == "drift") or drift_found if drift_found: break @@ -73,7 +73,7 @@ def test_drift(): assert det.retraining_recs is not None # do we reset properly? - det.update(y_true=1, y_pred=0) + det.update(100) assert det.drift_state is None assert det.retraining_recs == [None, None] @@ -83,13 +83,13 @@ def test_conservative_bound(): very drifting stream. """ det = ADWIN(new_sample_thresh=2, conservative_bound=True) - n_samples = 50 + n_samples = 20 for _ in range(n_samples): - det.update(y_true=1, y_pred=1) + det.update(0.1) drift_found = False for _ in range(n_samples): - det.update(y_true=1, y_pred=0) + det.update(100) drift_found = (det.drift_state == "drift") or drift_found if drift_found: break diff --git a/tests/menelaus/concept_drift/test_adwin_outcome.py b/tests/menelaus/concept_drift/test_adwin_outcome.py new file mode 100644 index 00000000..9b46c26b --- /dev/null +++ b/tests/menelaus/concept_drift/test_adwin_outcome.py @@ -0,0 +1,66 @@ +import pytest +from menelaus.concept_drift.adwin_outcome import ADWINOutcome + +# All but the first test here are completely redundant with change_detection.test_adwin. +# Because we want to get the docstrings to generate properly, and also be search-able, +# they're aliased, which means these need to run to get coverage. + + +def test_aliased_input(): + det = ADWINOutcome() + + det.update(y_true=1, y_pred=0) + assert det.total_samples == 1 + + # the alias shouldn't take any "feature" input + with pytest.raises(TypeError) as _: + det.update(X="hello!") + + +def test_mean(): + """Check that ADWIN.mean returns sane values""" + det = ADWINOutcome(new_sample_thresh=2) + assert det.mean() == 0 + n_samples = 5 + for _ in range(n_samples): + det.update(1, 1) + assert det.mean() == 1 + + +def test_variance(): + """Check that ADWIN.variance returns sane values""" + det = ADWINOutcome(new_sample_thresh=2) + assert det.variance() == 0 + n_samples = 10 + for _ in range(n_samples): + det.update(1, 1) + det.update(0, 1) + assert det.variance() == 0.25 + + +def test_drift(): + """Check that, for a very drifting data stream: + - drift is identified + - ADWIN.retraining_recs takes on the proper values before and after drift + """ + det = ADWINOutcome(new_sample_thresh=2) + n_samples = 60 + for _ in range(n_samples): + det.update(1, 1) + + drift_found = False + for _ in range(n_samples): + det.update(0, 1) + drift_found = (det.drift_state == "drift") or drift_found + if drift_found: + break + # confirm drift is found with very different stream + assert drift_found is True + # better refactored as a separate test with determined, desired window + # but for now, just confirm that it's populated as part of the normal flow + assert det.retraining_recs is not None + + # do we reset properly? + det.update(1, 1) + assert det.drift_state is None + assert det.retraining_recs == [None, None] diff --git a/tests/menelaus/datasets/test_example_data.py b/tests/menelaus/datasets/test_example_data.py index 8509854a..a5898c4c 100644 --- a/tests/menelaus/datasets/test_example_data.py +++ b/tests/menelaus/datasets/test_example_data.py @@ -2,7 +2,7 @@ from menelaus.datasets.make_example_data import ( make_example_batch_data, fetch_circle_data, - fetch_rainfall_data + fetch_rainfall_data, ) @@ -67,5 +67,5 @@ def test_circle_data(): def test_rainfall_data(): df = fetch_rainfall_data() - assert all(df.dtypes == object) + assert df.select_dtypes("number").shape == df.shape assert df.shape == (18159, 9)