{ "cells": [ { "attachments": {}, "cell_type": "markdown", "id": "b773bf8e-c420-44e1-80a6-99f75dd12268", "metadata": {}, "source": [ "# 5. Creating a new classifier in CapyMOA\n", "\n", "In this tutorial we show how simple it is to create a new learner in CapyMOA using Python.\n", "\n", "* We choose to make an implementation of the canonical ensemble classifier Online Bagging (AKA OzaBag).\n", "* The base learner is a CapyMOA object, which allows us to use either sklearn or MOA algorithms; so even though it will be all implemented in Python by us, it can be quite efficient in terms of run time as it depends on the base learner. \n", "\n", "Reference: _Online bagging and boosting._ Oza, Nikunj C., and Stuart J. Russell. In International Workshop on Artificial Intelligence and Statistics, pp. 229-236. PMLR, 2001.\n", "\n", "---\n", "\n", "*More information about CapyMOA can be found at* https://www.capymoa.org.\n", "\n", "**last update on 04/12/2025**" ] }, { "attachments": {}, "cell_type": "markdown", "id": "96cb3df1-190c-49ea-959b-292559df13e6", "metadata": {}, "source": [ "## 5.1 Creating the classifier\n", "\n", "* The first step is to extend the `Classifier` abstract class from `capymoa.base` and implement the required methods:\n", " * ```__init__(self, schema=None, random_seed=1, ...)```\n", " * ```train(self, instance)```\n", " * ```predict(self, instance)```\n", " * ```predict_proba(self, instance)```\n", " \n", "* There is no need to pay much attention to the auxiliary function `poisson`, even though it is a defining characteristic of Online Bagging algorithm but not that relevant for our example.\n", "\n", "* We specify the parameter `base_learner_class` as a class identifier and proceed to instantiate it inside the `__init__` method:\n", "```python\n", " self.ensemble = []\n", " for i in range(self.ensemble_size): \n", " self.ensemble.append(self.base_learner_class(schema=self.schema))\n", "```" ] }, { "cell_type": "code", "execution_count": 1, "id": "ee26df77", "metadata": { "execution": { "iopub.execute_input": "2024-09-23T00:28:51.057812Z", "iopub.status.busy": "2024-09-23T00:28:51.057183Z", "iopub.status.idle": "2024-09-23T00:28:51.067626Z", "shell.execute_reply": "2024-09-23T00:28:51.067162Z" }, "nbsphinx": "hidden" }, "outputs": [], "source": [ "# This cell is hidden on capymoa.org. See docs/contributing/docs.rst\n", "from util.nbmock import mock_datasets, is_nb_fast\n", "\n", "if is_nb_fast():\n", " mock_datasets()" ] }, { "cell_type": "code", "execution_count": 2, "id": "26f4959d-dbc9-41dc-b70a-69ff61dbdf66", "metadata": { "execution": { "iopub.execute_input": "2024-09-23T00:28:51.069321Z", "iopub.status.busy": "2024-09-23T00:28:51.069185Z", "iopub.status.idle": "2024-09-23T00:28:52.609087Z", "shell.execute_reply": "2024-09-23T00:28:52.608517Z" } }, "outputs": [], "source": [ "from capymoa.base import Classifier\n", "from capymoa.classifier import HoeffdingTree\n", "\n", "from collections import Counter\n", "import numpy as np\n", "\n", "\n", "# Online Bagging Implementation\n", "class CustomOnlineBagging(Classifier):\n", " def __init__(\n", " self, schema=None, random_seed=1, ensemble_size=5, base_learner_class=None\n", " ):\n", " super().__init__(schema=schema, random_seed=random_seed)\n", "\n", " self.ensemble_size = ensemble_size\n", " self.base_learner_class = base_learner_class\n", "\n", " if self.base_learner_class is None:\n", " self.base_learner_class = HoeffdingTree\n", "\n", " self.ensemble = []\n", " for _ in range(self.ensemble_size):\n", " self.ensemble.append(self.base_learner_class(schema=self.schema))\n", "\n", " def __str__(self):\n", " return \"CustomOnlineBagging\"\n", "\n", " def train(self, instance):\n", " for i in range(self.ensemble_size):\n", " for _ in range(np.random.poisson(1.0)):\n", " self.ensemble[i].train(instance)\n", "\n", " def predict(self, instance):\n", " predictions = []\n", " for i in range(self.ensemble_size):\n", " predictions.append(self.ensemble[i].predict(instance))\n", " majority_vote = Counter(predictions)\n", " prediction = majority_vote.most_common(1)[0][0]\n", " return prediction\n", "\n", " def predict_proba(self, instance):\n", " probabilities = []\n", " for i in range(self.ensemble_size):\n", " classifier_proba = self.ensemble[i].predict_proba(instance)\n", " classifier_proba = classifier_proba / np.sum(classifier_proba)\n", " probabilities.append(classifier_proba)\n", " avg_proba = np.mean(probabilities, axis=0)\n", " return avg_proba" ] }, { "attachments": {}, "cell_type": "markdown", "id": "a4ff1ac9-07a1-4a0b-9bb5-f2afa79dd928", "metadata": {}, "source": [ "## 5.2 Evaluating the classifier\n", "\n", "* We use the same approach as when we evaluate any other CapyMOA learner.\n", "* We show how it is simple to use learners with different backends in our implementation, e.g.,\n", " * `HoeffdingTree` (MOA)\n", " * `SGDClassifier` (sklearn)" ] }, { "cell_type": "code", "execution_count": 3, "id": "da2bba35-c258-4fc0-8932-f97d56e4e276", "metadata": { "execution": { "iopub.execute_input": "2024-09-23T00:28:52.611171Z", "iopub.status.busy": "2024-09-23T00:28:52.610955Z", "iopub.status.idle": "2024-09-23T00:29:01.347305Z", "shell.execute_reply": "2024-09-23T00:29:01.345454Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CustomOnlineBagging(HT) accuracy: 82.52339336158192, wallclock: 4.913214683532715\n", "CustomOnlineBagging(SGD) accuracy: 82.4461511299435, wallclock: 4.222089529037476\n" ] }, { "data": { "image/png": "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lAGFchERERERITYiiIcub2x3GSJeR8PXRURERERERGyiUC4iIiIiIiJiE4VyEREREREREZsolIuIiIiIiIjYRKFcRERERERExCYK5SIiIiIiIiI2USgXERERERERsYlCuYiIiIiIiIhNFMpFREREREREbKJQLiIiIiIiImIThXIRERERERERmyiUi4iIiIiIiNhEoVxERERERETEJgrlIiIiIiIiIjZRKBcRERERERGxiUK5iIiIiIiIiE0UykVERERERERsolAuIiIiIiIiYhOFchERERERERGbKJSLiIiIiIiI2EShXERERERERMQmCuUiIiIiIiIiNlEoFxEREREREbGJQrmIiIiIiIiITRTKRURERERERGziY3cBpc0YA0BaWprNlUhFlpubS0ZGBmlpafj6+tpdjkipUn8Xb6G+Lt5E/V28SXno7wX5syCPnkmlD+Xp6ekAxMTE2FyJiIiIiIiIeJP09HSqVq16xmMscy7RvQJzu938+uuvVKlSBcuy7C5HKqi0tDRiYmL45ZdfCAkJsbsckVKl/i7eQn1dvIn6u3iT8tDfjTGkp6dTs2ZNHI4z3zVe6a+UOxwOatWqZXcZUkmEhIToPzLxGurv4i3U18WbqL+LN7G7v5/tCnkBTfQmIiIiIiIiYhOFchERERERERGbKJSLnAM/Pz8ef/xx/Pz87C5FpNSpv4u3UF8Xb6L+Lt6kovX3Sj/Rm4iIiIiIiEh5pSvlIiIiIiIiIjZRKBcRERERERGxiUK5iIiIiIiIiE0UykVERERERERsolAuldL333/PVVddRc2aNbEsi1mzZhXZb4zhscceIzo6moCAAHr27Mm2bduKHHPkyBEGDx5MSEgIoaGhjBgxguPHjxc5Zt26dVx88cX4+/sTExPDc889d0otn376KY0bN8bf358WLVowe/bsEn+/4t2efvpp2rdvT5UqVahevTrXXnstW7ZsKXJMVlYWY8aMITw8nODgYPr27cv+/fuLHJOSkkKfPn0IDAykevXqPPjgg+Tl5RU5ZuHChbRp0wY/Pz/i4uKYMGHCKfW88cYbxMbG4u/vT8eOHUlMTCzx9yzea9y4cbRs2ZKQkBBCQkLo1KkT33zzTeF+9XWprJ555hksy+Kee+4p3Kb+LpXFE088gWVZRR6NGzcu3F/p+7oRqYRmz55t/vWvf5kZM2YYwMyc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MFu2bClyjsOHD5uBAwea4OBgExISYoYNG2bS09OLHLN27Vpz0UUXGT8/P3PBBReYZ5555pRapk2bZho2bGhcLpdp1qyZ+frrr0vtfYt3Kq6vA2b8+PGFx2RmZprbb7/dVKtWzQQGBprrrrvO7N27t8h5du7caa644goTEBBgIiIizP33329yc3OLHLNgwQLTqlUr43K5TL169Yq0UeC1114ztWvXNi6Xy3To0MEsX768NN62eKnhw4ebOnXqGJfLZSIjI02PHj0KA7kx6utSuf0xlKu/S2UxYMAAEx0dbVwul7ngggvMgAEDzPbt2wv3V/a+bhljTOleixcRERERERGR4uiechERERERERGbKJSLiIiIiIiI2EShXERERERERMQmCuUiIiIiIiIiNlEoFxEREREREbGJQrmIiIiIiIiITRTKRURERERERGyiUC4iIiIiIiJiE4VyEREREREREZsolIuIiJQTBw8exOVyceLECXJzcwkKCiIlJeWMn/PEE0/QqlWrEquhe/fu3HPPPSV2PhERETkzhXIREZFyYtmyZcTHxxMUFMSPP/5IWFgYtWvXtrssERERKUUK5SIiIuXE0qVL6dKlCwA//PBD4cfn4+abb+baa6/lhRdeIDo6mvDwcMaMGUNubm7hMW+++SYNGjTA39+fqKgobrjhhsLPXbRoEa+88gqWZWFZFjt37iQ/P58RI0ZQt25dAgICaNSoEa+88sp5t5udnc1DDz1ETEwMfn5+xMXF8f777xfu37BhA1dccQXBwcFERUUxZMgQDh06VLh/+vTptGjRgoCAAMLDw+nZsycnTpw476+RiIhIeeJjdwEiIiLeLCUlhZYtWwKQkZGB0+lkwoQJZGZmYlkWoaGhDBo0iDfffPOcz7lgwQKio6NZsGAB27dvZ8CAAbRq1YqRI0eyatUq7rrrLiZNmkTnzp05cuQIixcvBuCVV15h69atNG/enH//+98AREZG4na7qVWrFp9++inh4eEsXbqUUaNGER0dTf/+/c+pXYCbbrqJZcuW8eqrrxIfH8+OHTsKQ3dqaiqXXnopt9xyCy+99BKZmZk89NBD9O/fn/nz57N3714GDhzIc889x3XXXUd6ejqLFy/GGFMi/w4iIiJ2sYz+NxMREbFNXl4eu3fvJi0tjXbt2rFq1SqCgoJo1aoVX3/9NbVr1yY4OJiIiIhiP/+JJ55g1qxZJCUlAZ4r1gsXLiQ5ORmn0wlA//79cTgcTJ06lRkzZjBs2DB2795NlSpVTjlf9+7dadWqFS+//PIZ677jjjvYt28f06dPP6d2t27dSqNGjUhISKBnz56nnO+///0vixcvZu7cuYXbdu/eTUxMDFu2bOH48eO0bduWnTt3UqdOnbN+XUVERCoKDV8XERGxkY+PD7Gxsfz000+0b9+eli1bsm/fPqKioujatSuxsbGnDeSn06xZs8JgDBAdHc2BAwcAuOyyy6hTpw716tVjyJAhfPTRR2RkZJz1nG+88QZt27YlMjKS4OBg3nnnnVMmoTtTu0lJSTidTrp161bs+deuXcuCBQsIDg4ufDRu3BiA5ORk4uPj6dGjBy1atKBfv368++67HD169Ly+LiIiIuWRQrmIiIiNmjVrRnBwMEOGDCExMZHg4GB69OjBzp07CQ4OplmzZud9Tl9f3yKvLcvC7XYDUKVKFX788UemTJlCdHQ0jz32GPHx8aSmpp72fFOnTuWBBx5gxIgRfPvttyQlJTFs2DBycnLOud2AgIAz1nz8+HGuuuoqkpKSijy2bdtG165dcTqdJCQk8M0339C0aVNee+01GjVqxI4dO871yyIiIlIuKZSLiIjYaPbs2SQlJVGjRg0mT55MUlISzZs35+WXXyYpKYnZs2eXeJs+Pj707NmT5557jnXr1rFz507mz58PgMvlIj8/v8jxS5YsoXPnztx+++20bt2auLg4kpOTz6vNFi1a4Ha7WbRoUbH727Rpw8aNG4mNjSUuLq7IIygoCPCE/C5duvDkk0+yZs0aXC4XM2fO/BNfARERkfJDoVxERMRGderUITg4mP3793PNNdcQExPDxo0b6du3L3FxcSV+//RXX33Fq6++SlJSErt27eLDDz/E7XbTqFEjAGJjY1mxYgU7d+7k0KFDuN1uGjRowKpVq5g7dy5bt27l0UcfZeXKlefVbmxsLEOHDmX48OHMmjWLHTt2sHDhQqZNmwbAmDFjOHLkCAMHDmTlypUkJyczd+5chg0bRn5+PitWrOCpp55i1apVpKSkMGPGDA4ePEiTJk1K9OsjIiJS1hTKRUREbLZw4ULat2+Pv78/iYmJ1KpVi+jo6FJpKzQ0lBkzZnDppZfSpEkT3nrrLaZMmVI4TP6BBx7A6XTStGlTIiMjSUlJYfTo0Vx//fUMGDCAjh07cvjwYW6//fbzbnvcuHHccMMN3H777TRu3JiRI0cWLmlWs2ZNlixZQn5+Pr169aJFixbcc889hIaG4nA4CAkJ4fvvv+fKK6+kYcOGPPLII7z44otcccUVJfr1ERERKWuafV1ERERERETEJrpSLiIiIiIiImIThXIRERERERERmyiUi4iIiIiIiNhEoVxERERERETEJgrlIiIiIiIiIjZRKBcRERERERGxiUK5iIiIiIiIiE0UykVERERERERsolAuIiIiIiIiYhOFchERERERERGbKJSLiIiIiIiI2OT/AVhjYKMvYkMSAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from capymoa.evaluation import prequential_evaluation\n", "from capymoa.evaluation.visualization import plot_windowed_results\n", "from capymoa.datasets import Electricity\n", "from capymoa.classifier import SGDClassifier\n", "\n", "elec_stream = Electricity()\n", "\n", "# Creating a learner: using a hoeffding adaptive tree as the base learner\n", "ob_ht = CustomOnlineBagging(\n", " schema=elec_stream.get_schema(), ensemble_size=5, base_learner_class=HoeffdingTree\n", ")\n", "ob_sgd = CustomOnlineBagging(\n", " schema=elec_stream.get_schema(), ensemble_size=5, base_learner_class=SGDClassifier\n", ")\n", "\n", "results_ob_ht = prequential_evaluation(\n", " stream=elec_stream, learner=ob_ht, window_size=4500\n", ")\n", "print(\n", " f\"CustomOnlineBagging(HT) accuracy: {results_ob_ht.cumulative.accuracy()}, wallclock: {results_ob_ht.wallclock()}\"\n", ")\n", "results_ob_sgd = prequential_evaluation(\n", " stream=elec_stream, learner=ob_ht, window_size=4500\n", ")\n", "print(\n", " f\"CustomOnlineBagging(SGD) accuracy: {results_ob_sgd.cumulative.accuracy()}, wallclock: {results_ob_sgd.wallclock()}\"\n", ")\n", "\n", "results_ob_ht.learner = \"OB(HT)\"\n", "results_ob_sgd.learner = \"OB(SGD)\"\n", "plot_windowed_results(results_ob_ht, results_ob_sgd, metric=\"accuracy\")" ] }, { "attachments": {}, "cell_type": "markdown", "id": "c99c28f5-0eb7-49f1-b38b-7e6891d5f30a", "metadata": {}, "source": [ "## 5.3 CustomOnlineBagging and OnlineBagging\n", "\n", "* Testing and training our custom online bagging implementation alongside the online bagging implementation from `capymoa.classifier.OnlineBagging`." ] }, { "cell_type": "code", "execution_count": 4, "id": "3da81297-af63-4d30-a643-81f347304efa", "metadata": { "execution": { "iopub.execute_input": "2024-09-23T00:29:01.354112Z", "iopub.status.busy": "2024-09-23T00:29:01.353176Z", "iopub.status.idle": "2024-09-23T00:29:11.707790Z", "shell.execute_reply": "2024-09-23T00:29:11.707307Z" } }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[custom] Online Bagging acc: 67.42899999999999\n", "[capymoa] Online Bagging acc: 60.357000000000006\n", "CPU times: user 15.4 s, sys: 42.7 ms, total: 15.5 s\n", "Wall time: 14.1 s\n" ] } ], "source": [ "%%time\n", "from capymoa.classifier import OnlineBagging\n", "from capymoa.evaluation import ClassificationEvaluator\n", "from capymoa.datasets import RBFm_100k\n", "\n", "RBFm_100k_stream = RBFm_100k()\n", "\n", "# Creating a learner without specifying the base_learner thus HoeffdingTree is used\n", "custom_ob = CustomOnlineBagging(schema=RBFm_100k_stream.get_schema(), ensemble_size=5)\n", "capy_ob = OnlineBagging(schema=RBFm_100k_stream.get_schema(), ensemble_size=5)\n", "\n", "custom_ob_evaluator = ClassificationEvaluator(schema=RBFm_100k_stream.get_schema())\n", "capy_ob_evaluator = ClassificationEvaluator(schema=RBFm_100k_stream.get_schema())\n", "\n", "while RBFm_100k_stream.has_more_instances():\n", " instance = RBFm_100k_stream.next_instance()\n", "\n", " prediction_new = custom_ob.predict(instance)\n", " prediction = capy_ob.predict(instance)\n", "\n", " custom_ob_evaluator.update(instance.y_index, prediction_new)\n", " capy_ob_evaluator.update(instance.y_index, prediction)\n", "\n", " custom_ob.train(instance)\n", " capy_ob.train(instance)\n", "\n", "print(f\"[custom] Online Bagging acc: {custom_ob_evaluator.accuracy()}\")\n", "print(f\"[capymoa] Online Bagging acc: {capy_ob_evaluator.accuracy()}\")" ] }, { "cell_type": "code", "execution_count": null, "id": "ba55eedb-5578-4c0d-9b09-921a690729dc", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": ".venv", "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.13.7" } }, "nbformat": 4, "nbformat_minor": 5 }