Árboles de inferencia condicional en programación R

Los árboles de inferencia condicionales son una clase no paramétrica de árboles de decisión y también se conocen como particiones recursivas imparciales. Es un enfoque de partición recursiva para variables de respuesta continuas y multivariadas en un marco de inferencia condicional. Para realizar este enfoque en la programación R , ctree()se usa la función y requiere el partykitpaquete. En este artículo, aprendamos sobre los árboles de inferencia condicional, la sintaxis y su implementación con la ayuda de ejemplos.

Árboles de inferencia condicionales

Los árboles de inferencia condicional son un tipo diferente de árbol de decisión que utiliza la partición recursiva de las variables dependientes en función del valor de las correlaciones. Evita sesgos al igual que otros algoritmos de clasificación y regresión en el aprendizaje automático. Así, evita la vulnerabilidad a los errores haciéndolo más flexible para los problemas en los datos. Los árboles de inferencia condicional usan una prueba de significancia que es una prueba de permutación que selecciona covariable para dividir y recursar la variable. El valor p se calcula en esta prueba. La prueba de significación se ejecuta en cada inicio del algoritmo. Este algoritmo no es bueno para datos con valores faltantes para el aprendizaje.
Algoritmo:

  1. Pruebe la hipótesis nula global entre la entrada aleatoria y las variables de respuesta y seleccione la variable de entrada con el valor p más alto con variable de respuesta.
  2. Realice una división binaria en la variable de entrada seleccionada.
  3. Realice recursivamente los pasos 1 y 2.

¿En qué se diferencian los árboles de inferencia condicional de los árboles de decisión?

Los árboles de inferencia condicional son un algoritmo de clasificación basado en árboles. Es similar a los árboles de decisión, ya que ctree()también realiza la partición recursiva de datos al igual que los árboles de decisión. El único procedimiento que hace que los árboles de inferencia condicional sean diferentes de los árboles de decisión es que los árboles de inferencia condicional utilizan una prueba de significación para seleccionar variables de entrada en lugar de seleccionar la variable que maximiza la medida de información. Por ejemplo, el coeficiente de Gini se utiliza en árboles de decisión tradicionales para seleccionar la variable que maximiza la medida de información.

Implementación en R

Sintaxis:
ctree(fórmula, datos)

Parámetros:
fórmula: representa la fórmula sobre la base de qué modelo se ajustará
datos: representa el marco de datos que contiene las variables en el modelo

Ejemplo 1:

En este ejemplo, usemos el enfoque de regresión de árboles de inferencia de condición en el conjunto de datos de calidad del aire que está presente en el paquete base de R. Tras la ejecución, se determinarán diferentes niveles de ozono en función de las diferentes condiciones ambientales. Esto ayuda a aprender el diferente comportamiento del valor del ozono en diferentes condiciones ambientales.

Paso 1: Instalación de los paquetes necesarios.

# Install the required 
# Package for function
install.packages("partykit")

Paso 2: Cargando el paquete requerido.

# Load the library
library(partykit)

Paso 3: Creación del modelo de regresión del árbol de inferencia de condiciones.

air <- subset(airquality, !is.na(Ozone))
airConInfTree <- ctree(Ozone ~ ., 
                       data = air)

Paso 4: Imprima el modelo de regresión.

# Print model
print(airConInfTree)

Producción:

Model formula:
Ozone ~ Solar.R + Wind + Temp + Month + Day

Fitted party:
[1] root
|   [2] Temp <= 82
|   |   [3] Wind  6.9
|   |   |   [5] Temp  77: 31.143 (n = 21, err = 4620.6)
|   [7] Temp > 82
|   |   [8] Wind  10.3: 48.714 (n = 7, err = 1183.4)

Number of inner nodes:    4
Number of terminal nodes: 5

Paso 4: Trazar el gráfico.

# Output to be present as PNG file
png(file = "conditionalRegression.png")
  
# Plotting graph
plot(airConInfTree)
  
# Save the file
dev.off()

Producción:
output-screen

Explicación:
Después de ejecutarse, el código anterior produce un gráfico de árbol de inferencia condicional que muestra el valor de ozono en forma de diagrama de caja en cada Node en diferentes condiciones ambientales. Como en la imagen de salida anterior, el Node 5 muestra el valor mínimo de ozono. Además, el aprendizaje del comportamiento muestra que Temp6.9 muestra el menor valor de ozono en la calidad del aire.

Ejemplo 2:

En este ejemplo, usemos el enfoque de clasificación de los árboles de inferencia de condiciones en el conjunto de datos del iris presente en el paquete base de R. Después de ejecutar el código, se determinarán diferentes especies de plantas de iris en función de la longitud y el ancho de los pétalos.

Paso 1: Instalación de los paquetes necesarios.

# Install the required 
# Package for function
install.packages("partykit")

Paso 2: Cargando el paquete requerido.

# Load the library
library(partykit)

Paso 3: Creación del modelo de clasificación del árbol de inferencia de condiciones

irisConInfTree <- ctree(Species ~ ., 
                        data = iris)

Paso 4: Imprimir modelo de clasificación

# Print model
print(irisConInfTree)

Producción:

Model formula:
Species ~ Sepal.Length + Sepal.Width + Petal.Length + Petal.Width

Fitted party:
[1] root
|   [2] Petal.Length  1.9
|   |   [4] Petal.Width <= 1.7
|   |   |   [5] Petal.Length  4.8: versicolor (n = 8, err = 50.0%)
|   |   [7] Petal.Width > 1.7: virginica (n = 46, err = 2.2%)

Number of inner nodes:    3
Number of terminal nodes: 4

Paso 4: Trazar el gráfico

# Output to be present as PNG file
png(file = "conditionalClassification.png",
width = 1200, height = 400)
  
# Plotting graph
plot(irisConInfTree)
  
# Save the file
dev.off()

Salida:
output-screen
Explicación:
Después de ejecutar el código anterior, las especies de plantas de iris se clasifican según la longitud y el ancho de los pétalos. Como en el gráfico anterior, las especies de setosa tienen una longitud de pétalos <= 1,9.

Publicación traducida automáticamente

Artículo escrito por utkarsh_kumar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *