Árboles de Decisión / Decision Trees

decision tree
Compartir

Árboles de Decisión / Decision Trees

¿Qué es exactamente un árbol de decisión? ¿Cómo los usamos para ayudarnos a clasificar? ¿Cómo puedo hacer crecer mi propio árbol de decisión? Estas pueden ser algunas de las preguntas que tiene en mente al escuchar el término árbol de decisiones. Con suerte, pronto podrá responder estas preguntas y muchas más. Imagine que es un investigador médico que recopila datos para un estudio. Ya ha recopilado datos sobre un conjunto de pacientes que padecían la misma enfermedad. Durante su curso de tratamiento, cada paciente respondió a uno de dos medicamentos. Los llamamos medicamento A y medicamento B. Parte de su trabajo es construir un modelo para descubrir qué medicamento podría ser apropiado para un futuro paciente con la misma enfermedad. Los conjuntos de características de este conjunto de datos son la edad, el sexo, la presión arterial y el colesterol de nuestro grupo de pacientes y el objetivo es el medicamento al que respondió cada paciente. Es una muestra de clasificadores binarios y puede usar la parte de capacitación del conjunto de datos para construir un árbol de decisión. Luego, úselo para predecir la clase de paciente desconocido. En esencia, llegar a una decisión sobre qué medicamento recetar a un nuevo paciente.

Veamos cómo se construye un árbol de decisión para este conjunto de datos. Los árboles de decisión se construyen dividiendo el conjunto de entrenamiento en nodos distintos, donde un nodo contiene todos o la mayoría de una categoría de datos. Si miramos el diagrama aquí, podemos ver que es un clasificador de pacientes. Como se mencionó, queremos recetar un medicamento a un nuevo paciente, pero la decisión de elegir el medicamento A o B estará influenciada por la situación del paciente. Comenzamos con la edad, que puede ser joven, de mediana edad o mayor. Si el paciente es de mediana edad, definitivamente iremos por el medicamento B. Por otro lado, si tiene un paciente joven o mayor, necesitará más detalles para ayudarnos a determinar qué medicamento recetar. Las variables de decisión adicionales pueden ser cosas como los niveles de colesterol, el género o la presión arterial. Por ejemplo, si el paciente es mujer, recomendaremos el medicamento A, pero si el paciente es hombre, entonces elegiremos el medicamento B.

Como puede ver, los árboles de decisión tratan sobre probar un atributo y ramificar los casos en función del resultado de la prueba. Cada nodo interno corresponde a una prueba, y cada rama corresponde a un resultado de la prueba, y cada nodo de hoja asigna un paciente a una clase. Ahora la pregunta es, ¿cómo podemos construir tal árbol de decisión? Aquí está la forma en que se construye un árbol de decisión. Se puede construir un árbol de decisión considerando los atributos uno por uno. Primero, elija un atributo de nuestro conjunto de datos. Calcule la importancia del atributo en la división de los datos. Luego, divida los datos en función del valor del mejor atributo, luego vaya a cada rama y repítalos para el resto de los atributos. Después de construir este árbol, puede usarlo para predecir la clase de casos desconocidos o, en nuestro caso, el medicamento adecuado para un nuevo paciente en función de sus características.

Se utilizará este algoritmo de clasificación para construir un modelo a partir de datos históricos de pacientes y su respuesta a diferentes medicamentos. Luego, utiliza el árbol de decisión capacitado para predecir la clase de un paciente desconocido o para encontrar un medicamento adecuado para un nuevo paciente.

 

Sobre el DataSet

Imagine que es un investigador médico que recopila datos para un estudio. Ha recopilado datos sobre un conjunto de pacientes, todos los cuales padecían la misma enfermedad. Durante su curso de tratamiento, cada paciente respondió a uno de los 5 medicamentos, Medicamento A, Medicamento B, Medicamento c, Medicamento x e y

El arte de su trabajo es construir un modelo para descubrir qué medicamento podría ser apropiado para un futuro paciente con la misma enfermedad. Los conjuntos de características de este conjunto de datos son la edad, el sexo, la presión arterial y el colesterol de los pacientes, y el objetivo es el medicamento al que respondió cada paciente.

Es una muestra de clasificador binario, y puede usar la parte de entrenamiento del conjunto de datos para construir un árbol de decisión y luego usarlo para predecir la clase de un paciente desconocido o para prescribirlo a un nuevo paciente.

Descargando los datos

Usaremos !wget para descargarlo desde el IBM Object Storage.

Ahora leeremos usando Pandas DataFrame:

Pre-procesando


Usando my_data como Drug.csv declaramos las siguientes variables:

  • X como la Feature Matrix (data of my_data)
  • y como el response vector (target)

Elimine la columna que contiene el nombre del objetivo, ya que no contiene valores numéricos.

Como puede imaginar, algunas características de este conjunto de datos son categóricas, como Sex o BP. Desafortunadamente, los árboles de decisión de Sklearn no manejan variables categóricas. Pero aún podemos convertir estas características en valores numéricos. __pandas.get_dummies () __

Ahora podemos llenar la variable objetivo.

Configurando el árbol de decisiones

Usaremos train/test split en nuestro decision tree.


train_test_split retornará 4 parámetros diferentes. Los nombraremos:
X_trainset, X_testset, y_trainset, y_testset

train_test_split necesitará los parámetros:
X, y, test_size=0.3, y random_state=3.


X y y son los arrays requeridos antes del split, el test_size representa el ratio del testing dataset, y random_state nos asegura que obtenemos los mismos splits.

Modelando

Primero crearemos una instancia del DecisionTreeClassifier llamada drugTree.
Dentro del clasificador especificaremos criterion=”entropy” para que podamos ver la información que gana cada nodo y luego, pasamos los datos de la training feature matrix X_trainset y el training response vector y_trainset .

Predicciones

Hagamos algunas predicciones en el testing dataset y guardemos en una variable llamada predTree.

Imprimamos predTree y y_testset para comparar visualmente los resultados de las predicciones con los valores actuales.

Evaluando

Importemos metrics de sklearn y revisemos el accuracy de nuestro modelo .

DecisionTrees's Accuracy:  0.9833333333333333

Visualización

Veamos nuestro arbol.

 

Para ver el notebook puedes ir al repositorio a través de este enlace. https://github.com/rjromo/rubenjromo.com/blob/master/Decision_Trees_drug_py_v1.ipynb

 


Compartir

Entradas relacionadas

Un comentario sobre «Árboles de Decisión / Decision Trees»

  1. seo

    its very important post to us

Deja tu comentario