{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Podemos clasificar de dos formas, mediante discriminación o asignando probabilidades. Discriminando, asignamos a cada $x$ una de las $K$ clases $C_k$. Por contra, desde un punto de vista probabilístico, lo que haríamos es asignar a cada $x$ la probabilidad de pertenecer a la clase $C_k$. El tipo de clasificación que realicemos es a discreción del usuario y muchas veces dependerá de la distribución de los datos o de los requisitos que nos imponga el cliente. Por ejemplo, hay campeonatos en Kaggle donde lo que se pide es identificar la clase —[Digit Recognizer](http://www.kaggle.com/c/digit-recognizer/data)—, pero también puede ser un requisito el determinar la probabilidad de pertecer a una clase determinada —[Otto Group Product Classification Challenge](http://www.kaggle.com/c/otto-group-product-classification-challenge/details/evaluation).\n", "\n", "En scikit-learn podemos obtener clasificaciones de ambas maneras una vez entrenado el modelo.\n", "\n", "+ `modelo.predict()`, para asignar una categoría.\n", "+ `modelo.predict_proba()`, para determinar la probabilidad de pertenencia.\n", "\n", "Aquí nos centraremos en la parte probabilística, que espero nos dé una visión más ampliar, y a su vez nos servirá para asignar una categoría si definimos un [hiperplano](http://es.wikipedia.org/wiki/Hiperplano).\n", "\n", "Para modelos probabilísticos lo más conveniente, en el caso de contar con dos categorías, es la representación binaria donde contamos con una única variable objetivo $t \\in \\{0,1\\}$ tal que $t=0$ representa la clase $C_1$ y $t=1$ representa la clase $C_2$. Podemos considerar que el valor de $t$ representa la probabilidad de que la clase sea $C_2$, con los valores de probabilidad tomando valores entre $0$ y $1$.\n", "\n", "Veamos un ejemplo." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "from sklearn.linear_model import LogisticRegression\n", "from sklearn.datasets import make_classification\n", "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Con la función `make_classification` de scikit-learn, creamos un conjunto de datos para clasificar. Para empezar vamos a contar con sólo un atributo o *feature* y dos clases o categorías. Los categorías van a estar separadas, pero permitiremos un cierto grado de solapamiento a través del parámetro `class_sep`; así, la clasificación probabilística cobra más sentido." ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": [ "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\n", "MiwAAAAASUVORK5CYII=\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "X, y = make_classification(n_features=1, n_informative=1, n_redundant=0, n_clusters_per_class=1,\n", " class_sep=0.9, random_state=27)\n", "plt.scatter(X, y, alpha=0.4)\n", "plt.xlabel('X')\n", "plt.ylabel('Probabilidad')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "En regresión logística los que vamos a hacer es calcular las probabilidades $p(C_k|x)$. La función logística o [sigmoide](http://es.wikipedia.org/wiki/Función_sigmoide) nos va a permitir definir esas probabilidades y viene definida como\n", "\n", "$$f(x) = \\frac{1}{1 + \\exp(-k(x-x_0))} $$\n", "\n", "Como veremos a continuación, la sigmoide tiene forma de *S* y la función logística juega un papel muy importante en muchos algoritmos de clasificación. Pero no es la única función de ese tipo; también podemos encontrarnos las función arcotangente, tangente hiperbólica o [softmax](http://en.wikipedia.org/wiki/Softmax_function) entre otras.\n", "\n", "Como es costumbre en scikit-learn, primero definimos el modelo que vamos a emplear que será `LogisticRegression`. Lo cargamos con los parámetros por defecto y lo entrenamos." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,\n", " intercept_scaling=1, max_iter=100, multi_class='ovr',\n", " penalty='l2', random_state=None, solver='liblinear', tol=0.0001,\n", " verbose=0)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "lr = LogisticRegression()\n", "lr.fit(X, y)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Por defecto nos va a imprimir los parámetros con los que se ha entrenado el modelo. Una vez entrenado podemos predecir las probabilidades de pertenencia a cada categoría. Para ello, como ya hemos dicho, utilizaremos la función `predict_proba()` que toma como datos de entrada los atributos *X*.\n", "\n", "Lo que nos devuelve la función `predict_proba()` es un array de dimensiones (n atributos, n clases). A nosotros sólo nos va a interesar representar la segunda columna, es decir, $p(C_1|x)$, pues sabemos que $p(C_1|x) = 1 - p(C_0|x)$." ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": [ "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\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(X, y, alpha=0.4, label='real')\n", "plt.plot(np.sort(X, axis=0), lr.predict_proba(np.sort(X, axis=0))[:,1], color='r', label='sigmoide')\n", "plt.legend(loc=2)\n", "plt.xlabel('X')\n", "plt.ylabel('Probabilidad')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Se aprecia claramente la curva en forma de *S* de la función logística que es lo que estábamos buscando. Esto nos dice que un punto con $x=0$ tiene aproximadamente un 50 % de probabilidades de pertenecer a cualquiera de las dos categorías.\n", "\n", "Si a partir de las probabilidades quisiesemos hacer una clasificación por categorías no tendríamos más que definir un valor umbral. Es decir, cuando la función logística asigna una probabilidad mayor a, por ejemplo, 0.5 entonces asignamos esa categoría. Eso es básicamente lo que hace `predict` tal y como podemos ver a continuación." ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": [ "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\n" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.scatter(X, y, alpha=0.4, label='real')\n", "plt.plot(np.sort(X, axis=0), lr.predict(np.sort(X, axis=0)), color='r', label='categoría')\n", "plt.legend(loc=2)\n", "plt.xlabel('X')\n", "plt.ylabel('Probabilidad')" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.4.2" } }, "nbformat": 4, "nbformat_minor": 0 }