Vahid Mirjalili

Python Machine Learning


Скачать книгу

lo cual nos lleva a un límite de decisión más ajustado y lleno de baches. Para conseguir una intuición mejor para , vamos a aplicar una SVM kernelizada de RBF a nuestro conjunto de datos de flor Iris:

      >>> svm = SVC(kernel='rbf', random_state=1, gamma=0.2, C=1.0)

      >>> svm.fit(X_train_std, y_train)

      >>> plot_decision_regions(X_combined_std,

      ... y_combined, classifier=svm,

      ... test_idx=range(105,150))

      >>> plt.xlabel('petal length [standardized]')

      >>> plt.ylabel('petal width [standardized]')

      >>> plt.legend(loc='upper left')

      >>> plt.show()

      Como hemos elegido un valor para relativamente pequeño, el límite de decisión resultante del modelo SVM kernelizado RBF será relativamente suave, como se muestra en la siguiente figura:

      Seguidamente, aumentaremos el valor de y observaremos el efecto en el límite de decisión:

      >>> svm = SVC(kernel='rbf', random_state=1, gamma=100.0, C=1.0)

      >>> svm.fit(X_train_std, y_train)

      >>> plot_decision_regions(X_combined_std,

      ... y_combined, classifier=svm,

      ... test_idx=range(105,150))

      >>> plt.xlabel('petal length [standardized]')

      >>> plt.ylabel('petal width [standardized]')

      >>> plt.legend(loc='upper left')

      >>> plt.show()

      En el gráfico resultante podemos ver que el límite de decisión alrededor de las clases 0 y 1 está mucho más apretado si utilizamos un valor de relativamente grande:

      Aunque el modelo ajusta muy bien el conjunto de datos de entrenamiento, dicho clasificador probablemente tendrá un error de generalización elevado sobre los datos no vistos. Esto demuestra que el parámetro también juega un papel importante en el control del sobreajuste.

      Los árboles de decisión son atractivos modelos si nos preocupamos de la interpretabilidad. Como su nombre sugiere, podemos pensar en este modelo como en una descomposición de nuestros datos mediante la toma de decisiones basada en la formulación de una serie de preguntas.

      Vamos a considerar el siguiente ejemplo en el cual utilizamos un árbol de decisión para decidir sobre la realización de una actividad en un día en concreto:

      Si nos basamos en las características de nuestro conjunto de datos de entrenamiento, el modelo de árbol de decisión aprende una serie de preguntas para deducir las etiquetas de clase de las muestras. Aunque la imagen anterior muestra un concepto de árbol de decisión basado en variables categóricas, este mismo concepto se puede aplicar si nuestras características son números reales, como en el conjunto de datos Iris. Por ejemplo, podríamos simplemente definir un valor de corte a lo largo del eje de características anchura del sépalo y formular una pregunta binaria del tipo: «¿La anchura del sépalo es ≥ 2.8 cm?».

      Utilizando el algoritmo de decisión, empezamos en la raíz del árbol y dividimos los datos en la característica que resulta en la mayor Ganancia de la información (IG, del inglés Information Gain), que explicaremos con más detalle en la siguiente sección. En un proceso iterativo, podemos repetir este procedimiento de división en cada nodo hijo hasta que las hojas sean puras. Esto significa que las muestras de cada nodo pertenecen todas a la misma clase. A la práctica, esto puede producir un árbol muy profundo con muchos nodos, que puede provocar fácilmente sobreajuste. Por lo tanto, una buena opción es podar el árbol ajustando un límite para su profundidad máxima.

      Con el fin de dividir los nodos en las características más informativas, debemos definir una función objetivo que deseamos optimizar mediante el algoritmo de aprendizaje del árbol. En este caso, nuestra función objetivo es maximizar la ganancia de información en cada división, que definimos de la siguiente forma:

      En este caso, f es la característica para realizar la división; y son el conjunto de datos del nodo padre y del nodo hijo j; I es nuestra medida de impureza; es el número total de muestras en el nodo padre; y es el número de muestras en el nodo hijo j. Como podemos ver, la ganancia de información es simplemente la diferencia entre la impureza del nodo padre y la suma de las impurezas del nodo hijo: cuanto menor es la impureza de los nodos hijos, mayor es la ganancia de información. Sin embargo, por simplicidad y para reducir el espacio de búsqueda combinatoria, la mayoría de las librerías (incluida scikit-learn) implementan árboles de decisión binarios. Esto significa que cada nodo padre se divide en dos nodos hijos, y :

      Ahora, las tres medidas de impurezas o criterios de división que normalmente se utilizan en los árboles de decisión binarios son impureza de Gini (), entropía () y error de clasificación (). Vamos a empezar con la definición de entropía para todas las clases no-vacías ():

      En este caso, es la proporción de las muestras que pertenecen a la clase c para un determinado nodo t. La entropía es, por tanto, 0 si todas las muestras en un nodo pertenecen a la misma clase, y la entropía es máxima si tenemos una distribución de clases uniforme. Por ejemplo, en un ajuste de clases binario, la entropía es 0 si o . Si las clases están distribuidas uniformemente con y , la entropía es 1. Así,