Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Machine - Learning - With - R - Second - Edition Espanish
Machine - Learning - With - R - Second - Edition Espanish
[1]
Lazy Learning - Clasificación a partir cercano vecinos
En general, los clasificadores de vecinos más cercanos son muy adecuados para las
tareas clasificación, donde las relaciones entre las características y las clases de
objetivos son numerosos, complicados, o extremadamente difícil de entender, sin
embargo, los elementos de tipo de clase similares tienden a ser bastante
homogénea. Otra forma de expresarlo sería decir que, si un concepto es difícil de
definir, pero sabes que cuando uno lo ve, entonces los vecinos más cercanos
podrían ser apropiadas. Por otro lado, si los datos son ruidosos y por lo tanto no
existe una distinción clara entre los grupos, los algoritmos de vecinos más cercanos
pueden tener dificultades para identificar los límites de clase.
El algoritmo k-NN
El enfoque vecinos más cercana a la clasificación se ejemplifica por el algoritmo de
k-vecinos más cercanos (k-NN). Aunque esto es quizás una de las más simples
algoritmos de aprendizaje automático, todavía se utiliza ampliamente.
[2]
Capítulo 3
fortalezas debilidades
• Sencillo y eficaz • No produce un modelo, lo que limita
• No hace suposiciones sobre la la capacidad de comprender cómo los
distribución de datos subyacente rasgos están relacionados con la clase
El algoritmo K-NN recibe su nombre del hecho de que se utiliza la información sobre k-
vecinos más cercanos es un ejemplo para clasificar ejemplos no etiquetados. La letra k es
una variables término que implica que cualquier número de vecinos más cercanos se
podría utilizar. Después de la elección de k, el algoritmo requiere un entrenamiento
conjunto de datos compuesta de ejemplos que han sido clasificados en varias categorías,
como los marcados por una variable nominal. Entonces, para cada registro sin etiqueta en
el conjunto de datos de prueba, k-NN identifica k registros en los datos de entrenamiento
que son el "más cercano" en similitud. La instancia de prueba sin etiqueta se asigna a la
clase de la mayoría de los k vecinos más próximos.
Para ilustrar este proceso, vamos a revisar la experiencia de cata a ciegas se describe en la
introducción. Supongamos que antes de comer la comida de misterio que había creado una
conjunto de datos en la que se registró nuestras impresiones de una serie de ingredientes que
hemos probado anteriormente. Para simplificar las cosas, nos clasificado sólo dos
características de cada ingrediente.
La primera es una medida del 1 al 10 de cómo crujiente es el ingrediente y el segundo es una
puntuación del 1 al 10 de cuán dulce el sabor de los ingredientes. A continuación, cada
ingrediente etiquetados como uno de los tres tipos de alimentos: frutas, verduras o proteínas.
Las primeras filas de un conjunto de datos tales podrían estructurarse de la siguiente manera:
[3]
Lazy Learning - Clasificación a partir cercano vecinos
¿Se dio cuenta el patrón? tipos similares de alimentos tienden a ser agrupados en
estrecha colaboración. Como se ilustra en el siguiente diagrama, las verduras tienden
a ser crujiente pero no dulce, frutas tienden a ser dulce y crujiente, ya sea o no
crujiente, mientras que las proteínas tienden a ser ni crujiente ni dulce:
apio Zanahoria
lechuga Fruta manzana
Pepino
que crujiente es la comida
alverja verde
Vegetales Pera
nueces
uva
tocino
Proteinas
camarón naranja
plátano
pez
queso
[4]
Capítulo 3
[5]
Lazy Learning - Clasificación a partir cercano vecinos
En una línea similar, podemos calcular la distancia entre el tomate y varios de sus
vecinos más cercanos de la siguiente manera:
[6]
Capítulo 3
Supongamos que tomamos la postura extrema de fijar una muy grande k, tan
grande como el número total de observaciones en los datos de entrenamiento.
Con la formación de todos los casos
representado en la votación final, la clase más común siempre tiene una mayoría de
los votantes. El modelo sería en consecuencia, siempre predecir la clase
mayoritaria, independientemente de los vecinos más cercanos.
En el extremo opuesto, utilizando un único vecino más cercano permite que los datos
o valores atípicos ruidosos influir indebidamente en la clasificación de los ejemplos.
Por ejemplo, supongamos que algunos de los ejemplos de entrenamiento fueron
mislabeled accidentalmente. Cualquier ejemplo sin etiqueta que pasa a ser más
cercana al vecino mal etiquetados se predice que tienen la clase incorrecta, incluso si
otros nueve vecinos más cercanos habrían votado de forma diferente.
Obviamente, el mejor valor de k está en algún lugar entre estos dos extremos.
[7]
Lazy Learning - Clasificación a partir cercano vecinos
[8]
Capítulo 3
Note como la codificación de relleno de las dos categorías variable género (binario)
los resultados en una sola característica nueva denominada masculina. No hay
necesidad de construir una función separada para mujeres; ya que los dos sexos
son excluyentes entre sí, sabiendo uno o el otro es suficiente.
[9]
Lazy Learning - Clasificación a partir cercano vecinos
Sabiendo que caliente y medio son ambos 0 es suficiente para saber que la
temperatura es fría. Nosotros, por lo tanto, no necesitamos una tercera característica
del rubro frío.
[ 10 ]
Capítulo 3
[ 11 ]
Lazy Learning - Clasificación a partir cercano vecinos
Los datos de cáncer de mama incluye 569 ejemplos de biopsias de cáncer, cada uno con
32 características. Una característica es un número de identificación, otro es el
diagnóstico de cáncer, y 30 son las mediciones de laboratorio-numéricos valorado.
El diagnóstico se codifica como "M" para indicar maligno o "B" para indicar
benigna.
Los otros 30 mediciones numéricas comprenden el error medio, estándar, y el peor
(es decir, más grande) valor para 10 características diferentes de los núcleos
celulares digitalizados.
Éstos incluyen:
• Radio
• Textura
• Perímetro
• Zona
• Suavidad
• compacidad
• Concavidad
• puntos cóncavos
• Simetría
• Dimensión fractal
Sobre la base de estos nombres, todas las características que parecen relacionarse
con la forma y tamaño de los núcleos de las células. A menos que sea un oncólogo,
es poco probable que saber cómo cada uno se relaciona con masas benignas o
malignas. Estos patrones se dará a conocer a medida que continuamos en el proceso
de aprendizaje de la máquina.
[ 12 ]
Capítulo 3
El uso del comando str (wbcd), podemos confirmar que los datos se estructura
con 569 ejemplos y 32 características que esperábamos. Las primeras líneas de
salida son los siguientes:
'Hoja.de.datos': 569 obs. of32 variables:
PS carné de identidad: int87139402 8910251 905520 ...
PS diagnóstico: CHR "B" "B" "B" "B" ...
P radius_mean: num 12.3 10.6 11 11.3 15.2 ...
S
P texture_mean: num 12.4 18.9 16,8 13,4 13,2 ...
S
P perimeter_mean: num 78.8 69.3 70.9 73 97.7 ...
S
PS area_mean: num464 346 373 385 712 ...
La primera variable es una variable entera llamada ID. Como esto es simplemente
un identificador único (ID) para cada paciente en los datos, que no proporciona
información útil, y que tendrá que excluirlo del modelo.
[ 13 ]
Lazy Learning - Clasificación a partir cercano vecinos
Ahora, cuando nos fijamos en la salida prop.table (), nos damos cuenta de que
los valores se han etiquetado benignos y malignos, con 62,7 por ciento y 37,3 por
ciento de las masas, respectivamente:
> redonda (prop.table (tabla (wbcd $ diagnóstico)) * 100,
los dígitos = 1) benigna de maligna
62.737.3
[ 14 ]
Capítulo 3
Mirando el lado a lado características, qué nota algo problemático en los valores?
Recordemos que el cálculo de la distancia para k-NN depende en gran medida de
la escala de medición de las características de entrada. Desde suavidad varía de
0,05 a
0.16 y zona oscila desde 143,5 hasta 2501,0, el impacto de la zona que va a ser
mucho más grande que la suavidad en el cálculo de la distancia. Esto podría
causar problemas para nuestro clasificador, por lo que vamos a aplicar la
normalización de reescalar las características de una gama estándar de valores.
[ 15 ]
Lazy Learning - Clasificación a partir cercano vecinos
Para confirmar que la transformación se aplica correctamente, vamos a ver una variable
de
resumen estadístico:
> Resumen (wbcd_n $ area_mean)
Min. primeroQu.MedianMean tercero
Qu.Max. 0.00000.11740.17290.21690.2711
1.0000
Como era de esperar, la variable area_mean, que originalmente varió desde 143,5
hasta 2501,0, ahora va de 0 a 1.
[ 16 ]
Capítulo 3
Si los comandos anteriores son confusas, recordar que datos se extraen de las tramas
de datos utilizando el [fila, columna] sintaxis. Un valor en blanco para el valor de fila
o columna indica que todas las filas o columnas deben ser incluidos. Por lo tanto, la
primera línea de código toma las filas 1 a 469 y todas las columnas, y la segunda
línea de toma 100 filas de 470 a 569 y todas las columnas.
Para cargar el paquete durante cualquier sesión en la que se desea utilizar las
funciones, basta con introducir el comando biblioteca (clase).
[ 17 ]
Lazy Learning - Clasificación a partir cercano vecinos
Ahora tenemos casi todo lo que tenemos que aplicar el algoritmo k-NN a
estos datos. Hemos dividido nuestros datos en conjuntos de datos de entrenamiento
y prueba, cada uno con exactamente las mismas características numéricas. Las
etiquetas de los datos de entrenamiento se almacenan en un factor vector separado.
El parámetro sólo restante es k, que especifica el número de vecinos para incluir en
la votación.
Como nuestros datos de entrenamiento incluye 469 casos, podríamos tratar k = 21,
un número impar más o menos igual a la raíz cuadrada de 469. Con un resultado de
dos categorías, utilizando un número impar elimina la posibilidad de que termina
con un empate en la votación.
[ 18 ]
Capítulo 3
Ahora podemos usar la función knn () para clasificar los datos de prueba:
> wbcd_test_pred <- KNN (tren = wbcd_train, test = wbcd_test,
cl = wbcd_train_labels, k = 21)
[ 19 ]
Lazy Learning - Clasificación a partir cercano vecinos
Los porcentajes de células en la tabla indican la proporción de los valores que caen
en cuatro categorías. La celda superior izquierda indica los resultados negativos
verdaderos. Estos 61 de 100 valores son casos en los que la masa era benigno y el
algoritmo de k-NN correctamente identificados como tal. La celda inferior derecha
indica los verdaderos resultados positivos, donde el clasificador y la etiqueta
determinado clínicamente acuerdo en que la masa es maligna. Un total de 37 de 100
predicciones eran verdaderos positivos.
Las células que caen en la otra diagonal contienen cargos de ejemplos en los que el
enfoque k-NN estaban de acuerdo con la etiqueta cierto. Los dos ejemplos en la celda
inferior izquierda son resultados falsos negativos; en este caso, el valor predicho era
benigno, pero el tumor en realidad era maligno. Los errores en esta dirección podría
ser muy costosa, ya que podría dar lugar a un paciente a creer que ella está libre de
cáncer, pero en realidad, la enfermedad puede seguir extendiéndose. La celda
superior derecha contendría los resultados falsos positivos, si hubiera alguna. Estos
valores se producen cuando el modelo clasifica como una masa maligna, pero en
realidad, era benigno. Aunque este tipo de errores son menos peligrosos que un
resultado falso negativo,
Un total de 2 de cada 100, o 2 por ciento de masas fueron clasificadas incorrectamente por
el k-NN
enfoque. Mientras que el 98 por ciento de precisión parece impresionante para
unas pocas líneas de código R, que puede probar otra iteración del modelo para
ver si podemos mejorar el rendimiento y reducir el número de valores que se han
clasificado de forma incorrecta, particularmente debido a que los errores eran
falsos negativos peligrosos .
[ 20 ]
Capítulo 3
La media de una variable estandarizada z-score debe ser siempre cero, y el rango
debe ser bastante compacto. Una puntuación z mayor que 3 o menos de -3 indica
un valor extremadamente raro. Con esto en mente, la transformación parece haber
funcionado.
Como habíamos hecho antes, tenemos que dividir los datos en conjuntos de
entrenamiento y prueba, y luego clasificar los casos de prueba utilizando la
función knn (). a continuación, vamos a comparar las etiquetas prevé que las
etiquetas reales utilizando cruzado ():
> wbcd_train <- wbcd_z [1: 469],
> Wbcd_test <- wbcd_z [470: 569,]
> wbcd_train_labels <- wbcd [1: 469, 1]
> wbcd_test_labels <- wbcd [470: 569, 1]
[ 21 ]
Lazy Learning - Clasificación a partir cercano vecinos
[ 22 ]
Capítulo 3
Aunque el clasificador no era perfecto, el enfoque 1-NN fue capaz de evitar algunos
de los falsos negativos a expensas de la adición de los falsos positivos. Es importante
tener en cuenta, sin embargo, que no sería prudente para adaptar nuestro enfoque
demasiado de cerca a nuestros datos de prueba; después de todo, es probable que
sea algo diferente de los que se utilizan para medir nuestro desempeño un conjunto
diferente de 100 registros de pacientes.
Resumen
En este capítulo, aprendimos sobre clasificación utilizando k-NN. A diferencia de
muchos algoritmos de clasificación, k-NN no hace ningún aprendizaje. Es
simplemente almacena los datos de entrenamiento pie de la letra. ejemplos de ensayo
sin etiqueta entonces se emparejan a los registros más similares en el conjunto de
entrenamiento usando una función de distancia, y el ejemplo no marcada se le asigna
la etiqueta de sus vecinos.
A pesar del hecho de que k-NN es un algoritmo muy simple, que es capaz de
hacer frente a tareas extremadamente complejas, tales como la identificación de
masas cancerosas. En pocas líneas simples de código R, hemos sido capaces de
identificar correctamente si una masa era maligno o benigno 98 por ciento de las
veces.
En el siguiente capítulo, examinaremos un método de clasificación que utiliza la
probabilidad para estimar la probabilidad de que una observación cae en ciertas
categorías. Será interesante comparar cómo este enfoque se diferencia de k-NN.
Más adelante, en el capítulo 9,
Encontrar grupos de datos - La agrupación con k-medias, Vamos a aprender acerca de un
pariente cercano a k-NN, que utiliza medidas de distancia para una tarea de
aprendizaje completamente diferente.
[ 23 ]
procesos de procesamiento de texto y de limpieza más sofisticados,
tales como la coincidencia de patrones grep y sustitución. Basta con
escribir una función personalizada y envolverlo antes de aplicar a
través de tm_map () como se ha hecho anteriormente.
Nuestra siguiente tarea consiste en eliminar las palabras de relleno tal que, y, sin
embargo, y de nuestros o mensajes SMS. Estos términos son conocidos como
palabras vacías y por lo general se retiran antes de la minería de texto. Esto se debe al
hecho de que a pesar de que aparecen con mucha frecuencia, no proporcionan mucha
información útil para el aprendizaje de la máquina.
[ 25 ]
Probabilística de aprendizaje - Clasificación a partir de Naive Bayes
En lugar de definir una lista de palabras vacías nosotros mismos, vamos a utilizar la
función () stopwords proporcionadas por el paquete tm. Esta función nos permite
acceder a diversos conjuntos de palabras vacías, la mayoría de los idiomas. Por
defecto, se utilizan las palabras vacías idioma inglés comunes. Para ver la lista
predeterminada, escriba las palabras vacías () en la línea de comandos. Para ver los
otros idiomas y las opciones disponibles, escriba? Palabras de detención en la página
de documentación.
Las palabras de parada por sí solos no son una transformación útil. Lo que
necesitamos es una forma de eliminar cualquier palabra que aparecen en la
lista de palabras vacías. La solución está en el
función removeWords (), que es una transformación que se incluye con
el paquete tm. Como lo hemos hecho antes, vamos a utilizar la
función tm_map () para aplicar este mapeo de los datos, que
proporciona la función () palabras vacías como un parámetro para
indicar exactamente las palabras que desea eliminar. El comando
completo es el siguiente:
> sms_corpus_clean <- tm_map
(sms_corpus_clean, removeWords, stopwords
())
Dado que las palabras vacías () simplemente devuelve un vector de palabras vacías,
que habían elegido así, podríamos haber reemplazado con nuestro propio vector de
palabras para ser retirado. De esta manera, se podría ampliar o reducir la lista de
palabras vacías a nuestro gusto o eliminar un conjunto completamente diferente de
las palabras en su totalidad.
Continuando con nuestro proceso de limpieza, también puede eliminar cualquier
puntuacion de los mensajes de texto utilizando la transformación incorporada
removePunctuation ():
> sms_corpus_clean <- tm_map (sms_corpus_clean, removePunctuation)
[ 26 ]
> removePunctuation ( "Hola mundo ...")
[1] "holamundo"
[ 27 ]
Capítulo 4
El paquete SnowballC proporciona una función wordStem (), que para un vector
de caracteres, devuelve el mismo vector de términos en su forma de raíz. Por
ejemplo, la función se deriva correctamente las variantes de la palabra aprender,
como se ha descrito anteriormente:
> biblioteca (SnowballC)
> wordStem (c ( "aprender", "aprender", "aprender", "aprende"))
[1] "Aprender" "aprender" "aprender" "aprender"
[ 28 ]
Probabilística de aprendizaje - Clasificación a partir de Naive Bayes
La siguiente tabla muestra los tres primeros mensajes en el corpus de SMS antes y
después del proceso de limpieza. Los mensajes se han limitado a las palabras más
interesantes, y la puntuacion y las mayúsculas se han eliminado:
Los mensajes SMS antes de la limpieza Los mensajes SMS después de la limpieza
> as.character (sms_corpus [1: > as.character (sms_corpus_clean [1:
3]) 3])
[ 29 ]
Capítulo 4
Cada celda de la matriz almacena un número que indica un recuento de las veces
que la palabra representada por la columna aparece en el documento
representado por la fila. La siguiente ilustración muestra sólo una pequeña
porción de la DTM para el corpus SMS, como la matriz completa tiene 5.559 filas
y más de 7.000 columnas:
El hecho de que cada celda de la tabla es cero implica que ninguna de las
palabras que aparecen en la parte superior de las columnas aparece en ninguno
de los cinco primeros mensajes en el corpus. Esto pone de relieve la razón por la
que esta estructura de datos se llama una matriz dispersa; la gran mayoría de las
células en la matriz se llenan con ceros. Expresado en términos del mundo real,
aunque cada mensaje debe contener al menos una palabra, la probabilidad de
que cualquier palabra que aparece en un mensaje dado es pequeña.
La creación de una matriz dispersa DTM, dado un corpus tm, consiste en un solo
comando:
> sms_dtm <- DocumentTermMatrix (sms_corpus_clean)
[ 30 ]
directamente desde el corpus SMS cruda sin procesar, podemos usar el siguiente
comando:
> sms_dtm2 <- DocumentTermMatrix (sms_corpus, control =
lista (tolower = TRUE,
[ 31 ]
Probabilística de aprendizaje - Clasificación a partir de Naive Bayes
removeNumbers = TRUE,
stopwords = TRUE,
removePunctuation = TRUE,
derivados = TRUE
))
> sms_dtm2
<< DocumentTermMatrix (documentos: 5559, términos:
6909) >> entradas no- / dispersos: 43192/38363939
escasez: 100%
Longitud máxima plazo: 40
Ponderación: frecuencia de los términos (Tf)
La razón de esta discrepancia tiene que ver con una diferencia menor en el orden
de los pasos de preprocesamiento. La función DocumentTermMatrix () aplica sus
funciones de limpieza de las cadenas de texto sólo después de que se han escindido
en palabras. Por lo tanto, se utiliza una función de eliminación de palabras vacías
ligeramente diferente. En consecuencia, algunas palabras se dividen de manera
diferente que cuando se limpian antes de tokenización.
[ 32 ]
Capítulo 4
Las diferencias entre estos dos casos ilustran un principio importante de la limpieza
de datos de texto: el orden de los asuntos de operaciones. Con esto en mente, es
muy importante
a pensar en cómo los primeros pasos en el proceso van a afectar a los posteriores. El
orden que se presenta aquí trabajará en muchos casos, pero cuando el proceso se
adapta más cuidadosamente para conjuntos de datos específicos y casos de uso,
puede requerir una revisión. Por ejemplo, si hay ciertos términos que espera excluir
de la matriz, considere si debe buscar antes o después de detener. Además,
considere cómo la eliminación
de puntuacion-y si la puntuacion se elimina o se sustituye por el espacio en
blanco-afecta a estos pasos.
Por razones de conveniencia más adelante, también es útil para guardar un par de
vectores con etiquetas para cada una de las filas de las matrices de formación y las
pruebas. Estas etiquetas no se almacenan en el DTM, por lo que tendrían que tirar
de ellos a partir de la trama de datos sms_raw el original:
> sms_train_labels <- sms_raw [1: 4169,] Tipo $
> sms_test_labels <- sms_raw [4170: 5559, ] Tipo $
[ 33 ]
Probabilística de aprendizaje - Clasificación a partir de Naive Bayes
Para confirmar que los subconjuntos son representativos del conjunto completo de datos
de SMS, vamos
comparar la proporción de spam en las tramas de datos de prueba de entrenamiento y:
> prop.table (tabla
(sms_train_labels)) hamspam
0.8647158 0.1352842
> prop.table (tabla
(sms_test_labels)) hamspam
0.8683453 0.1316547
Una nube palabra puede ser creado directamente desde un objeto tm corpus utilizando la
sintaxis:
> wordcloud (sms_corpus_clean, min.freq = 50, random.order = FALSE)
Esto creará Una nube de palabras de nuestro corpus SMS preparado. Desde
especificamos random.order = FALSE, la nube será dispuesto en un orden aleatorio
[ 34 ]
con palabras de frecuencia más alta se coloca más cerca del centro. Si no se especifica
random.order, la nube estaría dispuesto al azar por defecto. El parámetro min.freq
especifica el número de veces que una palabra debe aparecer en el cuerpo antes de
que se mostrará en la nube. Desde una frecuencia de 50 es de aproximadamente 1
por ciento de la corpus, esto significa que una palabra se debe encontrar en al menos
1 por ciento de los mensajes SMS para ser incluido en la nube.
[ 35 ]
Capítulo 4
[ 36 ]
mensaje es spam:
[ 37 ]
Probabilística de aprendizaje - Clasificación a partir de Naive Bayes
Ahora tenemos dos tramas de datos, correo no deseado y jamón, cada uno con
una característica de texto que contiene las cadenas de texto primas para mensajes
SMS. La creación de nubes de palabras es tan simple como antes. Esta vez, vamos
a utilizar el parámetro max.words mirar las 40 palabras más comunes en cada
uno de los dos conjuntos. El parámetro de escala nos permite ajustar el tamaño de
fuente mínimo y máximo para las palabras en la nube. Siéntase libre para ajustar
estos parámetros como mejor le parezca. Esto se ilustra en los siguientes
comandos:
> wordcloud (correo basura $ texto, max.words = 40, = escala C (3, 0,5))
> wordcloud (HAM $ texto, max.words = 40, = escala C (3, 0,5))
[ 38 ]
puede ser ligeramente diferente. Ejecución de la función de
wordcloud () varias veces le permite elegir la nube que es el
atractivo visualmente más para fines de presentación.
[ 39 ]
Capítulo 4
Un vistazo a los contenidos del vector nos muestra que hay 1.136 términos que aparecen
en al menos cinco mensajes SMS:
> str (sms_freq_words)
chr [1: 1136] "abiola" "ABL" "forum" "aceptar" el "acceso" "cuenta"
"a través de" "acto" "Activ" ...
Ahora tenemos que filtrar nuestra DTM para incluir sólo los términos que aparecen
en un vector especificado. Como se ha hecho antes, vamos a utilizar el estilo de
trama de datos [fila, columna] operaciones para solicitar porciones específicas del
DTM, y señaló que las columnas se nombran después de las palabras del DTM
contiene. Podemos tomar ventaja de esto para limitar el DTM a palabras específicas.
[ 40 ]
Como queremos que todas las filas, pero sólo las columnas que representan las
palabras que el vector sms_freq_words, nuestros comandos son:
> sms_dtm_freq_train <- sms_dtm_train [, sms_freq_words]
> sms_dtm_freq_test <- sms_dtm_test [, sms_freq_words]
[ 41 ]
Probabilística de aprendizaje - Clasificación a partir de Naive Bayes
Por ahora, algunas de las piezas de la función anterior será familiar. La primera línea
define la función. El ifelse (x> 0, "Sí", "No") declaración transforma los valores de x,
de modo que si el valor es mayor que 0, entonces será reemplazado por "Sí", de lo
contrario, será reemplazado por un " Sin ataduras. Por último, se devuelve el vector x
recién transformado.
Ahora tenemos que aplicar convert_counts () para cada una de las columnas en
nuestra matriz dispersa. Usted puede ser capaz de adivinar la función R para
hacer exactamente esto. La función se llama simplemente aplica () y se utiliza
mucho como lapply () fue utilizado anteriormente.
La función de aplicación () permite una función para ser utilizado en cada una de
las filas o columnas de una matriz. Se utiliza un parámetro de margen para
especificar filas o columnas. Aquí, vamos a utilizar el margen = 2, ya que estamos
interesados en las columnas (margen = 1 se utiliza para las filas). Los comandos
para convertir la formación y matrices de prueba son los siguientes:
> sms_train <- aplicar (sms_dtm_freq_train, MARGEN = 2,
convert_counts)
> sms_test <- aplicar (sms_dtm_freq_test, MARGEN = 2,
convert_counts)
El resultado será dos matrices de tipos de caracteres, cada uno con células que
indican "Sí" o "No" para si la palabra representada por la columna aparece en
cualquier punto en el mensaje representado por la fila.
[ 42 ]
Capítulo 4
[ 43 ]
Probabilística de aprendizaje - Clasificación a partir de Naive Bayes
los sms_classifier objeto contiene ahora una naiveBayes objeto clasificador que se
puede
utilizado para hacer predicciones.
[ 44 ]
Capítulo 4
Por último, vamos a comparar las clases previstas para las clasificaciones reales utilizando
una
tabulación cruzada:
> Cuadro cruzado (sms_test_pred2, sms_test_labels,
prop.chisq = FALSE, prop.t = FALSE, prop.r = FALSE,
DNN = c ( 'predicho', 'real'))
[ 45 ]
Probabilística de aprendizaje - Clasificación a partir de Naive Bayes
Resumen
En este capítulo, hemos aprendido acerca de clasificación utilizando Bayes naive.
Este algoritmo construye tablas de probabilidades que se utilizan para estimar la
probabilidad de que los nuevos ejemplos pertenecen a diferentes clases. Las
probabilidades se calculan utilizando una fórmula conocida como el teorema de
Bayes, que especifica cómo se relacionan eventos dependientes.
Aunque el teorema de Bayes puede ser costoso computacionalmente, una versión
simplificada que hace la llamada hipótesis 'ingenuas' sobre la independencia de las
características es capaz de manejar datos extremadamente grandes.
El clasificador bayesiano se utiliza a menudo para la clasificación de texto. Para
ilustrar su eficacia, se empleó Naive Bayes en una tarea que implica la clasificación
de mensajes SMS de mensajes basura. Preparación de los datos de texto para el
análisis requiere el uso de paquetes R especializados para el procesamiento de
texto y visualización. En última instancia, el modelo fue capaz de clasificar a más
del 97 por ciento de todos los mensajes SMS correctamente como correo no
deseado o jamón.
[ 46 ]
En el siguiente capítulo, examinaremos otros dos métodos de aprendizaje automático.
Cada
realiza la clasificación mediante la partición de datos en grupos de valores similares.
[ 47 ]
Divide y conquistaras -
Clasificación a partir de la
Decisión
árboles y Reglas
Al decidir entre varias ofertas de trabajo con varios niveles de remuneración y
beneficios, muchas personas comienzan por hacer listas de pros y contras, y
eliminan las opciones basadas en reglas simples. Por ejemplo, '' si tengo que viajar
durante más de una hora, estaré
infeliz. '' O '' si hago menos de $ 50k, no será capaz de mantener a mi familia. '' De
esta manera, la decisión compleja y difícil de predecir la propia felicidad futura
puede reducirse a una serie de decisiones simples.
Este capítulo trata sobre los árboles de decisión y los alumnos-dos reglas métodos
de aprendizaje automático, que también toman decisiones complejas a partir de
conjuntos de opciones simples. Estos métodos a continuación, presentan su
conocimiento en forma de estructuras lógicas que se pueden entender sin
conocimiento estadístico. Este aspecto hace que estos modelos particularmente
útiles para la estrategia de negocio y la mejora del proceso.
Al final de este capítulo, usted aprenderá:
[ 48 ]
del mundo real, tales como la identificación de los préstamos bancarios
riesgosos y hongos venenosos
Vamos a empezar por examinar los árboles de decisión, seguido de un vistazo a las
reglas de clasificación. A continuación, vamos a resumir lo que hemos aprendido
mediante la previsualización de los últimos capítulos, que discuten los métodos que
utilizan los árboles y las reglas de base para las técnicas de aprendizaje de máquina
más avanzada.
[ 49 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
[ 50 ]
Capítulo 5
Una gran ventaja de los algoritmos de árbol de decisión es que la estructura de árbol
diagrama de flujo similar no es necesariamente exclusivamente para uso interno del
aprendiz. Después de que el modelo se crea, muchos algoritmos de árboles de decisión de
salida de la estructura resultante en un formato legible por humanos.
Esto proporciona tremenda visión de cómo y por qué el modelo funciona o no
funciona bien para una tarea en particular. Esto también hace que los árboles de
decisión particularmente apropiado para aplicaciones en las que el mecanismo de
clasificación debe ser transparente por razones legales, o en caso de que los
resultados deben ser compartidos con los demás con el fin de informar a las
prácticas de negocio futuro. Con esto en mente, algunos de los usos potenciales
incluyen:
• modelos de calificación de crédito en el que los criterios que causa un
solicitante de ser rechazada necesidad de estar claramente
documentados y libre de prejuicios
• estudios de marketing de comportamiento de los clientes, tales como la
satisfacción o la rotación, que será compartido con los organismos de
gestión o publicitarios
• El diagnóstico de condiciones médicas basadas en mediciones de
laboratorio, síntomas, o la tasa de progresión de la enfermedad
Aunque las aplicaciones anteriores ilustran el valor de los árboles en informar a los
procesos de decisión, esto no quiere decir que su utilidad termina aquí. De hecho, los
árboles de decisión son quizás la técnica de aprendizaje de máquina individual más
ampliamente utilizado, y se pueden aplicar para modelar casi cualquier tipo de
datos, a menudo con excelentes aplicaciones fuera de la caja.
Dicho esto, a pesar de su amplia aplicabilidad, vale la pena señalar algunos de los
escenarios donde los árboles pueden no ser un ajuste ideal. Uno de estos casos
podría ser una tarea en la que los datos tienen un gran número de características
nominales con muchos niveles, o tiene un gran número de funciones numéricas.
Estos casos pueden dar lugar a un gran número de decisiones y un árbol
excesivamente complejo. También pueden contribuir a la tendencia de los árboles
de decisión a overfit de datos, aunque como veremos a continuación, aunque esta
debilidad puede superarse mediante el ajuste de algunos parámetros simples.
Divide y conquistaras
Los árboles de decisión se construyen utilizando una heurística denominada
partición recursiva. Este enfoque también se conoce comúnmente como dividir y
conquistar, ya que divide los datos en subconjuntos, que a su vez se dividen en
varias ocasiones en subconjuntos más pequeños, y así sucesivamente y
así sucesivamente hasta que el proceso se detiene cuando el algoritmo determina los
[ 51 ]
datos dentro del
subconjuntos son suficientemente homogénea, u otro criterio de parada se ha cumplido.
Para ver cómo dividir un conjunto de datos puede crear un árbol de decisión,
imaginar un nodo raíz desnuda que crecerá en un árbol maduro. Al principio, el
nodo raíz representa todo el conjunto de datos, ya que ninguna división ha ocurrido.
A continuación, el algoritmo de árbol de decisión debe elegir una función para
dividir a; Idealmente, se elige la característica más predictivo de la clase de destino.
Los ejemplos son entonces divididos en grupos de acuerdo a los valores distintos de
esta característica, y se forman el primer conjunto de ramas de árboles.
[ 52 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
[ 53 ]
Capítulo 5
[ 54 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
Usted puede haber notado que las líneas diagonales podrían haber
dividido los datos, incluso de forma más limpia. Esta es una limitación
de la representación del conocimiento del árbol de decisión, que utiliza
divisiones paralelas al eje. El hecho de que cada división se considera
una característica a la vez evita que el árbol de decisión que se formen
límites de decisión más complejas. Por ejemplo, una línea diagonal
podría ser creado por una decisión que le pregunta: "es el número de
celebridades es mayor que el presupuesto estimado?" Si es así, entonces
"va a ser un éxito de crítica."
Nuestro modelo para predecir el futuro éxito de las películas se puede representar
en un árbol sencillo, como se muestra en el siguiente diagrama. Para evaluar una
secuencia de comandos, siga las ramas a través de cada decisión hasta que el éxito o
el fracaso de la secuencia de comandos ha sido predicho. En poco tiempo, usted será
capaz de identificar las opciones más prometedoras entre la acumulación de
secuencias de comandos y volver al trabajo más importantes, tales como escribir un
discurso de aceptación premios de la Academia.
[ 55 ]
Capítulo 5
Puesto que los datos del mundo real contiene más de dos características, árboles
de decisión se convierten rápidamente en mucho más complejo que esto, con
muchos más nodos, ramas y hojas. En la siguiente sección, usted aprenderá acerca
de un algoritmo popular para construir modelos de árboles de decisión de forma
automática.
[ 56 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
Para confundir aún más las cosas, una basada en Java de código abierto
muy popular alternativa a C4.5, titulado J48, se incluye en el paquete
de R RWeka.
Debido a las diferencias entre C5.0, C4.5 y J48 son menores, la
principios de este capítulo se aplicarán a cualquiera de estos tres métodos,
y los algoritmos deben ser considerados sinónimos.
fortalezas debilidades
• Un clasificador para todo uso que le • modelos de árboles de decisión
va bien en la mayoría de los son a menudo sesgadas hacia
problemas las divisiones de las
• Altamente proceso de aprendizaje características que tienen un
automático, que puede manejar gran número de niveles
funciones numéricas o nominales, así • Es fácil overfit o underfit el
como los datos que faltan modelo
• Se excluyen las funciones sin • Puede tener problemas para
importancia modelar algunas relaciones
• Puede ser utilizado en pequeñas y debido a la dependencia de las
grandes conjuntos de datos divisiones paralelas al eje
• Pequeños cambios en los datos de
• Los resultados en un modelo que se
entrenamiento pueden dar lugar
pueden interpretar sin una formación
matemática (por árboles a grandes cambios en la lógica de
relativamente pequeños) decisión
• Más eficiente que otros modelos • Los árboles grandes pueden ser
complejos difíciles de interpretar y las
decisiones que toman pueden
parecer contradictorio
Para simplificar las cosas, nuestro ejemplo de árbol de decisión anterior ignoró
las matemáticas involucradas en cómo una máquina podría emplear una
estrategia de divide y vencerás. Vamos a explorar esto con más detalle a
examinar cómo esta heurística funciona en la práctica.
[ 57 ]
Capítulo 5
En esta fórmula, para un segmento dado de datos (S), el término c se refiere al número
de niveles de clase y pi se refiere a la proporción de valores que caen en i nivel de
clase. Por ejemplo, supongamos que tenemos una partición de datos con dos clases:
rojo (60 por ciento) y blanco (40 por ciento). Podemos calcular la entropía de la
siguiente manera:
> -0,60 * log2 (0,60) - 0,40 * log2
(0,40) [1] 0.9709506
Podemos examinar la entropía para todos los posibles arreglos de dos clases. Si
sabemos que la proporción de ejemplos de una clase es x, entonces la proporción en
la otra clase es (1 - x). Utilizando la función de curva (), que puede entonces trazar la
entropía para todos los posibles valores de x:
> Curva (-x * log2 (x) - (1 - x) * log2 (1 - x),
[ 58 ]
col = "red", xlab = "x", ylab = "Entropy", lwd = 4)
[ 59 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
Una complicación es que después de una división, los datos se divide en más de una
partición. Por lo tanto, la función para calcular la entropía (S2) debe tener en cuenta la
entropía total en todas las particiones. Esto se logra mediante un peso de entropía de
cada partición por la proporción de registros que caen en la partición. Esto puede
formularse en una fórmula como:
[ 60 ]
igual a la entropía antes de la división. Esto implicaría que la entropía después de
la división es cero, lo que significa que los resultados de división en grupos
completamente homogéneos.
[ 61 ]
Capítulo 5
[ 62 ]
Los detalles de implementación de las operaciones de poda son muy
técnicos y más allá del alcance de este libro. Para una comparación de
algunos de los disponibles
métodos, consulte Esposito F, Malerba D, Semeraro G. Análisis comparativo
de Métodos para la poda de árboles de decisión. IEEE Transactions on Pattern
El análisis y la inteligencia de máquina. 1997; 19: 476-491.
[ 63 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
Una de las ventajas del algoritmo C5.0 es que está obstinado sobre podar árboles
que se encarga de muchas decisiones automáticamente utilizando valores por
defecto bastante razonables. Su estrategia general es posterior a podar el árbol. En
primer lugar, crece un árbol grande que la overfits
datos de entrenamiento. Más tarde, los nodos y ramas que tienen poco efecto sobre
los errores de clasificación se eliminan. En algunos casos, ramas enteras se mueven
más arriba en el árbol o sustituidas por las decisiones más simples. Estos procesos de
ramas de injerto son conocidos como crianza subárbol y sustitución subárbol,
respectivamente.
Equilibrio sobreajuste y underfitting un árbol de decisión es un poco de un arte,
pero si la exactitud del modelo es vital, puede valer la pena invertir algo de tiempo
con varias opciones de poda para ver si mejora el rendimiento en datos de pruebas.
Como pronto veremos, uno de los puntos fuertes del algoritmo C5.0 es que es muy
fácil de ajustar las opciones de formación.
[ 64 ]
Paso 1 - recogida de datos
La idea detrás de nuestro modelo de crédito es identificar los factores que son
predictivos de un mayor riesgo de incumplimiento. Por lo tanto, es necesario obtener
datos sobre un gran número de préstamos bancarios anteriores y si el préstamo entró
en default, así como información sobre el solicitante.
[ 65 ]
Capítulo 5
[ 66 ]
> mesa (crédito $ checking_balance)
<0 DM> 200 DM 1 - 200 DMunknown
[ 67 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
27463269394
> mesa (crédito $ savings_balance)
<100 DM> 1000 DM100 - 500 DM 500 - 1000 DM
desconocido
6034810363 183
Una alta tasa de incumplimiento es indeseable para un banco, ya que significa que el
banco es probable que se recupere totalmente su inversión. Si tenemos éxito, nuestro
modelo será identificar a los solicitantes que están en alto riesgo de defecto, lo que
permite al banco para rechazar las solicitudes de crédito.
[ 68 ]
Como lo hemos hecho en los capítulos anteriores, vamos a dividir los datos en dos
partes: un conjunto de datos de entrenamiento para construir el árbol de decisión y
un conjunto de datos de prueba para evaluar el desempeño del modelo en nuevos
datos. Vamos a utilizar el 90 por ciento de los datos para la formación y el 10 por
ciento para las pruebas, lo que nos proporcionará 100 registros para simular los
nuevos solicitantes.
[ 69 ]
Capítulo 5
Como capítulos anteriores utilizan los datos que habían sido ordenados en un orden
aleatorio, simplemente dividido el conjunto de datos en dos porciones, teniendo la
primera 90 por ciento de los registros para la formación, y el restante 10 por ciento
para las pruebas. En contraste, el conjunto de datos de crédito no se ordena al azar,
haciendo que el imprudente enfoque anterior. Supongamos que el banco había
ordenado los datos por parte del monto del préstamo, con los préstamos más
grandes en el final del archivo. Si utilizamos el primer 90 por ciento para la
formación y el restante 10 por ciento para las pruebas, que sería la formación de un
modelo sobre sólo los pequeños préstamos y probar el modelo de los grandes
préstamos. Obviamente, esto podría ser problemático.
Vamos a resolver este problema mediante el uso de una muestra aleatoria de los
datos de crédito para la formación. Una muestra aleatoria es simplemente un proceso
que selecciona un subconjunto de registros al azar. En R, la función de ejemplo () se
utiliza para realizar muestreo aleatorio. Sin embargo, antes de poner en acción, una
práctica común consiste en establecer un valor de semilla, que hace que el proceso de
aleatorización para seguir una secuencia que puede ser replicado más tarde si se
desea. Puede parecer que esto contradice el objetivo de generar números aleatorios,
pero hay una buena razón para hacerlo de esta manera. Proporcionar un valor de
inicialización a través de la función set.seed () asegura que si el análisis se repite en el
futuro, se obtiene un resultado idéntico.
[ 70 ]
> str (train_sample)
int [1: 900] 788 409 881 288 937 46 525 887 548 453 ...
[ 71 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
Mediante el uso de este vector para seleccionar las filas de los datos de crédito,
podemos dividirlo en la formación del 90 por ciento y 10 por ciento de prueba
de datos que se desea. Recordemos que el tablero
operador que se utiliza en la selección de los registros de prueba dice R para
seleccionar registros que no están en las filas especificadas; en otras palabras, los
datos de prueba incluye sólo las filas que no están en la muestra de entrenamiento.
> credit_train <- crédito [train_sample,]
> credit_test <- de crédito [-train_sample, ]
Esto parece ser una división bastante uniforme, por lo que ahora puede construir nuestro
árbol de decisión.
[ 72 ]
cómo
finamente ajustar el algoritmo.
[ 73 ]
Capítulo 5
Llamada:
C5.0.default (x = credit_train [-17], y = credit_train $ default)
Árbol de
clasificación Número
de muestras: 900
[ 74 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
Número de predictores:
[ 75 ]
3. Y el historial de crédito es perfecto o muy bueno, entonces clasifican
como "probable que por defecto".
[ 76 ]
Capítulo 5
Los números entre paréntesis indican el número de ejemplos que satisfacen los
criterios de esa decisión, y el número incorrectamente clasificadas por la decisión. Por
ejemplo, en la primera línea, 412/50 indica que de los 412 ejemplos de llegar a la
decisión, 50 se clasificaron incorrectamente como no probable que por defecto. En
otras palabras, 50 solicitantes en realidad en mora, a pesar de la predicción del
modelo de lo contrario.
Árbol de decisión
----------------
tama Errore
ño s 133 <<
56 (14,8%)
[ 77 ]
a los datos de entrenamiento. Por esta razón, la tasa de error reportado en los datos
de entrenamiento puede ser demasiado optimista, y es especialmente importante
para evaluar los árboles de decisión sobre un conjunto de datos de prueba.
[ 78 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
Esto crea un vector de valores pronosticados de clase, que podemos comparar con
los valores reales de clase utilizando la función cruzado () en el paquete gmodels.
Ajuste de los parámetros prop.c y prop.r a FALSE elimina los porcentajes de
columna y fila de la tabla. El porcentaje restante (prop.t) indica la proporción de los
registros en la célula fuera del número total de registros:
> biblioteca (gmodels)
> Cuadro cruzado (credit_test $ defecto, credit_pred,
prop.chisq = FALSE, prop.c = FALSE, prop.r = FALSE,
DNN = c ( 'default real', 'predijo por defecto'))
[ 79 ]
Capítulo 5
[ 80 ]
mejorando la precisión. Vamos a empezar con 10 ensayos, un número que se ha
convertido en el estándar de facto, como la investigación sugiere que esto reduce las
tasas de error en los datos de prueba en un 25 por ciento:
> credit_boost10 <- C5.0 (credit_train [-17], credit_train $ defecto,
ensayos = 10)
[ 81 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
El clasificador hizo 34 errores en 900 ejemplos de entrenamiento para una tasa de error de
3,8 por ciento. Esta es una gran mejora sobre la tasa de error de entrenamiento
13,9 por ciento señalamos antes de añadir impulsar! Sin embargo, queda por ver
si vemos una mejora similar en los datos de prueba. Vamos a ver:
> credit_boost_pred10 <- predecir (credit_boost10, credit_test)
> Cuadro cruzado (credit_test $ defecto, credit_boost_pred10,
prop.chisq = FALSO, prop.c = FALSO, prop.r = FALSO,
DNN = c ( 'default real', 'predijo por defecto'))
[ 82 ]
Capítulo 5
Aquí, hemos reducido la tasa de error total del 27 por ciento antes de aumentar
hasta un 18 por ciento en el modelo impulsado. No parece como una gran
ganancia, pero en realidad es más grande que la reducción del 25 por ciento de lo
que esperábamos. Por otro lado, el modelo todavía no está haciendo bien en la
predicción de los valores predeterminados, la predicción única 20/33 = 61%
correctamente.
La falta de una mejora aún mayor puede ser una función de nuestra relativamente
pequeña
la formación de conjunto de datos, o simplemente puede ser un problema muy difícil de
resolver.
Dicho esto, si se puede añadir impulsar esto fácilmente, ¿por qué no se aplica por
defecto a cada árbol de decisión? La razón es doble. En primer lugar, si la
construcción de un árbol de decisión vez necesita una gran cantidad de tiempo de
cálculo, la construcción de muchos árboles pueden ser computacionalmente
impracticable.
En segundo lugar, si los datos de entrenamiento es muy ruidoso, a continuación,
impulsar podría no resultar en una mejora en absoluto. Sin embargo, si se necesita una
mayor precisión, vale la pena darle una oportunidad.
[ 83 ]
> matrix_dimensions
$ predicho
[1] "no si"
$ real
[1] "no si"
[ 84 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
A continuación, tenemos que asignar la pena para los distintos tipos de errores
mediante el suministro de cuatro valores para llenar la matriz. Puesto que R se llena
una matriz rellenando columnas una por una, de arriba abajo, necesitamos
proporcionar los valores en un orden específico:
Supongamos que creemos que un impago del préstamo le cuesta al banco cuatro veces
más que una llamada perdida
oportunidad. Nuestros valores de penalización podrían entonces ser definidos como:
> error_cost <- matriz (c (0, 1, 4, 0), nrow =
2, dimnames = matrix_dimensions)
[ 85 ]
Capítulo 5
En comparación con nuestro modelo impulsado, esta versión hace más errores
generales: el 37 por ciento de error aquí frente a un 18 por ciento en el caso
impulsado. Sin embargo, los tipos de errores son muy diferentes. Donde los
modelos anteriores incorrectamente clasificadas solamente
42 y 61 por ciento de los valores predeterminados correctamente, en este modelo, 79
por ciento de los valores predeterminados reales se prevé que ser no-valores
predeterminados. Este comercio que resulta en una reducción de falsos negativos en
la costa de aumentar falsos positivos puede ser aceptable si nuestras estimaciones de
costos eran exactos.
[ 86 ]
para la segmentación de clientes
• Encontrar condiciones que preceden a grandes caídas o incrementos en
los precios de las acciones en el mercado de valores
[ 87 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
Por otra parte, los alumnos de reglas ofrecen algunas ventajas sobre los árboles
para algunas tareas. A diferencia de un árbol, que debe ser aplicada de arriba a
abajo a través de una serie
de decisiones, las reglas son las proposiciones que se pueden leer tanto como una
declaración de hecho. Además, por razones que se explicarán más adelante, los
resultados de un alumno regla puede ser más simple, directo y fácil de entender que
un árbol de decisión construido sobre los mismos datos.
Como se verá más adelante en este capítulo, las reglas pueden ser
generados usando árboles de decisión. Así que, ¿por qué molestarse con
un grupo separado de los algoritmos de aprendizaje regla? La razón es
que los árboles de decisión traer un conjunto particular de sesgos a la
tarea de que un alumno regla evita mediante la identificación de las
normas directamente.
Independiente y conquista
algoritmos de aprendizaje de las reglas de clasificación utilizan una heurística
conocida como separados y conquista. El proceso implica la identificación de una
regla que cubre un subconjunto de ejemplos en los datos de entrenamiento, y
después separar esta partición de los datos restantes. A medida que se añaden las
reglas, subconjuntos adicionales de los datos se separan hasta que todo el conjunto
de datos ha sido cubierta y no quedan más ejemplos.
[ 88 ]
Capítulo 5
[ 89 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
Cómo se nota cualquier problema con esta regla? Si usted es un amante de los
animales, se habrá dado cuenta de que las ranas son anfibios, y no mamíferos. Por lo
tanto, nuestra regla tiene que ser un poco más específico. Vamos a seguir detallando
por lo que sugiere que los mamíferos tienen que caminar en la tierra y tienen una
cola:
Una regla adicional se puede definir para separar los murciélagos, el único que queda
mamífero. Por lo tanto, este subconjunto puede ser separado de los otros datos.
Una regla adicional se puede definir para separar los murciélagos, el mamífero
solamente restante. A potenciales murciélagos característica distintiva de los otros
animales restantes serían la presencia de piel. Usando una regla en torno a esta
característica, entonces nos hemos identificado correctamente todos los animales:
[ 90 ]
Capítulo 5
En este punto, ya que todas las instancias de capacitación han sido clasificadas, el
aprendizaje de reglas
proceso se detendría. Hemos aprendido un total de tres reglas:
• Los animales que caminar sobre la tierra y tienen colas son mamíferos
• Si el animal no tiene piel, no es un mamífero
• De lo contrario, el animal es un mamífero
Como las reglas parecen cubrir partes de los datos, separados y conquistar
también se conocen algoritmos de que comprende algoritmos, y las reglas
resultantes se denominan cubriendo
reglas. En la siguiente sección, vamos a aprender cómo se aplican las reglas que
cubren en la práctica mediante el examen de un simple algoritmo de aprendizaje de
reglas. a continuación, vamos a examinar un aprendiz regla más compleja, y se
aplican tanto a un problema del mundo real.
El algoritmo 1R
Supongamos que un programa de televisión tiene una rueda con diez rebanadas de
colores de igual tamaño. Tres de los segmentos eran de color rojo, tres eran azul, y
cuatro eran de raza blanca. Antes de hacer girar la rueda, se le pedirá que elija uno
de estos colores. Cuando la rueda se detenga, si el color se muestra coincide con su
predicción, que va a ganar un premio en metálico de gran tamaño. ¿De qué color
debe escoger?
Si elige blanco, que son, por supuesto, más probabilidades de ganar el premio este
es el color más común en el volante. Obviamente, este programa de juegos es un
poco ridículo, pero demuestra el clasificador más simple, Zeror, un aprendiz regla
de que, literalmente, se entera de reglas (de ahí el nombre). Para todos los ejemplos
sin etiqueta, independientemente de los valores de sus características, se predice la
clase más común.
El algoritmo 1R (una regla o OneR), mejora con el Zeror mediante la selección de
una sola regla. Aunque esto puede parecer demasiado simplista, tiende a funcionar
mejor que se podría esperar. Como se ha demostrado en estudios empíricos, la
exactitud de este algoritmo puede acercarse a la de los algoritmos mucho más
sofisticadas para muchas tareas del mundo real.
[ 91 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
Para una mirada en profundidad a la sorprendente actuación de 1R, ver Holte RC.
reglas de clasificación muy simples funcionan bien en conjuntos de datos más utilizados.
Aprendizaje automático. 1993; 11: 63-91.
fortalezas debilidades
• Genera un único, fácil de entender, • Utiliza sólo una única función
la regla fácilmente legible del • Probablemente demasiado simplista
pulgar
• A menudo realiza sorprendentemente
bien
• Puede servir como punto de
referencia para los algoritmos más
complejos
[ 92 ]
Capítulo 5
Para los viajes de los característica, el conjunto de datos se divide en tres grupos:
aire, tierra y mar. Los animales en los grupos de aire y mar se prevé que sea no-
mamífero, mientras que los animales en el grupo de la tierra se prevé que sean
mamíferos. Esto dio lugar a dos errores: los murciélagos y ranas. La característica de
pieles animales ha dividido en dos grupos. Las personas con piel se prevé que ser
mamíferos, mientras que los que no tienen la piel no se prevé que ser mamíferos. se
contaron tres errores: cerdos, elefantes, y rinocerontes. A medida que los viajes de
los resultados de entidades en un menor número de errores, el algoritmo 1R
devolverá el siguiente "una regla", basada en viajes por:
• Si el animal se desplaza por el aire, no es un mamífero
• Si el animal viaja por tierra, es un mamífero
• Si el animal se desplaza por el mar, no es un mamífero
El algoritmo DESTRIPADOR
algoritmos de aprendizaje de reglas temprana se ven afectadas por un par de
problemas. En primer lugar, eran conocidos por ser lento, lo que les hacía
ineficaz para el creciente número de grandes conjuntos de datos. En segundo
lugar, a menudo eran propensos a ser inexacto en los datos ruidosos.
Un primer paso para la solución de estos problemas se propuso en 1994 por
Johannes Fürnkranz y Gerhard Widmer. Su reducido poda Error (IREP) algoritmo
incremental utiliza una combinación de métodos de pre-poda y post-poda que
crecen reglas muy complejas y podar ellos antes de la separación de los casos del
conjunto de datos completo. Aunque esta estrategia ayudó a que el rendimiento de
los alumnos de reglas, árboles de decisión a menudo todavía se comportaron mejor.
aprendices regla dieron otro paso hacia adelante en 1995 cuando William W. Cohen
introdujo la repetida incremental de poda para cortar la reducción de errores
[ 93 ]
algoritmo (DESTRIPADOR), que mejoró tras IREP para generar reglas que igualar o
superar el rendimiento de los árboles de decisión.
[ 94 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
fortalezas debilidades
• Genera reglas fáciles de • Puede dar lugar a normas que
entender, legibles parecen desafiar el sentido
• Eficiente en conjuntos de datos grandes común o conocimiento experto
y ruidosos
• Por lo general produce un modelo • No es ideal para trabajar con datos
más simple que un árbol de numéricos
decisión comparables • no podría llevar a cabo, así como
los modelos más complejos
1. Crecer
2. Ciruela pasa
3. Optimizar
La fase de crecimiento utiliza la técnica separada y conquista añadir avidez
condiciones a una regla perfectamente hasta que se clasifica un subconjunto de datos
o se queda sin atributos para la división. Al igual que en los árboles de decisión, el
criterio de ganancia de información se utiliza para identificar el siguiente atributo de
división. Al aumentar la especificidad de una regla ya no reduce la entropía, la regla
se poda inmediatamente. Pasos uno y dos se repiten hasta que se alcanza un criterio
de parada, punto en el cual se optimiza todo el conjunto de reglas usando una
variedad de heurística.
El algoritmo Ripper puede crear reglas mucho más complejo que el algoritmo
puede 1R, al igual que en se puede considerar más de una función. Esto significa
que puede crear reglas con varios antecedentes tales como "si un animal moscas
y tiene piel, entonces es un mamífero." Esto mejora la capacidad del algoritmo
[ 95 ]
para modelar datos complejos, pero al igual que los árboles de decisión, significa
que las reglas pueden convertirse rápidamente en más difícil
para comprender.
[ 96 ]
Capítulo 5
Siguiendo los caminos desde el nodo raíz hasta cada hoja, las reglas serían:
[ 97 ]
árboles de decisión sesga los resultados de manera diferente a la de un aprendiz
regla. Por otra parte, a veces es más eficiente computacionalmente para generar
reglas de árboles.
[ 98 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
[ 99 ]
Capítulo 5
Por el contrario, un árbol de decisión construido sobre los mismos datos podría haber
llegado con cuatro
reglas para lograr la misma clasificación perfecta:
• Si un animal camina sobre la tierra y tiene piel, entonces es un mamífero
(osos, gatos, perros, elefantes, cerdos, conejos, ratas, rinocerontes)
• Si un animal camina sobre la tierra y no tiene piel, entonces no
es un mamífero (ranas)
• Si el animal no caminar en la tierra y tiene la piel, entonces es un mamífero
(murciélagos)
• Si el animal no caminar en la tierra y no tiene piel, entonces no es un
mamífero (pájaros, insectos, tiburones, peces, anguilas)
[ 100 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
El resultado diferente a través de estos dos enfoques tiene que ver con lo que
ocurre con las ranas después de haber sido separados por la "caminar en la
tierra" decisión. Donde el alumno regla permite ranas para ser reconquistada
por la decisión "no tiene la piel", el árbol de decisión no puede modificar las
particiones existentes, y por lo tanto debe colocar la rana en su propia regla.
Por un lado, porque los estudiantes pueden examinar de nuevo la regla de los
casos que fueron considerados pero en última instancia no están cubiertos como
parte de las reglas anteriores, los alumnos de reglas a menudo se encuentran un
conjunto más parsimoniosa de reglas que los generados a partir de árboles de
decisión. En el otro
parte, esta reutilización de los datos significa que el coste computacional de los
alumnos de reglas puede ser un poco más alto que para los árboles de decisión.
Ejemplo - la identificación de
hongos venenosos con los
alumnos de reglas
Cada año, muchas personas se enferman y que a veces incluso mueren a causa
de la ingestión de setas venenosas. Dado que muchos hongos son muy similares
entre sí en apariencia, recolectores de setas en ocasiones incluso experimentados
son envenenados.
A diferencia de la identificación de plantas dañinas tales como el roble venenoso
o la hiedra venenosa, no hay normas claras tales como "hojas de tres, que sean"
para identificar si un hongo silvestre es venenoso o comestible. Para complicar
las cosas, muchas reglas tradicionales, tales como "setas venenosas son de
colores brillantes," proporcionar información peligrosa o engañosa. Si las reglas
simples, claros, coherentes y estaban disponibles para identificar las setas
venenosas, que podría salvar la vida de los recolectores.
Debido a que uno de los puntos fuertes de los algoritmos de aprendizaje de reglas es
el hecho de que generan fácil de entender las reglas, se parecen como un ajuste
apropiado para esta tarea de clasificación. Sin embargo, las reglas sólo serán tan
útiles, ya que son precisos.
[ 101 ]
Capítulo 5
La salida de las notas de comando str (hongos) que contienen los datos de 8.124
observaciones de 23 variables como el diccionario de datos había descrito.
Mientras que la mayor parte de la salida str () no es nada especial, es una
característica digna de mención. ¿Notas algo particular en la variable veil_type en
la siguiente línea?
$ Veil_type: Factor w / 1 nivel "parcial": 1 1 1 1 1 1 ...
Si usted piensa que es extraño que un factor tiene un solo nivel, estás en lo correcto.
El diccionario de datos enumera dos niveles para esta función: parcial y universal.
Sin embargo, todos los ejemplos de nuestros datos se clasifican como parcial. Es
probable que este elemento de datos se codifica de alguna manera incorrecta. En
cualquier caso, ya que el tipo velo no varía a través de muestras, que no proporciona
ninguna información útil para la predicción. Vamos a caer esta variable a partir de
nuestro análisis con el siguiente comando:
> setas $ veil_type <- NULL
[ 102 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
Alrededor del 52 por ciento de las muestras de hongos (N = 4208) son comestibles,
mientras que el 48 por ciento (N = 3916) son venenosas.
A los efectos de este experimento, vamos a considerar las 8.214 muestras en los
datos de hongo a ser un conjunto exhaustivo de todas las posibles setas. Se trata
de un supuesto importante, ya que significa que no es necesario para mantener
algunas muestras de los datos de entrenamiento para realizar pruebas. No
estamos tratando de desarrollar
reglas que cubren los tipos de setas imprevistos; simplemente estamos tratando de
encontrar reglas que describen con precisión el conjunto completo de tipos de
hongos conocidos. Por lo tanto, podemos construir y probar el modelo en los mismos
datos.
[ 103 ]
Capítulo 5
[ 104 ]
algunas de estas características en los capítulos posteriores. Sin
embargo, si estás ansioso por un adelanto, no dude en leer la
documentación utilizando el comando? Fórmula.
[ 105 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
El uso del tipo ~. fórmula, vamos a permitir que nuestro alumno regla
primera OneR () para tener en cuenta todas las posibles características en los
datos de hongos, mientras que la construcción de sus reglas para predecir el
tipo:
> mushroom_1R <- OneR (. ~ tipo, los datos = setas)
Para examinar las reglas que ha creado, podemos escribir el nombre del objeto
clasificador, en este
caso, mushroom_1R:
> mushroom_1R
olor:
almendros> anise-
comestible> creosota
comestible>
fishy-
venenoso> foul-
venenoso> musty-
venenoso> ninguno-
venenoso> pungent-
comestible> spicy-
venenoso>
venenoso
(8004/8124 instancias correcta)
[ 106 ]
Capítulo 5
[ 107 ]
peligroso!
[ 108 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
Teniendo en cuenta que el alumno utiliza sólo una única función, lo hizo bastante
bien; si uno evita olores poco apetecibles cuando la recolección de setas, que casi
se
evitar un viaje al hospital. Dicho esto, cerca no es suficiente cuando las vidas están
involucrados, por no hablar de la editorial guía de campo podría no ser feliz con la
perspectiva de una demanda cuando sus lectores se enferman. Vamos a ver si
podemos añadir algunas más reglas y desarrollar una mejor clasificador.
[ 109 ]
comparación de un número de diferentes modelos muy simples.
[ 110 ]
Capítulo 5
Vamos a entrenar al alumno JRip () regla como lo hicimos con OneR (), lo que le
permite elegir las reglas de todas las funciones disponibles:
> mushroom_JRip <- JRip (. ~ tipo, los datos = setas)
JRIP reglas:
===========
(Olor = falta) => type = venenoso (2160,0 / 0,0)
(Gill_size = estrecha) y (gill_color = buff) => type = venenoso
(1152,0 / 0,0)
(Gill_size = estrecha) y (olor acre =) => type = venenoso (256,0 / 0,0)
(olor = creosota) => type = venenoso (192,0 / 0,0)
(Spore_print_color = verde) => type = venenoso (72,0 / 0,0)
(Stalk_surface_below_ring = escamosa) y (stalk_surface_above_ring = sedoso)
=> Type = venenoso (68,0 / 0,0)
(Hábitat = hojas) y (cap_color = blanco) => type = venenoso (8,0 / 0,0)
(stalk_color_above_ring = amarillo) => type = venenoso (8,0 / 0,0)
=> Type = comestible
(4208,0 / 0,0) Número de
Reglas: 9
El JRip () clasificador aprendió un total de nueve reglas partir de los datos de setas.
Una manera fácil de leer estas reglas es pensar en ellos como una lista de
declaraciones si-si no, similar a la lógica de programación. Las tres primeras reglas
podrían expresarse como:
• Si el olor es repugnante, entonces el tipo de seta es venenosa
• Si el tamaño de Gill es estrecha y el color de las laminillas es piel de ante,
entonces el tipo de hongo es venenoso
• Si el tamaño de Gill es estrecha y el olor es acre, entonces el tipo de
hongo es venenoso
Por último, la novena regla implica que cualquier muestra de setas que no estaba
cubierto por las ocho reglas anteriores es comestible. Siguiendo el ejemplo de nuestra
lógica de programación, esto puede leerse como:
[ 111 ]
Divide y vencerás - Clasificación a partir de árboles de decisión y Reglas
Los números al lado de cada regla indican el número de casos cubiertos por la
regla y un recuento de casos mal clasificados. En particular, no hubo muestras de
hongos mal clasificadas utilizando estas nueve reglas. Como resultado, el número
de casos cubiertos por la última regla es exactamente igual al número de hongos
comestibles en los datos (N = 4208).
La siguiente figura proporciona una ilustración aproximada de cómo las reglas se
aplican a los datos de hongos. Si usted se imagina todo dentro del óvalo como
todas las especies de setas, el alumno identificado características de reglas o
conjuntos de elementos, que separan segmentos homogéneos desde el grupo más
grande. En primer lugar, el algoritmo encuentra un gran grupo de hongos
venenosos que se distinguen únicamente por su mal olor. A continuación, se
encontraron grupos más pequeños y específicos de setas venenosas. Al identificar
cubriendo reglas para cada una de las variedades de hongos venenosos, todos los
champiñones restantes resultaron ser comestible. Gracias a la madre naturaleza,
cada variedad
de setas era lo suficientemente único que el clasificador fue capaz de lograr
100 por ciento de exactitud.
[ 112 ]
Capítulo 5
Resumen
En este capítulo se cubrió dos métodos de clasificación que usan los llamados
algoritmos "codiciosos" para dividir los datos de acuerdo con valores de
características. Los árboles de decisión utilizan una estrategia de divide y vencerás
para crear estructuras de diagrama de flujo similar, mientras que los alumnos de
reglas separan y conquistar datos para identificar las reglas lógicas si-si no.
Ambos métodos producen modelos que se pueden interpretar sin un fondo
estadístico.
Un algoritmo de árbol de decisión popular y es altamente configurable C5.0. Se
utilizó el algoritmo C5.0 para crear un árbol para predecir si un solicitante de
préstamo será por defecto. Uso de las opciones para impulsar y errores sensibles a
los costes, hemos sido capaces de mejorar nuestra precisión y evitar préstamos
arriesgados que costaría el banco más dinero.
También utilizamos dos aprendices de reglas, 1R y extractor, para desarrollar reglas
para identificar los hongos venenosos. El algoritmo 1R utiliza una única función
para lograr 99 por ciento de exactitud en la identificación de muestras de hongos
potencialmente fatales. Por otro lado, el conjunto de nueve reglas generadas por el
algoritmo más sofisticado DESTRIPADOR identificó correctamente la
comestibilidad de cada hongo.
En este capítulo sólo se rascó la superficie de cómo se pueden utilizar los árboles
y las reglas. En el capítulo 6, la previsión de datos numéricos - Los métodos de
regresión, vamos a aprender las técnicas conocidas como árboles de regresión y
árboles modelo, que utilizan árboles de decisión para la predicción numérica en
lugar de la clasificación. En el capítulo 11, Mejora del rendimiento del modelo,
vamos a descubrir cómo el desempeño de los árboles de decisión se puede
mejorar
agruparlos en un modelo conocido como un bosque aleatorio. En el capítulo 8,
Encontrar patrones - Análisis de Market Basket las reglas de asociación, vamos a
ver cómo pueden normas-reglas-usarse una asociación relativa de clasificación para
identificar grupos de artículos en los datos transaccionales.
[ 113 ]
La previsión de datos
numéricos - Los
métodos de
regresión
Las relaciones matemáticas nos ayudan a comprender muchos aspectos de la vida
cotidiana. Por ejemplo, el peso corporal es una función de la propia ingesta de
calorías, el ingreso es a menudo relacionada
a la educación y experiencia de trabajo, y las encuestas nos ayudan a estimar las
probabilidades de un candidato presidencial de ser reelegido.
Cuando estas relaciones se expresan con números exactos, ganamos mayor
claridad. Por ejemplo, un adicional de 250 kilocalorías consumidas diariamente
pueden resultar en casi un kilogramo de aumento de peso por mes; cada año de
experiencia de trabajo puede ser un valor adicional de $ 1,000 en salario anual; y
un presidente es más probable que sea
reelegido cuando la economía es fuerte. Obviamente, estas ecuaciones no lo hacen a la
perfección
adaptarse a cada situación, pero se espera que sean razonablemente correcta, en
promedio.
En este capítulo se extiende nuestra caja de herramientas de aprendizaje automático
por ir más allá de los métodos de clasificación cubiertas previamente y la
introducción de técnicas para estimar las relaciones entre los datos numéricos. Al
examinar varias tareas de predicción numérica del mundo real, usted aprenderá:
• Los principios estadísticos básicos utilizados en la regresión, una técnica que
modela el tamaño y la fuerza de las relaciones numéricas
[ 171 ]
• Cómo preparar los datos para el análisis de regresión, y estimación e
interpretar un modelo de regresión
• Un par de técnicas híbridas conocidos como árboles de regresión y
árboles modelo, que se adaptan clasificadores árbol de decisión para
tareas de predicción numéricos
[ 172 ]
La previsión de datos numéricos - Regresión métodos
comprensión de regresión
Regresión se refiere a la especificación de la relación entre una variable única
numérico dependiente (el valor a ser predicho) y uno o más numérico
variables independientes (los predictores). Como su nombre lo indica, la variable
dependiente depende del valor de la variable independiente o variables. Las formas
más simples de regresión asumen que la relación entre las variables independientes
y dependientes sigue una línea recta.
Se puede recordar de álgebra básica que las líneas se pueden definir de una forma
pendiente-intersección similar a y = a + bx. De esta forma, la letra Y indica la
variable dependiente y x indica la variable independiente. El término pendiente b
especifica cuánto
la línea se eleva para cada aumento de x. Los valores positivos definen líneas que
pendiente hacia arriba mientras que los valores negativos definen líneas que se
inclinan hacia abajo. El término una se conoce como el punto de intersección ya
que especifica el punto en el que la línea cruza, o intercepta, el eje y vertical. Se
indica el valor de y cuando x = 0.
[ 173 ]
Capítulo 6
[ 175 ]
La previsión de datos numéricos - Regresión métodos
Los ingenieros de cohetes casi seguro que sabían que las bajas temperaturas
podrían hacer que los componentes más frágiles y menos capaces de sellar
[ 176 ]
adecuadamente, lo que resultaría en una mayor probabilidad de una fuga de
combustible peligroso. Sin embargo, dada la presión política para
continuar con la puesta en marcha, se necesitan datos para apoyar esta hipótesis.
Un modelo de regresión que demostró una relación entre la temperatura y el
fracaso junta tórica, y podría pronosticar la posibilidad de fracaso debido a la
temperatura esperada en el lanzamiento, podría haber sido muy útil.
[ 177 ]
Capítulo 6
Para construir el modelo de regresión, los científicos podrían haber utilizado los
datos de la temperatura y la puesta en marcha componente angustias de 23
lanzamientos exitosos de transporte anteriores. Un componente de socorro indica
uno de los dos tipos de problemas. El primer problema, denominado erosión, se
produce cuando el calor excesivo quema hasta la junta tórica. El segundo
problema,
llamado blowby, se produce cuando gases calientes se filtran a través de o "golpe por"
una junta tórica de mal sellado. Dado que el servicio de transporte tiene un total de
seis juntas tóricas primarios, hasta seis angustias puede ocurrir por vuelo. Aunque el
cohete puede sobrevivir uno o más eventos de socorro, o no, con tan sólo una, cada
una dificultad adicional aumenta la probabilidad de un fallo catastrófico.
El siguiente diagrama de dispersión muestra una gráfica de O-anillo primario
angustias detectada para los 23 lanzamientos anteriores, en comparación con la
temperatura en el lanzamiento:
Además, el lanzamiento más frío (53º F) tenía dos eventos de socorro, un nivel
que sólo se había alcanzado en otro lanzamiento. Con esta información en mano,
el hecho de que el Challenger fue programado para ser lanzado a una
temperatura de más de 20 grados
más frío parece preocupante. Pero exactamente cuán preocupados deberíamos estar? Para
responder a esta
pregunta, podemos convertir a la regresión lineal simple.
Un modelo de regresión lineal simple define la relación entre una variable
dependiente y una sola variable predictor independiente usando una línea
definida por una ecuación de la siguiente forma:
[ 178 ]
La previsión de datos numéricos - Regresión métodos
No se alarme por los caracteres griegos, esta ecuación todavía se puede entender
usando la forma pendiente-intersección descrito previamente. La intersección, α
(alfa), describe dónde la línea cruza el eje y, mientras que la pendiente, β (beta),
describe el cambio en
y dado un aumento de x. Para los datos de lanzamiento del transbordador, la
pendiente nos diría la reducción prevista en el número de fallos tóricas para
cada grado que la temperatura aumenta de lanzamiento.
[ 180 ]
Capítulo 6
Observe que la línea no pasa por cada punto de datos con exactitud. En lugar
de ello, se corta a través de los datos algo de manera uniforme, con algunas
predicciones menor o mayor que
la línea. En la siguiente sección, vamos a aprender acerca de por qué se eligió esta línea en
particular.
En lenguaje llano, esta ecuación define e (el error) como la diferencia entre el valor
de y real y el valor previsto. Los valores de error se elevan al cuadrado y se suman
en todos los puntos en los datos.
[ 182 ]
La previsión de datos numéricos - Regresión métodos
Aunque la prueba está más allá del alcance de este libro, se puede demostrar
utilizando el cálculo de que el valor de b que se traduce en un mínimo error
cuadrado es:
[ 183 ]
Capítulo 6
correlaciones
La correlación entre dos variables es un número que indica cómo de cerca su
relación sigue una línea recta. Sin calificación adicional, la correlación se refiere
típicamente a coeficiente de correlación de Pearson, que fue desarrollado por el
matemático del siglo 20 Karl Pearson. La correlación oscila entre -1 y +1. Los valores
extremos indican una relación perfectamente lineal, mientras que una correlación
cercano a cero indica la ausencia de una relación lineal.
[ 184 ]
La previsión de datos numéricos - Regresión métodos
[ 186 ]
Capítulo 6
fortalezas debilidades
• Con mucho, el método más • Hace fuertes suposiciones acerca de
común para el modelado de datos los datos
numéricos • La forma del modelo debe ser
• Puede ser adaptado para modelar especificado por el usuario con
casi cualquier tarea de modelado antelación
• Proporciona estimaciones tanto de la • No maneja los datos que faltaban
fuerza y el tamaño de las relaciones • Sólo funciona con características
entre las características y los numéricas, por lo que los datos
resultados categóricos requiere un
procesamiento adicional
• Requiere un cierto conocimiento
de las estadísticas para
comprender el modelo
[ 187 ]
La previsión de datos numéricos - Regresión métodos
Con el fin de estimar los valores de los parámetros de regresión, cada valor
observado de la variable dependiente y debe estar relacionado con los valores
observados de las variables x independientes usando la ecuación de regresión en la
forma anterior. La siguiente figura ilustra esta estructura:
[ 188 ]
Capítulo 6
La variable dependiente es ahora un vector, Y, con una fila para cada ejemplo. Las
variables independientes se han combinado en una matriz, X, con una columna
para cada característica más una columna adicional de '1' valores para el término de
intersección. Cada columna tiene una fila para cada ejemplo. Los coeficientes de
regresión beta y errores residuales ε son también ahora vectores.
Ahora el objetivo es resolver para β, el vector de coeficientes de regresión que
minimiza la suma de los errores al cuadrado entre los valores y pronosticados y los
reales. Encontrar la solución óptima requiere el uso de álgebra de matrices; Por lo
tanto, la derivación merece una atención más cuidadosa que puede ser
proporcionada en este texto. Sin embargo, si usted está dispuesto a confiar en el
trabajo de los demás, la mejor estimación del vector β puede calcularse como:
[ 189 ]
La previsión de datos numéricos - Regresión métodos
La función de registro () creado aquí usa varios comandos R que no hemos utilizado
anteriormente. Primero, ya que vamos a utilizar la función con conjuntos de
columnas de una trama de datos, la función as.matrix () se utiliza para convertir la
trama de datos en forma de matriz. A continuación, la función cbind () se utiliza para
enlazar una columna adicional sobre la matriz x; el comando Intercepción = 1
instruye R para nombrar el nuevo Intercepción de columna y para llenar la columna
con la repetición de 1 valores. Luego, una serie de operaciones de la matriz se
realizan en la x y objetos Y:
• resolver() toma la inversa de una matriz
• t () se utiliza para transponer una matriz
• % *% multiplica dos matrices
Estos valores coinciden exactamente con nuestro resultado previo, por lo que
vamos a utilizar la función de construir un modelo de regresión múltiple.
Vamos a aplicar es igual que antes, pero esta vez la especificación de tres
columnas de datos en lugar de sólo uno:
> reg (y = lanzamiento $ distress_ct, x = lanzamiento [2: 4])
estimar
Interceptar 3,527093383
temperatura -0.051385940
field_check_pressure 0,001757009
flight_num 0,014292843
[ 192 ]
La previsión de datos numéricos - Regresión métodos
El objetivo de este análisis es el uso de los datos del paciente para estimar el promedio
médica
cuidar los gastos para tales segmentos de la población. Estas estimaciones se
pueden utilizar para crear tablas actuariales que fijan el precio de las primas
anuales mayores o menores, dependiendo de los costos de tratamiento esperados.
[ 193 ]
Capítulo 6
La función str () confirma que los datos se formatea como habíamos esperado:
> str (seguro)
[ 194 ]
'Hoja.de.datos': 1338 obs. of7 variables:
PS años: int19 18 28 33 32 31 46 37 37 60 ...
PS Sexo: Factor w / 2 niveles "hembra", "macho": 1 2 2 2 2 1 ...
PS IMC: num27.9 33,8 33 22,7 28,9 25,7 33,4 27,7 ...
$ hijos: INT0 1 3 0 0 0 1 3 2 0 ...
[ 195 ]
La previsión de datos numéricos - Regresión métodos
variable dependiente de nuestro modelo es los gastos, que mide los costos médicos
por cada persona a cargo del plan de seguro para el año. Antes de la construcción de
un modelo de regresión, a menudo es útil para comprobar la normalidad. Aunque
regresión lineal no requiere estrictamente una variable dependiente normalmente
distribuidos, el modelo a menudo se adapta mejor cuando esto es cierto. Vamos a
echar un vistazo a las estadísticas de resumen:
> Resumen (gastos de seguro de $)
Min. primeroQu.MedianMean
tercero Qu. Max. 1122474093821327016640
63770
Debido a que el valor medio es mayor que la mediana, esto implica que la distribución de
gastos de seguro es sesgada de derecha. Podemos confirmar esto visualmente utilizando
un histograma:
> hist (gastos de seguro de $)
[ 196 ]
Capítulo 6
Como era de esperar, la figura muestra una distribución sesgada de derecha. También
muestra que la
mayoría de la gente en nuestros datos tienen gastos médicos anuales entre cero y
$ 15.000, a pesar del hecho de que la cola de la distribución se extiende mucho
más allá de estos picos. Aunque esta distribución no es ideal para una regresión
lineal, a sabiendas de esta debilidad antes de tiempo puede ayudar a diseñar un
mejor modelo de ajuste más adelante.
Antes de abordar esta cuestión, es otro problema que nos ocupa. Los modelos de
regresión requerir que cada función es numérico, sin embargo, tenemos tres
características de tipo factor en nuestra trama de datos. Por ejemplo, la variable sexo
se divide en niveles masculinos y femeninos, mientras fumador está dividido en sí y
no. Desde la salida de resumen (), sabemos que la variable región tiene cuatro
niveles, pero tenemos que echar un vistazo más de cerca para ver cómo se
distribuyen:
> mesa ($ región de seguros)
sureste al noroeste noreste suroeste
324325364325
Aquí, vemos que los datos se ha dividido casi por igual entre las cuatro
regiones geográficas. Vamos a ver cómo la función de regresión lineal de R
se encarga de estas variables de factor poco.
[ 197 ]
La previsión de datos numéricos - Regresión métodos
[ 198 ]
Capítulo 6
[ 199 ]
La previsión de datos numéricos - Regresión métodos
Si añadimos más información de la trama, que puede ser aún más útil. Una matriz de
dispersión mejorada puede ser creado con la función de los pairs.panels () en el
paquete de Psych. Si no tiene este paquete instalado, tipo install.packages ( "Psych")
para instalarlo en su sistema y cargarlo con el comando de la biblioteca (psicología).
Entonces, podemos crear un diagrama de dispersión matricial como habíamos hecho
con anterioridad:
> pairs.panels (seguro [c ( "edad", "IMC", "niños", "gastos")])
Esto produce una matriz de dispersión ligeramente más informativo, como se muestra
aquí:
[ 200 ]
Capítulo 6
[ 201 ]
La previsión de datos numéricos - Regresión métodos
El siguiente comando se ajusta a un modelo de regresión lineal que relaciona los seis
independiente
las variables a los gastos médicos totales. La sintaxis de la fórmula R utiliza el carácter de
tilde
~ Para describir el modelo; los gastos variables dependientes va a
la izquierda de la tilde mientras que las variables independientes
van a la derecha, separados por signos +. No hay necesidad de
especificar término de intersección del modelo de regresión, ya que
se asume por defecto:
Porque el . personaje puede ser utilizado para especificar todas las características
(excluyendo los ya especificados en la fórmula), el siguiente comando es
equivalente al comando anterior:
> ins_model <- LM (. ~ los gastos, los datos del seguro =)
Llamada:
(lm fórmula = gastos de ~., datos del seguro =)
coeficientes:
edad (Intercepción) sexo masculino
-11941.6256.8 -131.4
bmichildren smokeryes
339.3475.7 23847.5
regionnorthwestregionsoutheast
regionsouthwest
-352,8-1.035,6 -959.3
Al añadir una variable ficticia para un modelo de regresión, una categoría siempre
se deja a servir como categoría de referencia. Las estimaciones son interpretados en
relación a la referencia. En nuestro modelo, R llevó a cabo de forma automática el
sexfemale, smokerno, y las variables regionnortheast, por lo que los no fumadores
femeninos en la región noreste del grupo de referencia. Por lo tanto, los machos
tienen los gastos de $ 131.40 menos médicos cada año en relación con las mujeres y
los fumadores cuestan un promedio de $ 23,847.50 más que los no fumadores por
año.
El coeficiente para cada una de las tres regiones en el modelo es negativo, lo que implica
que
el grupo de referencia, la región noreste, tiende a tener los más altos gastos medios.
Los resultados del modelo de regresión lineal tienen sentido lógico: la vejez, el
tabaquismo y la obesidad tienden a vincularse a problemas de salud adicionales,
mientras que los dependientes adicionales miembro de la familia puede resultar en
un aumento de las visitas al médico y la atención preventiva,
como vacunas y exámenes físicos anuales. Sin embargo, en la actualidad no tienen sentido
de
lo bien que el modelo se ajuste de los datos. Vamos a responder a esta pregunta en la
siguiente sección.
[ 204 ]
La previsión de datos numéricos - Regresión métodos
[ 205 ]
tercer cuartil) y 1T, por lo que la mayoría de las predicciones eran entre $
2,850.90 sobre el verdadero valor y $ 1,383.90 por debajo del valor
verdadero.
[ 206 ]
Capítulo 6
[ 208 ]
La previsión de datos numéricos - Regresión métodos
Para tener en cuenta una relación no lineal, podemos añadir un término de orden
más alto para el modelo de regresión, tratando el modelo como un polinomio. En
efecto, estaremos modelando una relación como esta:
La diferencia entre estos dos modelos es que se estima un adicional beta, que está
destinado a captar el efecto de la expresión-x al cuadrado. Esto permite que el
impacto de la edad que se mide en función de la edad al cuadrado.
Para añadir la edad no lineal con el modelo, simplemente hay que crear una nueva
variable:
> seguro de $ edad2 <- Seguro de edad $ ^ 2
[ 209 ]
Podemos modelar esta relación mediante la creación de un indicador variable
binaria que la obesidad es 1 si el IMC es de al menos 30, y 0 si es menor. La beta
estimada para esta función binaria
indicaría entonces el impacto promedio neto de gastos médicos para las personas con
un IMC de 30 o más, en comparación con aquellos con IMC inferior a 30.
[ 210 ]
Capítulo 6
Para crear la característica, se puede utilizar la función ifelse (), que para cada
elemento en un vector de prueba una condición especificada y devuelve un valor
en función de si la condición es verdadera o falsa. Para IMC mayor o igual a 30,
volveremos 1, de lo contrario 0:
> seguro de $ bmi30 <- ifelse (seguro $ IMC> = 30, 1, 0)
[ 211 ]
La previsión de datos numéricos - Regresión métodos
Vamos a entrenar el modelo utilizando la función lm () como antes, pero esta vez
vamos a añadir las variables de nueva construcción y el término de interacción:
> ins_model2 <- LM (gastos de edad ~ + edad2 + hijos + IMC + sexo +
bmi30 * + fumador región, data = seguro)
[ 212 ]
Capítulo 6
[ 213 ]
El algoritmo CART se describe en detalle en Breiman
L, Friedman JH, CJ Stone, Olshen AR. clasificación y
Los árboles de regresión. Belmont, CA: Chapman y Hall; 1984.
[ 214 ]
La previsión de datos numéricos - Regresión métodos
El segundo tipo de árboles para la predicción numérica son conocidos como árboles
de modelo. Introducido varios años más tarde que los árboles de regresión, que son
menos conocidos, pero tal vez más potente. árboles de modelos se cultivan en mucho
la misma manera que los árboles de regresión, pero en cada hoja, un modelo de
regresión lineal múltiple se construyen a partir de los ejemplos que llegan a ese
nodo. Dependiendo del número de nodos hoja, un árbol modelo puede construir
decenas o incluso cientos de estos modelos. Esto puede hacer que los árboles modelo
más difícil de entender que el árbol de regresión equivalente, con la ventaja de que
pueden dar lugar a un modelo más preciso.
fortalezas debilidades
• Combina las ventajas de los árboles de • No es tan bien conocido
decisión, con la capacidad de modelar como regresión lineal
datos numéricos • Requiere una gran cantidad de
• No requiere que el usuario datos de entrenamiento
especifique el modelo de antemano • Difícil determinar el efecto neto
• Utiliza la función de selección global de las características
automática, lo que permite que el individuales de los resultados
planteamiento que debe utilizarse • Los árboles grandes pueden
con un gran número de llegar a ser más difícil de
características interpretar que un modelo
• Puede adaptarse a algunos tipos de regresión
de datos mucho mejor que la
regresión lineal
• No requiere conocimientos de
estadística para interpretar el
modelo
[ 215 ]
Capítulo 6
Aunque los métodos de regresión tradicionales suelen ser la primera opción para
tareas de predicción numéricos, en algunos casos, los árboles de decisión numéricos
ofrecen distintas ventajas. Por ejemplo, los árboles de decisión pueden ser más
adecuados para las tareas con muchas características o muchas relaciones complejas
y no lineales entre las características y resultados. Estas situaciones presentan
desafíos para la regresión. El modelo de regresión también hace suposiciones acerca
de cómo se distribuye de datos numéricos que a menudo son violados en datos del
mundo real.
Este no es el caso para los árboles.
Árboles para la predicción numérica se construyen de la misma manera como lo son para
clasificación. Comenzando en el nodo raíz, los datos se repartió usando una
estrategia de divide y vencerás de acuerdo a la función que tendrá como resultado el
mayor incremento de la homogeneidad en el resultado después de realizar una
escisión. En los árboles de clasificación, se recordará que la homogeneidad se mide
por la entropía, la cual está definida para los datos numéricos. En cambio, para los
árboles de decisión numéricos, la homogeneidad se mide por las estadísticas tales
como la varianza, desviación estándar o desviación absoluta respecto a la media.
[ 216 ]
La previsión de datos numéricos - Regresión métodos
El SDR para la división en función de A fue de alrededor de 1,2 frente a 1,4 para la
división en función B. Puesto que la desviación estándar se redujo más por la
división en B, el árbol de decisión usaría B primero. Es el resultado de conjuntos
ligeramente más homogéneo que con A.
Supongamos que el árbol dejó de crecer aquí el uso de esta única división. El trabajo
de un árbol de regresión se realiza. Se puede hacer predicciones para nuevos
ejemplos dependiendo de si el valor del ejemplo en función de B coloca el ejemplo
en el grupo T1 o T2. Si el ejemplo termina en T1, el modelo predeciría significar
(BT1) = 2, de lo contrario podría predecir significar (BT2) = 6,25.
Por el contrario, un árbol modelo sería dar un paso más. Usando los ejemplos de
formación de siete que caen en el grupo T1 y T2 en los ocho, el árbol de modelo
podría construir un modelo de regresión lineal de los resultados en comparación con
[ 217 ]
función A. Nota que cuentan B es de ninguna ayuda en la construcción del modelo
de regresión, porque todos los ejemplos en la hoja tienen el mismo valor de B-que se
colocaron en T1 o T2 de acuerdo a su valor de B. el árbol de modelo puede entonces
hacer predicciones para nuevos ejemplos usando cualquiera de los dos modelos
lineales.
Para ilustrar aún más las diferencias entre estos dos enfoques, vamos a
trabajar a través de un ejemplo del mundo real.
[ 218 ]
Capítulo 6
[ 220 ]
La previsión de datos numéricos - Regresión métodos
Los datos de vino blanco incluye información sobre las 11 propiedades químicas de
4.898 muestras de vino. Para cada vino, un análisis de laboratorio mide
características tales como la acidez, contenido de azúcar, cloruros, azufre, alcohol,
pH, y la densidad. Las muestras fueron valorados en una cata a ciegas por paneles
de no menos de tres jueces en una escala de calidad que va de cero (muy malo) a 10
(excelente). En el caso de los jueces en desacuerdo con la clasificación, se utilizó el
valor de la mediana.
El estudio realizado por Cortez evaluó la capacidad de los tres enfoques de
aprendizaje de máquina para modelar los datos de vino: regresión múltiple, las
redes neuronales artificiales y máquinas de vectores soporte. Hemos cubierto de
regresión múltiple al principio de este capítulo, y vamos a aprender acerca de las
redes neuronales y máquinas de vectores soporte en el capítulo 7, Métodos Box
Negro - redes neuronales y máquinas de vectores soporte. El estudio encontró que
la máquina de vectores de soporte ofreció resultados significativamente mejores que
el modelo de regresión lineal. Sin embargo, a diferencia de regresión, el vector de
apoyo modelo de la máquina es difícil
interpretar. El uso de árboles de regresión y árboles modelo, podemos ser capaces de
mejorar los resultados de la regresión sin dejar de tener un modelo que es fácil de
entender.
Para leer más sobre el estudio vino descrito aquí, por favor
referirse a Cortez P, Cerdeira A, Almeida F, Matos T,
preferencias de vino Reis J. Modelando por minería de datos
de propiedades fisicoquímicas.
Sistemas de Soporte a la Decisión. 2009; 47: 547-553.
[ 221 ]
manera:
> str (vino)
'Hoja.de.datos': 4898 de 12 variables:
obs.
PS fixed.acidity: num 6,7 5,7 5,9 5,3 6,4 7 7,9 ...
PS volatile.acidity: num 0,22 0,19 0,47 0,62 0,29 0,12 ...
PS ácido cítrico: num 0,24 0,2 0,26 0,1 0,21 0,41 ...
PS residual.sugar: num 1,1 16 7,4 1,3 9,65 0,9 ...
[ 222 ]
Capítulo 6
[ 223 ]
La previsión de datos numéricos - Regresión métodos
Los valores de calidad de vino parecen seguir una distribución bastante normal en
forma de campana, en torno a un valor de seis. Esto tiene sentido intuitivamente,
porque la mayoría de los vinos son de calidad media; cuantos son especialmente
bueno o malo. Aunque los resultados no se muestran aquí, también es útil
examinar resumen de la salida (vino) para los valores atípicos u otros problemas
potenciales de datos. A pesar de que los árboles son bastante robusto con datos
desordenados, siempre es prudente para comprobar si hay problemas graves. Por
ahora, vamos a suponer que los datos son fiables.
Nuestro último paso es, entonces, para dividir en formación y las pruebas de
datos. Dado que el conjunto de datos de vino ya estaba clasificada en orden
aleatorio, se puede repartirse en dos grupos de filas contiguas de la siguiente
manera:
> wine_train <- vino [1: 3750,]
> Wine_test <- Vino [3751: 4898,]
Con el fin de reflejar las condiciones utilizadas por Cortez, utilizamos conjuntos
de 75 por ciento y 25 por ciento para el entrenamiento y las pruebas,
respectivamente. Vamos a evaluar el desempeño de
nuestros modelos basados en los árboles sobre los datos de prueba para ver si
podemos obtener resultados comparables a los del estudio de investigación previa.
[ 224 ]
Capítulo 6
Para obtener información básica sobre el árbol, simplemente escriba el nombre del objeto
de modelo:
> m.rpart
n = 3750
[ 226 ]
La previsión de datos numéricos - Regresión métodos
Para cada nodo en el árbol, aparece el número de ejemplos que llegan al punto de
decisión. Por ejemplo, todos 3.750 ejemplos comenzar en el nodo raíz, de los
cuales 2372 tienen alcohol <10,85 y 1378 tienen alcohol> = 10,85. Dado que el
alcohol se utilizó por primera vez en el árbol, que es el más importante predictor
de la calidad del vino.
Los nodos indicados por * son nodos terminales o de la hoja, lo que significa que
resultan en una predicción (enumerados aquí como yval). Por ejemplo, el nodo 5
tiene una yval de 5,971091. Cuando se utiliza el árbol para las predicciones, las
muestras de vino con alcohol <10.85 y volatile.acidity <0,2275 por lo tanto, se
prevé que tenga un valor de calidad de 5,97.
Un resumen más detallado de ajuste del árbol, incluyendo el error cuadrático medio
para cada uno de los nodos y una medida general de la función de importancia, se
puede obtener mediante el comando de resumen (m.rpart).
[ 227 ]
Capítulo 6
Además del parámetro de dígitos que controla el número de dígitos numéricos para
incluir en el diagrama, muchos otros aspectos de la visualización se puede ajustar. El
siguiente comando muestra sólo algunas de las opciones útiles: El parámetro
fallen.leaves obliga a los nodos de hoja a estar alineados en la parte inferior de la
trama, mientras que el tipo y los parámetros adicionales afectan la manera en las
decisiones y los nodos se etiquetan:
> rpart.plot (m.rpart, dígitos = 4, fallen.leaves =
TRUE, tipo = 3, extra = 101)
[ 228 ]
La previsión de datos numéricos - Regresión métodos
Las visualizaciones como estos pueden ayudar a la difusión de los resultados de los
árboles de regresión, tal como se entienden fácilmente, incluso sin un fondo
matemáticas. En ambos casos, los números que aparecen en los nodos hoja son los
valores predichos para los ejemplos que alcanzan ese nodo. Que muestra el
diagrama a los productores de vino puede así ayudar a identificar los factores clave
que predicen los vinos de mayor categoría.
[ 229 ]
Capítulo 6
Este hallazgo sugiere que el modelo no es identificar correctamente los casos extremos, en
particular, los mejores y peores vinos. Por otra parte, entre el primer y tercer cuartil,
podemos estar haciendo bien.
La correlación entre los valores de calidad previstos y los reales proporciona una
forma sencilla de medir el rendimiento del modelo. Recordemos que la función de
cor () se puede utilizar para medir la relación entre dos vectores de igual longitud.
Vamos a utilizar esto para comparar qué tan bien los valores previstos
corresponden a los valores reales:
> cor (p.rpart, wine_test $
calidad) [1] 0.5369525
[ 230 ]
La previsión de datos numéricos - Regresión métodos
Como su nombre indica, esta ecuación toma la media del valor absoluto de los
errores. Puesto que el error es simplemente la diferencia entre los valores predichos
y reales, podemos crear una función simple (MAE) de la siguiente manera:
> MAE <- function (real, valor de
referencia) {significa (abs (real
- valor de referencia))
}
[ 232 ]
Capítulo 6
[ 233 ]
La previsión de datos numéricos - Regresión métodos
El árbol en sí puede ser examinado escribiendo su nombre. En este caso, el árbol es muy
grande
y sólo se muestran las primeras líneas de salida:
> m.m5p
M5 modelo de poda de árboles:
(Usando modelos lineales suavizadas)
Usted notará que las divisiones son muy similares al árbol de regresión que
hemos construido anteriormente. El alcohol es la variable más importante,
seguido de acidez volátil y el dióxido de azufre libre. Una diferencia clave, sin
embargo, es que los nodos no terminan en una predicción numérica, pero un
modelo lineal (que se muestra aquí como LM1 y LM2).
Los modelos lineales mismos se muestran más adelante en la salida. Por ejemplo, el
modelo para LM1 se muestra en la próxima salida. Los valores se pueden
interpretar exactamente los mismos que los modelos de regresión múltiple que
construimos anteriormente en este capítulo. Cada número es el efecto neto de la
función asociada a la calidad del vino predicho. El coeficiente de 0,266 para la
acidez fija implica que para un incremento de 1 unidad de acidez, se espera que la
calidad del vino que aumente en 0.266:
LM num: 1
calidad =
0,266 * fixed.acidity
- 2,3082 * volatile.acidity
- 0,012 * citric.acid
+ 0,0421 * residual.sugar
+ 0.1126 * cloruros
+ 0 * free.sulfur.dioxide
[ 234 ]
- 0,0015 * total.sulfur.dioxide
- 109.8813 * Densidad
[ 235 ]
Capítulo 6
+ 0,035 * pH
+ 1.4122 * sulfatos
- 0,0046 * alcohol
+ 113.1021
Es importante tener en cuenta que los efectos estimados por LM1 se aplican sólo a las
muestras de vino que llegan a este nodo; un total de 36 modelos lineales se
construyeron en este modelo de árbol, cada uno con diferentes estimaciones del
impacto de acidez fija y las otras 10 características.
Para las estadísticas sobre lo bien que el modelo se ajusta a los datos de
entrenamiento, la función de resumen () se puede aplicar al modelo M5P. Sin
embargo, tenga en cuenta que, dado que estas estadísticas se basan en los datos de
entrenamiento, que sólo deben usarse como un diagnóstico en bruto:
> Resumen (m.m5p)
En su lugar, vamos a ver lo bien que el modelo funciona en los datos de prueba que no se
ven. los
predecir () la función no nos lleva a un vector de valores predichos:
> p.m5p <- predecir (m.m5p, wine_test)
El árbol del modelo parece estar prediciendo una gama más amplia de
valores que el árbol de regresión:
> Resumen (p.m5p)
Min. primeroQu.MedianMean
tercero Qu. Max.
4.3895.4305.8635.8746.305
7.437
[ 236 ]
> cor (p.m5p, wine_test $
calidad) [1] 0.6272973
[ 237 ]
La previsión de datos numéricos - Regresión métodos
A pesar de que no mejoró mucho más allá del árbol de regresión, hemos superado
el rendimiento del modelo de red neuronal publicado por Cortés, y nos estamos
acercando al valor de error absoluto medio publicada de 0,45 para el modelo de
máquina de vectores de soporte, todo mediante el uso de un método de aprendizaje
mucho más simple.
Resumen
En este capítulo, se estudiaron dos métodos para el modelado de datos numéricos.
El primer método, la regresión lineal, implica líneas rectas de ajuste a los datos. El
segundo método utiliza árboles de decisión para la predicción numérica. Este
último se presenta en dos formas: árboles de regresión, que utilizan el valor medio
de ejemplos en los nodos de hojas para hacer predicciones numéricas; y los árboles
modelo, que construyen un modelo de regresión en cada nodo hoja en un enfoque
híbrido que es, en cierto modo, lo mejor de ambos mundos.
Se utilizó un modelo de regresión lineal para calcular los costos de asistencia médica
previstos para los distintos segmentos de la población. Debido a que la relación entre
las características y la variable de destino están bien descritos por el modelo de
regresión estimado, hemos sido capaces de identificar ciertos grupos demográficos,
tales como los fumadores y los obesos, que pueden necesitar ser cargada mayores
tasas de seguros para cubrir la más alta de lo -Promedio gastos médicos.
Los árboles de regresión y árboles modelo fueron utilizados para modelar la calidad
subjetiva de los vinos de características medibles. Al hacerlo, hemos aprendido cómo
los árboles de regresión ofrecen una manera sencilla de explicar la relación entre las
características y un resultado numérico, pero los árboles modelo más complejas
pueden ser más exactos. En el camino, hemos aprendido varios métodos para
evaluar el rendimiento de los modelos numéricos.
En marcado contraste con este capítulo, que cubría los métodos de aprendizaje
[ 238 ]
automático que dan lugar a una clara comprensión de las relaciones entre la
entrada y la salida, el siguiente capítulo cubre los métodos que dan lugar a
modelos de casi incomprensibles. La ventaja es que son extremadamente
poderosas técnicas -entre los más poderosos clasificadores-acciones que se
pueden aplicar tanto a problemas de predicción numéricos clasificación y.
[ 239 ]
Black Box - Métodos de
redes neuronales y
máquinas de vectores
soporte
El autor de ciencia ficción Arthur C. Clarke tarde escribió: "cualquier tecnología
suficientemente avanzada es indistinguible de la magia". Este capítulo cubre un
par de métodos de aprendizaje automático que puede parecer a primera vista ser
mágica. A pesar de que son muy poderosos, sus funcionamientos internos pueden
ser difíciles de entender.
En ingeniería, éstos se refieren a los procesos de caja como negro porque el
mecanismo que transforma la entrada en la salida se ofuscado por una caja
imaginaria. Por ejemplo, la caja de negro de software de código cerrado
intencionalmente oculta algoritmos propietarios, la caja de negro de legislar política
se basa en los procesos burocráticos, y la caja de negro de salchicha de decisiones
implica un poco de la ignorancia intencionada (pero sabroso). En el caso de la
máquina de aprendizaje, el cuadro negro se debe a las matemáticas complejas que
les permiten funcionar.
Aunque pueden no ser fáciles de entender, es peligroso aplicar modelos de caja
negra a ciegas. Por lo tanto, en este capítulo, vamos a mirar dentro de la caja e
investigar la fabricación de salchichas involucrados en la adaptación de este tipo
de modelos estadísticos. Usted descubrirá:
• Las redes neuronales imitan la estructura de los cerebros
animales para modelar funciones arbitrarias
• máquinas de vectores soporte utilizan superficies
[ 240 ]
multidimensionales para definir la relación entre las características y
resultados
• A pesar de su complejidad, estos pueden ser fácilmente aplicados a problemas del
mundo real
[ 241 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
Aunque puede ser inviable para modelar completamente el cerebro de una cucaracha,
una red neuronal todavía puede proporcionar un modelo heurístico adecuado de su
comportamiento. Supóngase que se desarrolla un algoritmo que puede imitar la forma
en una cucaracha huye cuando descubierto. Si el comportamiento del robot cucaracha es
convincente, ¿importa si su cerebro es tan sofisticado como el ser vivo de? Esta pregunta
es la base de la controvertida prueba de Turing, propuesto en 1950 por el científico
informático pionero Alan Turing, propuesto en 1950 por el científico informático pionero
Alan Turing, los grados que la máquina como inteligente si un ser humano no puede
distinguir su comportamiento a partir de la vida la criatura de.
Las RNA rudimentarios se han utilizado durante más de 50 años para simular el
enfoque del cerebro para la resolución de problemas. Al principio, esto implicó
aprender funciones simples como la lógica y el cargo o la función O lógica. Estos
ejercicios tempranos fueron utilizados principalmente para ayudar a los científicos a
entender cómo los cerebros biológicos podrían operar. Sin embargo, como las
computadoras se han vuelto cada vez más poderoso en los últimos años, la complejidad
de las redes neuronales ha aumentado tanto, del mismo modo que ahora están con
frecuencia aplicados a problemas más prácticos que incluyen:
[ 243 ]
Capítulo 7
[ 244 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
Una neurona artificial típico con dendritas de entrada n puede ser representado por
la fórmula que sigue. Los pesos w permiten cada una de las N entradas (denotados
por xi) para aportar una cantidad mayor o menor a la suma de señales de entrada.
El total neto es utilizado por el la señal resultante función de activación f (x), y, y
(x), es el axón de salida:
Las redes neuronales usan neuronas definidas de esta manera como bloques de
construcción para la construcción de modelos de datos complejos. Aunque hay
numerosas variantes de las redes neuronales, cada uno puede ser definido en
términos de las siguientes características:
• Una función de activación, que transforma las señales de entrada
combinadas de una neurona en una sola señal de salida se van a emitir más
en la red
• Una topología de red (o arquitectura), que describe el número de neuronas
en el modelo, así como el número de capas y la forma en que están
conectados
• El algoritmo de entrenamiento que especifica cómo se establecen pesos de
conexión con el fin de inhibir o excitar neuronas en proporción a la señal de
entrada
[ 245 ]
Vamos a echar un vistazo a algunas de las variaciones dentro de cada una de estas
categorías para ver cómo pueden ser utilizados para construir modelos típicos de
redes neuronales.
[ 246 ]
Capítulo 7
funciones de activación
La función de activación es el mecanismo por el cual la neurona artificial procesa la
información entrante y pasa a lo largo de la red. Al igual que la neurona artificial es
el modelo de la versión biológica, por lo que es la función de activación el modelo
de diseño de la naturaleza.
En el caso biológica, la función de activación podría ser imaginado como un proceso
que implica sumando la señal de entrada total y determinar si cumple el umbral de
disparo. Si es así, la neurona transmite la señal; de lo contrario, no hace nada. En
términos ANN, esto se conoce como una función de activación de umbral, ya que
resulta en una señal de salida sólo una vez un umbral de entrada especificado se ha
alcanzado.
La siguiente figura muestra una función de umbral típico; en este caso, la
neurona se dispara cuando la suma de las señales de entrada es al menos igual a
cero. Debido a que su forma se asemeja a una escalera, a veces se llama una
función de activación de paso unidad.
[ 247 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
[ 248 ]
Capítulo 7
Topología de la red
La capacidad de una red neuronal para aprender tiene sus raíces en su topología, o
los patrones y estructuras de neuronas interconectadas. Aunque existen
[ 249 ]
innumerables formas de arquitectura de red, pueden ser diferenciados por tres
características principales:
• El número de capas
• Si la información en la red se le permite viajar hacia atrás
• El número de nodos dentro de cada capa de la red de
[ 250 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
La topología determina la complejidad de las tareas que pueden ser aprendidas por
la red. En general, las redes más grandes y más complejas son capaces de identificar
patrones más sutiles y complejas fronteras de decisión. Sin embargo, el poder de una
red no es sólo una función del tamaño de la red, sino también las unidades de forma
están dispuestos.
El número de capas
Para definir la topología, necesitamos una terminología que distingue a las neuronas
artificiales en función de su posición en la red. La figura que sigue ilustra la
topología de una red muy simple. Un conjunto de neuronas llamados nodos de
entrada recibe señales sin procesar directamente de los datos de entrada. Cada nodo
de entrada es responsable de procesar una sola característica en el conjunto de datos;
el valor de la característica será transformado por la función de activación del nodo
correspondiente. Las señales enviadas por los nodos de entrada son recibidos por el
nodo de salida, que utiliza su propia función de activación para generar una
predicción final (denotada aquí como p).
Los nodos de entrada y de salida están dispuestos en grupos conocidos como
capas. Debido a que los nodos de entrada procesar los datos entrantes
exactamente como se recibió, la red tiene solamente un conjunto de pesos de
conexión (etiquetada aquí como w1, w2, w3 y). Por lo tanto, se denomina una red
de una sola capa. redes de una sola capa se pueden utilizar para la clasificación
de patrón básico, sobre todo para los patrones que son linealmente separables,
pero se requieren redes más sofisticadas para la mayoría de las tareas de
aprendizaje.
[ 251 ]
Capítulo 7
Como era de esperar, una forma obvia de crear redes más complejas es mediante la
adición de capas adicionales. Como se muestra aquí, una red multicapa añade una o
más capas ocultas que procesan las señales procedentes de los nodos de entrada
antes de que alcance el nodo de salida. La mayoría de las redes de múltiples capas
están completamente conectados, lo que significa que cada nodo de una capa está
conectado a cada nodo en la capa siguiente, pero esto no es necesario.
[ 252 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
Por el contrario, una red recurrente (o red de realimentación) permite que las
señales viajen en ambas direcciones mediante bucles. Esta propiedad, que
refleja más de cerca cómo una
obras de redes neuronales biológicas, permite a los patrones extremadamente
complejos que se pueden aprender. La adición de una memoria a corto plazo, o
retraso, aumenta la potencia de las redes recurrentes inmensamente. En particular,
esto incluye la capacidad para comprender las secuencias de eventos durante un
período de tiempo. Esto podría ser utilizado para la predicción del mercado de
valores, la comprensión del habla, o la predicción del tiempo. Una red recurrente
sencilla se representa como sigue:
A pesar de su potencial, las redes recurrentes son todavía en gran parte teórica
y rara vez se utilizan en la práctica. Por otro lado, las redes de alimentación
directa han sido ampliamente aplicado a los problemas del mundo real. De
hecho, la alimentación directa de múltiples capas
la red, a veces llamado el perceptrón multicapa (MLP), es la topología ANN estándar
de facto. Si alguien menciona que se ajuste de una red neuronal, lo más probable
refiriendo a un MLP.
[ 254 ]
Capítulo 7
Se ha demostrado que una red neuronal con al menos una capa oculta
de neuronas suficientes es un aproximador función universal. Esto
significa que las redes neuronales se pueden utilizar para aproximar
cualquier función continua a una precisión arbitraria en un intervalo
finito.
fortalezas debilidades
• Puede ser adaptado a la • Muy computacionalmente
clasificación o problemas de intensivo y lento para entrenar,
predicción numéricos sobre todo si la topología de red es
• Capaz de modelar patrones más compleja
complejos que casi cualquier • Muy propensos a la formación
algoritmo de datos sobreajuste
• Hace algunas suposiciones acerca • Los resultados en un complejo
de las relaciones subyacentes de modelo de caja negro que es
los datos difícil, si no imposible,
interpretar
[ 256 ]
llamada de descenso de gradiente. Conceptualmente, funciona de manera similar a
cómo un explorador atrapado en la selva podría encontrar un camino hacia el agua.
Al examinar el terreno y continuamente caminar en la dirección de mayor pendiente
descendente, el explorador llegará a alcanzar el valle más bajo, que es probable que
sea un cauce del río.
[ 257 ]
Capítulo 7
Ejemplo - Modelado de la
resistencia del hormigón con RNAs
En el campo de la ingeniería, que es fundamental contar con estimaciones precisas
del comportamiento de los materiales de construcción. Estas estimaciones son
necesarios para el desarrollo de las normas de seguridad que rigen los materiales
utilizados en la construcción de edificios, puentes y carreteras.
[ 258 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
[ 260 ]
Capítulo 7
[ 261 ]
En comparación, los valores máximo y mínimo original y fueron 2.33 y 82.60:
> Resumen ($ fortaleza de hormigón)
Min. primeroQu.MedianMean
tercero Qu. Max. 2.3323.7134.4435.8246.14
82.60
[ 262 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
[ 263 ]
Capítulo 7
[ 264 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
En este modelo simple, hay un nodo de entrada para cada uno de los ocho
características, seguido de un único nodo oculto y un único nodo de salida que
predice la resistencia del hormigón. Los pesos para cada una de las conexiones
también se representan, como lo son los términos de sesgo (indicados por los nodos
etiquetados con el número 1). Los términos de polarización son constantes
numéricas que permiten que el valor en los nodos indicados para ser desplazado
hacia arriba o hacia abajo, al igual que el punto de intersección en una ecuación
lineal.
Una red neuronal con un solo nodo oculto puede ser pensado
como un primo lejano de los modelos de regresión lineal que
estudiamos en el capítulo 6, la previsión de datos numéricos -
Los métodos de regresión. El peso entre cada nodo de entrada
y el nodo oculto es similar a los coeficientes de regresión, y el
peso para el término de sesgo es similar a la intersección.
[ 265 ]
Capítulo 7
correlaciones estrechas a 1 indican una fuerte relación lineal entre dos variables. Por
lo tanto, la correlación de alrededor de 0,806 aquí indica una relación bastante fuerte.
Esto implica que nuestro modelo está haciendo un trabajo bastante bueno, incluso
[ 266 ]
con un único nodo oculto.
Dado que sólo utilizamos un nodo oculto, es probable que podamos mejorar
el rendimiento de nuestro modelo. Vamos a tratar de hacer un poco mejor.
[ 267 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
[ 268 ]
Capítulo 7
[ 269 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
Aunque las matemáticas básicas que impulsan las SVM han existido desde hace
décadas, que han estallado recientemente en popularidad. Esto es, por supuesto,
enraizada en su
el estado de la técnica de actuación, pero quizás también debido al hecho de que
el ganador de premios algoritmos SVM se han implementado en varias
bibliotecas populares y bien apoyados a través de muchos lenguajes de
programación, incluyendo R. SVM por lo tanto han sido adoptados por un
público mucho más amplio , que podría haber sido de otro modo no puede
aplicar el algo compleja matemática necesaria para implementar un SVM. La
buena noticia es que a pesar de las matemáticas puede ser difícil, los conceptos
básicos son comprensibles.
SVMs pueden ser adaptados para su uso con casi cualquier tipo de tarea de
aprendizaje, incluyendo tanto la clasificación y predicción numérica. Muchos de
los principales éxitos del algoritmo han llegado en el reconocimiento de patrones.
aplicaciones notables incluyen:
• Clasificación de los datos microarrays de expresión génica en
el campo de la bioinformática para identificar el cáncer u otras
enfermedades genéticas
• categorización de textos tales como la identificación de la lengua utilizada en
un documento o la clasificación de los documentos por tema
• La detección de eventos pero importantes raras como fallo de motor de
combustión, las violaciones de seguridad, o terremotos
SVMs se entienden más fácilmente cuando se usa para la clasificación binaria, que es
cómo se ha utilizado siempre el método. Por lo tanto, en las secciones restantes, nos
centraremos sólo en SVM clasificadores. No se preocupe, sin embargo, ya que los
mismos principios que aprenda aquí se aplicará mientras se adapta a las SVM de
otras tareas de aprendizaje, tales como la predicción numérica.
[ 270 ]
Capítulo 7
En dos dimensiones, la tarea del algoritmo SVM es identificar una línea que separa
las dos clases. Como se muestra en la siguiente figura, hay más de una opción de
línea divisoria entre los grupos de círculos y cuadrados. Tres de tales posibilidades
se etiquetan a, b, y c. ¿Cómo elegir el algoritmo?
[ 271 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
Los vectores de soporte (indicadas por flechas en la figura que sigue) son los
puntos de cada clase que son los más cercanos a la MMH; cada clase debe tener al
menos un vector de apoyo, pero es posible tener más de uno. Utilizando los
vectores de soporte solo, es posible definir el MMH. Esta es una característica
clave de las SVM; los vectores de soporte proporcionan una forma muy compacta
para almacenar un modelo de clasificación, incluso si el número de características
es extremadamente grande.
[ 272 ]
Capítulo 7
Para entender este proceso de búsqueda, tendremos que definir exactamente lo que
entendemos por una
hiperplano. En el espacio n-dimensional, se utiliza la siguiente ecuación:
Si no está familiarizado con esta notación, las flechas por encima de las letras indican
que son vectores en lugar de números individuales. En particular, W es un vector de
n pesos, es decir, {w1, w2, ..., wnorte}Y b es un número único conocido como el sesgo. El
sesgo es conceptualmente equivalente al término de intersección en forma de
pendiente-intersección discutido en el capítulo 6, la previsión de datos numéricos -
métodos de regresión.
Usando esta fórmula, el objetivo del proceso es encontrar un conjunto de pesos que
especifican dos
hiperplanos, como sigue:
[ 273 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
También se requiere que estos hiperplanos se especifican de forma que todos los
puntos de una caída clase por encima de la primera hiperplano y todos los puntos
de la otra clase de caída por debajo del segundo hiperplano. Esto es posible siempre
y cuando los datos son linealmente separables.
geometría del vector define la distancia entre estos dos planos como:
Aquí, || w || indica la norma euclidiana (la distancia desde el origen al vector w).
Debido || w || está en el denominador, para maximizar la distancia, es necesario
reducir al mínimo
|| w ||. La tarea es típicamente vuelto a expresar como un conjunto de restricciones, de
la siguiente manera:
[ 275 ]
Capítulo 7
Un valor de coste (indicado como C) se aplica a todos los puntos que violan las
limitaciones, y en lugar de encontrar el margen máximo, el algoritmo intenta
minimizar el coste total. Por tanto, podemos revisar el problema de optimización
a:
Si todavía está confundido, no se preocupe, usted no está solo. Por suerte, paquetes
de SVM felizmente optimizar esto para usted sin tener que entender los detalles
técnicos. La pieza importante entender es la adición del parámetro de coste C.
Modificación de este valor se ajustará la pena, por ejemplo, la caída en el lado
equivocado del hiperplano. Cuanto mayor es el coeficiente de coste, más dura es la
optimización va a tratar de lograr el 100 por ciento de la separación. Por otro lado, un
parámetro de coste más bajo pondrá el énfasis en un margen global más amplio. Es
importante lograr un equilibrio entre estos dos con el fin de crear un modelo que
generaliza bien a los datos futuros.
[ 276 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
[ 277 ]
Capítulo 7
SVM con los núcleos no lineales son extremadamente potentes clasificadores, aunque sí
tienen algunas desventajas, como se muestra en la siguiente tabla:
fortalezas debilidades
• Puede ser utilizado para la • Encontrar el mejor modelo
clasificación o problemas de requiere pruebas de diversas
predicción numéricos combinaciones de granos y los
• No excesivamente influenciada por parámetros del modelo
los datos ruidosos y poco propenso • Puede ser lento para entrenar,
a sobreajuste especialmente si el conjunto de
• Puede ser más fácil de usar que las datos de entrada tiene un gran
redes neuronales, en particular número de características o
debido a la existencia de varios ejemplos
algoritmos de SVM bien apoyado • Los resultados en un complejo
• Ganando popularidad debido a modelo de caja negro que es difícil, si
su alta precisión y de alto perfil no imposible, interpretar
victorias en competiciones de
minería de datos
funciones del núcleo, en general, son de la siguiente forma. La función denotada por
la letra griega phi, es decir, (x), es un mapeo de los datos en otro espacio. Por lo
tanto, la función del núcleo general se aplica alguna transformación a la xi vectores
de características y xj y las combina con el producto escalar, que toma dos vectores y
devuelve un solo número.
Usando esta forma, las funciones del núcleo se han desarrollado durante muchos
dominios diferentes de datos. Algunas de las funciones del núcleo más
comúnmente utilizadas son las siguientes.
Casi todos los paquetes de software SVM incluirán estos núcleos, entre muchos otros.
El núcleo lineal no transforma los datos en absoluto. Por lo tanto, se puede
expresar simplemente como el producto escalar de las características:
[ 278 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
Los resultados sigmoide del núcleo en un modelo SVM algo análogo a una red
neural utilizando una función de activación sigmoide. Las letras kappa y delta
griega se utilizan como parámetros del kernel:
El kernel gaussiana RBF es similar a una red neuronal RBF. El kernel RBF se
desempeña bien en muchos tipos de datos, y se piensa que es un punto de
partida razonable para muchas tareas de aprendizaje:
No hay una regla fiable para que coincida con un kernel a una tarea de aprendizaje.
El ajuste depende en gran medida el concepto que hay que aprender, así como la
cantidad de datos de entrenamiento y las relaciones entre las características. A
menudo, un poco de ensayo y error es requerido por la formación y la evaluación
de varios SVMs en un conjunto de datos de validación. Dicho esto, en muchos
casos, la elección del núcleo es arbitraria, ya que el rendimiento puede variar
ligeramente. Para ver cómo funciona esto en la práctica, vamos a aplicar nuestra
comprensión de la SVM clasificación a un problema del mundo real.
[ 279 ]
Capítulo 7
Para más información sobre este conjunto de datos, consulte la pizarra DJ,
reconocimiento Frey W. Carta usando adaptación al estilo de Holanda
clasificadores. Aprendizaje automático. 1991; 6: 161-182.
[ 280 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
La lectura de los datos en R, confirmamos que hemos recibido los datos con
las 16 características que definen a cada ejemplo de la clase de letra. Como era
de esperar, la carta tiene 26 niveles:
> letras <- read.csv ( "letterdata.csv")
> str (letras)
'Hoja.de.datos': 20000 obs. de 17 variables:
$ Letra: Factor w / 26 niveles "A", "B", "C", "D", ..
P Xbox: En 2 5 4 7 2 4 4 1 2 11 ...
S t
P ybox: En 8 12 11 11 1 11 2 1 2 15 ...
S t
P anchura En 3 3 6 6 3 5 5 3 4 13 ...
[ 281 ]
S : t
P altura: En 5 7 8 6 1 8 4 2 4 9 ...
S t
[ 282 ]
Capítulo 7
P onpix: En 1 2 6 3 1 3 4 1 2 7 ...
S t
P Xbar: En 8 10 10 5 8 8 8 8 10 13 ...
S t
PS Ybar: INT13 5 6 9 6 8 7 2 6 2 ...
$ X2bar: En 0 5 2 4 6 6 6 2 2 6 ...
t
$ Y2bar: En 6 4 6 6 6 9 6 2 6 2 ...
t
$ Xybar: En 10 3 3
6 13 104456656728412
1 ...
12 ...
t
$ X2ybar: En
t
P xy2bar: En 8 9 7 10 9 6 6 8 8 9 ...
S t
P xedge: En 0 2 3 6 1 0 2 1 1 8 ...
$ Yedgex: int8 10 9 8 10 7 10 7 7 8 ...
S t
P xedgey: que
Recordemos En los
8 alumnos
8 7 10 7SVM8 8 requieren
6 6 1 ...todas las características para ser
S t
numérica, y por otra parte, que cada función se escala a un intervalo bastante
P yedge: En 0 4 3 2 5 9 7 2 1 1 ...
pequeño.
S En este
t caso, cada característica es un entero, por lo que no es necesario
para convertir cualquier factor en números. Por otro lado, algunos de los rangos de
estas variables enteras parecen bastante amplia. Esto indica que es necesario para
normalizar o estandarizar los datos. Sin embargo, podemos omitir este paso para
Ahora, debido a que el paquete de R que vamos a utilizar para ajustar el modelo SVM
realizará
el cambio de escala automática.
Teniendo en cuenta que la preparación de los datos ha sido en gran parte hecho
por nosotros, podemos pasar directamente a las fases de formación y las pruebas
del proceso de aprendizaje de la máquina. En los análisis anteriores, se dividió
aleatoriamente los datos entre los conjuntos de entrenamiento y prueba.
Aunque podríamos hacerlo aquí, Frey y pizarra ya han aleatorizado los datos, y
por lo tanto sugerir el uso de los primeros 16.000 registros (80 por ciento) para
construir el modelo y los próximos 4.000 registros (20 por ciento) para probar.
Siguiendo su consejo, podemos crear tramas de datos de pruebas de formación y
de la siguiente manera:
> letters_train <- cartas [1: 16000,]
> letters_test <- letras [16001: 20000, ]
Con nuestros datos listos para ir, vamos a empezar la construcción de nuestro
clasificador.
[ 283 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
Por último, si usted está comenzando desde cero, es quizás mejor para comenzar
con las funciones de SVM en el paquete kernlab. Una ventaja interesante de este
paquete es que se desarrolló de forma nativa en R en lugar de C o C ++, que le
permite ser fácilmente personalizado; ninguno de los componentes internos están
ocultos detrás de las escenas. Quizás aún más importante, a diferencia de las otras
opciones, kernlab se puede utilizar con el paquete de intercalación, que permite a
los modelos SVM para ser entrenados y evaluados utilizando una variedad de
métodos automatizados (cubierto en el Capítulo 11, Mejora del rendimiento del
modelo).
[ 284 ]
Capítulo 7
[ 285 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
soporte: 7037
Esta información nos dice muy poco acerca de qué tan bien el modelo llevará a cabo
en el mundo real. Tendremos que examinar su rendimiento en el conjunto de datos
de prueba para saber si se generaliza así a los datos que no se ven.
[ 286 ]
Capítulo 7
Para examinar lo bien que realiza nuestra clasificador, tenemos que comparar la letra
prevé que la verdadera carta en el conjunto de datos de prueba. Vamos a utilizar la
función de tabla () para este fin (sólo una parte de la tabla completa se muestra aquí):
> mesa (letter_predictions, letters_test $ carta)
letter_predictions UNA seg do re mi
und
o
UNA 144 0 0 0 0
segundo 0 121 0 5 2
do 0 0 120 0 4
re 2 2 0 156 0
mi 0 0 5 0 127
Los valores de la diagonal de 144, 121, 120, 156, y 127 indican el número total de
registros en los que la letra predicho coincide con el valor verdadero. Del mismo
modo, también aparece el número de errores. Por ejemplo, el valor de 5 en la fila B
y la columna D indica que hubo cinco casos donde la letra D se ha identificado
erróneamente como una B.
En cuanto a cada tipo de error individual puede revelar algunos patrones
interesantes sobre los tipos específicos de las letras El modelo tiene problemas con
el, pero esto es mucho tiempo. Podemos simplificar nuestra evaluación no por el
cálculo de la precisión global. Esto sólo tiene en cuenta si la predicción era
correcta o incorrecta,
e ignora el tipo de error.
El siguiente comando devuelve un vector de valores verdadero o falso, que
indica si la carta predicho del modelo está de acuerdo con (es decir,
partidos) la carta real en el conjunto de datos de prueba:
> acuerdo <- letter_predictions == $ carta letters_test
El uso de la función de tabla (), vemos que el clasificador identifica correctamente la letra
de
3357 de los registros de prueba de 4.000:
> mesa (acuerdo)
acuerdo
FALSO
CIER
TO 643 3357
[ 287 ]
> prop.table (tabla (acuerdo))
acuerdo
FALSO
CIER
TO 0.16075
0.83925
[ 288 ]
Black Box - Métodos de redes neuronales y de vectores de soporte máquinas
Tenga en cuenta que cuando Frey y pizarra publicaron el conjunto de datos en 1991,
se informó de una precisión de reconocimiento de alrededor del 80 por ciento. El uso
de sólo unas pocas líneas de código R, hemos sido capaces de superar su resultado,
aunque también tenemos la ventaja de más de dos décadas de investigación de
aprendizaje de máquina adicional. Con esto en mente, es probable que seamos
capaces de hacerlo aún mejor.
[ 289 ]
Sus resultados pueden diferir de los mostrados aquí debido a la
aleatoriedad en el kernel RBF ksvm. Si desea que coincidir
exactamente, el uso conjunto. semillas (12345) antes de ejecutar la
función ksvm ().
[ 290 ]
Capítulo 7
Resumen
En este capítulo, se examinaron dos métodos de aprendizaje automático que ofrecen
un gran potencial, pero a menudo se pasa por alto debido a su complejidad. Con
suerte, se ve ahora que esta reputación es al menos algo inmerecida. Los conceptos
básicos que impulsan las RNA y SVM son bastante fáciles de entender.
Por otro lado, debido a las RNA y SVM han existido desde hace muchas décadas,
cada uno de ellos tiene numerosas variaciones. En este capítulo solo araña la
superficie de lo que es posible con estos métodos. Mediante la utilización de la
terminología que ha aprendido aquí, usted debería ser capaz de captar los matices
que distinguen a los muchos avances que se están desarrollando todos los días.
Ahora que hemos pasado algún tiempo a aprender sobre muchos tipos diferentes de
modelos predictivos de lo simple a sofisticada; En el siguiente capítulo, vamos a
empezar a considerar métodos para otros tipos de tareas de aprendizaje. Estas
técnicas de aprendizaje no supervisado sacará a la luz los patrones fascinantes dentro
de los datos.
[ 291 ]
Encontrar patrones -
Mercado Análisis de
la cesta las reglas de
asociación
Piense en la última vez que hizo una compra impulsiva. Tal vez usted estaba
esperando en la fila de la caja supermercado y compró un paquete de goma de
mascar o una barra de chocolate. Tal vez en un viaje nocturno para los pañales y
la fórmula que recogió una
bebida con cafeína o un paquete de seis de cerveza. Puede que incluso han
comprado este libro en un capricho en la recomendación de un librero. Estas
compras impulsivas no son una coincidencia, ya que los minoristas utilizan técnicas
de análisis de datos sofisticados para identificar los patrones de comportamiento
que impulsarán el comercio minorista.
En los últimos años, este tipo de sistemas de recomendación se basa en la intuición
subjetiva de profesionales del marketing y los administradores de inventario o
compradores. Más recientemente, como escáneres de código de barras, sistemas de
inventario computarizados, y las tendencias de compras en línea han construido una
gran cantidad de datos transaccionales, aprendizaje automático se ha aplicado cada
vez más a aprender los patrones de compra. La práctica se conoce comúnmente
como análisis de la cesta de mercado debido al hecho de que se ha aplicado con tanta
frecuencia a los datos de los supermercados.
Aunque la técnica se originó con los datos de compras, es útil en otros contextos.
En el momento de terminar este capítulo, usted será capaz de aplicar las técnicas
de análisis de la cesta a sus propias tareas, sean las que sean. En general, el
trabajo implica:
[ 259 ]
• El uso de medidas de rendimiento simples para encontrar asociaciones en grandes
bases de datos
• La comprensión de las peculiaridades de los datos transaccionales
• Saber identificar los patrones útiles y aplicables
[ 260 ]
Encontrar patrones - Mercado análisis de la cesta Uso de asociación Reglas
[ 261 ]
Debido a que los alumnos de reglas de asociación son sin supervisión, no hay
necesidad de que el algoritmo para ser entrenado; datos no necesita ser etiquetado
antes de tiempo. El programa es
simplemente desatado en un conjunto de datos con la esperanza de que las
asociaciones se encuentran interesantes. La desventaja, por supuesto, es que no
hay una manera fácil de medir objetivamente el rendimiento de un alumno regla,
aparte de su evaluación cualitativa de utilidad-general, una prueba de globo
ocular de una cierta clase.
[ 262 ]
Capítulo 8
Aunque las reglas de asociación son los más utilizados para el análisis de la
cesta, que son útiles para encontrar patrones en muchos tipos diferentes de
datos. Otras aplicaciones potenciales incluyen:
• Busca interesante y que ocurren con frecuencia patrones de secuencias
de ADN y proteínas en los datos de cáncer
• La búsqueda de patrones de compras o reclamaciones médicas que se
producen en combinación con tarjeta de crédito o la utilización
fraudulenta de seguro
• La identificación de combinaciones de comportamiento que preceden a los
clientes que abandonan su servicio de telefonía celular o actualicen su
paquete de televisión por cable
[ 263 ]
Encontrar patrones - Mercado análisis de la cesta Uso de asociación Reglas
Mucho trabajo se ha hecho para identificar los algoritmos heurísticos para reducir el
número de conjuntos de elementos para buscar. Quizás el enfoque utilizado más
ampliamente para buscar de manera eficiente grandes bases de datos de reglas es
conocida como A priori. Introducido en 1994 por Rakesh Agrawal y Ramakrishnan
Srikant, el algoritmo Apriori desde entonces se ha convertido en algo sinónimo de
reglas de asociación. El nombre se deriva del hecho de que el algoritmo utiliza un
simple creencia previa (es decir, a priori) sobre las propiedades de los conjuntos de
elementos frecuentes.
Antes de discutir que en más profundidad, vale la pena señalar que este algoritmo,
como todos los algoritmos de aprendizaje, no deja de tener sus fortalezas y
debilidades. Algunas de ellas se enumeran de la siguiente manera:
fortalezas debilidades
• Es capaz de trabajar con • No muy útil para pequeños conjuntos
grandes cantidades de datos de datos
transaccional • Requiere un esfuerzo para separar
• Los resultados en las reglas la verdadera visión del sentido
que son fáciles de entender común
• Útil para "minería de datos" y el • Fácil sacar conclusiones falsas a
descubrimiento de conocimiento partir de los patrones al azar
inesperado en bases de datos
[ 264 ]
Capítulo 8
Para ver cómo este principio se puede aplicar en un entorno más realista, vamos a
considerar una base de datos simple transacción. La siguiente tabla muestra cinco
operaciones llevadas a cabo en la tienda de regalos de un hospital de imaginaria:
Al observar los juegos de compras, se puede inferir que hay un par de patrones de
compra típicos. Una persona que visite a un amigo enfermo o miembro de la familia
tiende a comprar una tarjeta bien y flores, mientras que los visitantes a las nuevas
madres tienden a comprar los osos de peluche de juguete y globos. Estos patrones
son notables porque aparecen con frecuencia suficiente como para coger nuestro
interés; nos basta con aplicar un poco de lógica y la experiencia de la materia para
explicar la regla.
De un modo similar, el algoritmo Apriori utiliza las medidas estadísticas de "grado
de interés" de un conjunto de elementos para localizar las reglas de asociación en
bases de datos de transacción mucho más grandes. En las secciones que siguen,
vamos a descubrir cómo priori calcula las medidas de interés y la forma en que se
combinan con la propiedad A priori para reducir el número de reglas que hay que
aprender.
[ 265 ]
Encontrar patrones - Mercado análisis de la cesta Uso de asociación Reglas
Reglas como {consiga la tarjeta} → {} flores son conocidas como reglas fuertes,
debido a que tienen tanto un alto apoyo y confianza. Una forma de encontrar
[ 266 ]
normas más fuertes sería examinar todas las combinaciones posibles de los
artículos en la tienda de regalos, medir el valor de apoyo y confianza, e informar
sólo aquellas normas que cumplen con ciertos niveles de interés. Sin embargo,
como se ha señalado antes, esta estrategia generalmente no es factible para
cualquier cosa, pero el más pequeño de los conjuntos de datos.
[ 267 ]
Capítulo 8
[ 269 ]
Encontrar patrones - Mercado análisis de la cesta Uso de asociación Reglas
En este punto, la segunda fase del algoritmo Apriori puede comenzar. Teniendo
en cuenta el conjunto de los conjuntos de elementos frecuentes, reglas de
asociación se generan a partir todos los subconjuntos posibles. por
ejemplo, {A, B} daría lugar a normas candidatos para {A} → {B} y {B} → {A}. Esto se
contrasta con un umbral mínimo de confianza, y cualquier regla que no cumple con
el nivel de confianza deseado se elimina.
Ejemplo - Identificación de
frecuencia comprado comestibles
con reglas de asociación
Como se ha señalado en la introducción de este capítulo, análisis de la cesta se
utiliza detrás de las escenas de los sistemas de recomendación utilizados en
muchas de ladrillo y mortero y los minoristas en línea. Las reglas de asociación
aprendidas indican las combinaciones de elementos que
menudo son comprados juntos. El conocimiento de estos patrones proporciona
información sobre las nuevas formas de una cadena de supermercados podría
optimizar el inventario, publicidad promociones, u organizar la disposición
física de la tienda. Por ejemplo, si los compradores con frecuencia
comprar café o zumo de naranja con un pastel de desayuno, puede ser posible aumentar
beneficios mediante la reubicación de repostería más cerca de café y zumo.
En este tutorial, vamos a realizar un análisis de la cesta de los datos transaccionales
de una tienda de comestibles. Sin embargo, las técnicas podrían aplicarse a muchos
tipos diferentes de problemas, desde recomendaciones de películas, a los sitios de
citas, a la búsqueda de interacciones peligrosas entre medicamentos. Al hacer esto,
vamos a ver cómo el algoritmo Apriori es capaz de evaluar de manera eficiente un
conjunto potencialmente masiva de reglas de asociación.
[ 271 ]
Capítulo 8
La tienda de comestibles típicos ofrece una gran variedad de artículos. Puede haber
cinco marcas de leche, una docena de diferentes tipos de detergente para la ropa, y
tres marcas de café. Dado el tamaño moderado de la tienda, vamos a suponer que no
son terriblemente preocupados por encontrar reglas que se aplican sólo a una marca
específica de la leche o detergente. Con
En este sentido, todos los nombres de marca puede ser removido de las compras.
Esto reduce el número de tiendas de comestibles a unos más manejables 169 tipos,
utilizando grandes categorías, tales como pollo, comidas congeladas, la margarina y
refrescos.
¿Tiene alguna conjeturas sobre qué tipos de artículos pueden ser adquiridos juntos?
Se vino y queso ser una pareja común? ¿Pan y mantequilla? Té y miel? Vamos a
profundizar en estos datos y ver si podemos confirmar nuestras suposiciones.
Las cinco primeras filas del archivo de grocery.csv prima son los siguientes:
[ 272 ]
cítricos, semielaborados pan, margarina, sopas listas
de frutas tropicales, yogur, café
leche entera
frutas de pepita, yogur, crema de queso, pastas de carne
otras verduras, leche entera, leche condensada, producto de
panadería larga vida
[ 273 ]
Encontrar patrones - Mercado análisis de la cesta Uso de asociación Reglas
Usted notará que R creado cuatro columnas para almacenar los artículos en los
datos transaccional: V1, V2, V3, V4 y. Aunque esto puede parecer razonable esto, si
se utilizan los datos de esta forma, vamos a tener problemas más adelante puede
parecer razonable, R eligió para crear cuatro variables debido a que la primera línea
tenía exactamente cuatro valores separados por comas.
Sin embargo, sabemos que las compras de comestibles pueden contener más de
cuatro elementos; en el diseño de cuatro columnas tales transacciones se
romperán a través de múltiples filas en la matriz. Podríamos tratar de remediar
esto poniendo la transacción con la mayor
número de elementos en la parte superior del archivo, pero esto pasa por alto otro tema
más problemático.
Mediante la estructuración de datos de esta manera, R ha construido un conjunto de
características que registran no sólo los artículos en las transacciones, sino también
el orden en que aparecen. Si imaginamos nuestro algoritmo de aprendizaje como un
intento de encontrar una relación entre V1, V2, V3, V4 y, a continuación, la leche
entera en V1 puede ser tratado de manera diferente que la leche entera que aparece
en V2. En su lugar, necesitamos un conjunto de datos que no trata a una transacción
como un conjunto de posiciones
que se llena (o no relleno) con los objetos específicos, sino más bien como una canasta de
mercado que sea
contiene o no contiene cada artículo en particular.
[ 275 ]
Capítulo 8
¿Por qué no acaba de guardar esto como una trama de datos como lo hicimos en la
mayoría de nuestros análisis? La razón es que a medida que se añaden las
transacciones y los elementos adicionales, una estructura de datos convencional se
convierte rápidamente demasiado grande para caber en la memoria disponible.
Incluso con el relativamente pequeño conjunto de datos transaccional utiliza aquí, la
matriz contiene cerca de 1,7 millones de células, la mayoría de los cuales contienen
ceros (de ahí el nombre "escaso" matriz-Hay muy pocos valores distintos de cero).
Puesto que no hay beneficio para el almacenamiento de todos estos valores cero, una
matriz dispersa en realidad no almacenar la matriz completa en la memoria; que
sólo almacena las células que están ocupadas por un elemento. Esto permite que la
estructura sea más eficiente de la memoria de una matriz o de datos de tramas de
tamaño equivalente.
Con el fin de crear la estructura de datos matriz dispersa partir de los datos
transaccionales, podemos utilizar la funcionalidad proporcionada por la arules
paquete. Instalar y cargar el paquete utilizando lainstall.packages ( "arules")
y biblioteca (arules) comandos.
Para ver información básica acerca de la matriz de las tiendas de comestibles que
acabamos de crear, utilizar el
resumen() funcionar en el objeto:
[ 277 ]
Encontrar patrones - Mercado análisis de la cesta Uso de asociación Reglas
sodayogurt (Otro)
1715137234055
[ 278 ]
Min. Qu Mediana Media Qu Max.
primero tercera
. .
1,000 2,000 3,000 4.409 6,000 32.000
[ 279 ]
Capítulo 8
[ 280 ]
Tenga en cuenta que los elementos de la matriz dispersa se ordenan en columnas por
orden alfabético. limpiador abrasivo y los edulcorantes artificiales se encuentran en
alrededor de 0,3 por ciento de las transacciones, mientras que los cosméticos para bebés
se encuentran en aproximadamente el 0,06 por ciento de las transacciones.
[ 281 ]
Encontrar patrones - Mercado análisis de la cesta Uso de asociación Reglas
[ 282 ]
Capítulo 8
El diagrama resultante representa una matriz con 5 filas y 169 columnas, que indican
las 5 transacciones y 169 posibles artículos que habíamos solicitado. Las células en la
matriz se llenan con negro para las transacciones (filas) donde se compró el artículo
(columna).
Esta visualización puede ser una herramienta útil para explorar los datos. Por un lado,
puede ayudar
con la identificación de problemas potenciales con los datos. Las columnas que se
llenan hasta el fondo podría indicar artículos que se compran en cada transacción, un
problema que pudiera surgir, tal vez, si el nombre o número de identificación de un
minorista se ha incluido accidentalmente en el conjunto de datos de transacciones.
Además, los patrones en el diagrama pueden ayudar a revelar información
procesable dentro de las transacciones y artículos, sobre todo si los datos se
clasifican de manera interesante. Por ejemplo, si las transacciones se ordenan por
fecha, los patrones de puntos negros podrían revelar efectos estacionales en el
número o tipos de artículos comprados. Tal vez alrededor de la Navidad o
Hanukkah, los juguetes son más comunes; alrededor de Halloween, tal vez dulces
se vuelven populares. Este tipo de visualización podría ser especialmente
poderosa si
los elementos también fueron clasificados en categorías. En la mayoría de los casos,
[ 283 ]
sin embargo, la trama se verá bastante aleatorio, como estática en una pantalla de
televisión.
[ 284 ]
Encontrar patrones - Mercado análisis de la cesta Uso de asociación Reglas
Tenga en cuenta que esta visualización no será tan útil para las bases de
datos de transacciones muy grandes, debido a que las células serán
demasiado pequeños para discernir. Sin embargo, si se combina con la
función de ejemplo (), puede ver la matriz dispersa de
un conjunto muestreado al azar de las transacciones. El comando para crear la
selección aleatoria de 100 transacciones es el siguiente:
> de imagen (de la muestra (comestibles, 100))
[ 285 ]
cargar este paquete si no lo ha hecho ya. La siguiente tabla muestra la sintaxis para
crear conjuntos de reglas con la función a priori ():
[ 286 ]
Capítulo 8
Aunque a priori ejecución de la función () es sencillo, a veces puede haber una buena
cantidad de ensayo y error necesario para encontrar los parámetros de apoyo y la
confianza que producen un número razonable de reglas de asociación. Si define estos
niveles demasiado altos, es posible encontrar ninguna regla o reglas que son
demasiado genérica a ser muy útil. Por otra parte, un umbral demasiado bajo puede
dar lugar a un número manejable de reglas, o peor aún, la operación puede tardar un
tiempo muy largo o se queda sin memoria durante la fase de aprendizaje.
En este caso, si se intenta utilizar la configuración predeterminada de apoyo = 0,1 y
confianza = 0,8, Vamos a terminar con un conjunto de reglas de cero:
> priori
(comestibles) un
conjunto de reglas 0
[ 287 ]
Encontrar patrones - Mercado análisis de la cesta Uso de asociación Reglas
Vamos a empezar con un umbral de confianza de 0,25, lo que significa que con el
fin de ser incluidos en los resultados, la regla tiene que ser correcta, al menos, el 25
por ciento de las veces. Esto eliminará las reglas más fiables, al tiempo que permite
un cierto margen para modificar las conductas con promociones específicas.
Ahora estamos listos para generar algunas reglas. Además del apoyo y confianza
parámetros mínimos, es útil para establecer minlen = 2 para eliminar reglas que
contienen menos de dos elementos. Esto evita que las reglas no interesantes que se
creen simplemente porque el artículo se compra con frecuencia, por ejemplo, {} →
leche entera. Esta regla se cumple el mínimo de apoyo y confianza, porque la leche
entera se compra en más del 25 por ciento de las transacciones, pero no es una
visión muy procesable.
[ 288 ]
Capítulo 8
Esto ahorra nuestras reglas en un objeto de reglas, puede echar una ojeada a escribir su
nombre:
> groceryrules
conjunto de
reglas 463
[ 290 ]
Encontrar patrones - Mercado análisis de la cesta Uso de asociación Reglas
Podemos echar un vistazo a las reglas específicas utilizando la función de inspeccionar ().
Por ejemplo, la
primeros tres reglas en el objeto groceryrules se pueden ver de la siguiente manera:
> Comprobar (groceryrules [1: 3])
[ 291 ]
Capítulo 8
A pesar del hecho de que la confianza y la elevación son altos, tiene plantas en
macetas {} {→ leche entera} parecer una regla muy útil? Probablemente no, ya que
no parece haber una razón lógica por qué alguien podría ser más propensos a
comprar leche con una planta en maceta. Sin embargo, nuestros datos sugieren lo
contrario. ¿Cómo podemos dar sentido a este hecho?
Un enfoque común es tomar las reglas de asociación y dividirlos en las
siguientes tres categorías:
• Procesable
• Trivial
• Inexplicable
[ 293 ]
Encontrar patrones - Mercado análisis de la cesta Uso de asociación Reglas
Las reglas son inexplicables si la conexión entre los elementos es tan poco clara que
encontrar la manera de utilizar la información es imposible o casi imposible. La regla
puede ser simplemente un patrón aleatorio en los datos, por ejemplo, una regla que
indica que los pepinillos {}
→ {helado de chocolate} puede deberse a un solo cliente, cuya mujer embarazada
tenido antojos regulares de extrañas combinaciones de alimentos.
Las mejores reglas son joyas ocultas, esos conocimientos no descubiertos en patrones
que parecen obvias una vez descubierta. Dado el tiempo suficiente, se podría evaluar
todos y cada regla para encontrar las gemas. Sin embargo, nosotros (el que realizar el
análisis de la cesta) puede no ser el mejor juez de si una norma es susceptible de
recurso, trivial, o inexplicable. En la siguiente sección, vamos a mejorar la utilidad de
nuestro trabajo mediante el empleo de métodos para clasificar y compartir las reglas
aprendidas para que los resultados más interesantes podrían flotar en la parte
superior.
[ 294 ]
Capítulo 8
Estas reglas parecen ser más interesantes que las que vimos anteriormente. La
primera regla, con una elevación de alrededor de 3,96, implica que las personas que
compran hierbas son casi cuatro veces más propensos a comprar hortalizas de raíz
que el típico cliente tal vez por un guiso de algún tipo? La regla número dos es
también interesante. crema batida es más de tres veces más probabilidades de ser
encontrado en un carro de compras con las bayas en comparación con otros carros, lo
que sugiere tal vez un emparejamiento de postre?
entonces podemos inspeccionar las reglas como lo hicimos con el conjunto más amplio:
> Comprobar (berryrules)
[ 295 ]
Encontrar patrones - Mercado análisis de la cesta Uso de asociación Reglas
Hay cuatro reglas que implican las bayas, dos de los cuales parecen ser lo
suficientemente interesante como para ser llamado procesable. Además de la
crema batida, bayas también se compran con frecuencia con yogur, un
emparejamiento que podría servir también para el desayuno o el almuerzo, así
como postre.
La función subconjunto () es muy potente. Los criterios para elegir el subconjunto puede
ser
definido con varias palabras clave y operadores:
• la palabra clave artículos explicó anteriormente, coincide con un
artículo que aparece en cualquier lugar de la regla. Para limitar el
subconjunto de donde se produce el encuentro sólo de la izquierda o de
la derecha lado, el usoLHS y RHS en lugar.
• El operador %en% significa que al menos uno de los elementos debe ser
encontrado en la lista que haya definido. Si desea cualquier regla que
concuerde con cualquiera bayas o yogur, se podría escribirartículos% en%
c ( "bayas", "yogur”).
• operadores adicionales están disponibles para la coincidencia parcial
(%alfiler%) Y juego completa (% Ain%). concordancia parcial permite
encontrar tanto en cítricos y frutas tropicales mediante una sola
búsqueda:artículos% pasador% "fruto". hace juego completo requiere
que todos los elementos enumerados están presentes. Por
ejemplo,artículos% ain% c ( "bayas", "yogur") encuentra únicas
reglas con tanto bayas y yogur.
• Subconjuntos también pueden estar limitadas por apoyo, confianzao
levantar. Por ejemplo,la confianza> 0,50 habría que limitar a las
normas con confianza superior al 50 por ciento.
• coinciden con los criterios pueden ser combinados con los operadores
estándar R lógicos como y (y), O (|), y no (!).
El uso de estas opciones, se puede limitar la selección de reglas para ser lo más específico
o general, según
te gustaría.
[ 296 ]
Capítulo 8
A veces también es conveniente convertir las reglas en una trama de datos R. Esto se
puede lograr fácilmente usando la función como (), como sigue:
> groceryrules_df <- como (groceryrules, "data.frame")
Esto crea una trama de datos con las reglas en el formato de factores y vectores numéricos
para
apoyo, confianzay levantar:
> str (groceryrules_df)
'hoja.de.datos': 463 des. de 4
variables:
PS reglas: Factor w / 463 niveles "{polvo de hornear} =>
{}" otras verduras, ..: 302 207 206 340 208 341
402 21 139 140 ...
PS apoyo: num0.00691 0.00702 0.00773 0.00773 0.0061 ...
$ Confianza: num0.4 0,405 0,431 0,475 0,475 ...
PS levantar: num1.57 1,59 3,96 2,45 1,86 ...
Usted puede optar por hacer esto si desea realizar un procesamiento adicional
en las normas o la necesidad de exportarlos a otra base de datos.
[ 297 ]
Encontrar patrones - Mercado análisis de la cesta Uso de asociación Reglas
Resumen
Las reglas de asociación se utilizan con frecuencia para encontrar proporcionar
información útil en las bases de datos de transacciones masivas de los grandes
minoristas. Como un proceso de aprendizaje sin supervisión, los alumnos de reglas
de asociación son capaces de extraer conocimiento a partir de grandes bases de datos
sin ningún conocimiento previo de lo que los patrones a buscar. El problema es que
se necesita un poco de esfuerzo para reducir la cantidad de información en un
conjunto más pequeño y más manejable de los resultados. El algoritmo Apriori, que
estudiamos en este capítulo, lo hace mediante el establecimiento de umbrales
mínimos de interestingness, e informar sólo las asociaciones que cumplen estos
criterios.
Ponemos el algoritmo Apriori a trabajar mientras se realiza un análisis de la cesta
para el valor de un mes de las transacciones en un supermercado de tamaño
moderado. Incluso en este pequeño ejemplo, se identificó una gran cantidad de
asociaciones. Entre ellas, hemos observado varios patrones que pueden ser útiles
para futuras campañas de marketing. Los mismos métodos que aplicamos se utilizan
en las tiendas mucho más grandes en las bases de datos muchas veces este tamaño.
En el siguiente capítulo, examinaremos otro algoritmo de aprendizaje no
supervisado. Al igual que las reglas de asociación, se pretende encontrar patrones
dentro de los datos. Pero a diferencia de las reglas de asociación que buscan
patrones dentro de las características, los métodos en el siguiente capítulo están
preocupados por encontrar conexiones entre los ejemplos.
[ 298 ]
Encontrar grupos de
datos - La agrupación
con k-medias
¿Alguna vez ha pasado el tiempo de ver una gran multitud? Si es así, es probable
que se han visto algunos personajes recurrentes. Tal vez un cierto tipo de persona,
identificada por un traje recién planchado y un maletín, trata de tipificar el
ejecutivo de negocios "gato gordo".
Un veinteañero que llevaba jeans ajustados, una camisa de franela, y gafas de sol
podría doblar un "inconformista", mientras que una mujer de descargando a los
niños de un monovolumen puede ser etiquetado como un "soccer mom".
Por supuesto, este tipo de estereotipos son peligrosos para aplicar a los
individuos, como no hay dos personas exactamente iguales. Sin embargo,
entendida como una manera de describir un colectivo, las etiquetas recogen
algunos aspectos subyacente de similitud entre los individuos dentro del grupo.
Como pronto aprender, el acto de la agrupación, o patrones de manchas en los
datos, no es muy diferente de detectar patrones en grupos de personas. En este
capítulo, usted aprenderá:
• Las formas de agrupamiento tareas difieren de las tareas de
clasificación que hemos examinado anteriormente
• Cómo agrupación define un grupo, y como tales grupos son
identificados por k-medias, un algoritmo clásico y fácil de entender la
agrupación
• Los pasos necesarios para aplicar la agrupación a una tarea del mundo
real de la identificación de segmentos de marketing entre los usuarios
adolescentes de medios sociales
[ 299 ]
Antes de saltar a la acción, vamos a empezar por tomar una mirada en
profundidad a exactamente lo que implica el agrupamiento.
[ 300 ]
Encontrar grupos de datos - La agrupación con k-medias
agrupación comprensión
La agrupación es una tarea de aprendizaje automático sin supervisión, que divide
automáticamente los datos en agrupaciones o grupos de elementos similares. Esto
lo hace sin haber sido contaron que los grupos deben buscar antes de tiempo.
Como es posible que ni siquiera saben lo que estamos buscando, la agrupación se
utiliza para el descubrimiento de conocimiento en lugar de predicción.
Proporciona una visión de las agrupaciones naturales que se encuentran dentro de
los datos.
Sin conocimiento previo de lo que comprende un clúster, ¿cómo puede una
computadora posiblemente saber dónde termina un grupo y otro comienza? La
respuesta es simple. Clustering es guiado por el principio de que los elementos
dentro de un clúster deben ser muy similares entre sí, pero muy diferente de los
de fuera. La definición de similitud podría varían de una aplicación, pero la idea
básica es siempre el mismo: grupo de los datos para que los elementos
relacionados se colocan juntos.
Las agrupaciones resultantes se pueden entonces utilizar para la acción. Por ejemplo, es
posible encontrar
métodos de agrupación empleadas en las siguientes aplicaciones:
• La segmentación de clientes en grupos con características demográficas
similares o patrones de compra para las campañas de marketing
dirigidas
• La detección de comportamiento anómalo, tales como intrusiones en la
red no autorizados, mediante la identificación de los patrones de uso de
caer fuera de los grupos conocidos
• Simplificar extremadamente grandes conjuntos de datos mediante la
agrupación de características con valores similares en un número
menor de categorías homogéneas
En general, la agrupación es útil siempre que los datos diversos y variados pueden
ejemplificarse por un número mucho menor de los grupos. Da lugar a estructuras
de datos significativos y procesables que reducen la complejidad y permiten
conocer los patrones de relaciones.
[ 302 ]
Capítulo 9
Como era de esperar, parece que hay un patrón. Podríamos suponer que la esquina
superior izquierda, que representa a las personas con muchas publicaciones de la
informática, pero algunos artículos sobre matemáticas, podría ser un grupo de
científicos de la computación. Siguiendo esta lógica, la esquina inferior derecha
puede ser un grupo de matemáticos. Del mismo modo, la esquina superior derecha,
[ 303 ]
los que tienen experiencia tanto en matemáticas y ciencias de la computación, puede
ser el aprendizaje de máquinas expertos.
[ 304 ]
Encontrar grupos de datos - La agrupación con k-medias
En lugar de definir los límites de los grupos subjetivamente, sería agradable de usar
la máquina de aprendizaje para definir objetivamente. Dadas las divisiones paralelas
al eje en el diagrama anterior, nuestro problema parece una aplicación obvia para los
árboles de decisión que se describen en el Capítulo 5, divide y vencerás -
Clasificación a partir de árboles de decisión y Reglas. Esto nos puede proporcionar
con una regla en la forma "si un investigador tiene pocas publicaciones matemáticas,
entonces él / ella es un experto en informática." Por desgracia, hay un problema con
este plan. Como no tenemos datos sobre el verdadero valor de la clase para cada
punto, un algoritmo de aprendizaje supervisado no tendría capacidad para
aprender un patrón de este tipo, ya que no tendría forma de saber lo que divide
resultaría en grupos homogéneos.
Por otra parte, algoritmos de agrupamiento usan un proceso muy similar a lo que
hicimos mediante la inspección visual del diagrama de dispersión. El uso de una
medida de cómo de cerca los ejemplos están relacionados, grupos homogéneos
pueden ser identificados. En la siguiente sección, vamos a empezar a ver cómo se
implementan los algoritmos de agrupamiento.
[ 305 ]
utilizar la agrupación para crear etiquetas de clase. A partir de
ahí, se puede aplicar un alumno supervisado tales como árboles
de decisión para encontrar los predictores más importantes de
estas clases. Esto se llama semi-aprendizaje supervisado.
[ 306 ]
Capítulo 9
fortalezas debilidades
• Utiliza principios simples que se • No es tan sofisticado como
pueden explicar en términos no algoritmos de agrupamiento más
estadísticos modernos
• Altamente flexible, y puede ser • Debido a que utiliza un elemento de
adaptado con ajustes simples para azar, no está garantizado para
hacer frente a casi todos sus encontrar el conjunto óptimo de las
deficiencias agrupaciones
• Realiza lo suficientemente bien en • Requiere una suposición razonable
muchos casos de uso del mundo en cuanto a cuántos grupos existen
real naturalmente en los datos
• No es ideal para las agrupaciones o
grupos de densidad muy variable
no esféricas
[ 308 ]
Encontrar grupos de datos - La agrupación con k-medias
[ 310 ]
Capítulo 9
Vale la pena señalar que, aunque los tres centros de los conglomerados en el
diagrama anterior resultan ser ampliamente separados, esto no siempre es
necesariamente el caso. Puesto que se seleccionan al azar, los tres centros podrían
tener tan sido fácilmente tres puntos adyacentes. Como el algoritmo de k-medias es
altamente sensible a la posición inicial de los centros de los conglomerados, esto
significa que el azar puede tener un impacto sustancial en el conjunto final de
clusters.
Para abordar este problema, k-medias se pueden modificar para utilizar diferentes
métodos para elegir los centros iniciales. Por ejemplo, una variante elige valores
aleatorios que ocurren en cualquier lugar del espacio de características (en lugar de
solamente la selección entre los valores observados en los datos). Otra opción es
saltarse este paso por completo; mediante la asignación al azar cada ejemplo de un
clúster, el algoritmo puede ir por delante de inmediato a la fase de actualización.
Cada uno de estos enfoques añade un sesgo particular a la última serie de grupos,
que es posible que pueda utilizar para mejorar sus resultados.
[ 312 ]
Encontrar grupos de datos - La agrupación con k-medias
El uso de esta función de distancia, nos encontramos con la distancia entre cada ejemplo y
cada
centro de la agrupación. El ejemplo se asigna a la agrupación centro más cercano.
[ 313 ]
Capítulo 9
[ 314 ]
Encontrar grupos de datos - La agrupación con k-medias
Debido a que fueron reasignados dos puntos más, otra actualización debe ocurrir,
que mueve los centroides y actualiza los límites de las agrupaciones. Sin embargo,
debido a que estos cambios dan como resultado no hay reasignaciones, el algoritmo
de k-medias se detiene. Las asignaciones de racimo son ahora definitiva:
Los grupos finales pueden ser reportados en una de las dos maneras. En primer
lugar, es posible que simplemente informar de las asignaciones de racimo como la
A, B, o C para cada ejemplo. Como alternativa, puede informar las coordenadas de
los centroides de grupo después de la última actualización. Teniendo en cuenta
cualquiera de los métodos de informes, que son capaces de definir los límites de las
agrupaciones mediante el cálculo de los centroides o asignar cada ejemplo a su
grupo más cercano.
[ 316 ]
Capítulo 9
[ 318 ]
Encontrar grupos de datos - La agrupación con k-medias
[ 320 ]
Capítulo 9
Este conjunto de datos fue compilado por Brett Lantz, mientras que la
realización de la investigación sociológica sobre las identidades
adolescentes en la Universidad de Notre Dame. Si utiliza los datos para
fines de investigación, por favor citar este capítulo de un libro.
El conjunto de datos completo está disponible en la página web de
la editorial Packt con snsdata.csv nombre de archivo. Para seguir a
lo largo de forma interactiva, este capítulo se presupone que ha
guardado este archivo en el directorio de trabajo R.
[ 321 ]
También vamos a echar un vistazo rápido a los detalles de los datos. Las primeras líneas
de la
str () de salida son los siguientes:
[ 322 ]
Encontrar grupos de datos - La agrupación con k-medias
Tal como esperábamos, los datos incluyen 30.000 adolescentes con cuatro variables
que indica las características personales y 36 palabras que indican intereses.
Vamos a ver cómo este problema es sustancial. Una opción es utilizar la tabla ()
de comandos, de la siguiente manera:
> de mesa ($
adolescentes
género) FM
220545222
Aunque esta orden le dice Nos cuántos valores F y M están presentes, la función de
tabla () excluye los valores de NA en lugar de tratarla como una categoría separada.
Para incluir los valores de NA (si los hay), simplemente hay que añadir un parámetro
adicional:
> mesa ($ adolescentes género, useNA =
"Ifany") FM <NA>
2205452222724
Aquí, vemos que 2.724 registros (9 por ciento) tienen datos de género que faltan.
Curiosamente, hay más de cuatro veces el número de hembras como machos en los
datos del SNS, lo que sugiere que los hombres no son tan propensos a utilizar los
sitios web del SNS como hembras.
Si examina las otras variables en la trama de datos, encontrará que, además de
género, tan sólo la edad los valores que faltan. Para los datos numéricos, el
comando de resumen () nos dice que el número de desaparecidos valores de NA:
> resumen ($ adolescentes de edad)
Min. primeroQu.MedianMean
tercero Qu.Max. AN
3.08616.31017.29017.99018.260
106.900 5086
[ 323 ]
Un total de 5.086 registros (17 por ciento) tienen edades que faltan. También
preocupante es el hecho de que los valores mínimo y máximo parecen ser
razonable; es poco probable que un niño de 3 años o A 106 años de edad asiste a la
escuela secundaria. Para asegurar que estos valores extremos no causan problemas
para el análisis, tendremos que limpiarlos antes de continuar.
[ 324 ]
Capítulo 9
Por volver a comprobar resumen de la salida (), vemos que el rango de edad
ahora sigue una distribución que se parece mucho más a una escuela
secundaria real:
> resumen ($ adolescentes de edad)
Min. primeroQu.MedianMean tercero
Qu.Max. AN 13.0316.3017.2617.2518.2220.00
5523
Por desgracia, ahora hemos creado un problema de los datos que faltan aún mayor.
Necesitaremos
para encontrar una manera de lidiar con estos valores antes de continuar con nuestro
análisis.
[ 326 ]
Encontrar grupos de datos - La agrupación con k-medias
Como era de esperar, las pruebas de función is.na () si el género es igual a NA.
Por lo tanto, la primera instrucción asigna $ adolescentes de sexo femenino el
valor 1 si el género es igual a F y el género no es igual a NA; de lo contrario, se
asigna el valor 0. En la segunda sentencia, si is.na () devuelve TRUE, significa que
el género no se encuentra, los adolescentes $ no_gender variable se asignan 1; de
lo contrario, se le asigna el valor 0.
Para confirmar que hicimos el trabajo correctamente, vamos a comparar nuestra ficticia
construida
variables a la variable original de género:
> mesa ($ adolescentes género, useNA =
"Ifany") FM <NA>
2205452222724
> mesa ($ adolescentes de sexo
femenino, useNA = "Ifany") 01
7946 22054
> mesa ($ adolescentes no_gender, useNA =
"Ifany") 01
272762724
[ 328 ]
Capítulo 9
Se puede pensar en una manera que podría ser capaz de utilizar los datos del SNS a
hacer una conjetura informada acerca de la edad de un adolescente? Si usted está
pensando en usar el año de graduación, que tienes la idea correcta. La mayoría de la
gente en una cohorte de graduación nacieron dentro de un mismo año calendario. Si
podemos identificar la edad típica para cada cohorte, tendríamos una estimación
bastante razonable de la edad de un estudiante en ese año de graduación.
Una forma de encontrar un valor típico es mediante el cálculo del valor medio o
promedio. Si tratamos
para aplicar la función media (), como lo hicimos para los análisis anteriores, hay un
problema:
> media ($ adolescentes de edad)
[1] NA
La cuestión es que la media está definida por un vector que contiene los datos que
faltan. A medida que nuestra edad de los datos contiene los valores que faltan, con
una media ($ adolescentes de edad) devuelve un valor que falta. Podemos corregir
esto añadiendo un parámetro adicional para eliminar los valores que faltan antes de
calcular la media:
> media ($ adolescentes edad,
na.rm = VERDADERO) [1] 17.25243
La edad media difiere en más o menos un año por cada cambio en el año de graduación.
Esto no es
sorprende en absoluto, sino un hallazgo útil para confirmar nuestros datos es razonable.
[ 329 ]
La producción total () es una trama de datos. Esto es útil para algunos propósitos,
pero requeriría un trabajo extra para combinar de nuevo en nuestros datos
originales. Como alternativa, se puede utilizar la función de ave (), que devuelve
un vector con el grupo significa repite de manera que el resultado es igual en
longitud al vector original:
> ave_age <- ave (adolescentes $ edad, adolescentes $ GradYear, FUN =
función (x) media (x, na.rm = TRUE))
[ 330 ]
Encontrar grupos de datos - La agrupación con k-medias
Para imputar estos medios en los valores perdidos, necesitamos una más ifelse ()
para utilizar el valor ave_age sólo si el valor original de la edad era NA:
> $ adolescentes edad <- ifelse (is.na ($ adolescentes de edad), ave_age,
adolescentes edad $)
Los resultados (resumen) muestran que los valores que faltan ahora han sido eliminados:
> resumen ($ adolescentes de edad)
Min. primeroQu.MedianMean
tercero Qu. Max.
13.0316.2817.2417.2418.21
20.00
Con los datos listos para su análisis, estamos listos para sumergirse en la parte
interesante de este proyecto. Vamos a ver si nuestros esfuerzos han dado sus frutos.
[ 331 ]
Capítulo 9
La función kmeans () requiere una trama de datos que contiene sólo los datos
numéricos y un parámetro que especifica el número deseado de clusters. Si usted
tiene estas dos cosas listas, el proceso real de la construcción del modelo es simple. El
problema es que la elección de la combinación adecuada de los datos y clusters
puede ser un poco de un arte; a veces una gran cantidad de ensayo y error está
involucrado.
Vamos a empezar nuestro análisis de conglomerados considerando sólo las 36
características que representan el número de veces que diversos intereses
aparecieron en los perfiles del SNS adolescentes. Para mayor comodidad, vamos
a hacer una trama de datos que contiene sólo estas características:
> intereses <- [5:40] adolescentes
Ya que lapply () devuelve una matriz, debe ser forzado de nuevo a forma
trama de datos usando el as.data.frame () función.
Nuestra última decisión implica decidir el número de grupos que se utilizará para
segmentar
los datos. Si utilizamos demasiados grupos, podemos encontrarlos demasiado
específicas para ser útiles; Por el contrario, la elección de muy pocos puede resultar
en grupos heterogéneos. Usted debe sentirse cómodo experimentando con los
valores de k. Si no te gusta el resultado, se puede tratar fácilmente otro valor y
empezar de nuevo.
[ 332 ]
La elección del número de grupos es más fácil si usted está
familiarizado con la población de análisis. Tener un
presentimiento sobre el verdadero número de agrupaciones
naturales le puede ahorrar algo de ensayo y error.
[ 333 ]
Encontrar grupos de datos - La agrupación con k-medias
Para ayudar a predecir el número de clusters en los datos, voy a aplazar a una de mis
películas favoritas, el club del desayuno, una comedia de mayoría de edad, que
publicó en 1985 y dirigida por John Hughes. Los personajes adolescentes en esta
película se identifican en términos de cinco estereotipos: un cerebro, un atleta, un
caso perdido, una princesa, y un criminal. Dado que estas identidades prevalecen a
lo largo populares ficción para adolescentes, cinco parece como un punto de partida
razonable para k.
Para utilizar el algoritmo K-medias para dividir los datos de interés de los
adolescentes en cinco grupos, utilizamos la función () kmeans en la trama de datos
intereses. Debido a que el algoritmo de k-medias utiliza puntos de partida al azar, la
función set.seed () se utiliza para asegurar que los resultados corresponden a la
salida en los ejemplos que siguen. Si recuerda
los capítulos anteriores, este comando inicializa generador de números aleatorios de
R a una secuencia específica. En ausencia de esta declaración, los resultados pueden
variar cada vez que se ejecuta el algoritmo de k-medias:
> set.seed (2345)
> teen_clusters <- kmeans (interests_z, 5)
[ 335 ]
Capítulo 9
Aquí, vemos los cinco grupos que habíamos solicitado. El grupo más pequeño
tiene 600 adolescentes (2 por ciento), aunque el grupo más grande tiene 21.514 (72
por ciento). A pesar de la gran diferencia entre el número de personas en los
grupos de mayor y menor es poco preocupante, sin examinar estos grupos con
más cuidado, no vamos a saber si esto indica un problema. Puede ser el caso que
la disparidad de tamaño de los grupos indica algo real, como un gran grupo de
adolescentes que comparten intereses similares, o puede ser una casualidad al
azar causada por la inicial de k-medias centros de los conglomerados. Sabremos
más a medida que comenzamos a mirar a la homogeneidad de cada grupo.
Las filas de la salida (con la etiqueta 1 a 5) se refieren a los cinco grupos, mientras
que los números a través de cada fila indican el valor medio de la agrupación por el
interés que aparece en la parte superior de la columna. Como los valores son
puntuación z estandarizada, los valores positivos se encuentran por encima del
nivel medio global para todos los adolescentes y los valores negativos están debajo
de la media global. Por ejemplo, la tercera fila tiene el valor más alto en la columna
de la pelota de baloncesto, lo que significa que el grupo 3 tiene el interés promedio
más alto en el baloncesto entre todos
los clusters.
[ 336 ]
Encontrar grupos de datos - La agrupación con k-medias
Examinando si los racimos caen por encima o por debajo del nivel medio para cada
categoría de interés, podemos empezar a notar patrones que distinguen a los
grupos entre sí. En la práctica, esto implica la impresión de los centros de los
conglomerados y buscar a través de ellos para cualquier patrón o valores extremos,
como una sopa de letras, pero con los números. La siguiente captura de pantalla
muestra un patrón resaltado para cada uno de los cinco grupos, para 19 de los 36
intereses adolescentes:
[ 337 ]
Capítulo 9
[ 338 ]
Encontrar grupos de datos - La agrupación con k-medias
[ 339 ]
Capítulo 9
Recordemos que, en general alrededor del 74 por ciento de los usuarios del SNS son
mujeres. Cluster 1, la
llamada Princesses, es casi 84 por ciento de mujeres, mientras que el Grupo 2 y
Grupo 5 son sólo alrededor del 70 por ciento de mujeres. Estas disparidades
implican que hay diferencias en los intereses que los niños y niñas adolescentes
discuten en sus páginas de redes sociales.
Dado nuestro éxito en la predicción de género, es posible que también sospecha
que los grupos son predictivos de la cantidad de amigos que los usuarios
tienen. Esta hipótesis parece estar apoyada por los datos, lo cual es de la
siguiente manera:
> agregados (datos = adolescentes, amigos ~ clúster, media)
racimo amigos
11 41.43054
22 32.57333
33 37.16185
44 30.50290
55 27.70052
[ 340 ]
La asociación entre los miembros del grupo, el género y el número de amigos que
sugiere que los grupos pueden ser útiles para predecir el comportamiento. La
validación de su capacidad predictiva de esta manera puede hacer que los cúmulos
más fácil de vender cuando son lanzadas al equipo de marketing, en última
instancia, mejorar el rendimiento del algoritmo.
[ 341 ]
Encontrar grupos de datos - La agrupación con k-medias
Resumen
Nuestros hallazgos apoyan el dicho popular de que "las aves del mismo
plumaje vuelan juntos". Mediante el uso de métodos de aprendizaje automático
a agruparse adolescentes con otros que tienen intereses similares, hemos sido
capaces de desarrollar una tipología de las identidades adolescentes que fue
predictivo de las características personales, tales como el género y el número de
amigos. Estos mismos métodos pueden aplicarse a otros contextos con
resultados similares.
Este capítulo cubre sólo los fundamentos de la agrupación. Como método de
aprendizaje de máquina muy maduro, hay muchas variantes del algoritmo k-
medias, así como muchos otros algoritmos de agrupamiento que traen los sesgos y
heurísticos únicas para la tarea. Sobre la base de la fundación en este capítulo, usted
será capaz de entender y aplicar otros métodos de agrupación a nuevos problemas.
En el siguiente capítulo, vamos a empezar a buscar métodos para medir el éxito de
un algoritmo de aprendizaje, que son aplicables en muchas tareas de aprendizaje
automático. Si bien nuestro proceso siempre se ha dedicado algunos esfuerzos para
evaluar el éxito de aprendizaje, con el fin de obtener el más alto grado de
rendimiento, es crucial estar
capaz de definir y medir en los términos más estrictos.
[ 342 ]
La evaluación de Modelo
Actuación
Cuando sólo los ricos podían permitirse el lujo de educación, pruebas y exámenes
no evaluar el potencial de los estudiantes. En su lugar, los maestros fueron
juzgados por los padres que querían saber si sus hijos habían aprendido lo
suficiente como para justificar los salarios de los instructores. Obviamente, esto
ha cambiado con los años. Ahora, estas evaluaciones se utilizan para distinguir
entre los alumnos de alto y de bajo rendimiento, filtrarlas a las carreras y otras
oportunidades.
Dada la importancia de este proceso, una gran cantidad de esfuerzo se invierte en el
desarrollo de evaluaciones de los estudiantes precisos. evaluaciones justas tienen un
gran número de preguntas que cubren una gran amplitud de temas y recompensan
el verdadero conocimiento sobre conjeturas afortunadas. También requieren los
estudiantes para pensar acerca de los problemas que nunca se han enfrentado antes.
Por lo tanto, las respuestas correctas indican que los estudiantes pueden
generalizar su conocimiento de manera más amplia.
El proceso de evaluación de algoritmos de aprendizaje automático es muy similar al
proceso de evaluación de los estudiantes. Ya que los algoritmos tienen diferentes
fortalezas y debilidades, las pruebas deben distinguir entre los alumnos. También es
importante para predecir cómo un alumno llevará a cabo en los datos futuros.
En este capítulo se proporciona la información necesaria para evaluar los alumnos de la
máquina, tales como:
[ 344 ]
Evaluación del desempeño del modelo
Del mismo modo que la mejor manera de aprender un tema es tratar de enseñar a
otra persona, el proceso de la enseñanza y la evaluación de los alumnos de la
máquina le proporcionará una mayor comprensión de los métodos que ha
aprendido hasta ahora.
[ 345 ]
Capítulo 10
Los valores reales y predichos clase puede ser evidente por sí mismo, sino que son
la clave para la evaluación. Al igual que un profesor utiliza una clave de respuestas
para evaluar las respuestas del estudiante, lo que necesitamos saber la respuesta
correcta para las predicciones del aprendiz máquina. El objetivo es mantener dos
vectores: uno de los datos que sostienen los valores de la clase correctas o reales, y la
otra la celebración de los valores de la clase predichos. Ambos vectores deben tener
el mismo número de valores almacenados en el mismo orden. El predichos y los
valores reales se pueden almacenar como vectores o columnas de I separados en un
único marco de datos R.
La obtención de estos datos es fácil. Los valores de clase reales vienen directamente
de la función objetivo en el conjunto de datos de prueba. los valores de clase
predichas se obtienen a partir del clasificador construido sobre los datos de
entrenamiento, y se aplican a los datos de prueba. Para la mayoría de aprendizaje
automático
paquetes, esto implica la aplicación de la predecir() función a un objeto de modelo
y una trama de datos de los datos de prueba, tales como: predicted_outcome <-
predecir (modelo, test_data).
[ 346 ]
Evaluación del desempeño del modelo
Hasta ahora, sólo hemos examinado las predicciones de clasificación que utilizan
estos dos vectores de datos. Sin embargo, la mayoría de los modelos se pueden
suministrar otra pieza de información útil. A pesar de que el clasificador hace una
única predicción sobre cada ejemplo, puede ser más seguro de algunas decisiones
que otros. Por ejemplo, un clasificador puede ser un 99 por ciento seguro de que
un SMS con las palabras "libre" y "tonos" es spam, pero es sólo el 51 por ciento
seguro de que un SMS con la palabra "noche" es spam. En ambos casos, el
clasificador clasifica el mensaje como correo no deseado, pero es mucho más
seguro acerca de una decisión que el otro.
[ 349 ]
Evaluación del desempeño del modelo
Para estos seis casos de prueba, los tipos de mensajes SMS previstos y los reales
están de acuerdo; el modelo predijo correctamente su estado. Por otra parte, las
probabilidades de predicción sugieren que el modelo era muy seguro acerca de estas
predicciones, ya que toda la caída cercana a cero o uno.
Que pasa cuando la predichos y los valores reales son más lejos de cero y uno? Uso
de la función subconjunto (), podemos identificar algunos de estos registros. La
siguiente salida muestra los casos de prueba en el que el modelo estimado la
probabilidad de correo no deseado en algún lugar entre 40 y 60 por ciento:
> cabeza (subconjunto (sms_results, prob_spam> 0,40 y prob_spam <0,60))
ACTUAL_TYPE predict_type prob_spam prob_ham
377 correo no jamón 0.47536 0.52464
deseado
717 jamón correo no 0.56188 0.43812
deseado
1311 jamón correo no 0.57917 0.42083
deseado
Por la propia admisión del modelo, estos fueron casos en los que una predicción
correcta era prácticamente una moneda al aire. Sin embargo, las tres predicciones
eran erróneas-un resultado desafortunado. Veamos unos cuantos casos en que el
[ 350 ]
modelo era incorrecta:
> (subconjunto de cabeza (sms_results, ACTUAL_TYPE! =
predict_type)) ACTUAL_TYPE predict_type prob_spam
prob_ham
[ 351 ]
Capítulo 10
Estos casos ilustran el hecho importante de que un modelo puede ser muy seguros y
sin embargo, pueden ser extremadamente mal. Los seis de estos casos de prueba
eran spam que el clasificador se cree que no tienen una probabilidad de menos del
98 por ciento de ser jamón.
A pesar de tales errores, es útil el modelo todavía? Podemos responder a esta pregunta
mediante la aplicación de diversas métricas de error a los datos de evaluación. De
hecho, muchas de estas métricas se basan en una herramienta que ya hemos usado
ampliamente en los capítulos anteriores.
[ 353 ]
Evaluación del desempeño del modelo
Las medidas de rendimiento más comunes consideran la capacidad del modelo para
discernir una clase frente a todos los demás. La clase de interés se conoce como la
clase positiva, mientras que todos los demás son conocidos como negativo.
[ 354 ]
La matriz de confusión, presentado de esta manera, es la base de muchas de
las medidas más importantes del rendimiento del modelo. En la siguiente
sección, vamos a utilizar esta matriz para tener una mejor comprensión de lo
que se quiere decir con exactitud.
[ 355 ]
Capítulo 10
En esta fórmula, los términos TP, TN, FP y FN se refieren al número de veces que
las predicciones del modelo caían en cada una de estas categorías. Por tanto, la
precisión es una proporción que representa el número de verdaderos positivos y
verdaderos negativos, dividido por el número total de predicciones.
Tenga en cuenta que la tasa de error se puede calcular como uno menos la
exactitud. Intuitivamente, esto tiene sentido; un modelo que es correcto 95 por
ciento del tiempo es incorrecta 5 por ciento del tiempo.
Una manera fácil de tabular las predicciones de un clasificador en una matriz de
confusión es utilizar la función de R mesa (). El comando para crear una matriz de
confusión para los datos de SMS se muestra como sigue. Los recuentos de esta tabla
a continuación podrían ser utilizados para el cálculo de precisión y otras
estadísticas:
> mesa (sms_results $ ACTUAL_TYPE, sms_results $ predict_type)
correo
no deseado
jamón ham1203
4
spam31 152
Si te gusta para crear una matriz de confusión con una salida más informativo, el
Cuadro cruzado () función en el gmodels paquete ofrece una solución
personalizable. Si recuerdan, se utilizó por primera vez esta función en el
[ 356 ]
Capítulo 2, Gestión y Comprensión
Datos. Si no ha instalado el paquete en ese momento, tendrá que hacerlo a través de la
install.packages ( "gmodels") mando.
[ 357 ]
Evaluación del desempeño del modelo
Por defecto, la salida cruzado () incluye proporciones en cada célula que indican el
número de células como porcentaje de la fila de tabla, columna o recuentos totales
generales. La salida también incluye de fila y columna de totales. Como se muestra
en el siguiente código, la sintaxis es similar a la función de tabla ():
> biblioteca (gmodels)
> Cuadro cruzado (sms_results $ ACTUAL_TYPE, sms_results $ predict_type)
Hemos utilizado cruzado () en varios de los capítulos anteriores, por lo que ahora
usted debe estar familiarizado con la salida. Si alguna vez olvida cómo interpretar la
salida, simplemente se refieren a la clave (etiquetados del contenido de celdas), que
proporciona la definición de cada número en las celdas de la tabla.
[ 358 ]
Capítulo 10
También podemos calcular la tasa de error (FP + FN) / (TP + FP + VN + FN) como:
> (4 + 31) / (152 + 1203 + 4 + 31)
[1] 0.02517986
[ 359 ]
Evaluación del desempeño del modelo
El paquete de intercalación añade una nueva función para crear una matriz de
confusión. Como se muestra en el siguiente comando, la sintaxis es similar a la tabla
(), pero con una diferencia menor. Debido símbolo de intercalación proporciona
medidas de desempeño de los modelos que tienen en cuenta la capacidad de
clasificar la clase positiva, un parámetro positivo debe ser especificado. En este caso,
ya que el clasificador de SMS está destinado a detectar el spam, estableceremos
positivo = "correo no deseado" de la siguiente manera:
> biblioteca (caret)
> Matriz de confusión (sms_results $
predict_type, sms_results $ ACTUAL_TYPE,
positivo = "spam")
[ 360 ]
Capítulo 10
La estadística kappa
La estadística kappa (con la etiqueta Kappa en la salida anterior) ajusta la precisión
al tomar en cuenta la posibilidad de una predicción correcta por pura casualidad.
Esto es especialmente importante para los conjuntos de datos con un desequilibrio
grave de clase, debido a que un clasificador puede obtener una alta precisión
simplemente siempre adivinando la clase más frecuente. La estadística kappa sólo se
recompensa el clasificador si es correcto más a menudo que esta estrategia simplista.
Kappa valores van de 0 a un máximo de 1, lo que indica un acuerdo perfecto entre
las predicciones del modelo y los valores verdaderos. Los valores inferiores a uno
indican acuerdo imperfecto. Dependiendo de cómo un modelo se va a utilizar, la
interpretación de la estadística kappa podría variar. Una interpretación común se
muestra como sigue:
• Pobre acuerdo = menos de 0,20
• acuerdo justo = 0,20 a 0,40
• moderada acuerdo = 0,40-0,60
• Buen acuerdo = 0,60 a 0,80
• Muy buen acuerdo = 0.80 a 1.00
Es importante señalar que estas categorías son subjetivos. Mientras que un "buen
acuerdo" puede ser más que suficiente para predecir sabor de helado favorito de
alguien "muy buen acuerdo" no puede ser suficiente si su objetivo es identificar los
defectos de nacimiento.
[ 362 ]
Evaluación del desempeño del modelo
Estas proporciones son fáciles de obtener a partir de una matriz de confusión una
vez que sabe dónde buscar. Vamos a considerar la matriz de confusión para el
modelo de clasificación de SMS creado con la función cruzado (), que se repite aquí
por conveniencia:
Recuerde que el valor inferior en cada celda indica la proporción de todos los casos
que caen en esa célula. Por lo tanto, para calcular la concordancia observada Pr (a),
sólo tenemos que añadir la proporción de todos los casos en los que el tipo predicho
y el tipo SMS real de acuerdo. Por lo tanto, podemos calcular Pr (a) como:
> Pr_a <- 0,865 + 0,109
> pr_a
[1] 0,974
Para este clasificador, los valores observados y reales están de acuerdo en 97,4
por ciento del tiempo- se dará cuenta de que esta es la misma que la precisión. La
estadística kappa ajusta la precisión relativa al acuerdo esperado Pr (e), que es la
probabilidad de que el azar solo llevaría a los valores previstos y reales para que
coincida, bajo la
suposición de que ambos se seleccionan al azar de acuerdo con las proporciones
observadas.
Para encontrar estas proporciones observadas, podemos utilizar las reglas de
probabilidad que aprendimos
en el capítulo 4, Probabilístico de aprendizaje - Clasificación a partir de Naive Bayes.
Suponiendo dos eventos son independientes (lo que significa que una no afecta a la
otra), las reglas de probabilidad en cuenta que la probabilidad de que se produzca
tanto es igual al producto de las probabilidades de cada uno que se produzcan. Por
[ 363 ]
ejemplo, sabemos que la probabilidad de elegir tanto el jamón es:
Pr (tipo real es el jamón) * Pr (tipo predicho es el jamón)
[ 364 ]
Capítulo 10
Desde Pr (e) es 0,786, por pura casualidad, esperaríamos que los valores observados
y los reales se pongan de acuerdo sobre el 78,6 por ciento del tiempo.
Esto significa que ahora tenemos toda la información necesaria para completar
la fórmula kappa. Enchufar el Pr (a) y Pr (e) valores en la fórmula kappa,
encontramos:
> K <- (pr_a - pr_e) / (1 - pr_e)
> k
[1] 0.8787494
[ 365 ]
Weighted0.8825203 0.01949315
[ 366 ]
Evaluación del desempeño del modelo
Asignatu = 1390
ras
evaluado = 2
res
Kappa = 0,883
z = 33
p-valor = 0
Sensibilidad y especificidad
Encontrar un clasificador útil a menudo implica un equilibrio entre las predicciones
que son demasiado conservador y demasiado agresivo. Por ejemplo, un filtro de
correo electrónico podría garantizar para eliminar todos los mensajes de correo no
deseado mediante la eliminación de casi todos los agresiva mensaje de jamón al
mismo tiempo. Por otro lado, lo que garantiza que ningún mensaje de jamón se
filtra inadvertidamente podría exigirnos para permitir que una cantidad
[ 367 ]
inaceptable de correo no deseado para pasar a través del filtro. Un par de medidas
de rendimiento de captura esta disyuntiva: sensibilidad y especificidad.
[ 368 ]
Capítulo 10
[ 369 ]
Evaluación del desempeño del modelo
[1] 0.8306011
Por ejemplo, en este caso, la sensibilidad de 0,831 implica que el 83,1 por ciento de
los mensajes de spam se clasificaron correctamente. Del mismo modo, la
especificidad de 0,997 implica que
99,7 por ciento de los mensajes nonspam fueron clasificados correctamente o,
alternativamente, 0,3 por ciento de los mensajes válidos se rechazaron como spam.
La idea de rechazar un 0,3 por ciento de los mensajes SMS válidos puede ser
inaceptable, o puede ser una solución de compromiso razonable dada la reducción
de correo no deseado.
La sensibilidad y la especificidad proporcionan herramientas para pensar acerca de
tales compensaciones. Por lo general, se realizan cambios en el modelo y diferentes
modelos se prueban hasta que encuentre uno que se adapte a un umbral de
sensibilidad y especificidad deseada. Visualizaciones, tales como los que se analizan
más adelante en este capítulo, también pueden ayudar a entender el compromiso
entre sensibilidad y especificidad.
Precisión y la recuperación
En estrecha relación con la sensibilidad y la especificidad son otras dos medidas de
rendimiento relacionados con los compromisos hechos en la clasificación: precisión
y la recuperación. Se utiliza principalmente en el contexto de la recuperación de
información, estas estadísticas están destinadas a proporcionar una indicación de
cómo los resultados de un modelo interesantes y relevantes son, o si las
predicciones se diluyen por el ruido sin sentido.
La precisión (también conocido como el valor predictivo positivo) se define como la
proporción de ejemplos positivos que son verdaderamente positivo; en otras
palabras, cuando un modelo predice la clase positiva, la frecuencia con la que se
corrige? Un modelo preciso sólo predecir la clase positiva en los casos que son muy
propensos a ser positivo. Va a ser muy confiable.
[ 370 ]
Capítulo 10
Considere qué pasaría si el modelo era muy impreciso. Con el tiempo, los resultados
serían menos propensos a ser de confianza. En el contexto de la recuperación de
información, esto sería similar a un motor de búsqueda como Google devolver
resultados no relacionados. Con el tiempo, los usuarios podrían cambiar a un
competidor como Bing. En el caso del filtro de spam de SMS,
alta precisión significa que el modelo es capaz de dirigirse cuidadosamente sólo el
correo no deseado sin tener en cuenta el jamón.
Por otro lado, el recuerdo es una medida de cuán completa son los resultados.
Como se muestra en la siguiente fórmula, esto se define como el número de
verdaderos positivos sobre el total de positivos. Ya ha reconocido que esto es lo
mismo que la sensibilidad. Sin embargo, en este caso, la interpretación difiere
ligeramente. Un modelo con una alta recuperación capta una gran parte de los
ejemplos positivos, lo que significa que tiene
gran amplitud. Por ejemplo, un motor de búsqueda con una alta recordación
devuelve un gran número de documentos pertinentes a la consulta de búsqueda. Del
mismo modo, el filtro de spam de SMS tiene una alta recordación si la mayoría de
los mensajes de spam se identifican correctamente.
[ 371 ]
> posPredValue (sms_results $ predict_type, sms_results $
ACTUAL_TYPE, positivo = "spam")
[1] 0.974359
[ 372 ]
Evaluación del desempeño del modelo
El F-medida
Una medida de rendimiento del modelo que combina precisión y la recuperación
en un solo número se conoce como el F-medida (también llamado a veces la
puntuación de F1 o F-score). El F-medida combina precisión y la recuperación
utilizando la media armónica, un tipo de medio que se utiliza para las tasas de
cambio. La media armónica se utiliza en lugar de la aritmética común ya que
tanto significa precisión y la recuperación se expresan como
proporciones entre cero y uno, que pueden ser interpretadas como las tarifas. La
siguiente es la fórmula para el F-medida:
[ 373 ]
Capítulo 10
La visualización de rendimiento
compensaciones
Visualizaciones son útiles para entender el funcionamiento de algoritmos de
aprendizaje automático con mayor detalle. Donde las estadísticas tales como la
sensibilidad y la especificidad, precisión ni intento de recuperación para hervir el
rendimiento del modelo a un solo número, visualizaciones muestran cómo un
alumno lleva a cabo a través de una amplia gama de condiciones.
Debido a que los algoritmos de aprendizaje tienen diferentes sesgos, es posible que
los dos modelos con una precisión similar podrían tener diferencias drásticas en la
forma en que logran su exactitud.
Algunos modelos pueden tener dificultades con ciertas predicciones que otros hacen
con facilidad, mientras que breezing a través de los casos que otros no pueden
hacerlo bien. Las visualizaciones proporcionan un método para entender estas
compensaciones, mediante la comparación de lado aprendices a lado en un solo
gráfico.
El paquete ROCR proporciona un conjunto de fácil uso de funciones para la
visualización para visualizar el rendimiento de los modelos de clasificación. Incluye
funciones para el cálculo de gran conjunto de las medidas de rendimiento más
comunes y visualizaciones. La página web en ROCRhttp://rocr.bioinf.mpi-
sb.mpg.de/ incluye una lista del conjunto completo de características, así como
varios ejemplos en las capacidades de visualización. Antes de continuar, instale el
paquete utilizando el comando ( "ROCR") install.packages.
[ 375 ]
Evaluación del desempeño del modelo
[ 376 ]
Capítulo 10
Los puntos que comprenden curvas ROC indican la verdadera tasa positiva a
diferentes umbrales de falsos positivos. Para crear las curvas, las predicciones de un
clasificador están ordenados por probabilidad estimada del modelo de la clase
positiva, con los valores más grandes en primer lugar.
Comenzando en el origen, el impacto de cada predicción en la tasa positiva
verdadera y tasa de falsos positivos dará lugar a una curva de trazado vertical
(para una predicción correcta) u horizontalmente (para una predicción incorrecta).
Para ilustrar este concepto, tres clasificadores hipotéticos se contrastan en la trama
anterior. En primer lugar, la línea diagonal desde la parte inferior izquierda a la
esquina superior derecha del diagrama representa un clasificador con ningún valor
predictivo. Este tipo de clasificador detecta verdaderos positivos y falsos positivos
exactamente a la misma velocidad, lo que implica que el clasificador no puede
discriminar entre los dos. Esta es la línea de base por la cual otros clasificadores
pueden ser juzgados. Las curvas ROC que caen cerca de esta línea indican los
modelos que no son muy útiles. El clasificador perfecto tiene una curva que pasa por
el punto a una tasa positiva verdadera 100 por ciento y 0 por ciento tasa de falsos
positivos. Es capaz de identificar correctamente todos los aspectos positivos antes de
que se clasifica incorrectamente cualquier resultado negativo.
Cuanto más cerca de la curva es el clasificador perfecto, el mejor es en la
identificación de valores positivos. Esto se puede medir mediante una estadística
conocida como el área bajo la curva ROC (AUC abreviado). El AUC trata el
diagrama ROC como un cuadrado de dos dimensiones y mide el área total bajo la
curva ROC. AUC varía de 0,5 (para un clasificador con ningún valor predictivo) a
1,0 (para un clasificador perfecto). Una convención para interpretar las
puntuaciones de las AUC utiliza un sistema similar a las calificaciones con letras
académicas:
• UNA: Pendiente = 0,9 a 1,0
• segundo: Excelente / bueno = 0,8 a 0,9
• do: Aceptable / justo = 0,7 a 0,8
• re: Mal = 0,6 a 0,7
• mi: No discriminación = 0,5 a 0,6
Al igual que con la mayoría de las escalas similares a esta, los niveles pueden
funcionar mejor para algunas tareas que otros; la categorización es algo subjetivo.
[ 377 ]
Evaluación del desempeño del modelo
Utilizando el objeto perf, podemos visualizar la curva ROC con la función de la trama de
R ().
Como se muestra en las siguientes líneas de código, muchos de los parámetros
estándar para ajustar la visualización se puede utilizar, como principal (para añadir
un título), col (para cambiar el color de la línea), y LWD (para ajustar el ancho de
línea):
> plot (perf, principal = "curva ROC para el filtro
de SMS spam", col = "blue", lwd = 3)
Aunque el comando plot () es suficiente para crear una curva ROC válida, es
útil para agregar una línea de referencia para indicar el rendimiento de un
clasificador sin valor predictivo.
Para trazar una línea tal, vamos a utilizar la función abline (). Esta función se puede
utilizar para especificar una línea en la forma pendiente-intersección, donde a es la
ordenada al origen y b es la pendiente. Puesto que necesitamos una línea de
identidad que pasa por el origen, vamos a establecer la intersección a a = 0 y la
pendiente a b = 1, como se muestra en el siguiente diagrama. El parámetro lwd
ajusta el grosor de la línea, mientras que el parámetro lty ajusta el tipo de línea.
Por ejemplo, lty = 2 indica una línea discontinua:
> abline (a = 0, b = 1, lwd = 2, lty = 2)
[ 378 ]
Capítulo 10
Cualitativamente, podemos ver que esta curva ROC parece ocupar el espacio en la
esquina superior izquierda del diagrama, lo que sugiere que es más cercano a un
clasificador perfecta que la línea discontinua representa un clasificador inútil. Para
confirmar esta forma cuantitativa,
podemos utilizar el paquete ROCR para calcular el AUC. Para ello, en primer lugar
hay que crear otro objeto de rendimiento, esta vez especificando medida = "AUC",
como se muestra en el siguiente código:
> perf.auc <- rendimiento (pred, medir = "AUC")
Tenga en cuenta que las ranuras están precedidos por el símbolo @. Para acceder
el valor AUC, que se almacena como una lista en la ranura y.values, podemos
utilizar la notación @ junto con la función no listados (), que simplifica las listas a
un vector de valores numéricos:
> no listados (
perf.auc@y.values )[1]
0.9835862
[ 379 ]
Evaluación del desempeño del modelo
El método holdout
El procedimiento de partición de datos en conjuntos de datos de entrenamiento y
prueba que se utilizó en los capítulos anteriores se conoce como el método de
retención. Como se muestra en el siguiente diagrama, la formación de datos se
utiliza para generar el modelo, que se aplica entonces al conjunto de datos de
prueba para generar predicciones para la evaluación. Por lo general, alrededor de
una tercera parte de los datos se llevó a cabo a cabo para las pruebas, y dos tercios
se utiliza para el entrenamiento, pero esta proporción puede variar dependiendo
de la cantidad de datos disponibles. Para asegurar que los datos de entrenamiento
y de prueba no tienen diferencias sistemáticas, sus ejemplos se dividieron al azar
[ 380 ]
en dos grupos.
[ 381 ]
Capítulo 10
Para el método de retención para dar como resultado una estimación realmente
precisa de la evolución futura, en ningún momento la actuación en el conjunto de
datos de prueba se permitirá a influir en el modelo. Es fácil violar esta regla, sin
saberlo, por la elección del mejor modelo basado en los resultados de pruebas
repetidas. Por ejemplo, supongamos que hemos construido varios modelos en los
datos de entrenamiento, y seleccionamos el que tiene la más alta precisión en los
datos de prueba. Debido a que tenemos en palmitas el mejor resultado, el
rendimiento de la prueba no es una medida objetiva de la actuación en los datos
que no se ven.
Para evitar este problema, es mejor dividir los datos originales, de manera que,
además de los conjuntos de datos de entrenamiento y los conjuntos de datos de
prueba, un conjunto de datos de validación está disponible. La validación de
datos se utiliza para iterar y refinar el modelo o modelos elegido, dejando el
conjunto de datos de prueba para ser utilizado sólo una vez como un paso final
para informar de un porcentaje de error estimado para las predicciones futuras.
Una división típica entre la formación, pruebas y validación sería del 50 por
ciento, 25 por ciento y 25 por ciento, respectivamente.
[ 382 ]
Evaluación del desempeño del modelo
Supongamos que tenemos un marco de datos denominado crédito con 1000 filas de
datos. Podemos dividirlo en tres particiones de la siguiente manera. En primer lugar,
se crea un vector de identificadores de fila ordenados al azar de 1 a 1000 utilizando la
función runif (), que por defecto genera un número especificado de valores aleatorios
entre 0 y 1. El runif () la función recibe su nombre de la distribución uniforme
aleatoria , el cual fue discutido en el capítulo 2, gestionar y comprender los datos.
> random_ids <- orden (runif (1000))
Uno de los problemas con el muestreo holdout es que cada partición puede tener
una proporción mayor o menor de algunas clases. En ciertos casos, especialmente
aquellos en los que una clase es una proporción muy pequeña del conjunto de datos,
esto puede conducir a una clase puede omitir de la formación de datos. Este es un
[ 383 ]
problema importante, ya que el modelo no será capaz de aprender esta clase.
[ 384 ]
Capítulo 10
Con el fin de reducir la posibilidad de que esto ocurra, una técnica llamada
muestreo aleatorio estratificado se puede utilizar. A pesar de que en el largo plazo
una muestra aleatoria debe contener aproximadamente la misma proporción de
cada valor de la clase como el conjunto de datos completo, estratificadas garantías
de muestreo al azar que las particiones aleatorias tienen casi la misma proporción de
cada clase como el conjunto de datos completo, incluso cuando algunas clases son
pequeñas .
El paquete de intercalación proporciona una función createDataPartition () que va a
crear particiones basadas en el muestreo estratificado retención. El código para crear
una muestra estratificada de datos de entrenamiento y de prueba se muestra para el
conjunto de datos de crédito en los siguientes comandos. Para utilizar la función, un
vector de los valores de clase debe ser especificado (en este caso, el valor
predeterminado se refiere a si un préstamo entró en defecto) además de un
parámetro p, que especifica la proporción de casos para ser incluido en la partición.
los
list = parámetro FALSO evita que el resultado de ser almacenado en el
formato de lista:
> in_train <- createDataPartition (crédito $ defecto, p =
0,75, list = FALSO)
> credit_train <- crédito [in_train,]
> credit_test <- crédito [-in_train,]
[ 386 ]
Evaluación del desempeño del modelo
Una técnica llamada holdout repetidas veces se usa para mitigar los problemas de
conjuntos de datos de formación compuestas al azar. El método holdout repetido
es un especial
caso del método de retención que utiliza el resultado promedio de varias muestras al
azar no aceptantes para evaluar el desempeño de un modelo. Como se utilizan
múltiples muestras holdout,
es menos probable que el modelo está entrenado o probado en los datos no
representativos. Vamos a ampliar esta idea en la siguiente sección.
Validación cruzada
El holdout repetida es la base de una técnica conocida como k-veces la validación
cruzada (o CV k veces), que se ha convertido en el estándar de la industria para
estimar el rendimiento del modelo. En lugar de tomar muestras aleatorias
repetidas que potencialmente podrían utilizar el mismo registro más de una vez,
CV k veces divide aleatoriamente los datos en k a las particiones aleatorias
completamente separadas llamadas pliegues.
Aunque k se puede configurar a cualquier número, de lejos, la convención más
común es usar 10 veces la validación cruzada (CV 10 veces). ¿Por qué 10 pliegues?
La razón es que la evidencia empírica sugiere que hay poco beneficio adicional en el
uso de un número mayor. Para cada uno de los 10 pliegues (comprendiendo cada
uno el 10 por ciento del total de datos), un modelo de aprendizaje máquina está
construida sobre el 90 por ciento restante de los datos. coincidente del pliegue 10
por ciento
muestra se utiliza entonces para la evaluación del modelo. Después de que el
proceso de formación y evaluar el modelo se ha producido por 10 veces (con 10
diferentes combinaciones de formación / prueba), se informa que el rendimiento
promedio en todos los pliegues.
[ 387 ]
El resultado de la función createFolds () es una lista de vectores que almacenan los
números de fila para cada uno de los k solicitada = 10 pliegues. Podemos mirar a
escondidas en el contenido, usando str ():
> str
(pliegues)
Lista de los
10
$ Fold01: int [1: 100] 1 5 12 13 19 21 25 32 36 38 ...
$ Fold02: int [1: 100] 16 49 78 81 84 93 105 108 128 134 ...
[ 388 ]
Capítulo 10
Aquí, vemos que el primer pliegue se llama Fold01 y almacena 100 enteros, lo que
indica las 100 filas de la trama de datos de crédito para el primer pliegue. Para
crear conjuntos de datos de entrenamiento y prueba para construir y evaluar un
modelo, se requiere un paso adicional. Los comandos siguientes muestran cómo
crear datos para el primer pliegue. Vamos a asignar los seleccionados
10 por ciento para el conjunto de datos de prueba y utilizar el símbolo negativo
para asignar el 90 por ciento restante a la formación de datos:
> credit01_test <- de crédito [pliega $ Fold01,]
> credit01_train <- de crédito [-folds $ Fold01,]
Para realizar el CV de 10 veces completo, tendría que ser repetido un total de este paso
10 veces; la construcción de un modelo y luego calcular el rendimiento del modelo
cada vez. Al final, las medidas de rendimiento se promedian para obtener el
rendimiento general. Afortunadamente, podemos automatizar esta tarea mediante
la aplicación de varias de las técnicas que hemos aprendido anteriormente.
Para demostrar el proceso, podremos calcular el estadístico kappa para un modelo
de árbol de decisión C5.0 de los datos de crédito utilizando 10 veces CV. En primer
lugar, tenemos que cargar algunos paquetes R: intercalación (para crear los
pliegues), C50 (para el árbol de decisión), y la TIR (calcular kappa). Los dos últimos
paquetes se eligieron para fines ilustrativos; si lo desea, puede utilizar un modelo
diferente o una medida de rendimiento diferente a lo largo de la misma serie de
pasos.
> biblioteca (caret)
> biblioteca (C50)
> biblioteca (TIR)
[ 389 ]
> pliegues <- (createFolds de crédito por defecto $, K = 10)
[ 390 ]
Evaluación del desempeño del modelo
Por último, vamos a aplicar una serie de medidas idénticas a la lista de los pliegues
utilizando la función lapply (). Como se muestra en el siguiente código, porque no
hay una función existente que hace exactamente lo que necesitamos, debemos definir
nuestra propia función para pasar a lapply ().
Nuestra función personalizada divide la trama de datos de crédito en los datos de
entrenamiento y prueba, construye un árbol de decisión mediante la función de
C5.0 () en los datos de entrenamiento, genera un conjunto de predicciones a partir
de los datos de prueba, y se comparan los valores predichos y reales utilizando la
kappa2 () función:
> cv_results <- lapply (pliegues, la
función (x) {credit_train <- crédito [-
x,] credit_test <- crédito [x,]
credit_model <- C5.0 (por defecto ~, los datos =
credit_train.) credit_pred <- predecir (credit_model,
credit_test) credit_actual <- credit_test $ defecto
kappa <- kappa2 (hoja.de.datos (credit_actual, credit_pred)) $ valor de
retorno (kappa)
})
Las estadísticas kappa resultantes se compilan en una lista almacenada en los cv_results
objeto, que podemos examinar el uso de str ():
> str
(cv_results)
Lista de los 10
$ Fold01: num 0,343
$ Fold02: num 0,255
$ Fold03: num 0,109
$ Fold04: num 0,107
$ Fold05: num 0,338
$ Fold06: num 0,474
$ Fold07: num 0,245
$ Fold08: num 0,0365
$ Fold09: num 0,425
$ Fold10: num 0,505
[ 391 ]
Capítulo 10
Sólo hay un paso más que queda en el proceso 10 veces CV: debemos calcular el
promedio de estos 10 valores. A pesar de que se verá tentado a escribir medias
(cv_results), porque cv_results no es un vector numérico, el resultado sería un error.
En lugar de ello, utilizar la función no listados (), que elimina la estructura de la
lista, y reduce cv_results a un vector numérico. A partir de aquí, podemos calcular
la media kappa como se esperaba:
> significar (no listados
(cv_results)) [1] 0.283796
arranque de muestreo
CV Una alternativa ligeramente utilizada con menos frecuencia a k veces se conoce
como arranque de muestreo, el bootstrap o bootstrapping para abreviar. En
términos generales, estos se refieren a los métodos estadísticos del uso de muestras
aleatorias de datos para estimar las propiedades de un conjunto más grande.
Cuando este principio se aplica al desempeño de los modelos de aprendizaje
automático, que implica la creación de varias entrenamiento seleccionada al azar y
conjuntos de datos de prueba, que luego se utilizan para calcular las estadísticas
de rendimiento. Los resultados de los diversos conjuntos de datos aleatorios se
promedian para obtener una estimación final del rendimiento futuro.
Por lo tanto, lo que hace que este procedimiento diferente de CV k veces?
Considerando que la validación cruzada divide los datos en particiones separadas
en el que cada ejemplo puede aparecer sólo una vez, el bootstrap permite ejemplos
que se seleccionan varias veces a través de un proceso de muestreo con reemplazo.
Esto significa que desde el conjunto de datos original de n ejemplos, el
procedimiento de arranque creará uno o más nuevos conjuntos de datos de
entrenamiento que también contendrán n ejemplos, algunos de los cuales se repiten.
Los correspondientes conjuntos de datos de ensayo se construyen a partir de la serie
de ejemplos que no fueron seleccionados para los respectivos conjuntos de datos de
[ 392 ]
entrenamiento.
[ 393 ]
Evaluación del desempeño del modelo
Resumen
En este capítulo se presenta una serie de medidas y las técnicas más comunes para
evaluar el desempeño de los modelos de clasificación de aprendizaje automático. A
pesar de la precisión proporciona un método simple para examinar la frecuencia con
un modelo es correcto, esto puede ser engañoso en el caso de eventos raros porque el
costo de la vida real de este tipo de eventos puede ser inversamente proporcional a
la frecuencia con que aparecen.
Una serie de medidas basadas en matrices de confusión capturar mejor el equilibrio
entre los costos de los diversos tipos de errores. examinar de cerca las soluciones de
compromiso entre sensibilidad y especificidad, o la precisión y la recuperación
puede ser una herramienta útil para pensar en las consecuencias de los errores en el
mundo real. Las visualizaciones tales como la curva ROC también son útiles para
este fin.
[ 394 ]
Capítulo 10
También vale la pena mencionar que a veces la mejor medida del rendimiento de un
modelo es considerar qué tan bien cumple o no cumple, otros objetivos. Por ejemplo,
es posible que necesite para explicar la lógica de un modelo en un lenguaje sencillo,
lo que eliminaría algunos modelos de la consideración. Además, incluso si se lleva a
cabo muy bien, un modelo que es demasiado lento o difícil de escala para un entorno
de producción es completamente inútil.
Una extensión obvia de medir el rendimiento es identificar formas automatizadas
para encontrar los mejores modelos para una tarea en particular. En el siguiente
capítulo, vamos a construir sobre nuestro trabajo en lo que va a investigar formas de
hacer modelos más inteligentes de forma sistemática la iteración, refinación, y la
combinación de algoritmos de aprendizaje.
[ 395 ]
Mejora del
rendimiento
del modelo
Cuando un equipo deportivo no llega a alcanzar su objetivo, si el objetivo es
obtener una medalla olímpica de oro, un campeonato de la liga, o un récord
mundial de tiempo que debe buscar posibles mejoras. Imagínese que usted es el
entrenador del equipo. ¿Cómo pasaría sus sesiones de práctica? Tal vez le dirige a
los atletas a entrenar más duro o entrenar de manera diferente con el fin de
aprovechar al máximo cada poco de su potencial. O bien, puede enfatizar mejor
trabajo en equipo, la utilización de las fortalezas y debilidades de los atletas más
inteligentemente.
Ahora imagine que usted está entrenando a un algoritmo de aprendizaje
automático campeón del mundo. Tal vez la esperanza de competir en
competiciones de minería de datos, tales como los publicados en Kaggle
(http://www.kaggle.com/competitions). Tal vez sólo hay que mejorar los
resultados del negocio. ¿Por dónde empezar? Aunque el contexto es diferente, el
Uno de ellos utiliza estrategias para mejorar el rendimiento deportivo equipo
también se puede utilizar para mejorar el rendimiento de los estudiantes de
estadística.
A medida que el entrenador, es su trabajo para encontrar la combinación de
técnicas de entrenamiento y habilidades de trabajo en equipo que le permiten
alcanzar sus objetivos de rendimiento. Este capítulo se basa en el material cubierto
en este libro para introducir un conjunto de técnicas para mejorar el rendimiento
predictivo de los alumnos de la máquina. Aprenderás:
• Cómo automatizar la optimización del rendimiento del modelo mediante la
búsqueda sistemática para el conjunto óptimo de condiciones de formación
[ 347 ]
• Los métodos para combinar modelos en grupos que utilizan el trabajo en
equipo para hacer frente a las tareas de aprendizaje difíciles
• Cómo aplicar una variante de árboles de decisión, que se ha convertido
rápidamente popular debido a su impresionante actuación
[ 348 ]
Mejora del rendimiento del modelo
Ninguno de estos métodos será un éxito para todos los problemas. Sin embargo,
mirando a los ganadores a las competiciones de aprendizaje automático, es
probable que encuentre que al menos uno de ellos se ha empleado. Para ser
competitivo, usted también tendrá que añadir estas habilidades a su repertorio.
[ 349 ]
Capítulo 11
[ 350 ]
ajuste de parámetros automatizado que requiere tener en cuenta tres cuestiones:
[ 351 ]
Mejora del rendimiento del modelo
[ 353 ]
Capítulo 11
2 C5.0modelModel TypeFALSETRUETRUE
3 C5.0winnowWinnowFALSETRUETRUE
[ 355 ]
Mejora del rendimiento del modelo
Dado la amplia variedad de opciones, es útil que muchos de los valores por defecto
son razonables. Por ejemplo, símbolo de intercalación utilizará precisión de la
predicción en una muestra de arranque para elegir el mejor desempeño de los
modelos de clasificación. A partir de estos valores por defecto, podemos ajustar la
función de tren () para diseñar una amplia variedad de experimentos.
[ 357 ]
Capítulo 11
[ 358 ]
Mejora del rendimiento del modelo
Pno
sí
no700
2
yes0 298
De los 1.000 ejemplos utilizados para entrenar el modelo final, sólo dos fueron mal
clasificados. Sin embargo, es muy importante tener en cuenta que, dado que el
modelo se construyó en ambos los datos de entrenamiento y de prueba, esta
precisión es optimista y, por tanto, no debe considerarse
como indicativo de rendimiento en los datos no se ven. La estimación de arranque
del 73 por ciento (se muestra en resumen de la salida) es una estimación más
realista de los resultados futuros.
[ 360 ]
Capítulo 11
Para obtener las probabilidades estimadas para cada clase, utilice el parámetro type =
"prob":
> cabeza (predecir (m, crédito, tipo = "prob"))
no sí
1 0.9606970 0.03930299
2 0.1388444 0.86115561
3 1.0000000 0.00000000
4 0.7720279 0.22797208
5 0.2948062 0.70519385
6 0.8583715 0.14162851
[ 361 ]
método y selectionFunction.
[ 362 ]
Mejora del rendimiento del modelo
Para crear un objeto de control llamado ctrl que utiliza 10 veces la validación
[ 363 ]
cruzada y la función de selección oneSE, utilice el siguiente comando (tenga en
cuenta que el número = 10 sólo se incluye para mayor claridad; ya que este es el
valor por defecto para el método = "cv", que podría haber sido omitido):
> ctrl <- trainControl (método = "cv", número = 10,
selectionFunction = "oneSE")
[ 364 ]
Capítulo 11
[ 365 ]
7 30 FALSO
árbo
l
8 35 FALSO
árbo
l
[ 366 ]
Mejora del rendimiento del modelo
métrica =
"Kappa",
trControl = ctrl,
tuneGrid = grid)
> metro
[ 367 ]
Capítulo 11
[ 368 ]
trataría de apilar el panel con un conjunto diverso de expertos en la materia. Un
panel que contiene profesores de literatura, la ciencia, la historia y el arte, junto con
un experto en la cultura pop actual sería un grupo con seguridad bien redondeado.
Dada su amplitud de conocimientos, sería poco probable encontrar una pregunta
que el grupo tocones.
[ 369 ]
Mejora del rendimiento del modelo
[ 370 ]
Capítulo 11
Después los modelos se construyen, que se pueden utilizar para generar un conjunto
de predicciones, que deben ser gestionados de alguna manera. La función de
combinación gobierna cómo se concilian los desacuerdos entre las predicciones. Por
ejemplo, el conjunto podría usar un voto de la mayoría para determinar la predicción
final, o podría utilizar una estrategia más compleja, como la ponderación de los
votos de cada modelo en función de su desempeño anterior.
Algunos conjuntos incluso utilizan otro modelo para aprender una función de la
combinación de varias combinaciones de predicciones. Por ejemplo, supongamos
que cuando M1 y M2 tanto voto afirmativo, el valor real de la clase es por lo
general no. En este caso, el conjunto podría aprender a ignorar el voto de M1 y
M2 cuando están de acuerdo. Este proceso de utilización de las predicciones de
varios modelos para entrenar un modelo árbitro final se conoce como
apilamiento.
Uno de los beneficios del uso de conjuntos es que pueden permitir que pase menos
tiempo en la búsqueda de un mejor modelo. En su lugar, se puede entrenar a un
número de candidatos razonablemente fuertes y combinarlos. Sin embargo, la
comodidad no es la única razón por la que los métodos basados en conjunto siguen
acumular victorias en competiciones de aprendizaje automático; conjuntos también
ofrecen una serie de ventajas de rendimiento sobre los modelos individuales:
• Mejor generalización a problemas en el futuro: Como las opiniones de
varios aprendices se incorporan en una única predicción final, no sesgo
sola es capaz de dominar. Esto reduce la posibilidad de un ajuste por
exceso a una tarea de aprendizaje.
• Mejora el rendimiento de grandes conjuntos de datos o minúsculas:
Muchos modelos topan con límites de memoria o complejidad cuando una
cantidad extremadamente grande conjunto de características
o se utilizan ejemplos, por lo que es más eficiente para capacitar a varios
[ 371 ]
modelos pequeños que un solo modelo completo. Por el contrario, conjuntos
también hacen bien en los conjuntos de datos más pequeños porque los
métodos de remuestreo como bootstrapping son inherentemente una parte
de muchos diseños de conjunto. Quizás lo más importante, a menudo es
posible entrenar a un conjunto en paralelo usando métodos de computación
distribuida.
[ 372 ]
Mejora del rendimiento del modelo
Harpillera
Uno de los primeros métodos de conjunto para lograr la aceptación generalizada
utilizaron una técnica llamada de agregación de arranque o embolsado para
abreviar. Como se describe por Leo Breiman en 1994, ensacado genera un número
de conjuntos de datos de formación por arranque de muestreo de los datos de
entrenamiento originales. Estos conjuntos de datos se utilizan entonces para generar
un conjunto de modelos utilizando un único algoritmo de aprendizaje. predicciones
de los modelos se combinan utilizando la votación (para la clasificación) o promedio
(para la predicción numérica).
[ 374 ]
Capítulo 11
credit_predno sí
no699 2
sí1 298
Dados los resultados anteriores, el modelo parece tener los datos del entrenamiento
ajuste extremadamente bien. Para ver cómo esto se traduce en un rendimiento
futuro, podemos utilizar los árboles en bolsas con 10 veces CV utilizando la función
de tren () en el paquete de intercalación. Tenga en cuenta que el nombre del método
para la función de los árboles en bolsas IPRED es TreeBag:
> biblioteca (caret)
> set.seed (300)
> ctrl <- trainControl (método = "cv", número = 10)
> tren (por defecto ~., datos = crédito, method =
"TreeBag", trControl = ctrl)
Carro en bolsas
1000 muestras
16 predictor
2 clases: 'no', 'sí'
No se pre-procesamiento
El remuestreo: Cross-Validated (10 veces)
AccuracyKappaAccuracy
[ 375 ]
SDKappa SD 0.7350.32977260.03439961
0.08590462
[ 376 ]
Mejora del rendimiento del modelo
El índice kappa de 0,33 para este modelo sugiere que el modelo de árbol en
bolsas realiza al menos tan bien como el mejor árbol de decisión C5.0
sintonizábamos anteriormente en este capítulo. Esto ilustra el poder de los
métodos de conjunto; un conjunto de estudiantes que trabajan juntos simples
puede superar a modelos muy sofisticados.
Para ir más allá de las bolsas de los árboles de decisión, el paquete de intercalación
también proporciona una función más general bolsa (). Incluye soporte nativo para
un puñado de modelos, a pesar de que se puede adaptar a otros tipos con un poco
de esfuerzo adicional. La función de la bolsa () utiliza un objeto de control para
configurar el proceso de embolsado. Se requiere la especificación de tres funciones:
una para ajustar el modelo, uno para hacer predicciones, y uno para la agregación
de los votos.
Por ejemplo, supongamos que queríamos crear un soporte modelo de máquina de
vectores en bolsas, utilizando la función ksvm () en el paquete kernlab se utilizó en
el capítulo 7, Negro
Métodos Box - redes neuronales y máquinas de vectores soporte. losbolso()
función requiere para proporcionar una funcionalidad para la formación de
las SVM, haciendo predicciones, y el conteo de votos.
En lugar de escribir estos mismos, incorporados en la lista svmBag de suministro
que tres funciones del paquete de intercalación que se pueden utilizar para este
propósito:
> str
(svmBag)
Lista de 3
PS encajar: function (x, y, ...)
PS pred: function (objeto, X)
$ Agregada: function (x, type = "clase")
[ 377 ]
<Medio ambiente: espacio de nombres: cursor>
Las funciones pred y agregados para svmBag también son igualmente sencilla.
Mediante el estudio de estas funciones y la creación de su propio en el mismo
formato, es posible utilizar embolsado con cualquier algoritmo de aprendizaje
automático que le gustaría.
[ 378 ]
Capítulo 11
La aplicación de las tres funciones en la lista svmBag, podemos crear un objeto de control
de ensacado:
> bagctrl <- bagControl (adaptarse = $ svmBag ajuste,
predecir = svmBag $ pred,
agregada = $ svmBag agregada)
Embolsados
Modelo 1000
muestras
16 predictores
2 clases: 'no', 'sí'
No se pre-procesamiento
El remuestreo: Validación cruzada (10 veces)
remuestreo resultados
Dado que la estadística kappa es inferior a 0,30, parece que el modelo SVM en
bolsas realiza peor que el modelo de árbol de decisión en bolsas. Vale la pena
señalar que la desviación estándar de la estadística kappa es bastante grande en
comparación con el embolsados
modelo de árbol de decisión. Esto sugiere queel rendimiento varía sustancialmente
entre los pliegues de la validación cruzada. Tal variación puede implicar que el
rendimiento puede ser mejorado aún más por cambiando el número de modelos en
el conjunto.
impulsar
Otro método basado en el conjunto común se llama impulso, ya que aumenta el
rendimiento de los estudiantes débiles para alcanzar el rendimiento de los
estudiantes más fuertes. Este método se basa en gran parte en la obra de Robert
Schapire y Yoav Freund, que han publicado numerosos trabajos sobre el tema.
Aunque impulsar puede crear un modelo que cumple con una tasa de
error arbitrariamente baja, esto no siempre puede ser razonable en la
práctica. Por un lado, las mejoras de rendimiento son progresivamente
menor a medida que se añaden los estudiantes adicionales, por lo que
algunos umbrales prácticamente inviable. Además, la búsqueda de
[ 380 ]
precisión puro puede resultar en el modelo que se está overfitted a los
datos de entrenamiento y no generalizables a los datos que no se ven.
[ 381 ]
Capítulo 11
[ 382 ]
almacenan en una clase de sub-objeto llamado:
> cabeza ($ clase p_adaboost)
[1] "no si" "No" "no" "sí" "no"
[ 383 ]
Mejora del rendimiento del modelo
¿Se dio cuenta de que el modelo AdaBoost no ha cometido errores? Antes de que se
haga ilusiones, recordar que la matriz de confusión anterior se basa en el
rendimiento del modelo a los datos de entrenamiento. Desde impulsar permite que
la tasa de error se reduzca a un nivel arbitrariamente bajo, el alumno simplemente
continuó hasta que no hizo más errores. Esto probablemente dio lugar a un ajuste
por exceso en la formación de datos.
Para una evaluación más precisa del rendimiento en los datos que no se ven,
tenemos que utilizar otro método de evaluación. El paquete Adabag
proporciona una función simple de usar CV de 10 veces:
> set.seed (300)
> adaboost_cv <- boosting.cv (. ~ predeterminada, los datos de crédito =)
Dependiendo de la capacidad del ordenador, esto puede tomar algún tiempo para
correr, durante el cual se registrará cada iteración a la pantalla. Después de que se
complete, podemos ver una matriz de confusión más razonable:
> adaboost_cv $ confusión
Clase
observada Prevista Classno
sí
no594 151
Sí 106 149
[ 385 ]
Capítulo 11
Random bosques
Otro método llamado bosques aleatorios basados en conjunto (o bosques de
árboles de decisión) se centra sólo en los conjuntos de árboles de decisión. Este
método fue defendido por Leo Breiman y Adele Cutler, y combina los principios
básicos de embolsado con la función de selección aleatoria para agregar una
diversidad adicional a los modelos de árboles de decisión.
Después de que el conjunto de árboles (el bosque) se genera, el modelo utiliza un
voto para combinar las predicciones de los árboles.
[ 386 ]
Mejora del rendimiento del modelo
Vale la pena señalar que en relación con otros métodos basados en conjunto, los
bosques aleatorios son bastante competitivos y ofrecen ventajas importantes con
respecto a la competencia. Por ejemplo, los bosques aleatorios tienden a ser más
fácil de usar y menos propenso a overfitting. La siguiente tabla muestra los puntos
fuertes y débiles de generales modelos forestales al azar:
fortalezas debilidades
• Un modelo para todo uso que se • A diferencia de un árbol de
desempeña bien en la mayoría de decisión, el modelo no es fácil de
los problemas interpretar
• Puede manejar datos ruidosos o • Puede requerir algo de trabajo
que faltan, así como características para ajustar el modelo a los datos
categóricas o continuas
• Buscamos solamente las
características más importantes
• Puede ser utilizado en los datos
con un número extremadamente
grande de características o
ejemplos
[ 387 ]
Capítulo 11
[ 388 ]
Mejora del rendimiento del modelo
Vamos a ver cómo los parámetros por defecto randomForest () trabajan con los
datos de crédito. Vamos a entrenar el modelo tal como lo hicimos con otros
estudiantes. Una vez más, la función set.seed () asegura que el resultado puede
ser replicado:
> biblioteca (randomForest)
> set.seed (300)
> rf <- randomForest (. ~ predeterminada, los datos de crédito =)
Llamada:
(. ~ Fórmula = por defecto, los datos de crédito =)
randomForest tipo de bosque al azar:
la clasificación
Número de árboles:
500 Nº de variables probadas en cada
división: 4
El resultado muestra que el bosque aleatorio incluyó 500 árboles y trató de cuatro
variables en cada división, tal y como esperábamos. A primera vista, podría estar
alarmado por la apariencia pobre desempeño de acuerdo a la matriz de-la tasa de
error confusión de 23,8 por ciento
es mucho peor que el error resubstitution de cualquiera de los otros métodos de
conjunto hasta el momento. Sin embargo, esta matriz de confusión no muestra error
resubstitution. En cambio, refleja la tasa de error fuera de la bolsa (que aparece en la
salida como la estimación de la tasa de error de fuera de banda), que a diferencia de
error resubstitution, es una estimación no sesgada del error de prueba. Esto significa
que debe ser una estimación bastante razonable del desempeño futuro.
La estimación fuera de la bolsa se calcula durante la construcción del bosque
[ 389 ]
aleatorio. Esencialmente, cualquier ejemplo no seleccionadas para la muestra de
arranque de un solo árbol puede ser utilizado para probar el rendimiento del modelo
de datos que no se ven. Al final de la construcción bosque, las predicciones para cada
ejemplo cada vez que se llevó a cabo a cabo se cuentan, y se toma una votación para
determinar la predicción final para el ejemplo. La tasa de error total de tales
predicciones se convierte en la tasa de error de fuera de la bolsa.
[ 390 ]
Capítulo 11
[ 391 ]
"rf", métrica = "Kappa", trControl = ctrl,
tuneGrid = grid_rf)
[ 392 ]
Mejora del rendimiento del modelo
Cuando el árbol de decisión C5.0 finalmente completa, podemos comparar los dos
enfoques
lado a lado. Para el modelo de bosque aleatorio, los resultados son los siguientes:
> m_rf
[ 393 ]
Capítulo 11
Con un kappa de alrededor de 0.361, el modelo de bosque al azar con mtry = 16 fue
el ganador entre estos ocho modelos. Era más alto que el mejor árbol de decisión
C5.0, que tenía un kappa de alrededor de 0.334, y un poco más alto que el modelo
AdaBoost.M1 con un kappa de aproximadamente 0.360. Sobre la base de estos
resultados, nos gustaría presentar el bosque al azar como nuestro modelo final. Sin
llegar a evaluar el modelo de los datos de la competición, no tenemos manera de
saber con certeza si va a terminar ganando, pero teniendo en cuenta nuestras
estimaciones de rendimiento, es la apuesta más segura. Con un poco de suerte, tal
vez vamos a llegar lejos con el premio.
Resumen
Después de leer este capítulo, ahora debería conocer las técnicas básicas que se
utilizan para ganar competiciones de minería de datos y aprendizaje automático.
métodos de ajuste automatizados pueden ayudar a exprimir cada bit de
rendimiento de un modelo único. Por otro lado, las ganancias de rendimiento
también son posibles mediante la creación de grupos de modelos de aprendizaje
automático que trabajan juntos.
Aunque en este capítulo se ha diseñado para ayudarle a preparar modelos de
competición listo, tenga en cuenta que sus compañeros competidores tienen acceso
a las mismas técnicas. Usted no será capaz de salirse con el estancamiento; Por lo
tanto, seguir añadiendo métodos propietarios
a su bolsa de trucos. Tal vez usted puede traer experiencia en el tema único a la tabla,
o tal vez sus puntos fuertes incluyen un ojo para el detalle en la preparación de los
datos. En cualquier caso, la práctica hace al maestro, a fin de tomar ventaja de las
oposiciones para probar, evaluar y mejorar su propio conjunto de habilidades de
aprendizaje automático.
En el siguiente capítulo, el último en este libro-Tomaremos mirada a vuelo de
pájaro la manera de aplicar el aprendizaje de máquina a algunos dominios
altamente especializados y difíciles usando R. Obtendrá los conocimientos
necesarios para aplicar la máquina de aprendizaje de tareas en el corte de borde
del campo.
[ 394 ]
Temas
especializados
Machine
Learning
Felicitaciones por llegar a este punto en su viaje de aprendizaje de máquina! Si
aún no lo ha comenzado a trabajar en sus propios proyectos, que va a hacer tan
pronto. Y, al hacerlo, es posible que la tarea de convertir los datos en acción es
más difícil de lo que apareció por primera vez.
A medida que se reunieron los datos, es posible que se han dado cuenta de que la
información estaba atrapado en un formato propietario o propagación a través de
las páginas en la web. Para empeorar las cosas, después de pasar horas a formatear
los datos, tal vez su equipo se desaceleró a un rastreo después de quedarse sin
memoria. Tal vez incluso se estrelló R o congeló su máquina. Con suerte, usted era
sin inmutarse, ya que estos problemas pueden remediarse con un esfuerzo poco
más.
Este capítulo trata de técnicas que no pueden aplicarse a todos los proyectos, pero
serán de utilidad para trabajar en torno a estas cuestiones especializadas. Usted
puede encontrar la información particularmente útil si usted tiende a trabajar con
datos que son:
• Almacenada en formatos no estructurados o de propiedad, tales como
páginas web, APIs web, u hojas de cálculo
• A partir de un dominio especializado como la bioinformática o análisis de redes
sociales
[ 377 ]
• Demasiado grande para caber en la memoria o análisis tardar mucho tiempo en
completarse
[ 378 ]
Máquina de aprendizaje especializado temas
Para una lista completa de los tipos de archivos rio puede importación
y exportación, así como ejemplos más detallados de uso, ver
http://cran.r-project.org/
web / paquetes / rio / viñetas / rio.html.
[ 379 ]
El paquete rio consta de tres funciones para trabajar con formatos de datos
propietarios: import (), exportación (), y convertir (). Cada uno hace exactamente lo
que cabría esperar, dado su nombre. En consonancia con la filosofía del paquete de
mantener las cosas simples, cada función utiliza la extensión de nombre de archivo
para adivinar el tipo de archivo que desea importar, exportar, o convertir.
[ 380 ]
capítulo 12
Por ejemplo, para importar los datos de crédito de los capítulos anteriores, que
se almacena en formato CSV, simplemente escribe:
> biblioteca (rio)
> <Crédito - de importación ( "credit.csv")
Esto crea la trama de datos de crédito como se esperaba; Como beneficio adicional,
no sólo no tenemos que especificar el tipo de archivo CSV, rio establecer
automáticamente stringsAsFactors = FALSO, así como otros valores por defecto
razonables.
Para exportar la trama de datos de crédito a formato (.xlsx) Microsoft Excel, utilice la
función de exportación () mientras se especifica el nombre del archivo deseado, de la
siguiente manera. Para otros formatos, basta con cambiar la extensión del archivo
para el tipo de salida deseada:
> exportación (de crédito, "credit.xlsx")
[ 382 ]
Máquina de aprendizaje especializado temas
Para abrir una conexión llamada my_db para la base de datos con el DSN my_dsn, utilice
el
odbcConnect () función:
> biblioteca (RODBC)
> my_db <- odbcConnect ( "my_dsn")
Con una conexión a base de datos abierta, podemos utilizar el sqlquery () para crear
una trama de datos R de las filas de bases de datos tirados por una consulta SQL.
Esta función, al igual que las muchas funciones que crean tramas de datos, nos
permite especificar stringsAsFactors = false para evitar R de la conversión
automática de datos de caracteres en factores.
El objeto results_df resultante es una trama de datos que contiene todas las filas
seleccionadas utilizando la consulta SQL almacenada en sql_query.
Una vez que haya terminado de usar la base de datos, la conexión se puede
cerrar con el siguiente comando:
> odbcClose (my_db)
[ 383 ]
de R, es una mejor práctica para hacerlo de forma explícita.
[ 384 ]
capítulo 12
Más allá de esta funcionalidad de base, existen numerosos paquetes que extienden
las capacidades de R para trabajar con datos en línea. El más básico de ellos será
cubierto en las secciones que siguen. A medida que la Web es enorme y en
constante cambio, estas secciones están lejos de ser un conjunto completo de todas
las formas R puede conectarse a los datos en línea. Hay literalmente cientos de
paquetes para todo, desde proyectos de nicho para los masivos.
[ 385 ]
Máquina de aprendizaje especializado temas
Después de instalar el paquete RCurl, la descarga de una página es tan simple como
escribir:
> biblioteca (RCurl)
> packt_page <- ( "Https://www.packtpub.com/")
Esto ahorrará el texto completo de la página editorial Packt (incluyendo todas las
marcas web) en el objeto R carácter packt_page llamado. Como se muestra en las
siguientes líneas, esto no es muy útil:
> str (packt_page, nchar.max = 200)
CHR "<! DOCTYPE html> \ n <html xmlns = \ "http: //www.w3.org/1999/xhtml
\"lang = \ "es \" xml: lang = \ "es \"> \ n \ t <head> \ n \ t \ t <title>
Packt Publishing | Tecnología Libros, libros electrónicos y vídeos </ title> \
n \ t \ t <script> \ n \ t \ t \ TData "|
truncado
La razón de que los primeros 200 caracteres de la página se parecen sin sentido se
debe a que los sitios web se escriben utilizando Hypertext Markup Language
(HTML), que combina el texto de la página con etiquetas especiales que le dicen los
navegadores web cómo mostrar el texto. los
<Title> y </ title> etiquetas aquí rodean el título de la página,
diciendo al navegador que esta es la página de inicio Packt
Publishing. etiquetas similares se utilizan para designar otras
partes de la página.
[ 387 ]
capítulo 12
Lista de 9
PS url: CHR "Https://www.packtpub.com/"
$ Status_code: int 200
PS encabezados: Lista de 11
$ all_headers: Lista de 1
PS galletas: lista()
PS contenido: bruto [1: 58560] 3c 21 44 4f ...
PS Fecha: POSIXct [1: 1], formato: "24/05/2015 20:46:40"
PS veces: llamada num [1: 6] 0 0,000071 0,000079 ...
PS solicitud: Lista de 5
[ 388 ]
Máquina de aprendizaje especializado temas
El paquete rvest (un juego de palabras con el término "cosecha") por Hadley
Wickham hace Web raspar un proceso en gran medida sin esfuerzo, suponiendo
que los datos que desea se puede encontrar en un lugar consistente dentro de
HTML.
Vamos a empezar con un ejemplo sencillo usando la página editorial Packt.
Empezamos por la descarga de la página como antes, utilizando la función de html
() en el paquete rvest. Tenga en cuenta que esta función, cuando se suministra con
una dirección URL, simplemente llama a la función get () en el paquete HTTR de
Hadley Wickham:
> biblioteca (rvest)
> packt_page <- html ( "https://www.packtpub.com")
Supongamos que nos gustaría para raspar el título de la página. Mirar el código
HTML anterior, sabemos que sólo hay un título por página envuelto dentro de
<title> y
</ Title> las etiquetas. Para sacar el título, suministramos el nombre de la etiqueta a
lahtml_node ()
función, como sigue:
> html_node (packt_page, "título")
<Title> Packt Publishing | Tecnología Libros, libros
electrónicos & amp; Vídeos </ title>
Esto mantiene el formato HTML en el lugar, incluyendo las etiquetas <title> y el &
amp; código, que es la designación HTML para el símbolo &. Para traducir esto en
texto plano, simplemente ejecuta a través de la función html_text (), como se
muestra:
> html_node (packt_page, "título")%>% html_text ()
[1] "Packt Publishing | Tecnología Libros, libros electrónicos y vídeos"
[ 390 ]
capítulo 12
Vamos a probar un ejemplo un poco más interesante. Supongamos que nos gustaría
para raspar una lista de todos los paquetes en el aprendizaje de la máquina vista de
tareas CRAN. Comenzamos como de la misma manera que lo hicimos anteriormente,
mediante la descarga de la página HTML usando la función html (). Dado que no
sabemos cómo se estructura la página, también vamos a mirar en HTML escribiendo
cran_ml, el nombre del objeto R creamos:
> biblioteca (rvest)
> cran_ml <- html ( "http://cran.r-
project.org/web/views/MachineLearning. html ")
> cran_ml
Mirando por encima de la salida, nos encontramos con que una sección parece tener los
datos que estamos
interesado en Tenga en cuenta que sólo un subconjunto de la salida se muestra aquí.:
paquetes <h3> CRAN: </ h3>
<Ul>
<Li> <a href="../packages/ahaz/index.html"> Acaz </a> </ li>
<Li> <a href="../packages/arules/index.html"> arules </a> </ li>
<Li> <a href="../packages/bigrf/index.html"> bigrf </a> </ li>
<Li> <a href="../packages/bigRR/index.html"> bigRR </a> </ li>
<Li> <a href="../packages/bmrm/index.html"> bmrm </a> </ li>
<Li> <a href="../packages/Boruta/index.html"> Boruta </a> </ li>
<Li> <a href="../packages/bst/index.html"> BST </a> </ li>
<Li> <a href="../packages/C50/index.html"> C50 </a> </ li>
<Li> <a href="../packages/caret/index.html"> cursor </a> </ li>
[ 391 ]
Debido a que la página CRAN se mantiene activa y puede ser
modificada en cualquier momento, no se sorprenda si sus
resultados son diferentes de los que se muestran aquí.
[ 392 ]
Máquina de aprendizaje especializado temas
Con este conocimiento en la mano, podemos raspar los enlaces tanto como lo hicimos
anteriormente. La única excepción es que, debido a que esperamos encontrar más de
un resultado, tenemos que utilizar los html_nodes () función para devolver un vector
de resultados más que html_node (), que devuelve un único elemento:
> ml_packages <- html_nodes (cran_ml "a",)
[[2]]
<a href="../packages/RSNNS/index.html"> RSNNS </a>
[[3]]
<a href="../packages/rpart/index.html"> rpart </a>
[[4]]
<a árbol href="../packages/tree/index.html"> </a>
[[5]]
<a href="../packages/rpart/index.html"> rpart </a>
[[6]]
<a href = "http://www.cs.waikato.ac.nz/~ml/weka/"> Weka </a>
[[7]]
<a href="../packages/RWeka/index.html"> RWeka </a>
Como podemos ver en la línea 6, se ve como los enlaces a otros proyectos coló Esto
es debido a que algunos paquetes tienen hipervínculos a sitios web adicionales.; en
este caso, el paquete RWeka está vinculada tanto CRAN y su página de inicio. Para
excluir estos resultados, es posible que la cadena esta salida a otra función que
podría buscar la cadena / paquetes en el hipervínculo.
[ 393 ]
capítulo 12
Estos son ejemplos simples que sólo arañan la superficie de lo que es posible con el
paquete rvest. El uso de la funcionalidad de tubo, es posible buscar etiquetas
anidadas dentro de las etiquetas o clases específicas de etiquetas HTML. Para estos
tipos de ejemplos complejos, consulte la documentación del paquete.
Debido análisis XML está tan relacionado con el análisis de HTML, la sintaxis
exacta no se describe aquí. Consulte la documentación de estos paquetes para ver
ejemplos.
[ 394 ]
Máquina de aprendizaje especializado temas
Este ejemplo ilustra los tipos de datos disponibles para JSON: numérico, carácter, de
matriz (rodeado por [y] caracteres), y el objeto. No se muestran los valores nulo y
Boolean (verdaderas o falsas). La transmisión de estos tipos de objetos a partir de
una aplicación a otra y la aplicación de navegador web, es lo que impulsa a muchos
de los sitios web más populares.
[ 395 ]
capítulo 12
Al escribir el nombre del objeto resultante, podemos ver algunos detalles acerca de la
solicitud:
> map_search
Respuesta
[https://maps.googleapis.com/maps/api/geocode/ JSON?
Address = Eiffel% 20T
ower]
Estado: 200
Content-Type: application / json; charset =
UTF-8 Tamaño: 2.34 kB
{
"Resultados": [
{
"address_components": [
{
"Long_name": "Torre Eiffel", "nombre
corto": "Torre Eiffel",
"tipos": [ "point_of_interest", "establecimiento"]
},
{
...
[ 396 ]
Máquina de aprendizaje especializado temas
[ 398 ]
capítulo 12
Por otro lado, si desea hacer una conversión hacia y desde el formato JSON fuera del
paquete HTTR, hay una serie de paquetes que agregar esta funcionalidad.
El paquete rjson por Alex Couture-Beil fue uno de los primeros paquetes para
permitir que las estructuras de datos R para convertir de ida y vuelta desde el
formato JSON. La sintaxis es simple. Después de instalar el paquete rjson, convertir
de un objeto R a una cadena JSON, utilizamos la función toJSON (). Tenga en
cuenta que los caracteres de comillas han escapado utilizando el \ notación":
> biblioteca (rjson)
> ml_book <- lista (BOOK_TITLE = "máquina de aprendizaje con R",
autor = "Brett Lantz")
> toJSON (ml_book)
[1] "{\" titulo_libro \ ": \" máquina de aprendizaje con R \",
\ "Autor \": \ "Brett Lantz \"}"
Para convertir una cadena JSON en un objeto R, utilice la función fromJSON ().
Las comillas en la necesidad cadena que se escaparon, como se muestra:
> ml_book_json <- "{
\ "TITLE \": \ "máquina de aprendizaje con R \",
\ "Autor \": \ "Brett Lantz \",
\"editor\": {
\ "Name \": \ "Packt Publishing \",
\ "Url \": \ "https: //www.packtpub.com \"
},
\ "Temas \": [\ "I \", \ "la máquina de aprendizaje \", \ "minería de datos
\"],
\ "MSRP \": 54.99
}"
Esto resulta en una estructura de lista en una forma muy parecida a la original, JSON:
> str
(ml_book_r)
Lista de 5
PS Título: CHR "máquina de aprendizaje con R"
PS autor: CHR "Brett Lantz"
$ Editorial: Lista de 2
[ 399 ]
.. $ name: CHR "Packt Publishing"
[ 400 ]
Máquina de aprendizaje especializado temas
[ 401 ]
capítulo 12
[ 403 ]
Máquina de aprendizaje especializado temas
El paquete de la red por Carter T. Butts, David Hunter, y Mark S. Handcock ofrece
una estructura de datos especializada para trabajar con redes. Esta estructura de
datos es necesaria debido al hecho de que la matriz necesaria para almacenar N2
enlaces potenciales superará rápidamente la memoria disponible; la estructura de
datos de red utiliza una representación escasa a
almacenar sólo los enlaces existentes, ahorrando una gran cantidad de memoria
si la mayoría de las relaciones son inexistentes. Un paquete estrechamente
relacionado, sna (análisis de redes sociales), permite el análisis y la
visualización de los objetos de red.
El paquete igraph por Gábor Csárdi proporciona otro conjunto de herramientas para
visualizar y analizar datos de la red. Es capaz de calcular las métricas para redes
muy grandes. Un beneficio adicional de igraph es el hecho de que tiene paquetes
análogas para los lenguajes de programación Python y C, lo que le permite ser
utilizado para realizar análisis de prácticamente cualquier lugar. Como
demostraremos en breve, es muy fácil de usar.
[ 404 ]
capítulo 12
Para cargar los datos de red en R, el paquete igraph proporciona una función
read.graph () que puede leer archivos edgelist así como otros formatos más
sofisticados como el Gráfico Modeling Language (GML). Para ilustrar esta
funcionalidad, vamos a utilizar un conjunto de datos que describe la amistad entre
los miembros de un pequeño club de karate. Para seguir a lo largo, descargue el
archivo desde el sitio web karate.txt Packt Publishing y guardarlo en su directorio
de trabajo R. Después de haber instalado el paquete igraph, la red de karate se
puede leer en I de la siguiente manera:
> biblioteca (igraph)
> karate <- read.graph ( "karate.txt", "edgelist", dirigida = FALSE)
Esto creará un objeto de matriz dispersa que puede ser utilizado para la
representación gráfica y análisis de la red. Tenga en cuenta que la dirigida =
parámetro FALSO obliga a la red para utilizar enlaces no dirigidos o bidireccional
entre los nodos. Dado que el conjunto de datos de karate describe la amistad, esto
significa que si la persona 1 es amiga de la persona 2, entonces la persona 2 es la
amiga de la persona 1. Por otro lado, si el conjunto de datos describe los resultados
de lucha, el hecho de que la persona 1 persona derrotada 2 sería ciertamente no
implica que la persona 2 persona derrotado 1. En este caso, la dirigida = parámetro
TRUE se debe establecer.
[ 406 ]
Máquina de aprendizaje especializado temas
[ 407 ]
[19] 23222533243446 12
17
[ 408 ]
capítulo 12
Debido a que algunas conexiones son más importantes que otros, una variedad de
medidas de red se han desarrollado para medir la conectividad nodo con esta
consideración. Una métrica red centralidad llamado intermediación está destinado a
capturar el número de rutas más cortas entre los nodos que pasan por cada nodo.
Los nodos que son realmente más importante para todo el gráfico tendrán un valor
de centralidad de intermediación más alto, ya que actúan como un puente entre los
otros nodos. Obtenemos un vector de las medidas de centralidad utilizando la
función de intermediación (), de la siguiente manera:
> intermediación (karate)
[1] 231.0714286 28.4785714 75.8507937 6.2880952
[5] 0.3333333 15.8333333 15.8333333 0.0000000
[9] 29.5293651 0.4476190 0.3333333 0.0000000
[13] 0.0000000 24.2158730 0.0000000 0.0000000
[17] 0.0000000 0.0000000 0.0000000 17.1468254
[21] 0.0000000 0.0000000 0.0000000 9.3000000
[25] 1.1666667 2.0277778 0.0000000 11.7920635
[29] 0.9476190 1.5428571 7.6095238 73.0095238
[33] 76.6904762 160.5515873
[ 409 ]
Máquina de aprendizaje especializado temas
Mejorar el rendimiento de R
R tiene una reputación de ser lento e ineficiente memoria, una reputación que es al
menos algo ganado. Estos fallos son en gran medida inadvertido en un PC moderno
para conjuntos de datos de muchos miles de registros, pero los conjuntos de datos
con un millón de discos o más pueden exceder los límites de lo que es posible en la
actualidad con el hardware de nivel de consumidor. El problema se agrava si el
conjunto de datos contiene muchas características o si se están utilizando algoritmos
de aprendizaje complejas.
Los paquetes que se extienden más allá de los R capacidades del software de base se
están desarrollando rápidamente. Este trabajo viene principalmente en dos frentes:
algunos paquetes se suman la capacidad de administrar muy grandes conjuntos de
datos, haciendo operaciones de datos más rápido o permitir que el tamaño de los
datos a superar la cantidad de memoria disponible del sistema; otros permiten R para
trabajar más rápido, tal vez mediante la difusión de los trabajos sobre los
ordenadores o procesadores adicionales, utilizando hardware especializado, o la
prestación de algoritmos de aprendizaje automático optimizados para problemas
grandes de datos.
[ 411 ]
capítulo 12
Hacer la transición de tramas de datos a dplyr es fácil. Para convertir una trama de
[ 412 ]
datos existente en un objeto de TBL, utilice la función as.tbl ():
> biblioteca (dplyr)
> crédito <- read.csv ( "credit.csv")
> credit_tbl <- as.tbl (de crédito)
[ 413 ]
Máquina de aprendizaje especializado temas
[ 414 ]
capítulo 12
Después de crear la conexión, tenemos que cargar los datos en la base de datos
utilizando la función copy_to (). Este utiliza el objeto credit_tbl para crear una
tabla de base de datos dentro de la base de datos especificada por
credit_db_conn. El parámetro = FALSO temporal obliga a la tabla que se crea
inmediatamente. Desde dplyr trata de evitar la copia de datos a menos que así
debe ser, sólo creará la tabla si se le pide explícitamente a:
> copy_to (credit_db_conn, credit_tbl, temporal = FALSE)
A pesar del hecho de que dplyr se enruta a través de una base de datos, el objeto
credit_tbl aquí actuará exactamente igual que cualquier otro objeto TBL y va a
obtener todos los otros beneficios del paquete dplyr.
[ 415 ]
Máquina de aprendizaje especializado temas
[ 416 ]
El proyecto es ff en el sitio Web
http://ff.r-forge.r-project.org/.
[ 417 ]
capítulo 12
Después de instalar el ff paquete, que debe leer en un archivo CSV grande, utilice el
read.csv.ffdf ()
función, como sigue:
> biblioteca (ff)
> crédito <- read.csv.ffdf (file = "credit.csv", encabezado = VERDADERO)
El paquete ffbase por Edwin de Jonge, Jan Wijffels, y Jan van der Laan aborda esta
cuestión en cierta medida por la adición de capacidades de análisis básicas usando
objetos ff. Esto hace posible el uso de FF objetos directamente para la exploración
de datos. Por ejemplo, después de instalar el paquete ffbase, la función de media
funciona como se esperaba:
> biblioteca (ffbase)
> significa (crédito
$ cantidad) [1]
3271.258
[ 419 ]
capítulo 12
[ 420 ]
Máquina de aprendizaje especializado temas
Por lo que vale la pena, cuando se publicó la primera edición, generando una
millón de números aleatorios tomó 0.13 segundos. A pesar de que ahora
estoy usando un equipo ligeramente más potente, esta reducción de
alrededor del 30 por ciento
del tiempo de procesamiento sólo dos años más tarde ilustra la rapidez
hardware y software están mejorando.
[ 421 ]
[1] 8
[ 422 ]
capítulo 12
[ 424 ]
Máquina de aprendizaje especializado temas
El paquete de nieve (trabajo en red sencilla de estaciones de trabajo) por Luke Tierney, A.
J. Rossini, Na Li, y H. Ševčíková permite computación en paralelo en máquinas de
varios núcleos o, así como en una red de múltiples máquinas. Es un poco más
difícil de usar, pero ofrece mucha más potencia y flexibilidad. Después de instalar
la nieve, para configurar un clúster en una sola máquina, utilice la función
makeCluster () con el número de núcleos para ser utilizado:
> biblioteca (nieve)
> CL1 <- makeCluster (4)
[[2]]
nombre del nodo
"Bretts-macbook-Pro.local"
[[3]]
nombre del nodo
"Bretts-macbook-Pro.local"
[[4]]
nombre del nodo
"Bretts-macbook-Pro.local"
[ 425 ]
capítulo 12
Como era de esperar, ya que los cuatro nodos ejecutan en una sola máquina, que
informan el mismo nombre de host. Para tener los cuatro nodos ejecutar un
comando diferente, ellos suministrar con un parámetro único a través de la función
clusterApply (). A continuación, le ofreceremos cada nodo con una letra diferente.
Cada nodo a continuación, realizar una función simple en su carta en paralelo:
> clusterApply (CL1, c ( 'A', 'B', 'C', 'D'),
la función (x) {pasta ( "Cluster" x "listos!")})
[[1]]
[1] "Cluster Una lista!"
[[2]]
[1] "Grupo B listo!"
[[3]]
[1] "Grupo C listo!"
[[4]]
[1] "Categoría D listo!"
Una vez que hemos terminado con el grupo, es importante para terminar
los procesos que dio lugar. Esto va a liberar los recursos que cada nodo está
usando:
> stopCluster (CL1)
[ 426 ]
hpc/notes/snow.pdf.
[ 427 ]
Máquina de aprendizaje especializado temas
cómo funciona esto. Recordemos el comando que hemos estado usando para
Después de que el paquete foreach ha sido instalado, se puede expresar por un bucle
que genera cuatro conjuntos de 250.000 números aleatorios en paralelo. El parámetro
.combine es una configuración opcional que le dice foreach que funcionan que debe
utilizar para combinar el conjunto final de resultados de cada iteración del bucle. En
este caso, puesto que cada iteración genera un conjunto de números aleatorios,
simplemente usamos la función concatenar c () para crear un único, vector
combinado:
> biblioteca (foreach)
> system.time (L4 <- foreach (i = 1: 4, = .combine 'c')
[ 428 ]
%hacer% rnorm
(250000)) usersystem
transcurrido
0.1060.0030.109
[ 429 ]
capítulo 12
[ 431 ]
Máquina de aprendizaje especializado temas
Otro proyecto similar es RHIPE por Saptarshi Guha, que intenta traer división de
Hadoop y recombinar la filosofía en R por la gestión de la comunicación entre R y
Hadoop.
computación de la GPU
Una alternativa al procesamiento paralelo utiliza unidad de procesamiento gráfico
de un ordenador (GPU) para aumentar la velocidad de los cálculos matemáticos.
Una GPU es un procesador especializado que está optimizado para visualizar
rápidamente las imágenes en una pantalla de ordenador. Debido a que un equipo
necesita a menudo para mostrar gráficos complejos en 3D (en particular para los
videojuegos), muchos utilizan las GPU de hardware diseñado para el procesamiento
paralelo y cálculos matriciales y vectoriales extremadamente eficientes. Un beneficio
adicional es que pueden ser utilizados
para resolver de manera eficiente ciertos tipos de problemas matemáticos. Cuando un
equipo
procesador puede tener 16 núcleos, una GPU puede tener miles.
[ 432 ]
capítulo 12
El paquete gputools por Josh Buckner, Mark Seligman, y Justin Wilson implementa
varias funciones R, tales como operaciones de la matriz, el agrupamiento, y el
modelado de regresión utilizando el kit de herramientas Nvidia CUDA. El paquete
requiere una GPU CUDA 1.3 o superior y la instalación del kit de herramientas
CUDA de Nvidia.
[ 434 ]
capítulo 12
Por otro lado, si utilizamos el paquete doParallel para registrar los cuatro núcleos
para ser utilizado en paralelo, el modelo toma menos de 32 segundos para la
acumulación de menos de un tercio del tiempo, y que no hay que cambiar ni una
sola línea del código de intercalación:
> biblioteca (doParallel)
> registerDoParallel (núcleos = 4)
> system.time (tren (por defecto ~., datos = crédito, method =
"RF")) usersystem transcurrido
114.5782.03731.362
Muchas de las tareas implicadas en modelos que evalúan, como crear muestras
aleatorias y repetidamente probar predicciones para 10 veces la validación cruzada
formación y son vergonzosamente paralelo y maduro para mejoras de rendimiento.
Con esto en mente, es conveniente registrar siempre múltiples núcleos antes de
iniciar un proyecto de intercalación.
[ 435 ]
Máquina de aprendizaje especializado temas
Resumen
Sin duda, es un momento emocionante para ser el estudio de aprendizaje
automático. Los trabajos en curso en las fronteras relativamente inexploradas de la
computación paralela y distribuida ofrece un gran potencial para aprovechar el
conocimiento que se encuentra en la avalancha de datos grandes. La comunidad
científica creciente de datos se ve facilitada por el lenguaje de programación de
código libre y abierto R, que proporciona una barrera muy bajo para la entrada-sólo
hay que estar dispuesto a aprender.
Los temas que han aprendido, tanto en este capítulo y en los capítulos anteriores,
proporcionan la base para comprender los métodos de aprendizaje de máquinas más
avanzadas. Ahora es su responsabilidad mantener el aprendizaje y la adición de
herramientas a su arsenal. A lo largo de
camino, asegúrese de tener en cuenta el teorema de ningún algoritmo de
aprendizaje no Almuerzo Libre puede gobernarlos a todos, y todos ellos tienen
diferentes fortalezas y debilidades. Por esta razón, siempre habrá un elemento
humano a la máquina de aprendizaje, la adición de conocimientos de las materias y
la capacidad para que coincida con el algoritmo adecuado para la tarea en cuestión.
En los próximos años, será interesante ver cómo cambia el aspecto humano
como la línea entre la máquina de aprendizaje y el aprendizaje humano es
borrosa. Los servicios tales
como Mechanical Turk de Amazon proporcionar inteligencia multitud de fuentes,
que ofrece un conjunto de mentes humanas listos para realizar tareas sencillas en
cualquier momento. Tal vez un día, al igual que hemos utilizado las computadoras
para realizar tareas que los seres humanos no pueden hacer fácilmente, ordenadores
emplearán los seres humanos para hacer a la inversa. Lo interesante de reflexión!
[ 436 ]
Índice
gobernar interés, que mide 263, 264
símbolos un conjunto de reglas, con la
construcción
algoritmo 1R 153
10-veces la validación cruzada (CV 10 veces) principio a priori 265
ajuste de parámetros automatizado
340
paquete de intercalación utilizada de 349-352
UNA
abstracción 11
función de
activación
aproximadamente 222, 223
función de activación sigmoide 224,
225 función de activación umbral
223 función de activación paso
unidad 223
algoritmo AdaBoost.M1 367
adaptativo impulsar (AdaBoost) 145, 367
función de asignación 360
Apache Hadoop 411 de
programación de
aplicaciones
Interfaces (APIs) 388
algoritmo Apriori
para el aprendizaje de reglas de asociación
261-263 principio, que se utiliza para la
construcción conjunto de reglas 265
fortalezas 262
A priori propiedad 262
El área bajo la ROC la curva (AUC)
333 Artificial Neural Network (ANN)
220 reglas de asociación
260
tiendas de comestibles de
compra frecuente,
identificar con 266
potencial 261 aplicaciones
[ 437 ]
REQUISITOS 349, 350
axón 221
segundo
retropropagación
aproximadamente 229
redes neuronales, la formación con 229
embolsado 362-366
bolsa-de-palabras 105
créditos bancarios ejemplo,
con árboles de
decisión C5.0
datos, recogiendo 136
datos, la exploración 137, 138
datos, la preparación de 137, 138
el rendimiento del modelo,
evaluación 144 el rendimiento del
modelo, mejorando 145 modelo, la
formación en los datos 140-143 la
formación al azar, creando 138-
140 conjuntos de datos de prueba,
creando 138-140
Los métodos bayesianos
alrededor del 90
la probabilidad condicional 94-97
probabilidad conjunta 92-94
probabilidad 91, 92
clúster Beowulf 409
intermediación centralidad 397
243 sesgo
compensación sesgo-
varianza 70 paquete biglm
Los modelos de regresión, la construcción 414
paquete bigmemory
matrices masivas, utilizando con
404 URL 404
paquete bigrf
bosques aleatorios, edificio 414
[ 438 ]
414 URL clasificación
58 bimodal alrededor del 19
binning 102 actuación, midiendo 312
bins 102 predicción datos 313-317
Bioconductor Formación de clasificación y regresión
aproximadamente 393 (Paquete de intercalación)
393 URL aproximadamente 321
bioinformática URL 350, 415
aproximadamente 393 utilizado, para la evaluación
los datos, el análisis de 393 de modelos en paralelo
relaciones bivariadas 59 414, 415
procesos de caja negra 219 usando, por ajuste de
blowby 175 parámetros automatizado
masa corporal índice (IMC) 349-352
187 impulsar 366-368 Árbol de clasificación y regresión (CART)
la agregación de arranque 362 algoritmo 201
bootstrap de muestreo 343, 344 reglas de clasificación
de caja y bigotes parcela 49 algoritmo 1R 154, 155
ramas 126 aproximadamente 149, 150
ejemplo el cáncer de mama obtener, a partir de árboles de
datos, recogiendo 76 decisión 157 algoritmo
los datos, la exploración de 77-79 DESTRIPADOR 155, 156 separada
datos, la preparación de 77-79 y conquista 150-152
diagnosticar, con k-NN algoritmo 75 problema desequilibrio clase
el rendimiento del modelo, la 312 clustering
evaluación 83, 84 el rendimiento del aproximadamente 21, 286
modelo, mejorando 84 modelo, la como tarea de aprendizaje automático 286-288
formación en los datos 81, 82 columna-mayor orden 38
función de combinación 361
do Unified Device completa
Architecture (CUDA) 413 Amplia red
algoritmo C5.0 Archivo R (CRAN)
aproximadamente 131 aproximadamente el 23, 398
árbol de decisión, la poda 135, 136 tarea vista, URL 393
split, seleccionando 133-135 URL 23
fortalezas 132 Tecnologías web, URL 381
debilidades 132 la resistencia del hormigón, modelado con las
características categóricas 18 RNA
variables categóricas aproximadamente 231
aproximadamente 56-58 datos, recogiendo 232
tendencia central, medición 58, 59 los datos, la exploración de 232-234
cuerpo de la célula 221 datos, la preparación de 232, 233
centroide 293 el rendimiento del modelo, evaluación
características, redes neuronales 237 el rendimiento del modelo,
función de activación 222 mejorando 238, 239
topología de la red 222 modelo, la formación en los datos 234, 235
formación algoritmo 222 probabilidad condicional 94
matriz de confusión
[ 439 ]
aproximadamente 317, 318
utilizado, para medir el desempeño
319-321
[ 440 ]
paquete data.table
objeto de control 355
401 URL
casco convexo 242
utilizando 401, 402
corpus 107
disputas datos 378
correlación 179, 180
validación cruzada 340-343
archivo CSV (valores separados por
comas)
alrededor del 41
datos, importación de 41
utilidad de rizo 382
puntos de corte 102
re
datos
importación, a partir de archivos CSV 41
la gestión, con R 39
Gestión de base de datos
Sistemas (DBMS) 379
bases de datos
aproximadamente 378
los datos, la consulta en bases de datos
SQL 379, 380
diccionario de datos 43
exploración de datos 42
marco de datos 35, 36
minería de datos 3
munging datos 378
preparación de datos, el cáncer de mama
ejemplo
prueba conjuntos de datos, la creación de
80, 81
formación, la creación de 80,
81 Data Source Name (DSN)
379 almacenamiento de datos
10
estructuras de datos, R
aproximadamente el 28
matriz 38, 39
trama de datos 35-37
explorar 43, 44
factor de 30, 31
listas 32-34
de carga 39, 40
matriz 37
la eliminación de 39, 40
ahorro de 39, 40
vector 28, 29
[ 441 ]
los nodos de
decisión 126
árbol de
decisión
aproximadamente 127, 136
exactitud, aumentando 145-147
reglas de clasificación,
obteniendo de 157 divide y
conquistaras 127-131
usos potenciales 127
poda 135, 136
utilizado, para la identificación de banco
riesgoso préstamos 136
bosques de árboles de decisión 369, 370
aprendizaje profundo 227
Profundo Neural Network
(DNN) 227 delimitador 41
dendritas 221
94 eventos dependientes
variable dependiente 172
modelo
descriptivo 20
tramas de datos
basadas en
disco
la creación, con el
paquete FF 402, 403 divide
y conquistaras 127-131
datos específicos del
dominio
bioinformática los datos, el
análisis de 393 datos de la red,
analizando 393-397 datos de la
red, visualizando 393-397
trabajando con 392
paquete doParallel
utilizando 410, 411
paquete dplyr
399 URL
utilizado, para generalizar
datos tabulares 399-
401 estructuras
codificación maniquí 73, 195
variable ficticia 62, 195
mi
principios de detener 135
edgelist 395
28 elementos
problemas vergonzosamente
paralelas 405 conjuntos
[ 442 ]
sobre 359, 362
ventajas 361, 362
harpillera 362-366
impulsar 366-368
bosques al azar 369, 370
entropía 133
aprendices codiciosos 158-160
época
aproximadamente 230
fase de retroceso 230
fase hacia adelante 230
la erosión 175
norma euclidiana 244
evaluación 14, 15
F
F1 anotar 330
factor 30, 31
anticipativo redes 227
proyecto ffbase
403 URL
paquete FF
402 URL
basado en disco utilizado,
para la creación de
tramas de datos 402,
403
de cinco números resumen 47
F-medida 330, 331
paquete foreach
utilizando 410, 411
víveres comprados con frecuencia
identificar, con reglas de asociación
266
F-Resultado 330
la estimación de rendimiento futuro
aproximadamente 336
oreja de muestreo 343, 344
validación cruzada 340-343
reducto 336-339 método
sol
gaussiana RBF kernel 248
generalización 13, 14
Modelos lineales generalizados (GLM)
174 glifo 249
gradiente ascendencia 230
unidad de procesamiento gráfico
(GPU)
aproximadamente 412
computación 412, 413
413 URL
Gráfico Modeling Language (GML) 395
[ 443 ]
cuadrícula 405
H
Hadoop
412 URL
utilizando 411, 412
Significado armonico 330
línea de cabecera 41
histogramas 51
método de
retención 336-
343 HTTR
paquete
383 URL
hiperplano 239
Hypertext Markup Language (HTML)
382
yo
paquete igraph
aproximadamente 394
394 URL
imputación 300
Incremental de error reducido
poda (IREP) algoritmo 155
93 eventos independientes
variables independientes 172
ganancia de
información
134 datos de
entrada
coincidente, a 22
algoritmos tipos 17,
18
los nódulos de entrada 226
aprendizaje basado en ejemplo 74
interceptar 172
Rango intercuartil
(IQR) 48 conjunto de
elementos 260
Iterativo Dichotomiser 3 (ID3) 131
J
(JavaScript Object Notation JSON)
aproximadamente 388
análisis, desde las API
web 388-392 URL 388
probabilidad
conjunta 92-94
paquete [ 444 ]
jsonlite
392 URL
340 lado izquierdo (LHS) 260
K niveles 19
Kaggle
347 URL
granos
usando, por no lineal 245-248 espacios
truco del núcleo
245 paquete
kernlab
referencia 252
k-veces la validación cruzada (CV k
veces) 340 k-medias ++ 291
k-m edios algoritmo de agrupamiento
aproximadamente 289, 290
número apropiado de grupos,
seleccionar 294-296
la distancia, que se utiliza
para asignar 290-294
racimo
la distancia, que se utiliza para la
actualización 290-294 racimo
k-n earest algoritmo de vecinos (k-NN)
sobre 66, 67
k apropiado, seleccionar 70, 71
datos, la preparación de 72-74
algoritmo de aprendizaje perezoso 74, 75
similitud, la medición de la distancia 69, 70
utilizado, para el diagnóstico de cáncer de
mama 75 debilidades 67
L
Laplace estimador 100, 101
grandes conjuntos de datos
data.table paquete, usando 401, 402
tramas de datos basados en disco,
creando con el paquete FF 402, 403
gestión 398
matrices masivas, utilizando con el
paquete bigmemory 404
estructuras de datos tabulares,
generalizando con dplyr 399-401
latitud 246
capas 226
algoritmos de aprendizaje
perezoso 74 nodos hoja 126
tasa de aprendizaje 231
dejar uno fuera método
[ 445 ]
LIBSVM
252 URL
probabilidad de 95
núcleo lineal 247
función de enlace 174
listas 32-34
curva de loess 193
Regresión logística 173
longitud 246
METRO
aprendizaje automático
alrededor de 3
4 abusos
ética 7, 8
5-7 limitaciones
orígenes 2, 3
proceso 9
R paquetes, la instalación 23, 24
R paquetes, de carga 24, 25
R paquetes, descarga 24, 25
5 éxitos
usos 4
con R 22, 23
aprendizaje automático, en la práctica
alrededor del 16
algoritmos, tipos 19-21
recopilación de datos 16
exploración y preparación de datos
dieciséis datos de entrada, a juego
con los algoritmos 21, 22 datos de
entrada, los tipos 17, 18
evaluación del modelo 16
16 mejora modelo
modelo de formación dieciséis
aprendizaje automático, proceso de
aproximadamente 9, 10
abstracción 9-12
almacenamiento 9 de datos, 10
evaluación 9, 14-16
generalización 9, 13, 14
paquete magrittr
aproximadamente 385
385 URL
Mapa reducido
aproximadamente 411, 412
Mapa etapa 411
[ 446 ]
normalización 72 ejemplo,
reducir paso 411
correo no deseado teléfono
marginal probabilidad de 95
móvil
canasta ejemplo de análisis
aproximadamente 259 datos, recogiendo 104, 105
datos, la exploración 105, 106
reglas de asociación, el ahorro de trama de
datos 283 datos, la preparación de 105, 106
reglas de asociación, guardarlas en un
archivo 283
datos, recogiendo 266, 267
los datos, la exploración de 267, 268
datos, la preparación de 267, 268
soporte de productos a, visualizando 272
el rendimiento del modelo, evaluar 277-
280 el rendimiento del modelo,
mejorando 280 modelo, la formación en
los datos 274-276
un conjunto de reglas de asociación, la
clasificación 280, 281 matriz dispersa,
creando para
transacción datos 268-271
subconjunto de reglas de asociación, la
clasificación 281, 282 datos de la
transacción, visualizando 273, 274
matriz 37
matriz notación 183
margen máximo hiperplano (MMH) 241
media 45
media error absoluto (MAE) 213
gastos médicos, que predicen con
regresión lineal
aproximadamente 186
matriz de correlación 189, 190
datos, recogiendo 186, 187
datos, la exploración 187, 189
datos, la preparación de 187-189
el rendimiento del modelo, mejorar 197-
201 el rendimiento del modelo, la
formación 196, 197 modelo, la formación
en los datos 193-195 relaciones,
visualizando
Entre las características 190
matriz de dispersión 190-193
paso de mensajes interfaz (MPI) 409
meta-alumnos
aproximadamente el 21
métodos, utilizados para mejorar el
rendimiento del modelo 359
mínimo máximo
[ 447 ]
información 227 capas 226
filtrado, con Naive algoritmo Bayes 103
características indicadoras, creando número de nodos en cada capa 228, 229
por frecuentes 119 palabras,
120
el rendimiento del modelo, evaluación 122,
123
el rendimiento del modelo, la mejora de 123,
124
modelo, la formación en los datos 121, 122
prueba conjuntos de datos,
la creación de 115, 116 datos
de texto, de limpieza 106-
112
texto de datos,
estandarización de 106-112
datos de texto, visualizando
116-119 documentos de
texto, la división
en palabras 112-115
formación, la creación de 115, 116
modelo 202
árboles
paquete de
múltiples
núcleos
utilizando 406-409
multicapa la red 227
Perceptrón multicapa (MLP)
228 multimodal 58
regresión logística multinomial 173
regresión lineal múltiple
aproximadamente 173, 181
debilidades 181
múltiple valor R cuadrado (coeficiente de
determinación) 197
relaciones multivariantes 59
norte
algoritmo bayesiano
aproximadamente 90, 97
clasificación 98-100
Laplace estimador 100, 101
características numéricas, utilizando con 102,
103
utilizado, para el filtrado de teléfono móvil
correo no deseado 103
clasificación del vecino más cercano
66 Premio Netflix
347 URL
análisis de red 394 datos
de red
analizar 393-397 [ 448 ]
visualizar 393-397
topología de
la red
alrededor de
225, 226
dirección de desplazamiento de
Open Database Connectivity (ODBC) 379
Redes neuronales
Reconocimiento óptico de caracteres (OCR) 249
sobre 220
algoritmos de aprendizaje optimizados
biológica, a las neuronas artificiales 221,
222 el despliegue de 413
características 222
la formación, la propagación hacia atrás
229-231
neuronas 220
nodos 220
característica nominal
18, 30 espacios no
lineales
núcleos, utilizando de 245-
248 distribución normal 54
numérico
alrededor del 18
53 de datos, 54
los datos, la normalización 79, 80
características, utilizando con Naive
Bayes 102, 103 predicción 20
variables numéricas
alrededor del 44
tendencia central, medición 45, 46
difusión, midiendo 47-56
visualizar 49-53
O
OCR, que se realiza con las SVM
aproximadamente 248
datos, recogiendo 249
datos, la exploración 250, 251
datos, la preparación de 250, 251
el rendimiento del modelo, evaluar 254-
256 el rendimiento del modelo,
mejorando 256, 257
modelo, la formación en los datos 252,
253
de una sola mano
tabla 57 datos en línea
texto completo de las
páginas web, la
descarga 382, 383
análisis 381
analizar, dentro de las páginas web 383-
386 trabajando con 381
servicios en línea
trabajar con 381
[ 449 ]
rendimiento del modelo, la
modelos en paralelo, que
evaluación 165
evaluaron con el paquete de
el rendimiento del modelo, mejorar 166-
intercalación 414, 415
168 modelo, la formación en los datos
bosques aleatorios, la
162, 164
construcción con
regresión de Poisson 173
el paquete bigrf
polinomio núcleo 247
414
Los modelos de regresión, la
construcción con el paquete
biglm 414
ordinal 18
ordinario Estimación por mínimos
cuadrados 177-179 fuera de la
bolsa de tasa de error 372
sobreajuste 15
PAG
paralelo cloud
computing
con Hadoop 411, 412
con MapReduce 411,
412
computación
paralela
sobre 404, 405
Tiempo de ejecución,
midiendo 406 con el
paquete doParallel 410, 411
con el paquete foreach 410,
411 con el paquete de
múltiples núcleos 406-409
con el paquete de la nieve
406-409
ajuste de parámetros 349
patrón de descubrimiento 20
coeficiente de correlación de Pearson 179
medidas de desempeño
aproximadamente 321, 322
matrices de confusión
utilizan 319-321 estadística
kappa 323-326
precisión 328-330
326-328 sensibilidad
especificidad
326-328
ventajas y
desventajas de
rendimiento
visualizar 331,
332
ejemplo setas venenosas,
[ 450 ]
con los alumnos de
reglas
datos, recogiendo 160, 161
datos, la exploración 161, 162
datos, la preparación de 161,
162 identificar, con los
alumnos de la regla 160 el
valor predictivo positivo 328 formación 370-372
probabilidad posterior 96 369 URL
postpruning 135
328 precisión
modelo predictivo 19
pre-poda 135
probabilidad previa 95
probabilidad 91
archivos de propiedad
aproximadamente 378
archivos de Microsoft Excel, lectura 378,
379
archivos de Microsoft Excel, escritura
378, 379
archivos SAS, lectura 378, 379
archivos SAS, escritura 378, 379
archivos de SPSS, lectura 378, 379
archivos de SPSS, escritura 378, 379
archivos de Stata, lectura 378, 379
archivos de Stata, escritura 378, 379
microarrays patentada
utilizando 393
pura 133
pureza 133
Q
optimización cuadrática 242
cuantiles 47
R
R
aproximadamente 22, 23
estructuras de datos 28
paquetes, la instalación 23, 24
paquetes, de carga 24, 25
paquetes, descarga 24, 25
utilizado, para la gestión de
datos 39 trabajar con la
clasificación
predicción datos 313-317
Funcion de base radial (RBF) red 225
bosques aleatorios
aproximadamente 369, 370
edificio, con el paquete bigrf 414 el
rendimiento, la evaluación 373-375
fortalezas 370
[ 451 ]
RCurl
382 URL
Características operativas del
receptor (ROC) curva
aproximadamente 332, 333
la creación de 334, 335
recurrente la red 228
recursiva
particionamiento
127 regresión
unos 172
añadiendo, a los
árboles 202-204
correlación 179
regresión lineal múltiple 181-186
ordinaria estimación por
mínimos cuadrados 177-179
Regresión lineal simple 174-177
utilizar 173 casos
Los modelos de regresión
edificio, con el paquete biglm 414
regresión 201
árboles relaciones
examinar 61
explorar, entre Variables 59
visualizante 59-61
Repitió incremental de poda
para cortar la reducción de
errores (DESTRIPADOR)
algoritmo 155
derechos residuales de autor 177
resubstitution de
error 336 Revolution
Analytics
410 URL
RHadoop
412 URL
paquete RHIPE
412 URL
lado derecho (RHS)
paquete 260 rio
aproximadamente 378
378 URL
préstamos bancarios riesgosos
identificar, árboles de decisión C5.0
utilizan 136
rutina para el
aprendizaje 74
rpart.plot
210 URL
R, la mejora del rendimiento
aproximadamente 398 [ 452 ]
GPU, computación
412, 413 grandes
conjuntos de datos,
gestión 398
Máquinas de vectores soporte (SVM)
algoritmos de aprendizaje
optimizados, el aproximadamente 239, 364
240 aplicaciones
despliegue de 413
caso de datos linealmente separables 242-244
paralela computación 404, 405
valor R cuadrado 197
rudimentario RNAs 220
rvest empaquetar 384
S
matriz de dispersión (SPLOM) 190-
192 escala Scoville 72
análisis de segmentación 21
semi-aprendizaje
supervisado 288 separada y
conquista 150-152 núcleo
sigmoide 248
Regresión lineal simple 173-177
sintonizado modelo sencillo
creando 352-355
variable de holgura
244
forma pendiente-
intersección 172 Colección
spam SMS
104 URL
bola de nieve
111 URL
paquete de nieve
409 URL
utilizando 406-409
servicio de redes sociales (SNS) 296
matriz dispersa 113, 268
bases de datos SQL
los datos, la consulta en el año 379, 380
aplastando funciones 225
apilamiento 361
desviación estándar 54
reducción de la desviación estándar
(SDR) 203 pruebas de hipótesis
estadísticas 173
modelos de valores
tuning, para un mejor rendimiento 348,
349 Structured Query Language (SQL)
379 crianza subárbol 136
reemplazo subárbol 136
estadísticas de resumen 44
aprendizaje supervisado 19
[ 453 ]
observación 17
caso de no linealmente datos
función de activación paso
separables 244, 245 clasificaciones,
unidad 223 estadística
con hiperplanos 240-242 OCR, que
univariante 59
se realiza con 248
función universal aproximador 229 aprendizaje
vectores de
sin supervisión 20
soporte 242
SVMlight
alred
edor
de
252
252
URL
sinaps
is 221
T
Valor separado por
tabuladores (TSV) 42
tabular
alrededor del 41
estructuras de datos,
generalizando con el
paquete dplyr 399-401
adolescente búsqueda segmentos
de mercado, con k-means
clustering
aproximadamente 296
datos, recogiendo 297
los datos, la exploración de 297-299
datos, la preparación de 297-301
el rendimiento del modelo,
evaluar 304-307 el rendimiento
del modelo, mejorando 308,
309 modelo, la formación en
los datos 302-304
nodos terminales 126
función de activación
umbral 223 formación 12
árboles
regresión, añadiendo a 202-204
estructura de
árbol 126
proceso de
sintonización
la personalización de 355-359
Bidireccional tabulación cruzada 61
T
Repositorio UCI Machine Learning
Datos [ 454 ]
aproximadamente 205
137 URL
unimodal 58
Unidad de
análisis 17
unidad de
V el rendimiento del modelo, mejorar 214-218
modelo, la formación en los datos 208, 209 el
vector 28 rendimiento, la medición de la media
diagrama de Voronoi 292 error absoluto 213, 214
nube de la palabra
W aproximadamente 116-119
116 URL
páginas web
texto completo, la descarga 382, 383 X
los datos, el análisis sintáctico 383-386
JSON, el análisis sintáctico desde las API xml2 GitHub
web 388-392 documentos XML, el 387 URL
análisis sintáctico 387 paquete XML
Web raspado 383 aproximadame
estimación de la calidad del vino, con nte 387
árboles de regresión 387 URL
aproximadamente 205
datos, recogiendo 205, 206 Z
los datos, la exploración de 206-208
datos, la preparación de 206-208 Zeror 153
árboles de decisión, visualizar 210-212 z-s estandarización núcleo 73, 85, 86
el rendimiento del modelo, la
evaluación 212, 213
[ 455 ]
Gracias por comprar
Máquina de aprendizaje con R
Segunda edicion