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
>>> 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
Seguidamente, aumentaremos el valor de
>>> 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
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
Aprendizaje basado en árboles de decisión
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.
Maximizar la ganancia de información: sacar el mayor partido de tu inversión
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;
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 (
En este caso,