diff --git a/.ipynb_checkpoints/SVM-checkpoint.ipynb b/.ipynb_checkpoints/SVM-checkpoint.ipynb index 05e9fe0..7bbcc25 100644 --- a/.ipynb_checkpoints/SVM-checkpoint.ipynb +++ b/.ipynb_checkpoints/SVM-checkpoint.ipynb @@ -21,7 +21,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 1, "id": "2dd1c096-e0df-492f-be63-8ac272007237", "metadata": {}, "outputs": [], @@ -35,12 +35,14 @@ "\n", "n, d = 10000, 5\n", "X, y = make_classification(n_samples=n, n_features=d)\n", + "## convert y to +1/-1\n", + "y = 2*y - 1\n", "X = scaler.fit_transform(X)" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 2, "id": "aece9fbe-f9be-40ae-8179-b44849fb0fd3", "metadata": {}, "outputs": [], @@ -54,13 +56,13 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 3, "id": "93719987-c6b3-4a9b-9b40-c35e5bf90ef0", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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Rl122WU6ceKEfvGLX+jrX/+69u3bp/LycnXp0kUJCQlNXpOUlOT9UMrLy5sEncb9jftasnTpUuXl5Xkf19TUEHjQafhboZzVy4HIcujvHf8FJVjv8corr2jOnDnex7fccoskafny5VqxYkVQ3qM5loadKVOmeP/7iiuu0Lhx45Senq7/+I//UGxsbIe9b0xMjGJiYjrs+AAAdLS+ffuqW7duumPhj0Pyft26dVPfvn3bdYzbbrtNt912W3AKagXLx+x8WUJCgr761a/q8OHDuu6661RXV6fTp0836d2pqKjwjvFJTk7WO++80+QYjXdrNTcOCAAAu0hLS9PBgwdZGysAYRV2zp49q48//lizZs3S6NGjFR0draKiIs2YMUPShWt7paWlyszMlCRlZmbqoYceUmVlpRITEyVJhYWFiouL07Bhwyw7DwAAQiEtLS1iA0goWRp2fvrTn+rb3/620tPTVVZWpuXLl8vlcum73/2u4uPjdccddygvL0+9e/dWXFycFi1apMzMTI0fP16SlJ2drWHDhmnWrFlavXq1ysvLtWzZMuXm5nKZCgAASLI47Bw7dkzf/e539Y9//EP9+vXTNddco927d6tfv36SpDVr1sjpdGrGjBmqra1VTk6OnnzySe/rXS6XtmzZogULFigzM1Pdu3fX7NmztXLlSqtOCQAAhBlLw87mzZt97u/atasKCgpUUFDQYpv09HRt27Yt2KUBAACbCKsxOwCA0ApkVu1GDoeDNbkQkfipBYBOyjAMpaamKioqKqAtNTVVhmFYXTbQavTsAEAnZZqmysrK9Pjqp/322BiGocV3z2MZEUQkwg4AdHJOp5PLU7A1wg4AABGqtLSUSQUDQNgBACAClZaWasiQIfriiy9C8n6xsbH66KOPWhV43nzzTT366KMqKSnRiRMn9PLLL2vatGkdV2QLCDsAAESgkydP6osvvtDsmXOVnJTSoe9VXlGm555/RidPnmxV2Dl37pyuvPJK3X777Zo+fXoHVugbYQcAgAiWnJSitAHpVpfRrClTpjRZ9NsqjEgDAAC2RtgBAAC2RtgBAAC2xpgdACHj8Xj8tmFJAgDBRtgB0OEMw5DL5VRMTIzftqmpA3T06KcEHgBBQ9gB0OFM05THY6jq6MeKimr5nx2Px6Ne6YNYkgCwibNnz+rw4cPex5988on27Nmj3r17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7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFuLsroAAPi/PB6P3zYOh0NOJ9/XAPhH2AEQNgzDkMvlVExMjN+2qakDdPTopwQeAH4RdgCEDdM05fEYqjr6saKiWv7nyePxqFf6IJmmGcLqAEQqwg6AsONyueRyuawuA4BN0P8LAABsjbADAABsrU1hZ9CgQfrHP/5x0fOnT5/WoEGD2l0UAABAsLQp7Bw9erTZW0Nra2t1/PjxdhcFAAAQLK0aoPzKK694//u1115TfHy897HH41FRUZEyMjKCVhwAAEB7tapnZ9q0aZo2bZocDodmz57tfTxt2jTdcsstKiws1K9+9auAj7du3TpdccUViouLU1xcnDIzM/WXv/zFu//8+fPKzc1Vnz591KNHD82YMUMVFRVNjlFaWqqpU6eqW7duSkxM1F133aWGhobWnBYAALCxVvXsGIYhSRo4cKDeffdd9e3bt11vPmDAAD3yyCMaPHiwTNPUc889pxtuuEEffPCBhg8friVLlmjr1q164YUXFB8fr4ULF2r69Ol66623JF3oTZo6daqSk5O1a9cunThxQt///vcVHR2thx9+uF21AQAAe2jTPDuffPJJUN7829/+dpPHDz30kNatW6fdu3drwIABevbZZ7Vp0yZde+21kqQNGzZo6NCh2r17t8aPH6/XX39dBw4c0Pbt25WUlKSRI0fqgQce0D333KMVK1aoS5cuQakTAABErjZPKlhUVKSioiJVVlZ6e3wa/fa3v2318Twej1544QWdO3dOmZmZKikpUX19vbKysrxthgwZorS0NBUXF2v8+PEqLi7WiBEjlJSU5G2Tk5OjBQsWaP/+/Ro1alSz71VbW6va2lrv45qamlbXCwAAIkOb7sb6xS9+oezsbBUVFenkyZM6depUk6019u7dqx49eigmJkbz58/Xyy+/rGHDhqm8vFxdunRRQkJCk/ZJSUkqLy+XJJWXlzcJOo37G/e1ZNWqVYqPj/duqampraoZAABEjjb17Kxfv14bN27UrFmz2l3AZZddpj179qi6ulovvviiZs+erZ07d7b7uL4sXbpUeXl53sc1NTUEHgAAbKpNYaeurk5f+9rXglJAly5d9JWvfEWSNHr0aL377rt6/PHHdfPNN6uurk6nT59u0rtT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1KlTVVlZqZiYGO/xvvKVr+juu+/WvHnzOvBsAXSUKKsLAICWXHnllZo8ebJGjBihnJwcZWdn6zvf+Y7q6+tVVlamyZMnN/u6gwcPKjU11Rt0JGnYsGFKSEjQwYMHNXbsWElSenq6N+hI0ocffqizZ8+qT58+TY73xRdf6OOPP+6AMwQQCoQdAGHL5XKpsLBQu3bt0uuvv661a9fqvvvuU1FRUVCO37179yaPz549q/79+2vHjh0XtU1ISAjKewIIPcIOgLDmcDg0YcIETZgwQffff7/S09NVWFiojIwMFRUVadKkSRe9ZujQoXK73XK73U0uY50+fVrDhg1r8b2uuuoqlZeXKyoqShkZGR11SgBCjLADIGy9/fbbKioqUnZ2thITE/X222/rs88+09ChQ7VixQrNnz9fiYmJmjJlis6cOaO33npLixYtUlZWlkaMGKGZM2cqPz9fDQ0N+tGPfqRvfvObGjNmTIvvl5WVpczMTE2bNk2rV6/WV7/6VZWVlWnr1q36l3/5F5+vBRC+CDsAwlZcXJzefPNN5efnq6amRunp6frVr36lKVOmSJLOnz+vNWvW6Kc//an69u2r73znO5Iu9Ab96U9/0qJFi/SNb3xDTqdT119/vdauXevz/RwOh7Zt26b77rtPc+bM0Weffabk5GR94xvfUFJSUoefL4COwd1YAADA1phnBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2Nr/AwKdXcya05rFAAAAAElFTkSuQmCC", "text/plain": [ "
" ] diff --git a/doc/source/example.rst b/doc/source/example.rst index fea40e8..d546c00 100644 --- a/doc/source/example.rst +++ b/doc/source/example.rst @@ -8,16 +8,16 @@ Example Gallery :caption: A few links :name: rst-link-gallery - examples/ReHLine_QR - examples/ReHLine_SVM_FairSVM + examples/QR.ipynb + examples/SVM.ipynb + examples/FairSVM.ipynb List of Examples ---------------- .. toctree:: - :maxdepth: 0 - - examples/ReHLine_QR.ipynb - examples/ReHLine_SVM_FairSVM.ipynb - + :maxdepth: 1 + examples/QR.ipynb + examples/SVM.ipynb + examples/FairSVM.ipynb \ No newline at end of file diff --git a/doc/source/examples/.ipynb_checkpoints/FairSVM-checkpoint.ipynb b/doc/source/examples/.ipynb_checkpoints/FairSVM-checkpoint.ipynb new file mode 100644 index 0000000..5757aef --- /dev/null +++ b/doc/source/examples/.ipynb_checkpoints/FairSVM-checkpoint.ipynb @@ -0,0 +1,224 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "50711dda-105e-4714-937b-e8be06370605", + "metadata": {}, + "source": [ + "# **FairSVM**\n", + "\n", + "[![Slides](https://img.shields.io/badge/🦌-ReHLine-blueviolet)](https://rehline-python.readthedocs.io/en/latest/)\n", + "[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1f_7t1t6FNxAooQOmpyhHCOVq0IKgMxe-?usp=sharing)\n", + "\n", + "The FairSVM solves the following optimization problem:\n", + "\n", + "$$\n", + "\\begin{align}\n", + " & \\min_{\\mathbf{\\beta} \\in \\mathbb{R}^d} \\frac{C}{n} \\sum_{i=1}^n ( 1 - y_i \\mathbf{\\beta}^\\intercal \\mathbf{x}_i )_+ + \\frac{1}{2} \\| \\mathbf{\\beta} \\|_2^2, \\nonumber \\\\\n", + " \\text{subject to } & \\quad \\frac{1}{n} \\sum_{i=1}^n \\mathbf{z}_i \\mathbf{\\beta}^\\intercal \\mathbf{x}_i \\leq \\mathbf{\\rho}, \\quad \\frac{1}{n} \\sum_{i=1}^n \\mathbf{z}_i \\mathbf{\\beta}^\\intercal \\mathbf{x}_i \\geq -\\mathbf{\\rho},\n", + "\\end{align}\n", + "$$\n", + "\n", + "where:\n", + "\n", + "* $\\mathbf{x}_i \\in \\mathbb{R}^d$ is a feature vector\n", + "* $y_i \\in \\{-1, 1\\}$ is a binary label\n", + "* $\\mathbf{z}_i$ is a collection of **centered sensitive features**, such as gender and/or race, satisfying:\n", + "\n", + "$$\\sum_{i=1}^n z_{ij} = 0,$$\n", + "\n", + "* $\\mathbf{z}_i \\in \\mathbb{R}^{d_0}$ is a $d_0$-length sensitive feature vector\n", + "* $\\mathbf{\\rho} \\in \\mathbb{R}_+^{d_0}$ is a vector of constants that trade-off predictive accuracy and fairness\n", + "\n", + "The constraints limit the correlation between the sensitive features and the decision function, ensuring fairness in the predictions.\n", + "\n", + "> **Note.** Since the hinge loss is a plq function, and fairness constraints are linear, thus we can solve it by `rehline.plqERM_Ridge`." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "e66268fa-403d-402b-9ea1-fbfe7573af40", + "metadata": {}, + "outputs": [], + "source": [ + "## simulate data\n", + "from sklearn.datasets import make_classification\n", + "from sklearn.preprocessing import StandardScaler\n", + "import numpy as np\n", + "\n", + "scaler = StandardScaler()\n", + "\n", + "n, d = 10000, 5\n", + "X, y = make_classification(n_samples=n, n_features=d, n_redundant=0)\n", + "## convert y to +1/-1\n", + "y = 2*y - 1\n", + "X = scaler.fit_transform(X)\n", + "\n", + "## we take the first column of X as sensetive features, and tol is 0.1\n", + "X_sen = X[:,0]\n", + "tol_sen = 0.1" + ] + }, + { + "cell_type": "markdown", + "id": "6a576a09-b700-49cd-b500-219f3a6e40b0", + "metadata": {}, + "source": [ + "## SVM as baseline" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "15531796-3a45-42b3-8a99-da0343be9d4d", + "metadata": {}, + "outputs": [], + "source": [ + "## we first run a SVM\n", + "from rehline import plqERM_Ridge\n", + "\n", + "clf = plqERM_Ridge(loss={'name': 'svm'}, C=1.0, max_iter=50000)\n", + "clf.fit(X=X, y=y)" + ] + }, + { + "cell_type": "markdown", + "id": "79bb275b-2dfd-4608-83e3-b4b4eb0fdb72", + "metadata": {}, + "source": [ + "## FairSVM" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c43509f7-031b-4620-bc5e-fb5aea2ef1c2", + "metadata": {}, + "outputs": [], + "source": [ + "## solve FairSVM via `plqERM_Ridge` by adding `constraint`\n", + "from rehline import plqERM_Ridge\n", + "\n", + "fclf = plqERM_Ridge(loss={'name': 'svm'},\n", + " constraint=[{'name': 'fair',\n", + " 'X_sen': X_sen,\n", + " 'tol_sen': tol_sen}],\n", + " C=1.0,\n", + " max_iter=50000)\n", + "fclf.fit(X=X, y=y)" + ] + }, + { + "cell_type": "markdown", + "id": "794ede1f-13a4-4889-b6d9-f19a61faa510", + "metadata": {}, + "source": [ + "## Results" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "05dc3921-1837-474e-9a6d-4555a94ddc30", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + " Model Train Performance Correlation with Sensitive Features\n", + " SVM 0.8853 2.535203\n", + "FairSVM 0.5856 0.100212\n" + ] + } + ], + "source": [ + "import pandas as pd\n", + "## score\n", + "score = clf.decision_function(X)\n", + "fscore = fclf.decision_function(X)\n", + "\n", + "svm_perf = len(y[score*y > 0])/n\n", + "fsvm_perf = len(y[fscore*y > 0])/n\n", + "\n", + "svm_corr = score.dot(X_sen) / n\n", + "fsvm_corr = fscore.dot(X_sen) / n\n", + "\n", + "# Create a pandas DataFrame to store the results\n", + "results = pd.DataFrame({\n", + " 'Model': ['SVM', 'FairSVM'],\n", + " 'Train Performance': [svm_perf, fsvm_perf],\n", + " 'Correlation with Sensitive Features': [svm_corr, fsvm_corr]\n", + "})\n", + "\n", + "# Print the results as a table\n", + "print(results.to_string(index=False))" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "ad5a863e-fbbb-4caf-876d-374f3ca9b891", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAHHCAYAAABZbpmkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA37UlEQVR4nO3de1yUdd7/8TcgB09AIDBogqcSNY94wjY3FWHNNk06amZltuuiW1HpWpaHNu3WNt01ym3XsDbZXHetbdWtlFL3DizFzDN3dNsP0xnI1QFPgML1+6OHczcrjIDDzHDxej4e86i5rs91XZ/vzJRvr6OfYRiGAAAATMrf2w0AAAA0JsIOAAAwNcIOAAAwNcIOAAAwNcIOAAAwNcIOAAAwNcIOAAAwNcIOAAAwNcIOAAAwNcIOAAAwNcIOAJ+3b98+3XHHHYqPj1dISIg6dOig0aNHa8WKFdq9e7f8/Pw0d+7cWpf/6quv5Ofnp4yMDEnS/Pnz5efnJ39/fx09evSy+rKyMrVs2VJ+fn6aMWNGo40LgGcQdgD4tNzcXA0cOFBffvmlpk2bpldeeUUPP/yw/P399dvf/lYDBgxQQkKC/vznP9e6juzsbEnSfffd5zQ9ODi4xuXWr1/v3kEA8KoW3m4AAFx54YUXFBYWpp07dyo8PNxpXklJiSRp0qRJevbZZ7Vjxw4NHTr0snX8+c9/VkJCggYMGOA0/ZZbbtGf//xnzZo1y2l6dna2xo4dq7/97W/uHQwAr2DPDgCf9vXXX6tXr16XBR1Jio6OlvR92JH+bw/OD+Xn56ugoMBR80MTJ07Unj17dPjwYcc0m82mjz/+WBMnTnTTCAB4G2EHgE+Lj49Xfn6+9u/fX2tN586dNWzYMP3lL39RVVWV07xLAaim8DJ8+HBde+21TiFp7dq1atOmjcaOHeumEQDwNsIOAJ/25JNP6ty5c+rXr5+GDRum2bNn66OPPtKFCxec6iZNmqTi4mLl5OQ4plVXV2vt2rVKSkpSly5dLlu3n5+f7rnnHqfzdtasWaMJEyYoODi48QYFwKMIOwB82ujRo5WXl6fbbrtNX375pZYsWaLU1FR16NBB77//vqPu7rvvVmBgoNNemm3btunYsWM1HsK6ZOLEiSosLNTOnTsd/+QQFmAuhB0APm/QoEFav369Tp06pc8//1xz5szR6dOndccdd+jgwYOSpMjISKWmpurdd99VeXm5pO8PYbVo0UJ33XVXrevu37+/EhISlJ2drTVr1shisWjkyJEeGRcAzyDsAGgygoKCNGjQIC1atEivvfaaLly4oHXr1jnm33fffSorK9OGDRtUWVmpv/3tb0pJSVFUVJTL9U6cOFFr165Vdna27r77bvn7879GwEz4LxpAkzRw4EBJktVqdUy77bbb1LZtW2VnZ+uf//ynTp065fIQ1iUTJ06U1WrV//zP/3AICzAh7rMDwKd98sknuvnmm+Xn5+c0fdOmTZKk7t27O6a1bNlSt99+u9auXatz586pdevWGjdu3BW30bVrVy1fvlznz5/X4MGD3TsAAF5H2AHg02bOnKlz587p9ttvV0JCgiorK5Wbm6u1a9eqU6dOevDBB53q77vvPr311lv68MMPNWnSJLVu3bpO23n00Ucbo30APoCwA8CnvfTSS1q3bp02bdqk119/XZWVlYqLi9MvfvELzZ0797KbDY4cOVKxsbGyWq11OoQFwPz8DMMwvN0EAABAY+EEZQAAYGqEHQAAYGqEHQAAYGqEHQAAYGqEHQAAYGqEHQAAYGrcZ0dSdXW1jh8/rrZt2152l1YAAOCbDMPQ6dOn1b59e5fPtCPsSDp+/Lg6duzo7TYAAEADHD16VNdee22t8wk7ktq2bSvp+w8rNDTUy90AAIC6KCsrU8eOHR1/jteGsCM5Dl2FhoYSdgAAaGKudAoKJygDAABTI+wAAABTI+wAAABT45wdAACaiKqqKl24cMHbbXhMYGCgAgICrno9hB0AAHycYRiy2Wyy2+3ebsXjwsPDZbFYruo+eIQdAAB83KWgEx0drVatWjWLG+AahqFz586ppKREkhQbG9vgdRF2AADwYVVVVY6gExkZ6e12PKply5aSpJKSEkVHRzf4kBYnKAMA4MMunaPTqlUrL3fiHZfGfTXnKhF2AABoAprDoauauGPchB0AAGBqhB0AAGBqhB0AAGBqhB0AAGBqhB0AAODkrbfeUmRkpCoqKpymjx8/XpMnT/ZSVw1H2AEAAE7uvPNOVVVV6f3333dMKykp0caNG/XQQw95sbOG4aaCABwSBwyQ1Wp1WRMbG6v83bs91BEAb2jZsqUmTpyorKws3XnnnZKkt99+W3Fxcbr55pu921wDEHYAOFitVhV+sctlTbf+Az3UDQBvmjZtmgYNGqRjx46pQ4cOWr16tR544IEmeb8fwg4AALhM//791bdvX7311ltKSUnRgQMHtHHjRm+31SCEHQAAUKOHH35Yy5cv17Fjx5ScnKyOHTt6u6UG4QRlAABQo4kTJ+rbb7/VH/7whyZ5YvIlhB0AAFCjsLAwpaWlqU2bNho/fry322kwwg4AAKjVsWPHNGnSJAUHB3u7lQbjnB0AAHCZU6dOaevWrdq6dateffVVb7dzVQg7AADgMv3799epU6f0X//1X+revbu327kqhB0AAHCZb775xtstuA3n7AAAAFMj7AAAAFMj7AAAAFMj7AAAAFMj7AAAAFMj7AAAAFPj0nMAAJqooqIinThxwiPbateuneLi4jyyLXcj7AAA0AQVFRWpR48eOnfunEe216pVKx06dOiqAs/69eu1cuVK5efn6+TJk/riiy/Ur18/9zVZC8IOAABN0IkTJ3Tu3DmteuV36n7ddY26rYKvvtLUGb/UiRMnrirsnD17Vj/60Y901113adq0aW7s0DWvhp358+drwYIFTtO6d++uw4cPS5LKy8v1xBNP6J133lFFRYVSU1P16quvKiYmxlFfVFSk6dOn65NPPlGbNm00ZcoULV68WC1akOMAAObX/brr1L9Pb2+3USeTJ0+W5Pm7M3s9EfTq1UtbtmxxvP9hSHn88ce1ceNGrVu3TmFhYZoxY4YmTJigTz/9VJJUVVWlsWPHymKxKDc3V1arVffff78CAwO1aNEij48FAAD4Hq+HnRYtWshisVw2vbS0VKtWrVJ2drZGjhwpScrKylKPHj20Y8cODR06VB999JEOHjyoLVu2KCYmRv369dPzzz+v2bNna/78+QoKCvL0cAAAgI/x+qXnX331ldq3b68uXbpo0qRJKioqkiTl5+frwoULSk5OdtQmJCQoLi5OeXl5kqS8vDz17t3b6bBWamqqysrKdODAgVq3WVFRobKyMqcXAABwnzVr1qhNmzaO17/+9S+v9eLVPTtDhgzR6tWr1b17d1mtVi1YsEA33XST9u/fL5vNpqCgIIWHhzstExMTI5vNJkmy2WxOQefS/EvzarN48eLLzhUCAADuc9ttt2nIkCGO9x06dPBaL14NO2PGjHH8e58+fTRkyBDFx8frL3/5i1q2bNlo250zZ44yMjIc78vKytSxY8dG2x4AAM1N27Zt1bZt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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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iwrWcnd3x65duzBr1iyo1Wq0bt0aiYmJWLp0qTVDIyIyY80qzdau6ExASYket7Q3G2xXrNfZvxgSPavCzurVqzF9+nTIZLK79snlcsycORPvvPOOxWFHEIQG23h5eSE1NRWpqan1tgkNDcWePXssOiYR0b3YukozABgqK+1QkbiUld/5+W75fKPFfdwkElRU8u4ysp1VYefUqVN466236t0/fPhwvP32240uiojIWWxZpTnrxClMnvkcjEajnatr/ioq7/x8l7z4MiIjIhtsn51zFfNXLIPRyJWjyXZWhZ2CgoI6bzk3fVirVvjll18aXRQR0b1Y80ypktIym45hzSrN13+9zZssp1S0Q6B/QIPtiouLHFANiZ1VYadDhw44e/YswsPD69x/+vRpBAYGNklhROQaLA0WjXlQZbFeZ9H8jYJf7iwrYc0zpYr1d+riM6WIWi6rws5jjz2G119/HSNGjICXl5fZvoqKCixatAh/+MMfmrRAInIOax9WacuDKov1erhJJPh04zqrauverSciw7ta1Pby1csAtqCqqsqqYxCReFgVdhYsWIDt27eja9euSE5ORmTkneutFy9eRGpqKqqrqzF//ny7FEpEjmXtwyprH1RZpNNZfImp8JdbqBEELHt1PrqENfyQzh9O/Ii316XC3c0dPt4+Fh1DymdKEbV4VoWdgIAAHD58GLNmzUJKSorpbiqJRIK4uDikpqbe9ZwqImreah9W2RA3d3cAlj/OAPjf2SCFXG7R/I12CrlFn0tE9FtWLypYe5t3UVERrly5AkEQEBERgXbt2tmjPiJqJqx9nAHARxoQkWPYtIIyALRr1w73339/U9ZCRCJQ+zgDS9sSEdmbTc/GIiIiImoubD6zQ0TNjzXr05SVccVaIhIHhh2iFsDa28iB/00evl1dY7e6iIgcgWGHqAWw9jZygJOHiUg8GHaIWhBLbyMHxDd5mE/ZJmq5GHaISNRseco2wMdLEIkJww4RiZq1T9k+de4slr+3yqqVoBvzXDAisj+GHSJqESx9ynZO7k8AbFsJmmeDiFwTww4R0W/YshJ07XPBjFW37VgZEdmKYYeIqA5WrQTNh40SuTSuoExERESixrBDREREosbLWEQN0Gq10Ov1FrXNy8uzczVERGQthh2ie9BqtQgPD0dRUZFV/QyVlXaqiIiIrMWwQ3QPer0e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4sXo06cP/vGPfyAsLAxeXl4AAJ1Oh2effRbt27eHTCbD0KFDcerUKcf9IIioyfDMDhG5lHfffRddunTBRx99hOPHj6OqqgqdO3fGypUr8cQTT6CkpATffvstaq/Ar127FvPmzcOKFSsQHx+P4uJifP/99wCAmpoaU9D55ptvcPv2bSQlJeHpp59GRkaG6ZhXrlzB559/ju3bt8Pd3R0AMH78eHh7e+PLL7+EXC7Hhx9+iGHDhuH//u//oFQqHf5zIaJGcOZTSImI6rJq1SohNDRUEARByMrKEgAIP/30U51tg4KChPnz59e5b9++fYK7u7uQm5tr2nbu3DkBgHDs2DFBEARh0aJFgoeHh1BYWGhq8+233woymUyorKw0+7wuXboIH374YWOGRkROwMtYROTSevfujWHDhiE6Ohrjx4/Hxx9/jKKiIgBAYWEhbty4gWHDhtXZ98KFCwgODkZwcLBpW1RUFBQKBS5cuGDaFhoaivbt25venzp1CqWlpfD19UWbNm1Mr5ycHGRnZ9tppERkL7yMRUQuzd3dHfv378fhw4exb98+rFmzBvPnz8fRo0fh5+fXJMdo3bq12fvS0lIEBgaaXeqqpVAomuSYROQ4PLNDRC5PIpHgoYcewpIlS3DixAl4enpix44daNu2LTp16oT09PQ6+3Xv3h3Xrl3DtWvXTNvOnz8PnU6HqKioeo933333QaPRoFWrVggPDzd7NVXAIiLH4ZkdInJpR48eRXp6OoYPHw5/f38cPXoUv/zyC7p37w7gzt1Uzz33HPz9/REfH4+SkhJ8//33mD17NmJjYxEdHY2EhASsXr0at2/fxp///Gc88sgj6N+/f73HjI2NhVqtxpgxY7By5Up07doVN27cwO7du/HEE0/csy8RuR6GHSJyaTKZDIcOHcLq1auh1+sRGhqKv//974iPjwcAJCYmorKyEqtWrcKLL74IPz8/PPnkkwDunBH64osvMHv2bAwaNAhubm4YMWIE1qxZc89jSiQS7NmzB/Pnz8czzzyDX375BSqVCoMGDUJAQIDdx0xETYsrKBMREZGocc4OERERiRrDDhEREYkaww4RERGJGsMOERERiRrDDhEREYkaww4RERGJGsMOERERiRrDDhEREYkaww4RERGJGsMOERERiRrDDhEREYkaww4RERGJ2v8HTb4KY3qfgSMAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import seaborn as sns\n", + "import pandas as pd\n", + "import warnings\n", + "import matplotlib.pyplot as plt\n", + "warnings.filterwarnings(\"ignore\", \"is_categorical_dtype\")\n", + "warnings.filterwarnings(\"ignore\", \"use_inf_as_na\")\n", + "\n", + "df = pd.DataFrame({'score': score, 'fscore': fscore, 'y': y})\n", + "\n", + "sns.histplot(df, x=\"score\", hue=\"y\").set_title(\"SVM\")\n", + "plt.show()\n", + "sns.histplot(df, x=\"fscore\", hue=\"y\").set_title(\"FairSVM\")\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.10.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/doc/source/examples/FairSVM.ipynb b/doc/source/examples/FairSVM.ipynb index 422100e..5757aef 100644 --- a/doc/source/examples/FairSVM.ipynb +++ b/doc/source/examples/FairSVM.ipynb @@ -31,6 +31,7 @@ "* $\\mathbf{\\rho} \\in \\mathbb{R}_+^{d_0}$ is a vector of constants that trade-off predictive accuracy and fairness\n", "\n", "The constraints limit the correlation between the sensitive features and the decision function, ensuring fairness in the predictions.\n", + "\n", "> **Note.** Since the hinge loss is a plq function, and fairness constraints are linear, thus we can solve it by `rehline.plqERM_Ridge`." ] }, diff --git a/doc/source/examples/SVM.ipynb b/doc/source/examples/SVM.ipynb index 05e9fe0..7bbcc25 100644 --- a/doc/source/examples/SVM.ipynb +++ b/doc/source/examples/SVM.ipynb @@ -21,7 +21,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 1, "id": "2dd1c096-e0df-492f-be63-8ac272007237", "metadata": {}, "outputs": [], @@ -35,12 +35,14 @@ "\n", "n, d = 10000, 5\n", "X, y = make_classification(n_samples=n, n_features=d)\n", + "## convert y to +1/-1\n", + "y = 2*y - 1\n", "X = scaler.fit_transform(X)" ] }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 2, "id": "aece9fbe-f9be-40ae-8179-b44849fb0fd3", "metadata": {}, "outputs": [], @@ -54,13 +56,13 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 3, "id": "93719987-c6b3-4a9b-9b40-c35e5bf90ef0", "metadata": {}, "outputs": [ { "data": { - "image/png": "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", + "image/png": "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Rl122WU6ceKEfvGLX+jrX/+69u3bp/LycnXp0kUJCQlNXpOUlOT9UMrLy5sEncb9jftasnTpUuXl5Xkf19TUEHjQafhboZzVy4HIcujvHf8FJVjv8corr2jOnDnex7fccoskafny5VqxYkVQ3qM5loadKVOmeP/7iiuu0Lhx45Senq7/+I//UGxsbIe9b0xMjGJiYjrs+AAAdLS+ffuqW7duumPhj0Pyft26dVPfvn3bdYzbbrtNt912W3AKagXLx+x8WUJCgr761a/q8OHDuu6661RXV6fTp0836d2pqKjwjvFJTk7WO++80+QYjXdrNTcOCAAAu0hLS9PBgwdZGysAYRV2zp49q48//lizZs3S6NGjFR0draKiIs2YMUPShWt7paWlyszMlCRlZmbqoYceUmVlpRITEyVJhYWFiouL07Bhwyw7DwAAQiEtLS1iA0goWRp2fvrTn+rb3/620tPTVVZWpuXLl8vlcum73/2u4uPjdccddygvL0+9e/dWXFycFi1apMzMTI0fP16SlJ2drWHDhmnWrFlavXq1ysvLtWzZMuXm5nKZCgAASLI47Bw7dkzf/e539Y9//EP9+vXTNddco927d6tfv36SpDVr1sjpdGrGjBmqra1VTk6OnnzySe/rXS6XtmzZogULFigzM1Pdu3fX7NmztXLlSqtOCQAAhBlLw87mzZt97u/atasKCgpUUFDQYpv09HRt27Yt2KUBAACbCKsxOwCA0ApkVu1GDoeDNbkQkfipBYBOyjAMpaamKioqKqAtNTVVhmFYXTbQavTsAEAnZZqmysrK9Pjqp/322BiGocV3z2MZEUQkwg4AdHJOp5PLU7A1wg4AABGqtLSUSQUDQNgBACAClZaWasiQIfriiy9C8n6xsbH66KOPWhV43nzzTT366KMqKSnRiRMn9PLLL2vatGkdV2QLCDsAAESgkydP6osvvtDsmXOVnJTSoe9VXlGm555/RidPnmxV2Dl37pyuvPJK3X777Zo+fXoHVugbYQcAgAiWnJSitAHpVpfRrClTpjRZ9NsqjEgDAAC2RtgBAAC2RtgBAAC2xpgdACHj8Xj8tmFJAgDBRtgB0OEMw5DL5VRMTIzftqmpA3T06KcEHgBBQ9gB0OFM05THY6jq6MeKimr5nx2Px6Ne6YNYkgCwibNnz+rw4cPex5988on27Nmj3r17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7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFsj7AAAAFuLsroAAPi/PB6P3zYOh0NOJ9/XAPhH2AEQNgzDkMvlVExMjN+2qakDdPTopwQeAH4RdgCEDdM05fEYqjr6saKiWv7nyePxqFf6IJmmGcLqAEQqwg6AsONyueRyuawuA4BN0P8LAABsjbADAABsrU1hZ9CgQfrHP/5x0fOnT5/WoEGD2l0UAABAsLQp7Bw9erTZW0Nra2t1/PjxdhcFAAAQLK0aoPzKK694//u1115TfHy897HH41FRUZEyMjKCVhwAAEB7tapnZ9q0aZo2bZocDodmz57tfTxt2jTdcsstKiws1K9+9auAj7du3TpdccUViouLU1xcnDIzM/WXv/zFu//8+fPKzc1Vnz591KNHD82YMUMVFRVNjlFaWqqpU6eqW7duSkxM1F133aWGhobWnBYAALCxVvXsGIYhSRo4cKDeffdd9e3bt11vPmDAAD3yyCMaPHiwTNPUc889pxtuuEEffPCBhg8friVLlmjr1q164YUXFB8fr4ULF2r69Ol66623JF3oTZo6daqSk5O1a9cunThxQt///vcVHR2thx9+uF21AQAAe2jTPDuffPJJUN7829/+dpPHDz30kNatW6fdu3drwIABevbZZ7Vp0yZde+21kqQNGzZo6NCh2r17t8aPH6/XX39dBw4c0Pbt25WUlKSRI0fqgQce0D333KMVK1aoS5cuQakTAABErjZPKlhUVKSioiJVVlZ6e3wa/fa3v2318Twej1544QWdO3dOmZmZKikpUX19vbKysrxthgwZorS0NBUXF2v8+PEqLi7WiBEjlJSU5G2Tk5OjBQsWaP/+/Ro1alSz71VbW6va2lrv45qamlbXCwAAIkOb7sb6xS9+oezsbBUVFenkyZM6depUk6019u7dqx49eigmJkbz58/Xyy+/rGHDhqm8vFxdunRRQkJCk/ZJSUkqLy+XJJWXlzcJOo37G/e1ZNWqVYqPj/duqampraoZAABEjjb17Kxfv14bN27UrFmz2l3AZZddpj179qi6ulovvviiZs+erZ07d7b7uL4sXbpUeXl53sc1NTUEHgAAbKpNYaeurk5f+9rXglJAly5d9JWvfEWSNHr0aL377rt6/PHHdfPNN6uurk6nT59u0rtT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1KlTVVlZqZiYGO/xvvKVr+juu+/WvHnzOvBsAXSUKKsLAICWXHnllZo8ebJGjBihnJwcZWdn6zvf+Y7q6+tVVlamyZMnN/u6gwcPKjU11Rt0JGnYsGFKSEjQwYMHNXbsWElSenq6N+hI0ocffqizZ8+qT58+TY73xRdf6OOPP+6AMwQQCoQdAGHL5XKpsLBQu3bt0uuvv661a9fqvvvuU1FRUVCO37179yaPz549q/79+2vHjh0XtU1ISAjKewIIPcIOgLDmcDg0YcIETZgwQffff7/S09NVWFiojIwMFRUVadKkSRe9ZujQoXK73XK73U0uY50+fVrDhg1r8b2uuuoqlZeXKyoqShkZGR11SgBCjLADIGy9/fbbKioqUnZ2thITE/X222/rs88+09ChQ7VixQrNnz9fiYmJmjJlis6cOaO33npLixYtUlZWlkaMGKGZM2cqPz9fDQ0N+tGPfqRvfvObGjNmTIvvl5WVpczMTE2bNk2rV6/WV7/6VZWVlWnr1q36l3/5F5+vBRC+CDsAwlZcXJzefPNN5efnq6amRunp6frVr36lKVOmSJLOnz+vNWvW6Kc//an69u2r73znO5Iu9Ab96U9/0qJFi/SNb3xDTqdT119/vdauXevz/RwOh7Zt26b77rtPc+bM0Weffabk5GR94xvfUFJSUoefL4COwd1YAADA1phnBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2Nr/AwKdXcya05rFAAAAAElFTkSuQmCC", "text/plain": [ "
" ] diff --git a/doc/source/index.rst b/doc/source/index.rst index a4c367b..f60c5d2 100644 --- a/doc/source/index.rst +++ b/doc/source/index.rst @@ -36,9 +36,6 @@ - Paper: `NeurIPS | 2023 `_ .. - Open Source: `MIT license `_ -`ReHLine` is designed to be a computationally efficient -and practically useful software package for large-scale regularized ERMs. - The proposed **ReHLine** solver has appealing exhibits appealing properties: .. list-table:: @@ -78,6 +75,5 @@ If you use this code please star 🌟 the repository and cite the following pape :maxdepth: 2 :hidden: - tutorials example benchmark diff --git a/rehline/__init__.py b/rehline/__init__.py index 4ab3f85..5d08c90 100644 --- a/rehline/__init__.py +++ b/rehline/__init__.py @@ -1,5 +1,6 @@ # Import from internal C++ module -from ._base import ReHLine_solver, _BaseReHLine, _make_loss_rehline_param +from ._base import (ReHLine_solver, _BaseReHLine, + _make_constraint_rehline_param, _make_loss_rehline_param) from ._class import ReHLine, plqERM_Ridge from ._data import make_fair_classification from ._internal import rehline_internal, rehline_result