Skip to content

Instantly share code, notes, and snippets.

@suizhihao
Created February 2, 2023 08:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save suizhihao/3f1610af70623736bb813e048fba5efd to your computer and use it in GitHub Desktop.
Save suizhihao/3f1610af70623736bb813e048fba5efd to your computer and use it in GitHub Desktop.
unsup-ad-algs
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# One-class SVM\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Outline:\n",
"\n",
"## 1 Theory \n",
"\n",
"* One-class learning paradigm\n",
"* Brief recap about Support Vector Machines\n",
"* One-class SVM\n",
"\n",
"## 2 Application\n",
"\n",
"* Packages need\n",
"* Generating data\n",
"* Apply one-class SVM and play with parameters\n",
"\n",
"## 3 Final remarks"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1 Theory\n",
"### 1.1 One-class learning paradigm\n",
"\n",
"In data science, one of the most important task is build a binary classifier of type $A$ vs $\\overline{A} $, in which, when new data sample is given to the classifier, it’s able to predict whether the sample belongs to class $A$ or is an outlier (i.e. belongs to $\\overline{A} $). In this scenario we can realy on two types of paradigms: \n",
"* \"Classic\" supervised learning paradigm\n",
"* One-class learning paradigm\n",
"\n",
"In the fist one we train the model with both positive ($A$) and neagtive examples ($\\overline{A}$). In the second one we train the model only on examples coming from the positive class and we take judgments from it on the universe ($ A \\cup \\overline{A} $). One-class learning paradigm si very usefull when we have a highly unbalanced dataset in which there are lot of data belonging to $A$ and only a few coming from $\\overline{A}$. In particular we have to adopt this paradigm when the examples aviable of $\\overline{A}$ are not a representative sample of all possbile instances coming from that class.\n",
"\n",
"The basic idea of one-class learning paradigm is the following: given a training data, an algorithm creates a model identifying most probable region of the input space where data of that class lays. If newly encountered data is too different, according to some measurement, from that region, it is labeled as out-of-class.\n",
"\n",
"One-class Support Vector Machine is one of the tool of one-class learning paradigm. This method is based on the same idea and based on same technical trick of the traditional two class SVM. For this reason in this presentation I decide to dedicate a section to the SVM for binary calssification and then, using the same reasoning and the same notation, explain how one-class SVM works."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1.2 Brief recap about Support Vector Machine\n",
"##### Linear Separable case\n",
"Consider a dataset $\\space \\Omega = \\{(x_1,y_1),\\space ... \\space, (x_n,y_n)\\}$, where $ x_i\\in\\mathbb{R}^m $ is the $ i-th $ data input and $ y_i \\in\\{-1,+1\\} $ is the $ i-th $ output pattern, indicating the class membership ($ A=1,\\space \\overline{A}=-1 $). \n",
"For a first moment let assume that the data belonging to the two class are linearly separable. The aim SVM is find the hyperplane $ H: w^T x + b =0\\space, w \\in\\mathbb{R}^n, \\space b \\in\\mathbb{R} $ able to separate the classes, that maximize the margin between the hyperplane and the classes.\n",
"We can write the distance between a point $x$ and the hyperplan as $r:(w^Tx+b)\\,/ \\left\\| w \\right \\| $. The points of $+1$ group have postive distance, the points of $-1$ group have negative distance. Notice that for the optimal hyperplane, the absolute distance from any nearest positive example is the same as the absolute distance from any nearest negative example. Due to the fact that example are linearly separabel we can write: $$ \\frac{y_i(w^Tx_i+b)}{\\left\\| w \\right \\|} \\ge \\hat r \\space\\space\\space \\forall i=1,\\,...\\,,n$$ where $ \\hat r $ is the minimum absolute distance between a point and the hyperplane. Thus, the problem to find the optimal hyperplane can be reduced to the minimization of $ \\left\\| w \\right \\|$. In particular the problem to solve is: $$\\min_{w,b} \\frac{1}{2}\\left \\| w \\right \\|^2 \\\\s.t. \\space y_i(w^Tx_i+b)-1 \\ge 0 \\tag{1}$$\n",
"It is quadratic problem with linear constrain. In this scenario we have the strong duality theorem that guarantees us that the primal and the dual shares the same optimal value. \n",
"\n",
"##### Dual\n",
"Given a probelm $$ \\min_{x} \\,f(x)\\\\ s.t.\\space\\space\\space g(x) \\le 0$$ its dual form are the following: $$ \\max_{\\alpha}\\, \\inf_{x}\\,(L(x,\\alpha)) \\\\ s.t. \\space\\space\\space \\alpha \\ge 0$$\n",
"where $L(x,\\alpha)$ is the Lagrangian function given as $L(x,\\alpha)=f(x)+\\alpha g(x)$.\n",
"In our scenario the Lagrangian function is a convex quadratic function for any fix value $\\alpha>0$. Thus it is bounded from below if and only if its minimum is achived. For this reason in our case ve can write the dual problem in this form: $$\\max_{\\alpha} L(x,\\alpha) \\\\ s.t. \\space\\space\\space \\Delta_xL(x,\\alpha)=0\\\\ \\alpha \\ge 0$$\n",
"\n",
"\n",
"In SVM scenario, using the formulas above (taking into account that $w$ and $b$ take the place of $x$), and doing the math we can write the dual of (1) as: $$ \\min_{\\alpha} \\frac{1}{2}\\sum_{i,j=1}^{n} y_i y_j \\alpha_i \\alpha_j x_i x_j- \\sum_{i=1}^{n} \\alpha_i \\\\\n",
"s.t.\\space\\space\\space \\alpha_i\\ge 0 \\space\\space \\forall i=1,\\,...\\,,n\\\\\\sum_{i=1}^{n}\\alpha_iy_i=0$$\n",
"Solving the dual problem we find $\\alpha_i^*\\space$. From them we can obtain the optimal value $w^*$ and $b^*$. The train data points $x_i$ for which $\\alpha_i^* > 0$ holds are the support vectors.\n",
"\n",
"##### Slack variables\n",
"The way in which we determine the hyperplane below imposes that in the train data there are zero miss-classify points. It is a wise choise remove this strong bound and allow to some traning data points the possibility to be miss classified. For this purpose we introduce into the problem the slack variables $\\xi_i$ (one for each train data). A $\\xi_i$ variable is equal to 0 if the $i-th$ point $x_i$ is correctly classify.\n",
"The problem now becomes: $$\\min_{w,b,\\xi} \\frac{1}{2}\\left \\| w \\right \\|^2 + C \\sum_{i=1}^{n}\\xi_i \\\\s.t. \\space y_i(w^Tx_i+b)-1 \\ge -\\xi_i \\space\\space \\forall i=1,\\,...\\,,n\\\\\\xi_i\\ge0 \\space\\space\\space \\forall i=1,\\,...\\,,n$$\n",
"where $C$ is a positive costant that can be seen as the penalization for missclassification. If $C$ tends to infinitive the problem returns to be the one described above. The dual problem with the slack variabile is the following:\n",
"$$ \\min_{\\alpha} \\frac{1}{2}\\sum_{i,j=1}^{n} y_i y_j \\alpha_i \\alpha_j x_i x_j- \\sum_{i=1}^{n} \\alpha_i \\\\\n",
"s.t.\\space\\space\\space 0 \\le \\alpha_i\\le C \\space\\space \\forall i=1,\\,...\\,,n\\\\\\sum_{i=1}^{n}\\alpha_iy_i=0$$\n",
"\n",
"#### Kernel trick\n",
"When the examples are not linearly separable the following two steps strategy is used:\n",
"* the $x_i$ are projected into a larger space called feature space with a non linear function $\\phi(\\,\\cdot\\,)$\n",
"* the optimal hyperplane in the feature space is computed\n",
"\n",
"This method is baed on Cover’s theorem on separability, which states that non-linearly separable patterns may be transformed into a new feature space where the patterns are linearly separable with high probability, provided that the transformation is nonlinear and the dimensionality of the feature space is high enough.\n",
"\n",
"\n",
"Luckily, due to the fact that the hyperplane in the feature space could be defined as $\\sum_{i=1}^{n}y_i\\alpha_i\\phi(x_i)\\cdot\\phi(x)=0$, if we use a kernel function $K$ (i.e. a function $K(x,y)=\\phi(x)\\cdot\\phi(y)$) we could compute the dot product into the feature space without explicitly representing the train data into that space. This is known as the kernel trick and it is what gives SVM such a great power with non-linear separable data points. The feature space can be of unlimited dimension and thus the hyperplane separating the data can be very complex. Popular choices for the kernel function are polynomial kernel and radial-basis function kernel (more detail about different types of kernel will be seen in section 2.3).\n",
"With the kernel trick the dual problem to solve is:\n",
"$$ \\min_{\\alpha} \\frac{1}{2}\\sum_{i,j=1}^{n} y_i y_j \\alpha_i \\alpha_j K(x_i ,x_j)- \\sum_{i=1}^{n} \\alpha_i \\\\\n",
"s.t.\\space\\space\\space 0 \\le \\alpha_i\\le C \\space\\space \\forall i=1,\\,...\\,,n\\\\\\sum_{i=1}^{n}\\alpha_iy_i=0$$\n",
"Solving it we find $\\alpha_i^*\\space$ and we obtain the decision function $$f(x)=\\sum_{i=1}^{n} y_i\\alpha_i^* K(x_i,x)$$\n",
"A positive value of $f(x)$ indicates that $x$ is classified as positive ($A$). A negative value of $f(x)$ indicates that $x$ is classified as negative ($\\overline{A}$)."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 1.3 One-class SVM\n",
"As introduce in the section 1.1 in one-learning paradigm the model's examples coming only from the postive class ($A$). So the main difference between the one-class SVM and the original SVM is that in one-class SVM the only given information is the positive samples. Whereas in the original SVM information is given on both postive samples and negative samples.\n",
"To distinguish between postive and negative class (given only one class) the idea si finding the boundary region that comprises most of the training samples. If a new test sample falls within this boundary it is classified as of positive, otherwise it is recognised as an outlier (negative class). \n",
"\n",
"Suppose that the input data are $\\space \\Omega = \\{(x_1,y_1),\\space ... \\space, (x_n,y_n)\\}$, where $ x_i\\in\\mathbb{R}^m \\space$and $ y_i =+1\\space \\forall i=1,\\,...\\,n $ (i.e. all data input belogns to positive class).\n",
"$\\phi$ is a non-linear transformation. The training stage consists in:\n",
"* projecting the training samples to a higher dimensional feature space \n",
"* separating most of the samples from the origin by a maximum-margin hyperplane which is as far away from the origin as possible. \n",
"\n",
"<img src=\"images/one_svm.gif\", style=\"width:600px;height:300px;\">\n",
"\n",
"\n",
"In order to determine the maximum-margin hyperplane we have to determine the parameter $w$ and $b$ by solving the following optimization problem: $$\\min_{w,b,\\xi} \\frac{1}{2}\\left \\| w \\right \\|^2 + \\frac{1}{vn}\\sum_{i=1}^{n}\\xi_i -p\\\\s.t.\\space\\space\\space \\langle w,\\phi(x_i)\\rangle \\ge p-\\xi_i \\space\\space\\space\\space \\forall i=1,\\,...\\,n\\\\ \\xi_i \\ge 0\\space\\space\\space\\space \\forall i=1,\\,...\\,,n$$\n",
"The parameter $v \\in (0,1]$ is a special parameter for one-class SVM. It is the upper-bound of the ratio of training samples that fall into the outlier region, as well as the lower-bound of the ratio of support vectors among all the samples. Notice that, as happens with the $C\\space$ parameter for classic SVM, if $\\frac{1}{vn}\\space$ tends to infinity (i.e. $v$ tends to 0) the penalty for don't respect the linear costrain is infinitive so no train example could be in the outlier region. \n",
"\n",
"The minimization problem above is solved by its Lagrange dual problem: \n",
"$$\\min_{\\alpha} \\sum_{i,\\,j=1}^{n} \\alpha_i\\alpha_j K(x_i,x_j) \\\\s.t.\\space\\space\\space 0 \\le \\alpha_i \\le \\frac{1}{vn} \\space\\space\\space\\space \\forall i=1,\\,...\\,,n\\\\ \\sum_{i=1}^{n}\\alpha_i=1 $$\n",
"\n",
"Solving the dual problem we find $\\alpha_i^*\\space$, and we can reconstructing $p^*$ from the primal problem. We obtain the decision function $$f(x)=\\sum_{i=1}^{n} \\alpha_i^* K(x_i,x)-p^*$$\n",
"A negative value of $f(x)$ indicates that $x$ is an outlier. The train data points $x_i$ for which $0 < \\alpha_i^* <\\frac{1}{vn}$ holds are the support vectors; these points lie directly on the separating hyperplane in the feature space."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 2 Application\n",
"### 2.1 Packages need"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import matplotlib.font_manager\n",
"from sklearn import svm\n",
"%matplotlib inline"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.2 Generating data"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x1a22a9e0b8>"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAD8CAYAAABjAo9vAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xt4VNW5+PHvymRCLghBQLkLWAQpCQlERS4iXogaoIgg7a+1cKyl6EGpHqNBLUTaHtMfPiL8tFr0KFYpgggUDS0o4AHvBohchFTBoAlBUkIChIRMMuv3x2Qmk8meyUxmkrnk/TxPnjB79uy9koe8s2atd71Laa0RQggROaKC3QAhhBCBJYFdCCEijAR2IYSIMBLYhRAiwkhgF0KICCOBXQghIowEdiGEiDAS2IUQIsJIYBdCiAgTHYybduvWTffv3z8YtxZCiLC1e/fuf2utuzd3XlACe//+/cnLywvGrYUQImwppY55c54MxQghRISRwC6EEBFGArsQQkSYoIyxG7FYLBQVFVFdXR3spogQFxsbS58+fTCbzcFuihAhKWQCe1FRERdddBH9+/dHKRXs5ogQpbXm1KlTFBUVMWDAgGA3R4iQFDJDMdXV1XTt2lWCuvBIKUXXrl3lk50QHoRMYAckqAuvyP8TITwLqcAuhBDCfxLYXZ0vgx8OwvG9tu/ny3x6+Ysvvshf//pXAFauXMnx48cdz91zzz189dVXfjfR1+t88MEHfPzxxz7fJy8vjwceeMDn19mtXLmSefPmeTynpW0TQrgXMpOnIeF8GVR8D9pqe1xXY3sMEH+xV5eYO3eu498rV65k2LBh9OrVC4CXX345IM309ToffPABHTt2ZPTo0U2eq62tJTra+L9BWloaaWlpLWpjINomhGgZv3vsSqlYpdTnSqkvlVIHlVJPBqJhzdm4t5gxOdsZkJXLmJztbNxb7Nf1CgsLGTI8jVkPPEHyTXcy/deZnK+qAm1l2+YNpKamkpSUxN13382FCxcAyMrKYujQoSQnJ/Pwww8DkJ2dzdNPP826devIy8vj5z//OSkpKVRVVXH99deTl5fHCy+8wCOPPOK498qVK7n//vsBeOONN7j66qtJSUnhN7/5DXV1dU3aar8OQMeOHXn88ccZPnw4o0aN4ocffmjyc7344ossXbqUlJQUdu3axezZs3nooYeYMGECjz76KJ9//jmjR48mNTWV0aNHU1BQANiC7qRJkxw/1913383111/PwIEDWb58ueHv8dVXX+WKK65g/PjxfPTRR47j77zzDtdccw2pqancdNNN/PDDD4ZtMzpPCOEjrbVfX4ACOtb/2wx8Bozy9JqRI0dqV1999VWTY+5s2FOkhzzxD33Zo+86voY88Q+9YU+R19dw9e2332pAf7jxFa2L9+j/mDlFL/ndb3XVkU90n56X6oKCAq211nfddZdeunSpPnXqlL7iiiu01WrVWmt9+vRprbXWixYt0kuWLNFaaz1+/Hj9xRdfOO5hf3zy5El9+eWXO47fcssteteuXfqrr77SkyZN0jU1NVprre+991792muvNWmr83UBvWnTJq211pmZmfr3v/99k/Od26S11rNmzdIZGRm6trZWa611RUWFtlgsWmut33vvPT1t2jSttdY7duzQGRkZjmtce+21urq6WpeWluqLL77Y0U6748eP6759++qTJ0/qCxcu6NGjR+v//M//1FprXVZW5vhdvfTSS/qhhx4ybJu781z58v9FtMyGPUV69FPbdP9H39Wjn9rm19+XCAwgT3sRl/0eiqm/2bn6h+b6L+3vdT1ZsqWAKkvjnmyVpY4lWwqYmtq7xdft27sHY65KAeAX025j+StvcvO4UQy4rA9XXHEFALNmzeL5559n3rx5xMbGcs8995CRkeHo2Xqje/fuDBw4kE8//ZRBgwZRUFDAmDFjeP7559m9ezdXXXWV7WeqquKSSy7xeK2YmBjHvUeOHMl7773nVRtmzJiByWQCoKKiglmzZvH111+jlMJisRi+JiMjgw4dOtChQwcuueQSfvjhB/r06eN4/rPPPuP666+ne3db8bmZM2fyr3/9C7CtU5g5cyYlJSXU1NS4zUH39jzRujbuLWbB+v2Ov7Pi8ioWrN8P4NffmGgbAZk8VUqZlFL5wEngPa31Z4G4rjvHy6t8Ou4tFRUNquFXopSyvUOZYpqcGx0dzeeff84dd9zBxo0bueWWW3y618yZM1m7di1vv/02t99+u+1eWjNr1izy8/PJz8+noKCA7Oxsj9cxm82O9D+TyURtba1X909ISHD8+3e/+x0TJkzgwIEDvPPOO25zxDt06OD4t7t7uUtFvP/++5k3bx779+/nL3/5i9t7eHueaF2e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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a21ef4240>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"xx, yy = np.meshgrid(np.linspace(-5, 5, 500), np.linspace(-5, 5, 500))\n",
"# Generate train data\n",
"np.random.seed(17)\n",
"X = 0.3 * np.random.randn(100, 2)\n",
"X_train = np.r_[X + 2, X - 2]\n",
"# Generate some regular novel observations\n",
"X = 0.3 * np.random.randn(20, 2)\n",
"X_test = np.r_[X + 2, X - 2]\n",
"# Generate some abnormal novel observations\n",
"X_outliers = np.random.uniform(low=-4, high=4, size=(20, 2))\n",
"\n",
"plt.scatter([a[0] for a in X_train],[a[1] for a in X_train])\n",
"plt.scatter([a[0] for a in X_outliers],[a[1] for a in X_outliers])\n",
"plt.scatter([a[0] for a in X_test],[a[1] for a in X_test])\n",
"plt.legend([\"positive in train data\", \"outliers in test data\", \"positive in test data\"], loc=\"upper left\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 2.3 Fit one-class SVM and play with parameters"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The one-class SVM can be apply in Python using the function [OneClassSVM](http://scikit-learn.org/stable/modules/generated/sklearn.svm.OneClassSVM.html#sklearn.svm.OneClassSVM) of the sklearn library. As we can see from the API there is a lot of parameters to play with. We start analizing the default one an then we try to play with these parameters. In particular we are interested in:\n",
"* nu, i.e. the $v$ parameter\n",
"* kernel, i.e. type of kernel applyed\n",
"* gamma, i.e. parameter of the kernel\n",
"* degree, i.e. parameter of the polinomial kernel"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"OneClassSVM(cache_size=200, coef0=0.0, degree=3, gamma='auto', kernel='rbf',\n",
" max_iter=-1, nu=0.5, random_state=None, shrinking=True, tol=0.001,\n",
" verbose=False)"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clf = svm.OneClassSVM()\n",
"clf.fit(X_train)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As the output say the $v$ parameter is 0.5, so at most half of train example could be in the outlier region. \n",
"\n",
"The kernel applyed is radial-basis function kernel. The matematical formula of this kernel is: $$K(x,y)=exp\\left(-\\frac{\\left \\| x-y \\right \\|^2}{2\\sigma^2}\\right)$$\n",
"where $\\sigma \\in\\mathbb{R}$ is a kernel parameter. With this type of kernel the dimension of the feature space could be unbounded. More $\\sigma$ is small more complex will be the feature space in which we are going to project the input data.\n",
"\n",
"In our case $\\sigma$ is equal to 2 (Beacuse by default gamma is equal to $1/m\\space$ (where $m$ is the dimension of the input data). And gamma is the inverse of $\\sigma$)."
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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Ly8v1qxd74y/pyXFozN5IZDovYw5zuA2+HpiiT+PtGbg3aQLZ2dvpfrQQHTuOq5suUK9yfWuC80ceeUIdosdv/Z+pMemYwoykXF+K5cWbkfn5U+VAf9VcffbgDLsZQy1CEf5JD/pgM2//c7+mHj8/+8tjH5ViZk7DLslHbu0Y01MxRJvIVAnaHUwicYnUqlxJg2vyym4I8iY8ThXKlTipNGTv0b9w2aTDp2bLmc5jwAjwYODubj8IqYgE4l/JVL7zdoce+MYgY/PLHCYSHFzlIl39LKsx96qVSsOHz5coH0zF+G4wy/7IhyClJSUW742anBw8A1fg6xKiyWFhIQEZs6c6fLd6NGj+euvv4qpRQWjS3gojar6cHHeMC7OGczFecNoVNWHDu3asHP336RePMbVte9wft7T6IwC73siiFs0gQeMnswce5RfRxzmv7POMmjtZTodTOZeKblb2mmBJCLxEs9cPsfnNjiWYmd7opWea+MwWK/Ng7HEW7Al2XCv4U71Z6qT+FciOk8dSNB7GtAJV3OTNUyUnp5OXFycGlwtIkq1x261Wpn8zngWLlhIJW8DcUlW+j/an7FvjMdgKNWnVijyXoRDOmPuWbFarWW2rwp7bomJicycOZPnnnvO+V3mTNmSTKZ0QGinDi557Et+XoIpRAuVZE1VrJdwjo8TL9C2EJMU75Vw78JYhmy4zISngvmjqomzc8/i394fvbte++elx2q2ggBbihWJ631pTbqCJSWRP//eyd59+1TOexFSqj32ye+M59iWRRwaauDYMJ32/5ZFTH5nfJGUf7v02JcuXUqPHj3o0qULXbp0YevWrddtf/jhh2nbtq2Ld9uqVSumTp1Kz549adWqFd98841zEY4dew5wf8/HuSe8L617Ps7efQfQ6XScOXOGxo0bM336dHr16sWCBQuYPn06zz77LI899hht27Zl2LBh7N+/nz59+tCmTRvefvttZ5256Z7nhc1mY+LEiU7N84kTJ7pokBw8eJBHHnmE9u3b88orrzi14efPn0/Hjh2JiIggPDycY8eOAZruzMCBA+nWrRvh4eH88MMPLtfss88+o3fv3rz//vu0bduWAwcOOLd/8cUXjBw5EoCJEyc6y+jbty9nz54FNA33xMREIiIinNIJvXv3Zv369QBcunSJwYMHEx4eTlhYmIteT/Zrknm97HY7Y8eOpUOHDoSHh9/ShT5MJhOVKlVyDpYeOnTIadRBC5kM6ujPb0f+LpRRz0qtSxbmvXeS7q8cwSPEg8A+gYBDjC/eQoV7K3DhqwsEBlbFvP5TrEmaxlFmmKhSpcocvpiiVncqYkqtq5acnMzCBQs5NNRAVR/t+VTVR8c3PezcNed7Xn5lbKnRY+/YsSO9evVCCMGxY8d45JFH2LVrl3P7pUuXWLJkCZcuXSIyMpJWrVo5lQRTU1NZsWIFZ86cITQ0lKiuXfnnkoX/e2Y0X0wfT4e297Hgl7949dVX2f7HHwBcvXqVunXrMmrUKECTJdi3bx9r1qzBy8uLyMhIJk2axPz587HZbLRu3ZoBAwZQu3btXHXP82L+/PkcOHCAX375BdCkfufPn8/jjz8OwO7du1m+fDkmk4nHHnuM7777jieffJJ33nmHjRs3EhwcTHp6Ona7HavVyvDhw/n000+pW7cuSUlJREVF0aJFC+rWrQtoRjRTE8ZoNLJo0SIaNWoEaMJk48ePB2D48OFOLZsFCxbw7rvv8tlnnzFp0iSioqKchjw748aNo0GDBsybN48LFy7QtWtX7r77bu68884cr0nfvn05ceIEW7du5bfffkOn0xEfH59nnxUF6enpnD59GqO36+Bo6wNJfPxlDDnpae4xGNnoLTn7QGUu1fDAnG4j/qcL1PIz0iLQjSZrL9NeunqEOmC6ReLvqeMHvXC+EQiDjvjt8bRs2ZLIhyPZsGmzi8Jkk3vuYe++o1QZ/I6KvRcxN23YhRAhwDdAEGAH5kgpP7rZcvMjNjaWSt7XjHomVX10VPSiVOmxnzp1iueff57Y2FgMBgOXLl3i4sWLTiGs/v37A1C5cmXCwsL4448/nIY9s30hISH4+vqSlJxMQnw8Umekyp33sv+ipHW7TriZ3uP48eN4e3vj7u7u9EQz6dSpk1NMrGHDhjRq1Mj5o6pTpw6nTp2idu3ahdI9//333+nbty9ubm4APPLII/zyyy9Ow96zZ0/nQ7hPnz6sXr2aJ5980ikoFhkZSVhYGDVr1uTIkSMcPXqUZ5991ll+RkYGR48edRr2Pn36OLf17duXHj168MYbb3Ds2DHMZjOtWrUCtEVDvvrqK1JSUm5o6b2tW7c6HwiBgYGEhYWxfft2p2HPfk3Onz9PjRo1sNvtjBo1irZt2xIeHl7g+m6E9PR0EhIS+Dv6b/bu3YvBy0BaQpozVbFCso0ps89gzCbauL7GPbyWHM+uxDPUH1/fVQo72J1trx9jx9DqHI82c4fJjVHnUhlss6Pjmsf/6pKLLFl7mQMW8GjQFpNfLI2qB9Cjq6Yzkz1MZDabOXD0RL4pmoobpyg8diswSkoZLYTwAXYJIdZLKQ8WQdm5EhQURFySlfNmV+N+3mzncrKtVOmxP//887z55pt07doVu91O3bp1cx1Eyq4fnl0v3Gaz4enlhcFgwC+gsjOPXQjhPM7Dw+O61Mfs5eSkQ15Y3fOcNM8Lsu/nn3/Onj172LZtG3369GHKlCkEBwcTEBCQqzcNrhruwcHB1KtXj02bNvHHH3/Qu3dvhBCcPXuW8ePHs3r1amrUqMGOHTsYPnx4gdoI12vQ56fhXqFCBWcbfv/9dyZNmsQvv/ySq4rljeA05juj2btvH+jBWA3n9P+Yb2I4M/MMIc+FMODXK1RMvGbV7Qhe9Atkxrl/MAYEY/D1zDHbRe+tJ+10GrZkG/ZRVRn6xjF+0ulZbLXh7QjnGIF3/O/kIZuV1MN/c1/LFtdpvmdXmLSkJJJ69gCmKrWdMgZqdaeb56Zj7FLK81LKaMdnM3AICL7ZcvPDy8uL/o/2Z9BKzZiD9v+glZQ6PfaEhARCQkIAWLhw4XVG/ccffwTg8uXL/Prrr9x///15tq9u3bpkZGTw119/odPp2LZtGxaLhdq1axf6nCF/3fPcaN++PT/++CMWiwWLxcKiRYtcNM9Xrlzp9JqXLFlCmzZtsFqtnDp1imbNmjF8+HA6duzI/v37qVOnDh4eHi7yu5meeG707duXhQsXsnz5cvr27QtoE3rc3NyoXLkydrudb7/91rm/t7c3qampuXrx7du357vvvgO0pfs2bdrk1J3PjcuXL5OWlkbnzp157bXX8PHx4dSpU/l3Xh7YbDZWrv6FqdM/YM4337Mrejdu9dphs9lcYurVBlTDVN3EkVeO0HnFJZcyPmrWjQX39wW7jUoPjsGWZHGub5CJJd6C1WzlwpIL+Lf3xxRowhhg5OgrIQwJdH0IRJw7zB09XgZpp12b1rkOgNpsNjZt/g273c7l5f/l7MwnuPrrF1gSL6nVnYqAIo2xCyFqAc2A25IXNvaN8UwG7przPRW94HKyjX79+zH2jfG3tN6i1mOfMGECgwcPJigoiNatW+Pv7++yvVq1ajz00ENcvHiR4cOH07Bhwzzb5+bmxty5cxk3bhypqal4eHgwZ84cZyiksOSne54bAwcO5OTJk861Sjt27MiAAQOc21u3bs1TTz1FTEyMM55vs9kYOXIkiYmJCCGoVq0aY8eOxWAw8NVXX/HWW28xa9YsbDYblSpVYvbs2bnW3717d9544w2aNGlCcLDmczRs2JAePXoQGhpKcHAwrVu3dqYz+vv78/DDDxMWFoavry8///yzS3lvv/02r776KuHh4UgpGTt2LA0aNMizD86dO8crr7yC1WrFZrPRuXPnAq/ylBM2m425X87jwsVYDBU8sSUn43VPR9JjT6PzEC5et9ALggcFk74jkYbma966DRi/5xcSjSaQkBS9Eq9GoZyZ8dt1GTRI8KzlSWCfQJe0xuhXa3H05aPUy/Ta7TbuSk3kmMmL2NjYXL3uTF2bqkPmXpMIXj6FpD1ruLdF8xxXd1IUnCLTYxdCeANbgHellNfFKIQQQ4AhAL6+vi0yMxMyUXrsCkXB9dhX/rKSg5cPuhjgs7MvglszUg7+6pzqb0uzYY3XUg4vvnGMeMu133sK4OttxJZuRe9lwJZsw1C5FtisWK+cRe+hw5YmMfjoqTmqBu7V3LV65p7FI8SDoH5auHPW0wdpa702R6Lvg2NYtHI6TZs0oWf3qOu89kz996y6NqCFYC7OG8bokSOUt54Lt1WPXQhhBBYD3+Vk1AGklHOAOaAttFEU9WZS3vTYFeWb9PR09u7ZS+0pta/Tdzk6djsY3Tn96Wnca7iT8GcCBm8DlngLhoBg4i+cxc9RjicQWVHPsZHZpHi922K5dB5rhjuB/SZwdcPHHB9/HL2HHrvFTkCHAGdao9+pVFpYXSe+7f9zEcLNg/3Hz2DKQTKgoLo2he0btbhH0WTFCGAecEhK+f7NN0mhUOSF2WzG6JOzvovey4AlIZW0M3aEENSbVO+aRz/rAusu6eibZQbyZ0k2Hpdwiax6LxtA5waWNOKWT8Gecom679QlbmUc6ZfSqdi1IkIvEJfSmfDeKdyztOG4EJwJqo/R5EVG7DF2RUdfl7aYn65NYQZNbTYbWzasJXp3NAGeeq6k2GjerDkdwyPL5USnopig1BZ4DAgVQuxx/OtWmIKKY5k+RekgM4f9VssiFCcFvf99fHyw5DbImZCCe3UjQieum5RUfVggHwjX/gu5bGHhxOO03Wd27qf3NGAMCCZ42DwC+76NwdcLU6CJak9Uw7OWJ8deP4Zh1GE+/89RQlNcB5i/6vQkFbs+T+WeoxF2Kzo3j+sGtjN1bRJWTXOZsBS/alq+40e5sWXDWnQX9nHkOXdOvWDiyHPu6C7sY8uGtYUqr7Rz0x67lPJ34KZlA+Pi4vDy8sLf39+ZnlfWUdK6+VNe1CqllCQnJ5OYmJjvviaTiebNm3N49mGChga5hFGEDqr2r0rMvJgcPfod3kZmmi08l8W+B161Muv9U+yu68niFj7EJ1uw9R2DwTsAe0YqtmTtIVLRqCOijgfdYtMJ3WtGn+05tLNqAxa01HL4Dd4BCJMXtrTkHD3wLuGhsGGTc8JSRlI8Uug4Eu/DoQ8+uiFZAU2LPpojz7m7TFZc0MtAg5m7adsprNyFZUrMzNPdu3dz9epVatWqhdGY05y4skVaWioZGRnohMAuJW5ubri7Xz95qbyTlpaKsFmo5Al6AToJsVfhfKyxzPVXYmIi0dHRBdq3S2gX2AS7x+7WYuhJFhrUb8Bxn+O413DHara66KeD5tHb0ySjK9egRlIMPZJdZyk1O5ZCs2MpvANcnj+aRHcvLnn5o9d5EDj6CNWtub9RHNTr6HH1BKm/fY5fh6expSQg05Np3rx5jkY1q67NqjVrOX6lEn49Xy2UpK/ZbCbAU5/jZEV/T125nOhUYgy7lJITJ05w4sSJ4m7KLWfT2tXoLuxjQS9tctV5s51Hl1mxB95DaGSholhlkvT0dD75YKqLJwbafIUGM9MZPnJ0ufvBZqLX64mKiCK0Q6hzsBBg2ofTsKdpA5xn556l+jPVs2TNXEDv5Q/+tXgoPpZ3dDZeseccj62YmkjF1ETuuHo+37asv9ubt4aF4GexkzR7K5fXJWONO0/FihULZJgPHT58Qys/ZcfHx4crKTbOm+3X3SdXU+zlcqKTev+/zWS+NmYadbj22rhbrQnpQkE8sZwoTxKwWQW/MkM0sXNiCYgIwCPEg6OvHeXwS4c58upx9BXaU+WR/5J69E+sFjvTek+ktacfm2vcnWPZtnxCXfsEPP9UNV5+uSZmL70jMyeQlIO/kn7pKE8OGphvKKUgGTIF6YPmzZrz6DKry2TFR5dZaVZOJzqVGI+9vKBeGwvOjXpiKjPiWogm+o1opBtIuxFTjTb4dx6K3t0bAL2HN7b0FBK3fsdOm4WBPV+hfnoKPQ/9RvuTu2kUewxps+CWfTBXAFV0UMvA6eo6Om6xUL2Dq0E2+hkx+hsxeBr4bftvREVEAbmnIRZVhkzH8Ei2bIAGM3fj76njaoqdZs2a0TE8shC9WPpRhv02o14bC841T+z6sFVOnljWzIhr++5jywbKTYgrM0TTrnU7Pvr4U4Ke+AS3gGrO7dakK9gt6egF3Bnkzf7LduKWT4EHx/BRu0eZ3rQrV1e+T5XkeKohqdS0K9K3Cv/+PIX1z7pR1V97QAZkSNJXpecYx7cl26g5qiY739xJhzYd+O337c4l+bLrree38lNBnRy9Xk9oZDfadgpTeewow37buVFjVd4pqCemMiNc8fHx4a7GjflnzYdUenCM02BeXvUBPk0iST20hXb3tyKqSzhr1m3g0LxhYPTAmmpG7+bOybQULM9+QYzDi05uFkmfFRtZ9JCgqo8Oc7rE39PAmRlnXGe/OhbbMAWaEB56vvx6PmmelZ0x9JwGRrNnyGQ1/jdKdpGx8kqRSQrcCNWqVZNDhw697fWWFDJDBrt3X2+sykvI4EbJb0ZhXFwcPy+Yy6kXrt9W85N0Hnj0GSpVqnQ7mlpiSE1NZeoHHyOFDr1nBeypZrzv6YJ3i56c/3wYLZo1o0c3TVI3s39NJhOxsbEsXrWewKFfOMuSdhspW+aSFL0KP293EtJs4O5DWpoZbBaM/kZsyTb82/sT2CcQq9nK0TEnsWfYCH72iwJJB6hZo/lzWyUFFDeGem28cfLzxHx8fLicbOX303qaBunxdtMG/spziMvDw4PmTZuw78xV/EKfwlSlNvaMVC6v+gCvRmHs3beZiLDOzr7N7F83N7fr4t5Cp8d0b1/idq3los0TKdPwqtUK/aFfqdegDifMJ6g5qiamQJNTt8azQVtSj+0usHSA8raLDmXYixF1IxcNNpuNbZs3YrdL+v2USlKG5JnmbrzYysign23lOsR1X8vm7Nn/HXGL30bn4eP02v06Ps6lU7tyHKw3mUw0bdKE/y2bTKVeY7OoL76HV6PO+Lb6PyQC8/pPadG8OZ06tGPaR+9zfPxp9F5u2JIteN8TgWfjbiTv31qk0gGKgqEMu6LUkzloevwFT+eYRZ9FqczeZaVZi5blNjMCwNfXF2G3EPjYhwgkeu8AdG4e+RrXqMgIzn7xNefmPIPeyx97WhJ63yCSD24m48QusKS6DIK2bHYf+2Pi8Wo/yPlmkLBqGoFBVUm4yYFRxY2jDLuiVJPboOmiPh7Un5lG205h5Xrcwpl1sv5TfLuPdhr1+BXv0dCxlF9O6PV6nnnqcdasXc+ePXtw8/TBlnCOls2bc1/L5vj6+roYZucA6OIJLgOg4aE9r1vrtLADo4qCowZPFaUaNWiaPzabjXUbNhG9ezd6d28yUswg7Zi8/a5LP8yJGxnUzG1fNTBaNKjBU0W5QM0LyB8XXZZf1nH8qgW/LKGR/HRZbmQsKLd91XjS7UVJCigKREmdpq+mk98Yhw4dchp1yKLLcpvkLErqfVTWUB67Ik9KwzR9NZ28YNzKlYvyI2s4KKcZqIqiRRl2RZ6Uhmn6al5AwbgVKxcVlMzFq/OagaooOlQoRpErmRknc7vpMWdIkjJkiVaizKp0qLie3FYuutXph9p9tNuZ8gi3PwRU3lAeuyJXEhIScNdL7v08mUqeOuJS7DzdzI3J4SalRFlKKUpdloJSnCGg8ooy7Ipc2bPrLxoEwKI+3s4wzOPLUnlxdRpXU1AZJ6WQrBkytytsVZwhoPKKCsUociQ9PZ19e/eyqI+Hy8Sfr3t58PU+C/fcc4/yskoxtzNsdbMhIJVJc+Moj12RI3ktCOLnYaBJy1bF1DJFaaQwIaDSkJFVUlGGXZEjeU38MWcIfH19i7F1itJGYUJApSEjq6SiQjGKHFETfxS3goKGgNTawDeH8tgVuaIm/iiKC7U28M2hDLsiV9TEH0VxoTSAbg4VilHki5r4o7jdqFDgzaE8doVCUSQUtTSvCgUWHmXYFQrFTXGr0hJVKLDwqFCMQqG4KbKmJZ56wcSR59zRXdjHlg1ri6R8FQq8cZRhVygUhUalJZZMlGFXKBSFpiBpiYrbjzLsCoWi0GRNS8yKSkssXpRhVygUhUalJZZMVFaM4pahVqYvH6i0xJKHMuyKIkep8pUvVFpiyaNIQjFCiK5CiH+EEMeEEGOKokxF6eVWp78pSiYqLbHkcNOGXQihB2YAUcBdQH8hxF03W66idKLS3xSK4qcoPPb7gGNSyn+llBnA98CDRVCuohSi0t8UiuKnKAx7MHAmy99nHd+5IIQYIoTYKYTYmZKSUgTVKkoiKv1NoSh+isKwixy+k9d9IeUcKWVLKWVLT0/PIqhWURJR6W8KRfFTFFkxZ4GQLH9XB84VQbmKUopKf1MoipeiMOw7gHpCiDuAGKAf8GgRlKsopaj0N4WieLlpwy6ltAohhgNrAT3whZTywE23TFHqMZlMyqArFMVAkUxQklKuBlYXRVkKhUKhuDmUVoxCoVCUMZRhVygUijKGMuwKhUJRxlCGXaFQKMoYyrArFApFGUMZdoVCoShjKMOuUCgUZQxl2BUKRYFJT08nLi5OyS+XcNQKSgqFIl/UqlilC+WxKxSKfFGrYpUulGFXKBR5olbFKn0ow65QKPJErYpV+lCGvQyiBrgURYlaFav0oQZPyxA2m411GzYRvXs3Bg8frKlmmjdrRpfwUDXApSg011bF2ucMx6hVsUo2yrCXIdZt2MSB82aqDJ6FwTsAa9IVDqyaBhs2ERUZUdzNU5Ri1KpYpQtl2MsI2gDXbqdRBzB4B+DbfTTR84YR2qmD8qwUhUatilW6UIa9jGA2mzF4+DiNeiYG7wAMHj6YzWb1Q1TcNGpVrNKBGjwtI/j4aDF1a9IVl++tSVewpprVAJdCUY5Qhr2MoA1wNSNh1TSncbcmXSFh1TSaqwEuxW1GZWYVLyoUU4boEh4KGzYRPW/YdVkx2UlPT1exUkWRo6QHSgbKsJch9Ho9UZERhHbqkKvRzpoSqXf3wppipmnTpkRFRtzwD089HBTZySo9cC0tch9bNkBoZLfibl65QRn2MkheA1zrNmxi/7lETHd2IuXQFnSefuyK3s3ZmHM889TjeRr3TEPu5eXFH7/9qrwyhQuZ0gOZRh2uSQ80mLmbtp3ClANwm1CGvRyRmRJpurMT1vjzVH36M2e+e9yyyaxZu54e3bo69830xg0Gg8vEJ5Iv07KqcPHK+i/dy8Z1NrpE9Szms1QUFwWRHlCG/fagDHsp5kZDIWazGb27FymHtjiNOmgpkZV6jWXv50MJ69yRzb9vJjo6GqO3EUuShYoVK2PWV6TK4Fno3Dy4NHMAP/yfm4tXtvAhI7U/3kWGNBYqrKMo/WSVHshq3JX0wO1HGfZSSGGlA0wmE5bkRISnLzIjFXtGKjo3D0Az7npPH9asX8OptFPUnlwbo58RS7yFMzPOoPNpjME7AMuVGPw9DTl7ZT4eHIy5il7NdC2XKOmBkoNKdyyFZJUOqDJkHlUGz+LAeTPrNmzKcX+bzcaatev56NOZSL3EnnKJS0tHETNrIFc3z0babVq+e4qZgwcPEjQkCKOfEQCjn5GQ50NIPriF9AvHEW4eXE215igIFZ9qx7fbKKKVlGu5pWN4JPbAe2gwM52an6TTYGY69sB7lPTAbUZ57KWMwkgHrNuwif3nzbg3ao9M3UH1oVWc3vjZ2b9zZWM6tksx2Ox29J7CadQBpE1y+ZfLYMsg7ucx2FPsmCoG89CiGKaFG2gapCfWbOeRZTY8G3XGLaAaBg8fLl++jJubm8qYKWco6YGSgTLspYwbkQ7InCSyY+dOAp/4hAvzX6De5Fou3nj1oVU48sp60HtTuf8U4haNwRJvce5zYdEFUk+nUn9qfZfQzF+nMuj0ow1bug2hE+g9jdjjfiVd2kk3X+WLr7/F6FnhtitMqhTMkoGSHihelGEvZWSVDshq3LNKB2SNwdvRIUxeCCR6L6OLNw6acTf4eoqeRWAAABLBSURBVGK5msal71/HWDmEs7MvUn1oFXTuOq5suUK9yfWuC80ceeUIOk8d0i7R++ip0NSHSt0qcWbmNoTJSOATn91WhUk1MUahuIaKsZcyCiIdsGbtev53Oo6AflOw2+3YLenYpR1rYiqWeAsVE6x03x7Pq9+dZ8aUE/x1OYVD0s4BjwqsjzvPjBMZRL5yDLeRR9AZRY4PA6O/kVqjalFvcj3cKrlxdetVdO46Qp6rjrRbXQZlfbuPvuVxd7Ump0JxDeWxl0Jykw4ID+3Eyl9Wsmv3Lgy+Xlz6fjTCaMTrrgjiFk2gu9GLl147SudUOzqZrVBpg4RYGgIdgMcBLPBPKixZdoGlUZVJNWl+gCXegi3ZhsHPgN5dT/Uh1TnynyNkXMjAo6YHei83bElX0AUEA65hIqDIQyVqYoxC4Yoy7KWQ3KQD1qxfw5GEI9fFw2smxPBx4kU6S3v+hWejATB22SUGb7rCpEHV+KWuJ2fnnsW/vT96dy3EYfQzovfQI5EOo5+BPluYyJKSyJ9/72Tvvn1FvrqTmhijULiiQjGlGJPJRKVKlTCZTJrXGh1N1aFVXeLhfcMD+P3IjkIZ9axUSbTx4adnePrlfzBVMRLYJ9C5zRJvwZ5mR++uJ+azGAwePtgzUoFrYaJKlSpz+GJKgVM0bwS1JqdC4Yry2MsA6enpnD59GqO36+DoPcdSmDU3hpx81b0GI+t9JKd7VeFiiDuJGXau/hhLiL8bLYNNNFpxiQgEbtI1ZjPaDuxJ4vMHrS5vBejh5PiTNGvaDPwN7M4SJmpyzz3s3XeUKoPfuSWrO6mJMQqFKzdl2IUQU4GeQAZwHHhSShlfFA1T5E16ejoJCQn8Hf03e/fuxeBlIC0hzZmq6J5u57+fncFkdTXMv1a7kzHpKexIPEP9t+q7PAgsL9Zkx+vH2P9MMMf/TCDIw43nY9J4yWrDjWvljL5qZfWof9hawYQ9FfQe3jSq14Ae3bo6jWhY547OMJHZbObA0RO3dHUntSanQnGNm/XY1wNjpZRWIcR7wFjg1ZtvliInnMZ8ZzR79+0DPRir4Zz+H/NNDGdmniHkuRAe3ZFI8GWLy/FjKlThvQv/YqxYHYOvZ47ZLnpvPWmn07Al2zCNqsqYN46xyKhnldVOlSzhnP9WrE0bwG6OoYqnF70e6OESK8+ex2xJSST17AFMVWo7M2aKcnUnNTFGobjGTcXYpZTrpJRWx59/AtVvvkmK7NhsNlau/oWp0z9gzjffsyt6N2712mGz2Qh5PsRpoKsNqIapuokjrxyh0/fnXcqY1yiUOW37gbRT6cEx2JIsWOJdDb8l3oLVbOXCkgv4t/fHFGjCGGDk8ishPBrs+hBoefFfmnYdjtAbiIu7hNVqJSdsNhv/3969R0dZ53ccf39nJkxuQyCAgQALslxdb6Qc2nohLgQBubjtqXt2PavrWlcUtke74g12e7DbtepasVsvK8p6qKunZ7u2cgqlQuqFpdbuQgKuCHJRgQABEhPIhdxmfv1jkkkiSQgy5AlPPq+/yGTyzPc8Bz758f1dnrfe2UQsFqN8zROUPHcbFW//ksaTx8/L053azjuI9FXJnDy9HVifxOsJ8WB88eVVbN32O6x/iFi0hozL82koP0Agrf0acwsaw28dTiA1wKXR9td55KN3qfjvl8BBddFaMr42nYPPHkyEe6JX7iB9dDo5N+XEV7hUR0n9SiolS0azOWDtrnlZTQXB1AjBcHpiKeMXtZxrM+zOFxmxeDW5dzxP/eFdlK5axNeGRTp8upOInJsztmLMrBAY2sG3ljnn1jS/ZxnQBLzaxXXuBO4EyMrK+lLF9kXrN67nZFol458Y1+Z8l9/Tb8hkaj/6ONFTj9ZFaapsAgPXFCJM+2Q/kRHA6k8RzApR/cFaQkNGQ3Qwu+/fQzAtQLTOEYoEGfPjMaTmpsY/p82yxmBqkIpQABparxuqriBaW0E0FiMjI+O02js712bwjQ9xrHnSVLtCRZLvjMHunCvo6vtm9l1gHjDDOffFbS9tr7MSWAmQm5vb6fukVX19Pdu3bWfMY2NOO99lz8PvQUoaB54/QurwICfeP0EoMxQP+sGj2H9qP+PaTHj+RVaA/7m//fr2QObVNB4/QlNDKjnfeoSKwp+zb/k+gmlBYo0xsqdlJ5Y1ph6u49qG9r8sdhSthVC85fHOps2nHRlwNufaiEjynFMrxsxmE58sXeCcq01OSdKiqqqKlEjH57sEM0K4xgbqPqum/mA94x4dx/gnxjP+ifGk9K9kQ6j9SPhnlU2Mr40lfn7k4pHUfFgIgQA01lG25jEaj+9n7E/GErk8QupXUhk0exAWNFx5Az9+dD8D2lyvDNiRO5GUIaNx0Sa2FhWddmRA23Nt2krmpKmInO5ce+zPABFgo5ltM7NfJKEmaRaJRGjsbJLzRC2pI0JYgHYTqCkDUhhxVw5Puyba/lR2TZRXfvoJN/xvJRZz8V8O6SFSsocz/K5V5HzzJ4SyMgjnhMm9LZf00ensXbYXu+9jnl+ymwXV7Wt4+apvkTX7BwyZvwRrPhvmi332zs61qVz3JJMmTUr+DRMR4ByXOzrnxiarEDldOBwmLy+PXS/sYujCoe3aKBaAYd8exqFVhzoc0e/NCPFIdZS/i7W2Y7Jqojz+Qgl3rDvOv07pzys1jZy86QFCmdnEGk4RrYn/EhkUMgrGpjHnaD0F26oIfqFx9tHgUbz0p98E4m0VC2cQravpcAT+xXNtGqorcRZgd2WEnSv+sUeP9BXpK7TztJe7fvr18BYUP1wc76FXNzJh/AT2RfaR+pVUmqqa2p2fDs1b/E9FeSwjwhir4faT7Xvj40rqWVpynKVAzep7Odx/CDX90ghYmIvu283QaOdTIHsDxpyqI1RufpkB0+4gWnsCV19DXl5eh/3ytufarFv/Jvs+H8yA+Q/26JG+In2Ngr2XCwaDzJk5h+nTpic23gA8+fSTxOriE5wlL5Yw4vsj2qyaOUbGZTNpKCvlL0s/YkfAeDTmOjxaIKOxjnHlB7tVy6aJGfxo0UjSYo7yF35L+YYamsqOMGjQoG4F885du87qyU8i8uXoELALRNuNNy0tmtKVpWTPzCZtZBp7lu5h17272P3gPoL9ryF7xmKGzF8CUWP1jUu5MmMga8b+MVFrXYveYNbFJ7b6ELjntlwWPziaiv6h5pU5OdR+9Db1x/fwvVu/c8ZWSndWyIhIcmjEfoFKtGh+VEwwI0iswZE29loGfn0hwdRMIB6agdRMTm5+jc+bGlg8azF/H7ububt+S/6nRYwpO8CI6vLTrt0I7MB4p18ar8eivJ/pmHhd+0BuedhGKD3Epvc2MWfmHKDzR9N158lPIpIcCvYLVNsWTWlpKS+vfoUB134vEeoQD01XX8P4r45i54lSytY8Bjc+xKqpf8YLl+RTvvYpho66kgGfbSWzXzoZ+bdRnTOGEgtQ+p9PE8rKYcC0W4j98vsd9vGjNVFG3TeKLX+zhWlXTWPT5vcoKi7u8Lz1lhUyO9Y9SdbcJYke+/k4VkCkr1OwX+DC4TAZGRmEUjMoX7eCQXP/OhGa5etWYClh8q+5inlzZrF+QyE7V90FKWk0naoi2C+Ng0d2sT8WI/e2n7cbSQ+ev4QjqxaRXXAn6ZPyOfjs5sSyyra7UsM5YSwtyMurf0Vd+pBED72jidHOnvykYwVEkkvB7gORSASiDYQGDOPIqkUE0iLETlWRPnEadSU7+N2WIubdMJs/v3E+9bOvT+z4rK+vp6amhn/+9Rsd9r4DaRHqj31CY/kxGo82sfv+3aQMTCFaE2XgtQMT58nE6oyyk8cZfvfjXU6MdvbkJxFJLgW7D4TDYa684gr+cOhTcm55CsPhMCo2Pk/mpQVs/+AdZs74emLitSVMI5EIDQ0NxOprOux9R6vKOf6bvyVjUj7R0o8ZN+GrfFr1KaPuG0U4J5xYgZM+4WpO7S3u9tEBXzzSV0SSS6tifGLqlDyiFYc5+soPOfab5Rx95Yf0u+hismcu7HLVyaBBg7BAkPK1T7XbHVq+9h9Iv+Q6ht66AipL+KO8PBbMXUDj0Sj7lh/g4yX72fPwfoL9ryFzyk3E6qp1dIBIL6ERu09kZWVhsUZybnkawxHMzCbQL+2M4RoOh5mSN5niXZ9w+KW7Cab1J1pTgQNC5Qcp27253STolMlT+fBQJRnX3kr4ojHEGk5xYt2T5AwdxglNjIr0Cgp2n0isOtn4DFlzlyRCvfI/HmfSxIld/uysmTMwM7YWFRGMNUDAuPKKK5g6JY+srKx2wZyYAH39kXYToAXT51P41juaGBXpBayLk3bPm9zcXLdw4cIe/1y/i0ajbCh8i6LiYoKpmTTUVoGLEc4ccNryw450tgb9bN57NtcQkbOzfPnyrc65KWd6n0bsPtLuXJb/2sC+ikYGtGmNnOlclrOZ1OzsvZoYFfGeJk99aufOnYlQhzbLD4uLTzs3/Xypr6+nrKysxz5PROI0Yvchr59c1LYl1NEuVBE5vxTsPuT1uSwtD7DuaheqiJw/asX4UGdPLuqJ5YctD7DO8rgNJNKXacTuU16dy+J1G0hEFOy+5dW5LF63gURErRjfa/uAjp76PK/aQCISpxG7JJ2O5xXxloJdkk7H8yafdvTK2VCwy3mjXajnLhqN8m7hmxQVF5GdHuTz2ih5k/PIL5ilPQHSKfXYRXqxdwvfJHD0A3YvSmX/X4XZvSiVwNEPeLfwTa9Lk15MwS7SS8X3BBTx2jdCDIvE/6kOiwR47RshirUnQLqgYBfppaqqqshODyZCvcWwSICB6YFOH54iomAX6aUikQif10Y5UhVr9/qRqhgVtTHtCZBOKdhFeqn4noA8bn6jKRHuR6pi3PxGE5O1J0C6oFUxchotres98gtm8W4hTHiumIHpASpqY0yePJn8gllelya9mIJdErS0rvcJBoNMn3UDV183Q79spdvUipEELa3rvXr6aAi5sCnYBdDSOhE/UbALoKV1In6iYBdAS+tE/ETBLoCW1on4SVKC3cyWmJkzs8HJuJ54I79gFrGcy5nwXD2j/qmeCc/VE8u5XEvrRC4w57zc0cxGAjOBA+dejnhJS+tE/CEZI/YVwAOAS8K1pBfQ0jqRC9s5BbuZLQAOOee2d+O9d5rZFjPbUltbey4fKyIiXThjK8bMCoGhHXxrGbAUuL47H+ScWwmsBMjNzdXoXkTkPDljsDvnCjp63cwuAy4GtpsZwAigyMymOudKk1qliIh025eePHXO/QG4qOVrM/sMmOKcK0tCXSIi8iVpHbuIiM8k7XRH59zoZF1LRES+PI3YRUR8RsEuIuIzCnYREZ9RsIuI+IyCXUTEZxTsIiI+o2AXEfEZBbuIiM8o2EVEfEbBLiLiMwp2ERGfUbCLiPiMgl1ExGcU7CIiPqNgFxHxGQW7iIjPmHM9/1xpMzsO7O/xD25vMKDH+MXpXrTSvWile9Gqt9yLUc65IWd6kyfB3huY2Rbn3BSv6+gNdC9a6V600r1odaHdC7ViRER8RsEuIuIzfTnYV3pdQC+ie9FK96KV7kWrC+pe9Nkeu4iIX/XlEbuIiC8p2EVEfEbBDpjZEjNzZjbY61q8YmY/M7NdZvaBmf27mQ3wuqaeZmazzexjM9trZg95XY9XzGykmb1tZjvNbIeZ3eN1TV4zs6CZFZvZWq9r6Y4+H+xmNhKYCRzwuhaPbQQudc5dDuwGHva4nh5lZkHgWWAOcAnwbTO7xNuqPNME3OecmwT8CbC4D9+LFvcAO70uorv6fLADK4AHgD49i+yc2+Cca2r+8n1ghJf1eGAqsNc594lzrgH4F+BGj2vyhHPuiHOuqPnPVcQDbbi3VXnHzEYAc4GXvK6lu/p0sJvZAuCQc26717X0MrcD670uoocNBw62+bqEPhxmLcxsNDAZ+D9vK/HU08QHfzGvC+mukNcFnG9mVggM7eBby4ClwPU9W5F3uroXzrk1ze9ZRvy/4q/2ZG29gHXwWp/+X5yZZQKvA/c65056XY8XzGwecMw5t9XMrvO6nu7yfbA75wo6et3MLgMuBrabGcRbD0VmNtU5V9qDJfaYzu5FCzP7LjAPmOH63gaHEmBkm69HAIc9qsVzZpZCPNRfdc79m9f1eOhqYIGZ3QCkAv3N7FfOue94XFeXtEGpmZl9BkxxzvWGE9x6nJnNBp4C8p1zx72up6eZWYj4pPEM4BDwe+Bm59wOTwvzgMVHOquBz51z93pdT2/RPGJf4pyb53UtZ9Kne+zSzjNABNhoZtvM7BdeF9STmieOfwC8SXyy8Nd9MdSbXQ3cAkxv/ruwrXnEKhcIjdhFRHxGI3YREZ9RsIuI+IyCXUTEZxTsIiI+o2AXEfEZBbuIiM8o2EVEfOb/AQJlJUVJFLXuAAAAAElFTkSuQmCC\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a22b5e470>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Percentage of correctly classify positive class in train set: 0.5\n",
"Percentage of correctly classify positive class in test set: 0.35\n",
"Percentage of correctly classify outliers: 1.0\n",
"Accuracy in the entrie test set: 0.5666666666666667\n"
]
}
],
"source": [
"Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])\n",
"Z = Z.reshape(xx.shape)\n",
"plt.title(\"Outside red circle is extimating outlier region\")\n",
"plt.contourf(xx, yy, Z, levels=[Z.min(), 0], colors=\"gray\")\n",
"a = plt.contour(xx, yy, Z, levels=[0], linewidths=4, colors='red')\n",
"plt.contourf(xx, yy, Z, levels=[0, Z.max()], colors='palevioletred')\n",
"s = 40\n",
"b1 = plt.scatter(X_train[:, 0], X_train[:, 1], s=s, edgecolors='k')\n",
"c = plt.scatter(X_outliers[:, 0], X_outliers[:, 1], s=s,\n",
" edgecolors='k')\n",
"b2 = plt.scatter(X_test[:, 0], X_test[:, 1], s=s,\n",
" edgecolors='k')\n",
"plt.legend([b1,c,b2],[\"positive in train data\", \"outliers in test data\", \"positive in test data\"], loc=\"upper left\")\n",
"plt.axis('tight')\n",
"plt.xlim((-5, 5))\n",
"plt.ylim((-5, 5))\n",
"plt.legend([a.collections[0], b1, b2, c],\n",
" [\"learned frontier\", \"training observations\",\n",
" \"new regular observations\", \"new abnormal observations\"],\n",
" loc=\"upper left\",\n",
" prop=matplotlib.font_manager.FontProperties(size=11))\n",
"plt.show()\n",
"\n",
"y_pred_train = clf.predict(X_train)\n",
"y_pred_test = clf.predict(X_test)\n",
"y_pred_outliers = clf.predict(X_outliers)\n",
"n_error_train = y_pred_train[y_pred_train == -1].size\n",
"n_error_test = y_pred_test[y_pred_test == -1].size\n",
"n_error_outliers = y_pred_outliers[y_pred_outliers == 1].size\n",
"print(\"Percentage of correctly classify positive class in train set: \"+str(1-n_error_train/len(X_train)))\n",
"print(\"Percentage of correctly classify positive class in test set: \"+str(1-n_error_test/len(X_test)))\n",
"print(\"Percentage of correctly classify outliers: \"+str(1-n_error_outliers/len(X_outliers)))\n",
"print(\"Accuracy in the entrie test set: \"+ str(1-(n_error_test+n_error_outliers)/(len(X_test)+len(X_outliers))))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we can see form the plot and also from the accuracy, the region of postive example is too conservative. It is caused by the fact that we build the frontier in such a way to allow half of training data be over that line.\n",
"Let's try to enlarge it by changing the $v$ parameter (keeping all the other paraemters fix)."
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"OneClassSVM(cache_size=200, coef0=0.0, degree=3, gamma='auto', kernel='rbf',\n",
" max_iter=-1, nu=0.1, random_state=None, shrinking=True, tol=0.001,\n",
" verbose=False)"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clf = svm.OneClassSVM(nu=0.1)\n",
"clf.fit(X_train)"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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/P39mTFjRkk3SaFQlELKhWGvKIwdO5axY8eWdDMUCkUpp8wOniq02LHVasVuz1cGX6FQVECUx14GkVJiTkoiNTUVgx6sNvDy8sLk61vklEiFQlF+UYa9DGJOSkJYU2lSReCmF2TaJKcSUjEnga+fX0k3T1FKycjIwGw2YzKZ1IStco4y7GUMu91Oauo1ow7gphfc4Q9/XkrFx2RCp1MRNsU1bDYbGzZuZu++fRg8TVjTzDRv1owukeHOSV2K8kW5sAC3Sra3NGK32zHocRr1LNz0AoOefOPt2UXJbhUzZ85k6tSpt7SOGyGn/PKMGTPy1ekpj2zYuJlDF81UGTaPKiMWUWXYPA5dNLNh4+aSbpriFlGmDbvVamXilInc0+IeHhj4APe0uIeJUyYWm2xvSVBY23U6HVYbZNpc5x9k2iRWG8XurdtstmIt70a5mXuaU375ueeec+rLlHcyMjLYu28ffj3Gu4jl+fUYz959+8jIyCjhFipuBWXasE95Ywqrf11NzddqEjotlJqv1WT1r6uZ8saUYim/IAnd/KRs33zzTT744AMAvv32W2rUqEFcXBygLR6xdevWXPXkJQecX/k6nY6VK1dSv30vWkYPYdJbHxDUpDOnEiR//vmncwo/5O+lW61WHn74YaKjo+ncuTPjxo1zerRfffUVgwcP5sknn6Rbt24cOXIk1/lz5sxxSgKPGzfO5Uvp/PnzDB06lM6dOzN8+HCnVMD69euJiIggKiqK8PBwdu7cCUBsbCzDhw+nR48eRERE8O677zrLatWqFW+//TZ9+/blhRdeoH///qxfv965f8OGDc5FSubNm0f37t3p0qULDzzwAH/++SeQv/zyxx9/DBQscdy3b19ee+01evXqRZs2bZwzWSF/iePShtlsxuBpylMsz+Bpwmw2l1DLFLeSMhtjz5LtrflaTYz+RgCM/kaCHgviy4lf8uL4F4tlFmpekrAFSdm2a9eO+fPnM3r0aLZv307z5s3ZsWMH3bt3Z+/evdx///151pNdDrig8s+fP8/CDz9kxTff4OHhwaxZM7HaQRq88MymOlkQer2e999/n8DAQKSUjB07li+//JJHHnkEgN9++40ff/wxz4UuNm/ezDfffMPq1avx8fFh7NixvPPOO7z88svOczds2EDlypV55plneOedd3j11VeZMWMG06ZNo1WrVths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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a21ef40b8>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Percentage of correctly classify positive class in train set: 0.89\n",
"Percentage of correctly classify positive class in test set: 0.95\n",
"Percentage of correctly classify outliers: 0.9\n",
"Accuracy in the entrie test set: 0.9333333333333333\n"
]
}
],
"source": [
"Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])\n",
"Z = Z.reshape(xx.shape)\n",
"plt.title(\"Outside red circle is extimating outlier region\")\n",
"plt.contourf(xx, yy, Z, levels=[Z.min(), 0], colors=\"gray\")\n",
"a = plt.contour(xx, yy, Z, levels=[0], linewidths=4, colors='red')\n",
"plt.contourf(xx, yy, Z, levels=[0, Z.max()], colors='palevioletred')\n",
"s = 40\n",
"b1 = plt.scatter(X_train[:, 0], X_train[:, 1], s=s, edgecolors='k')\n",
"c = plt.scatter(X_outliers[:, 0], X_outliers[:, 1], s=s,\n",
" edgecolors='k')\n",
"b2 = plt.scatter(X_test[:, 0], X_test[:, 1], s=s,\n",
" edgecolors='k')\n",
"plt.legend([b1,c,b2],[\"positive in train data\", \"outliers in test data\", \"positive in test data\"], loc=\"upper left\")\n",
"plt.axis('tight')\n",
"plt.xlim((-5, 5))\n",
"plt.ylim((-5, 5))\n",
"plt.legend([a.collections[0], b1, b2, c],\n",
" [\"learned frontier\", \"training observations\",\n",
" \"new regular observations\", \"new abnormal observations\"],\n",
" loc=\"upper left\",\n",
" prop=matplotlib.font_manager.FontProperties(size=11))\n",
"plt.show()\n",
"\n",
"y_pred_train = clf.predict(X_train)\n",
"y_pred_test = clf.predict(X_test)\n",
"y_pred_outliers = clf.predict(X_outliers)\n",
"n_error_train = y_pred_train[y_pred_train == -1].size\n",
"n_error_test = y_pred_test[y_pred_test == -1].size\n",
"n_error_outliers = y_pred_outliers[y_pred_outliers == 1].size\n",
"print(\"Percentage of correctly classify positive class in train set: \"+str(1-n_error_train/len(X_train)))\n",
"print(\"Percentage of correctly classify positive class in test set: \"+str(1-n_error_test/len(X_test)))\n",
"print(\"Percentage of correctly classify outliers: \"+str(1-n_error_outliers/len(X_outliers)))\n",
"print(\"Accuracy in the entrie test set: \"+ str(1-(n_error_test+n_error_outliers)/(len(X_test)+len(X_outliers))))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As expected the diameter of the cricle increases. The overall accuracy in the test set increases. However if avoid false postive is extrimly important (for example in a clinical scenario) we should prefer the first model.\n",
"\n",
"Let's try to change the $\\sigma$ parameter of the kerenl function:\n",
"First we try to reduce sigma."
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"OneClassSVM(cache_size=200, coef0=0.0, degree=3, gamma=10, kernel='rbf',\n",
" max_iter=-1, nu=0.1, random_state=None, shrinking=True, tol=0.001,\n",
" verbose=False)"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clf = svm.OneClassSVM(nu=0.1,gamma=10)\n",
"clf.fit(X_train)"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a225c9fd0>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Percentage of correctly classify positive class in train set: 0.87\n",
"Percentage of correctly classify positive class in test set: 0.8\n",
"Percentage of correctly classify outliers: 0.9\n",
"Accuracy in the entrie test set: 0.8333333333333334\n"
]
}
],
"source": [
"Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])\n",
"Z = Z.reshape(xx.shape)\n",
"plt.title(\"Outside red circle is extimating outlier region\")\n",
"plt.contourf(xx, yy, Z, levels=[Z.min(), 0], colors=\"gray\")\n",
"a = plt.contour(xx, yy, Z, levels=[0], linewidths=4, colors='red')\n",
"plt.contourf(xx, yy, Z, levels=[0, Z.max()], colors='palevioletred')\n",
"s = 40\n",
"b1 = plt.scatter(X_train[:, 0], X_train[:, 1], s=s, edgecolors='k')\n",
"c = plt.scatter(X_outliers[:, 0], X_outliers[:, 1], s=s,\n",
" edgecolors='k')\n",
"b2 = plt.scatter(X_test[:, 0], X_test[:, 1], s=s,\n",
" edgecolors='k')\n",
"plt.legend([b1,c,b2],[\"positive in train data\", \"outliers in test data\", \"positive in test data\"], loc=\"upper left\")\n",
"plt.axis('tight')\n",
"plt.xlim((-5, 5))\n",
"plt.ylim((-5, 5))\n",
"plt.legend([a.collections[0], b1, b2, c],\n",
" [\"learned frontier\", \"training observations\",\n",
" \"new regular observations\", \"new abnormal observations\"],\n",
" loc=\"upper left\",\n",
" prop=matplotlib.font_manager.FontProperties(size=11))\n",
"plt.show()\n",
"\n",
"y_pred_train = clf.predict(X_train)\n",
"y_pred_test = clf.predict(X_test)\n",
"y_pred_outliers = clf.predict(X_outliers)\n",
"n_error_train = y_pred_train[y_pred_train == -1].size\n",
"n_error_test = y_pred_test[y_pred_test == -1].size\n",
"n_error_outliers = y_pred_outliers[y_pred_outliers == 1].size\n",
"print(\"Percentage of correctly classify positive class in train set: \"+str(1-n_error_train/len(X_train)))\n",
"print(\"Percentage of correctly classify positive class in test set: \"+str(1-n_error_test/len(X_test)))\n",
"print(\"Percentage of correctly classify outliers: \"+str(1-n_error_outliers/len(X_outliers)))\n",
"print(\"Accuracy in the entrie test set: \"+ str(1-(n_error_test+n_error_outliers)/(len(X_test)+len(X_outliers))))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Clearly reducing to much $\\sigma$ produce an overfitting on the train set. Infact the feature space is too complicated for our data.\n",
"\n",
"Let's try to increase it:"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"OneClassSVM(cache_size=200, coef0=0.0, degree=3, gamma=0.0001, kernel='rbf',\n",
" max_iter=-1, nu=0.1, random_state=None, shrinking=True, tol=0.001,\n",
" verbose=False)"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clf = svm.OneClassSVM(nu=0.1,gamma=0.0001)\n",
"clf.fit(X_train)"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a1723f780>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Percentage of correctly classify positive class in train set: 0.925\n",
"Percentage of correctly classify positive class in test set: 0.8\n",
"Percentage of correctly classify outliers: 0.30000000000000004\n",
"Accuracy in the entrie test set: 0.6333333333333333\n"
]
}
],
"source": [
"Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])\n",
"Z = Z.reshape(xx.shape)\n",
"plt.title(\"Outside red circle is extimating outlier region\")\n",
"plt.contourf(xx, yy, Z, levels=[Z.min(), 0], colors=\"gray\")\n",
"a = plt.contour(xx, yy, Z, levels=[0], linewidths=4, colors='red')\n",
"plt.contourf(xx, yy, Z, levels=[0, Z.max()], colors='palevioletred')\n",
"s = 40\n",
"b1 = plt.scatter(X_train[:, 0], X_train[:, 1], s=s, edgecolors='k')\n",
"c = plt.scatter(X_outliers[:, 0], X_outliers[:, 1], s=s,\n",
" edgecolors='k')\n",
"b2 = plt.scatter(X_test[:, 0], X_test[:, 1], s=s,\n",
" edgecolors='k')\n",
"plt.legend([b1,c,b2],[\"positive in train data\", \"outliers in test data\", \"positive in test data\"], loc=\"upper left\")\n",
"plt.axis('tight')\n",
"plt.xlim((-5, 5))\n",
"plt.ylim((-5, 5))\n",
"plt.legend([a.collections[0], b1, b2, c],\n",
" [\"learned frontier\", \"training observations\",\n",
" \"new regular observations\", \"new abnormal observations\"],\n",
" loc=\"upper left\",\n",
" prop=matplotlib.font_manager.FontProperties(size=11))\n",
"plt.show()\n",
"\n",
"y_pred_train = clf.predict(X_train)\n",
"y_pred_test = clf.predict(X_test)\n",
"y_pred_outliers = clf.predict(X_outliers)\n",
"n_error_train = y_pred_train[y_pred_train == -1].size\n",
"n_error_test = y_pred_test[y_pred_test == -1].size\n",
"n_error_outliers = y_pred_outliers[y_pred_outliers == 1].size\n",
"print(\"Percentage of correctly classify positive class in train set: \"+str(1-n_error_train/len(X_train)))\n",
"print(\"Percentage of correctly classify positive class in test set: \"+str(1-n_error_test/len(X_test)))\n",
"print(\"Percentage of correctly classify outliers: \"+str(1-n_error_outliers/len(X_outliers)))\n",
"print(\"Accuracy in the entrie test set: \"+ str(1-(n_error_test+n_error_outliers)/(len(X_test)+len(X_outliers))))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In this scenario the feature space is not enought complicated to capture the variety of data.\n",
"\n",
"Let's try to change the kernel functon:\n",
"the other big family of kernel function used in the litterature is polinomial kernel: $$K(x,y)=\\left(\\gamma x\\cdot y+1\\right)^p$$\n",
"\n",
"With this kernel the feature space has a bounded dimension.\n",
"\n",
"In the next cells we apply the polynomial kernel whit degree $p=2,4,20$. At the end there is the consideration.\n"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"OneClassSVM(cache_size=200, coef0=0.0, degree=2, gamma='auto', kernel='poly',\n",
" max_iter=-1, nu=0.1, random_state=None, shrinking=True, tol=0.001,\n",
" verbose=False)"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clf = svm.OneClassSVM(kernel=\"poly\", degree=2,nu=0.1)\n",
"clf.fit(X_train)"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a1728d550>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Percentage of correctly classify positive class in train set: 0.895\n",
"Percentage of correctly classify positive class in test set: 0.8\n",
"Percentage of correctly classify outliers: 0.8\n",
"Accuracy in the entrie test set: 0.8\n"
]
}
],
"source": [
"Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])\n",
"Z = Z.reshape(xx.shape)\n",
"plt.title(\"Outside red circle is extimating outlier region\")\n",
"plt.contourf(xx, yy, Z, levels=[Z.min(), 0], colors=\"gray\")\n",
"a = plt.contour(xx, yy, Z, levels=[0], linewidths=4, colors='red')\n",
"plt.contourf(xx, yy, Z, levels=[0, Z.max()], colors='palevioletred')\n",
"s = 40\n",
"b1 = plt.scatter(X_train[:, 0], X_train[:, 1], s=s, edgecolors='k')\n",
"c = plt.scatter(X_outliers[:, 0], X_outliers[:, 1], s=s,\n",
" edgecolors='k')\n",
"b2 = plt.scatter(X_test[:, 0], X_test[:, 1], s=s,\n",
" edgecolors='k')\n",
"plt.legend([b1,c,b2],[\"positive in train data\", \"outliers in test data\", \"positive in test data\"], loc=\"upper left\")\n",
"plt.axis('tight')\n",
"plt.xlim((-5, 5))\n",
"plt.ylim((-5, 5))\n",
"plt.legend([a.collections[0], b1, b2, c],\n",
" [\"learned frontier\", \"training observations\",\n",
" \"new regular observations\", \"new abnormal observations\"],\n",
" loc=\"upper left\",\n",
" prop=matplotlib.font_manager.FontProperties(size=11))\n",
"plt.show()\n",
"\n",
"y_pred_train = clf.predict(X_train)\n",
"y_pred_test = clf.predict(X_test)\n",
"y_pred_outliers = clf.predict(X_outliers)\n",
"n_error_train = y_pred_train[y_pred_train == -1].size\n",
"n_error_test = y_pred_test[y_pred_test == -1].size\n",
"n_error_outliers = y_pred_outliers[y_pred_outliers == 1].size\n",
"print(\"Percentage of correctly classify positive class in train set: \"+str(1-n_error_train/len(X_train)))\n",
"print(\"Percentage of correctly classify positive class in test set: \"+str(1-n_error_test/len(X_test)))\n",
"print(\"Percentage of correctly classify outliers: \"+str(1-n_error_outliers/len(X_outliers)))\n",
"print(\"Accuracy in the entrie test set: \"+ str(1-(n_error_test+n_error_outliers)/(len(X_test)+len(X_outliers))))"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"OneClassSVM(cache_size=200, coef0=0.0, degree=4, gamma='auto', kernel='poly',\n",
" max_iter=-1, nu=0.1, random_state=None, shrinking=True, tol=0.001,\n",
" verbose=False)"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clf = svm.OneClassSVM(kernel=\"poly\", degree=4, nu=0.1)\n",
"clf.fit(X_train)"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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hdmzZ2Ozec/yU1odzZo147333iu1jsjISA+pgsrM5fZ7fHy8h74OwOeff07dunUvraCC89/9/YvMfxeALicLQ/J5tNlmNTyjct1SqQ371OmvsnLbr4TeP4eQB+YRev8cVm77lanTX73isl944QVAUTrs3r07GRkZPPnkk7z00ksMHz6cvn2VD5Nx48YRGxtLdHQ0Dz30kFsr5ccffyQ2NhZQDFfTpk15/fXX6dGjB506deKXX37x2JdPjRo1eOedd+jduzft2rVjw4YN7n0bNmygc+fO9OjRg3feeafYDE8Wi4WnnnqKqKgooqKimDNnjsf+HTt2EBcXR4cOHXjttdfc22fPnk3nzp3p3r07PXr0ICMjA4C9e/cSFxdHr1696NWrF999951H22fNmsWAAQNYtGgRTZs2JTU11V3m1KlTmT17dol99eKLL3L06FG6d+/OI488Aii68Pl6OCdOnGDw4MHExMTQs2dPvv/++xL7S2o0JBoM3DV5Mo2HDKHZPfcweOJE9znuBNup6vRIleuTSrse22KxsGTJEkLvn4MuQJGD1QWE4t/zSZZ8Oo7n//OMV1XDsjJjxgw+/fRT1qxZ41HOb7/9xooVK8ifsjlt2jS3HO0bb7zB3Llz3S+FgqSlpdGyZUuef/55Vq5cyauvvsqaNWu81m0ymdi4cSN79uxhzJgx9OnTh+TkZP7zn/+wbt066tWr5zUlXT5vvfUWTqeTLVu2kJWVRf/+/WncuDFRUVEAHDt2jC+//BKr1Ur//v1p1aoVd955J/PmzWP//v34+vqSlZWFj48PGRkZPP/883z++edERESQmJhI79692bp1q/u6GjRowIQJEwD4448/WLVqFQ899BB2u501a9a4r7O4vnr11VeZPn06X3/9tdfrefzxxxk+fDjDhg3j6NGjDBw4kO3bt7szRHnrr23btpGWmcmWHTvwyc3FER9fpFyNXZkeqcgThCCvQnYrFZWrQaX12BMSEtD7B7mNej66gFD0foFu8azypk+fPhSch79s2TJ69epFdHQ0q1evLlbR0N/f351oo0WLFpw6darYOvL10Fu0aEFCQgK5ubns3buX2267za31Xpw8Lige+fDhwxFCYDKZuOuuu9zJPAAGDRqETqfD39+f/v37s2vXLkwmE/Xr1+eJJ57giy++wGKxoNPp+PXXX4mPj2fEiBF0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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a22e6cc18>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Percentage of correctly classify positive class in train set: 0.895\n",
"Percentage of correctly classify positive class in test set: 0.8\n",
"Percentage of correctly classify outliers: 0.8\n",
"Accuracy in the entrie test set: 0.8\n"
]
}
],
"source": [
"Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])\n",
"Z = Z.reshape(xx.shape)\n",
"plt.title(\"Outside red circle is extimating outlier region\")\n",
"plt.contourf(xx, yy, Z, levels=[Z.min(), 0], colors=\"gray\")\n",
"a = plt.contour(xx, yy, Z, levels=[0], linewidths=4, colors='red')\n",
"plt.contourf(xx, yy, Z, levels=[0, Z.max()], colors='palevioletred')\n",
"s = 40\n",
"b1 = plt.scatter(X_train[:, 0], X_train[:, 1], s=s, edgecolors='k')\n",
"c = plt.scatter(X_outliers[:, 0], X_outliers[:, 1], s=s,\n",
" edgecolors='k')\n",
"b2 = plt.scatter(X_test[:, 0], X_test[:, 1], s=s,\n",
" edgecolors='k')\n",
"plt.legend([b1,c,b2],[\"positive in train data\", \"outliers in test data\", \"positive in test data\"], loc=\"upper left\")\n",
"plt.axis('tight')\n",
"plt.xlim((-5, 5))\n",
"plt.ylim((-5, 5))\n",
"plt.legend([a.collections[0], b1, b2, c],\n",
" [\"learned frontier\", \"training observations\",\n",
" \"new regular observations\", \"new abnormal observations\"],\n",
" loc=\"upper left\",\n",
" prop=matplotlib.font_manager.FontProperties(size=11))\n",
"plt.show()\n",
"\n",
"y_pred_train = clf.predict(X_train)\n",
"y_pred_test = clf.predict(X_test)\n",
"y_pred_outliers = clf.predict(X_outliers)\n",
"n_error_train = y_pred_train[y_pred_train == -1].size\n",
"n_error_test = y_pred_test[y_pred_test == -1].size\n",
"n_error_outliers = y_pred_outliers[y_pred_outliers == 1].size\n",
"print(\"Percentage of correctly classify positive class in train set: \"+str(1-n_error_train/len(X_train)))\n",
"print(\"Percentage of correctly classify positive class in test set: \"+str(1-n_error_test/len(X_test)))\n",
"print(\"Percentage of correctly classify outliers: \"+str(1-n_error_outliers/len(X_outliers)))\n",
"print(\"Accuracy in the entrie test set: \"+ str(1-(n_error_test+n_error_outliers)/(len(X_test)+len(X_outliers))))"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"OneClassSVM(cache_size=200, coef0=0.0, degree=20, gamma='auto', kernel='poly',\n",
" max_iter=-1, nu=0.1, random_state=None, shrinking=True, tol=0.001,\n",
" verbose=False)"
]
},
"execution_count": 56,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"clf = svm.OneClassSVM(kernel=\"poly\", degree=20, nu=0.1)\n",
"clf.fit(X_train)"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x1a22de6f60>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Percentage of correctly classify positive class in train set: 0.895\n",
"Percentage of correctly classify positive class in test set: 0.8\n",
"Percentage of correctly classify outliers: 0.8\n",
"Accuracy in the entrie test set: 0.8\n"
]
}
],
"source": [
"Z = clf.decision_function(np.c_[xx.ravel(), yy.ravel()])\n",
"Z = Z.reshape(xx.shape)\n",
"plt.title(\"Outside red circle is extimating outlier region\")\n",
"plt.contourf(xx, yy, Z, levels=[Z.min(), 0], colors=\"gray\")\n",
"a = plt.contour(xx, yy, Z, levels=[0], linewidths=4, colors='red')\n",
"plt.contourf(xx, yy, Z, levels=[0, Z.max()], colors='palevioletred')\n",
"s = 40\n",
"b1 = plt.scatter(X_train[:, 0], X_train[:, 1], s=s, edgecolors='k')\n",
"c = plt.scatter(X_outliers[:, 0], X_outliers[:, 1], s=s,\n",
" edgecolors='k')\n",
"b2 = plt.scatter(X_test[:, 0], X_test[:, 1], s=s,\n",
" edgecolors='k')\n",
"plt.legend([b1,c,b2],[\"positive in train data\", \"outliers in test data\", \"positive in test data\"], loc=\"upper left\")\n",
"plt.axis('tight')\n",
"plt.xlim((-5, 5))\n",
"plt.ylim((-5, 5))\n",
"plt.legend([a.collections[0], b1, b2, c],\n",
" [\"learned frontier\", \"training observations\",\n",
" \"new regular observations\", \"new abnormal observations\"],\n",
" loc=\"upper left\",\n",
" prop=matplotlib.font_manager.FontProperties(size=11))\n",
"plt.show()\n",
"\n",
"y_pred_train = clf.predict(X_train)\n",
"y_pred_test = clf.predict(X_test)\n",
"y_pred_outliers = clf.predict(X_outliers)\n",
"n_error_train = y_pred_train[y_pred_train == -1].size\n",
"n_error_test = y_pred_test[y_pred_test == -1].size\n",
"n_error_outliers = y_pred_outliers[y_pred_outliers == 1].size\n",
"print(\"Percentage of correctly classify positive class in train set: \"+str(1-n_error_train/len(X_train)))\n",
"print(\"Percentage of correctly classify positive class in test set: \"+str(1-n_error_test/len(X_test)))\n",
"print(\"Percentage of correctly classify outliers: \"+str(1-n_error_outliers/len(X_outliers)))\n",
"print(\"Accuracy in the entrie test set: \"+ str(1-(n_error_test+n_error_outliers)/(len(X_test)+len(X_outliers))))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"As we can see this kernel is not appropriate with this type of data. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Final remarks\n",
"\n",
"One-class SVM models the distribution of one class only, and therefore offers an inherently different approach to classification problems than standard algorithms. One-class SVM is a viable alternative to standard classification algorithms in the case of gross class imbalance, when only few cases are available from one class.\n",
"When we use this method we have to keep in mind that the hyperparameter $v$, type of kernel and the parameter of the kernel must be carefully choosen (via Cross Validation). Infact by the plots and the classification report we have noticed how the positive class region and the ouliers region changes when only one of these parameter changes. "
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.4"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment