Aprendizaje automático en R para principiantes con ejemplo



Este blog sobre aprendizaje automático con R lo ayuda a aprender los conceptos básicos del aprendizaje automático e implementar diferentes algoritmos de aprendizaje automático con R.

Aprendizaje automático con R

¡El aprendizaje automático es el presente y el futuro! Desde el motor de recomendaciones de Netflix hasta el automóvil autónomo de Google, todo es aprendizaje automático. Este blog sobre aprendizaje automático con R lo ayuda a comprender los conceptos básicos del aprendizaje automático seguidos de diferentes algoritmos de aprendizaje automático e implementar esos algoritmos de aprendizaje automático con R.

Este blog sobre 'Aprendizaje automático con R' consta de estas secciones:





Aprendizaje automático con R | Edureka

Comprensión del aprendizaje automático

Fish1- Aprendizaje automático con R - Edureka



¿Cómo sabes que todos esos son peces?



Cuando era niño, es posible que se haya encontrado con una imagen de un pez y sus maestros de jardín de infantes o sus padres le hubieran dicho que este es un pez y tiene algunas características específicas asociadas con él, como si tuviera aletas, branquias, un par de ojos, una cola y así sucesivamente. Ahora, cada vez que su cerebro encuentra una imagen con ese conjunto de características, automáticamente la registra como un pez porque su cerebro tiene aprendido que es un pez.

Así es como funciona nuestro cerebro, pero ¿qué pasa con una máquina? Si se alimenta la misma imagen a una máquina, ¿cómo la máquina la identificará como un pez?

Aquí es donde M aprendizaje achine entra. Seguiremos introduciendo imágenes de un pez en una computadora con la etiqueta 'pez' hasta que la máquina aprende todas las funciones asociadas con un pescado.

Una vez que la máquina aprende todas las características asociadas con un pez, le daremos nuevos datos para determinar cuánto ha aprendido.

En otras palabras, Datos brutos / datos de entrenamiento se entrega a la máquina, para que aprende todas las funciones asociadas con el Datos de entrenamiento. Una vez hecho el aprendizaje, se le da Nuevos datos / datos de prueba para determinar qué tan bien ha aprendido la máquina.

Avancemos en este blog de Machine Learning con R y entendamos los tipos de Machine Learning.

Tipos de aprendizaje automático

  • Aprendizaje supervisado:

El algoritmo de aprendizaje supervisado aprende de un conjunto de datos conocido (datos de entrenamiento) que tiene etiquetas para hacer predicciones.

La regresión y la clasificación son algunos ejemplos de aprendizaje supervisado.

#Clasificación:

La clasificación determina a qué conjunto de categorías pertenece una nueva observación, es decir, un algoritmo de clasificación aprende todas las características y etiquetas de los datos de entrenamiento y cuando se le dan nuevos datos, tiene que asignar etiquetas a las nuevas observaciones dependiendo de lo que haya aprendido. de los datos de entrenamiento.

Para este ejemplo, si a la primera observación se le asigna la etiqueta 'Hombre', entonces se clasifica correctamente, pero si se le asigna la etiqueta 'Mujer', la clasificación es incorrecta. De manera similar, para la segunda observación, si la etiqueta dada es 'Mujer', está correctamente clasificada, de lo contrario, la clasificación es incorrecta.

#Regresión:

La regresión es un algoritmo de aprendizaje supervisado que ayuda a determinar cómo una variable influye en otra variable.

Aquí, 'living_area' es la variable independiente y 'precio' es la variable dependiente, es decir, estamos determinando cómo varía el 'precio' con respecto a 'living_area'.

  • Aprendizaje sin supervisión:

El algoritmo de aprendizaje no supervisado extrae inferencias de datos que no tienen etiquetas.

Agrupación es un ejemplo de aprendizaje no supervisado. “K-medias”, “Jerárquico”, “C-medias difusas” son algunos ejemplos de algoritmos de agrupamiento.

En este ejemplo, el conjunto de observaciones se divide en dos grupos. La agrupación se realiza sobre la base de la similitud entre las observaciones. Existe una alta similitud entre grupos y una baja similitud entre grupos, es decir, hay una similitud muy alta entre todos los autobuses, pero poca similitud entre los autobuses y los automóviles.

  • Aprendizaje reforzado:

El aprendizaje por refuerzo es un tipo de algoritmo de aprendizaje automático en el que máquina / agente en un ambiente aprende el comportamiento ideal para maximizar su desempeño. Se requiere retroalimentación de recompensa simple para que el agente aprenda su comportamiento, esto se conoce como señal de refuerzo .

Echemos pacman por ejemplo. Mientras pacman siga comiendo, gana puntos, pero cuando choca contra un monstruo pierde su vida. Así pacman aprende que necesita comer más comida y evitar monstruos.para mejorar su rendimiento.

Implementación del aprendizaje automático con R:

Regresión lineal:

Trabajaremos con el conjunto de datos de diamantes para implementar el algoritmo de regresión lineal:

Descripción del conjunto de datos:

Antes de construir cualquier modelo sobre los datos, se supone que debemos dividir los datos en conjuntos de 'entrenamiento' y 'prueba'. El modelo se construirá en el conjunto de 'tren' y su precisión se comprobará en el conjunto de 'prueba'.

Necesitamos cargar el paquete 'caTools' para dividir los datos en dos conjuntos.

biblioteca (caTools)

El paquete 'caTools' proporciona una función 'sample.split ()' que ayuda a dividir los datos.

sample.split (precio de $ diamantes, SplitRatio = 0.65) -> split_index

Al 65% de las observaciones de la columna de precios se les ha asignado la etiqueta 'verdadero' y al 35% restante se les ha asignado la etiqueta 'falso'.

subconjunto (diamantes, split_index == T) -> tren subconjunto (diamantes, split_index == F) -> prueba

Todas las observaciones que tienen la etiqueta 'verdadero' se han almacenado en el ' objeto 'tren' y aquellas observaciones que tienen la etiqueta 'falsa' se han asignado al conjunto de 'prueba'.

Ahora que se realizó la división y tenemos nuestros conjuntos de 'entrenamiento' y 'prueba', es hora de construir el modelo de regresión lineal en el conjunto de entrenamiento.

Usaremos la función 'lm ()' para construir el modelo de regresión lineal en los datos de 'tren'. Estamos determinando el precio de los diamantes con respecto a todas las demás variables del conjunto de datos. El modelo construido se almacena en el objeto 'mod_regress'.

lm (precio ~., datos = tren) -> mod_regress

Ahora que hemos construido el modelo, necesitamos hacer predicciones en el conjunto de 'prueba'. La función 'predecir ()' se utiliza para obtener predicciones. Se necesitan dos argumentos: el modelo construido y el equipo de prueba. Los resultados predichos se almacenan en el objeto 'result_regress'.

saltstack vs marioneta vs chef
predecir (mod_regress, prueba) -> result_regress

Combinemos los valores de precios reales del conjunto de datos de 'prueba' y los valores predichos en un único conjunto de datos mediante la función 'cbind ()'. El nuevo marco de datos se almacena en 'Final_Data'

cbind (Real = precio de prueba $, Predicted = result_regress) -> Final_Data 
as.data.frame (Final_Data) -> Final_Data

Un vistazo a 'Final_Data' que se compone de valores reales y valores predichos:

cómo convertir la fecha de la cadena a la fecha en java

Busquemos el error restando los valores predichos de los valores reales y agreguemos este error como una nueva columna a 'Final_Data':

(Final_Data $ Actual- Final_Data $ Predicted) -> error
cbind (Final_Data, error) -> Final_Data

Un vistazo a 'Final_Data' que también incluye el error en la predicción:

Ahora, continuaremos y calcularemos ' Error cuadrático medio ' lo que da un error agregado para todas las predicciones

rmse1<-sqrt(mean(Final_Data$error^2)) 
rmse1

Continuando, construyamos otro modelo, para que podamos comparar la precisión de ambos modelos y determinar cuál es mejor.

Construiremos un nuevo modelo de regresión lineal en el conjunto 'tren', pero esta vez eliminaremos las columnas 'x' e 'y' de las variables independientes, es decir, el 'precio' de los diamantes está determinado por todos los columnas excepto 'x' e 'y'.

El modelo construido se almacena en 'mod_regress2':

lm (precio ~.-y-z, datos = tren) -> mod_regress2

Los resultados predichos se almacenan en 'result_regress2'

predecir (mod_regress2, prueba) -> result_regress2

Los valores reales y previstos se combinan y almacenan en 'Final_Data2':

cbind (Real = precio de prueba $, Predicted = result_regress2) -> Final_Data2 
as.data.frame (Final_Data2) -> Final_Data2

Agreguemos también el error de predicción a 'Final_Data2'

(Final_Data2 $ Actual- Final_Data2 $ Predicted) -> error2
cbind (Final_Data2, error2) -> Final_Data2

Un vistazo a 'Final_Data2':

Encontrar el error cuadrático medio de la raíz para obtener el error agregado:

rmse2<-sqrt(mean(Final_Data2$error^2))

Vemos que 'rmse2' es marginalmente menor que 'rmse1' y, por lo tanto, el segundo modelo es marginalmente mejor que el primer modelo.

Clasificación:

Trabajaremos con el conjunto de datos 'car_purchase' para implementar particionamiento recursivo que es un algoritmo de clasificación.

Dividamos los datos en conjuntos 'entrenar' y 'probar' usando la función 'sample.split ()' del paquete 'caTools'.

biblioteca (caTools)

Al 65% de las observaciones de la columna 'Comprado' se le asignarán etiquetas 'VERDADERO' y al resto se le asignarán etiquetas 'FALSO'.

sample.split (car_purchase $ Purchased, SplitRatio = 0.65) -> split_values

Todas aquellas observaciones que tengan la etiqueta 'VERDADERO' se almacenarán en datos de 'tren' y aquellas observaciones que tengan la etiqueta 'FALSO' se asignarán a datos de 'prueba'.

subconjunto (compra_coche, valores_divididos == T) -> datos_del_ tren
subconjunto (compra_coche, valores_divididos == F) -> test_data

Es hora de construir el algoritmo de particionamiento recursivo:

Comenzaremos cargando el paquete 'rpart':

biblioteca (rpart)

La columna 'Comprado' será la variable dependiente y todas las demás columnas son las variables independientes, es decir, estamos determinando si la persona ha comprado el automóvil o no con respecto a todas las demás columnas. El modelo se basa en 'train_data' y el resultado se almacena en 'mod1'.

rpart (Comprado ~., data = train_data) -> mod1

Grafiquemos el resultado:

plot (mod1, margin = 0.1) texto (mod1, pretty = T, cex = 0.8)

Ahora, vamos a predecir los resultados en 'test_data'. Estamos dando el modelo rpart construido 'mod1' como primer argumento, el conjunto de pruebas 'test_data' como segundo argumento y el tipo de predicción como 'clase' para el tercer argumento. El resultado se almacena en el objeto 'resultado1'.

predecir (mod1, test_data, tipo = 'clase') -> resultado1

Evaluemos la precisión del modelo usando la función 'confusionMatrix ()' del paquete de intercalación.

biblioteca (intercalación) confusionMatrix (tabla (test_data $ Comprado, resultado1))

La matriz de confusión nos dice que de las 90 observaciones en las que la persona no compró el automóvil, 79 observaciones se han clasificado correctamente como “No” y 11 se han clasificado incorrectamente como “SÍ”. Del mismo modo, de las 50 observaciones en las que la persona realmente compró el automóvil, 47 se han clasificado correctamente como 'SÍ' y 3 se han clasificado erróneamente como 'NO'.

Podemos encontrar la precisión del modelo dividiendo las predicciones correctas con las predicciones totales, es decir, (79 + 47) / (79 + 47 + 11 + 3).

Agrupación de K-medias:

Trabajaremos con el conjunto de datos 'iris' para implementar la agrupación en clústeres de k-medias:

Eliminemos la columna 'Especies' y creemos un nuevo conjunto de datos que comprenda solo las primeras cuatro columnas del conjunto de datos 'iris'.

iris[1:4]->iris_k

Supongamos que el número de conglomerados es 3. La función 'Kmeans ()' toma los datos de entrada y el número de conglomerados en los que se van a agrupar los datos. La sintaxis es: kmeans (datos, k) donde k es el número de centros de conglomerados.

kmeans (iris_k, 3) -> k1

Analizando la agrupación:

str (k1)

La función str () da la estructura de los kmeans que incluye varios parámetros como withinss, between, etc, analizando los cuales puedes averiguar el rendimiento de kmeans.

between: entre la suma de cuadrados, es decir, similitud intralúster

withinss: Dentro de la suma del cuadrado, es decir, similitud entre grupos

totwithinss: Suma de todos los dentro de todos los grupos, es decir, similitud total intra-grupo

Un buen agrupamiento tendrá un valor más bajo de 'tot.withinss' y un valor más alto de 'between', que depende del número de grupos 'k' elegidos inicialmente.

Ha llegado el momento de convertirse en un experto en aprendizaje automático y aprovechar las nuevas oportunidades que se le presenten. Esto nos lleva al final de este ' Aprendizaje automático con R ' Blog. Espero que este blog sea informativo y fructífero.

Edureka tiene un lo que le ayuda a adquirir experiencia en algoritmos de aprendizaje automático como agrupación en clústeres de K-medias, árboles de decisión, bosque aleatorio, bayes ingenuos. También aprenderá los conceptos de estadísticas, series temporales, minería de textos y una introducción al aprendizaje profundo. ¡Pronto comenzarán nuevos lotes para este curso!