ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

ESPECIALIZACIÓN EN DESARROLLO DE BASES DE DATOS - MINERIA DE DATOS

DACOdacoPráctica o problema1 de Marzo de 2020

2.443 Palabras (10 Páginas)126 Visitas

Página 1 de 10

ESPECIALIZACIÓN EN DESARROLLO DE BASES DE DATOS - MINERIA DE DATOS

LABORATORIO APRENDIZAJE SUPERVISADO 1 – CLASIFICACIÓN VIA ARBOLES DE DECISION Y RANDOM FOREST



Contenido

Sobreajuste        2

Sub-ajuste        3

Desarrollo        5

Entrenamiento y test        7

Estimacion del error de generalización – Validacion Cruzada        10

Despliegue del modelo:        11

Ventajas        12

Desventajas        13

Técnica de bagging        13

Bagging para mejorar un modelo predictivo        13

La técnica de Bagging sigue estos pasos:        13

Características de Bagging:        14

Desarrollo        15

Introducción – Aprendizaje Supervisado

Sobreajuste

El sobreajuste significa que el modelo que entrenamos se entrenó "demasiado bien" y ahora, bueno, se ajusta demasiado al conjunto de datos de entrenamiento. Esto generalmente ocurre cuando el modelo es demasiado complejo (es decir, demasiadas características / variables en comparación con el número de observaciones). Este modelo será muy preciso en los datos de entrenamiento, pero probablemente no será muy preciso en datos nuevos o no entrenados. Es porque este modelo no está generalizado, lo que significa que puede generalizar los resultados y no puede hacer ninguna inferencia sobre otros datos, que es, en última instancia, lo que está tratando de hacer. Básicamente, cuando esto sucede, el modelo aprende o describe el "ruido" en los datos de entrenamiento en lugar de las relaciones reales entre las variables en los datos. Obviamente, este ruido no forma parte de ningún conjunto de datos nuevo y no se puede aplicar a él.

Sub-ajuste

A diferencia del sobreajuste, cuando un modelo no está bien ajustado, significa que el modelo no se ajusta a los datos de entrenamiento y, por lo tanto, pasa por alto las tendencias en los datos. También significa que el modelo no se puede generalizar a nuevos datos. Como probablemente haya adivinado (¡o descubierto!), Este suele ser el resultado de un modelo muy simple (no hay suficientes predictores / variables independientes). También podría suceder cuando, por ejemplo, ajustamos un modelo lineal (como la regresión lineal) a datos que no son lineales. Valga la pena decir  que este modelo tendrá poca capacidad predictiva (en los datos de entrenamiento y no se puede generalizar a otros datos).

[pic 2]


Primera parte: Árboles de decision

Desarrollo

Importacion de librerías indispensables para el taller:

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

import pandas as pd

# importamos la libreria numpy

import numpy as np

from sklearn.model_selection import train_test_split

from sklearn.preprocessing import label_binarize

from sklearn import tree

from sklearn.metrics import confusion_matrix

from sklearn.metrics import accuracy_score

from sklearn.metrics import mean_squared_error, r2_score

from sklearn.metrics import roc_curve, auc, roc_auc_score

from sklearn.externals import joblib

import matplotlib.pyplot as plt

import graphviz as gv

# seteamos el objeto random a 0

np.random.seed(0)

||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

Para la instalacion de graphviz desde la consola de linux:

sudo apt-get install graphviz

luego la instalacion del modulo python correspondiente:

pip3 install graphviz

Lectura del  archivo Clasificacion

[pic 3]

Sea x el conjunto de las variables explicativas (aquellas distintas de la clase)

Sea y , el dataframe con la variable target (Clase Vino)

Por qué eliminamos la variable ID Caso?

[pic 4]

Según las tareas que se llevan a cabo en un proceso de aprendizaje supervisado, qué  hace la instrucción siguiente?

X_train, X_test, y_train, y_test = train_test_split(x, y,

                                                    test_size=VALOR,

                                                    random_state=0,

                                                    #stratify=y

                                                    )

Donde VALOR = porcentaje del conjunto de datos usado para test. Defina un valor que no lleve al subajuste o al sobreajuste.

Entrenamiento y test

Ahora creamos un modelo de Arbol de decisión, basado en el concepto de ganancia de información.

La función fit, ajusta el modelo a los datos de entrenamiento

[pic 5]

Si se desea ver de manera grafica el árbol de decisión generado,  una opcion es generar un archivo de imagen, el cual quedará almacenado en el mismo directorio del archivo ipynb. (La explicación de la instalación del graphviz, se encuentra al comienzo de este documento..)

[pic 6]

Agregue acá la imagen del árbol de decisión generada.  Puede escribir alguna regla de clasificación apartir de este?

Ahora que se ha generado el modelo, se medirá su score, y se realizará la predicción sobre el conjunto de datos para test.

[pic 7]

Que significan las siguientes métricas que se generan a continuación?

[pic 8]

La siguiente es la matriz de confusión para la clase 1. Qué puede decir del modelo, con base en ella? Generela también para las clases 2 y 3 y añada sus comentarios del modelo.

[pic 9]

Ahora agregue el siguiente fragmento de codigo para calcular el área  ROC (área bajo la curva), Por cierto, que es una curva ROC? Que nos dice del modelo??

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

fpr = dict()

tpr = dict()

roc_auc = dict()

for i in range(n_classes):

    fpr[i], tpr[i], _ = roc_curve(y_test[:, i], y_score[:, i])

    roc_auc[i] = auc(fpr[i], tpr[i])

# Cálculo de la curva ROC y el area ROC

fpr["micro"], tpr["micro"], _ = roc_curve(y_test.ravel(), y_score.ravel())

roc_auc["micro"] = auc(fpr["micro"], tpr["micro"])  

roc_auc[0]

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

Ahora  puede grafica la curva ROC, incluyendo el siguiente codigo::

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

plt.figure()

lw=2

plt.plot(fpr[2],tpr[2],color="red",

         lw=lw, label='Curva ROC(area = %0.2f)' % roc_auc[0])

plt.plot([0,1],[0,1], color='navy', lw=lw, linestyle='--')

plt.xlim([0.0,1.0])

plt.ylim([0.0,1.05])

plt.xlabel('Tasa de falsos positivos')

plt.ylabel('Tasa de verdaders positivos')

plt.title('grafico Receiver Operating Characteristic ')

plt.legend(loc='lower right')

plt.show()

|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||

Muestre la curva ROC, para la segunda y tercer clase

Estimacion del error de generalización – Validacion Cruzada

Se ejecutará  la técnica de cross validation con n=1, para garantizar que los resultados son independientes de la partición entre datos de entrenamiento y prueba

[pic 10]

Explique qué hace la siguiente instrucción::

[pic 11]

Actividad: Genere el modelo  utilizando  el criterio gini, y luego de comparar ambos métodos, indique sus observaciones.(puede incluir tablas comparativas si es el caso)

Despliegue del modelo:

Una vez se ha validado que el modelo generado  tiene una grado de eficacia aceptable, si se desea desplegar para nuevos ejemplos, basta con guardar el modelo  a través del modulo joblib y la función dump

Cuando se desea utilizar, se carga con la función load, indicando el modelo a abrir, y se aplica en el conjunto que se desea.

[pic 12]

[pic 13]

[pic 14]


Segunda parte: Random Forest

Random Forest es un algoritmo predictivo que usa la técnica de Bagging para combinar diferentes árboles, donde cada árbol es construido con observaciones y variables aleatorias. El algoritmo construye una larga colección de árboles no correlacionados y luego los promedia

  • En forma resumida sigue este proceso:
  1. Selecciona individuos al azar (usando muestreo con reemplazo) para crear diferentes set de datos.
  2. Crea un árbol de decisión con cada set de datos, obteniendo diferentes árboles, ya que cada set contiene diferentes individuos y diferentes variables en cada nodo.
  3. Al crear los árboles se eligen variables al azar en cada nodo del árbol, dejando crecer el árbol en profundidad (es decir, sin podar).
  4. Predice los nuevos datos usando el "voto mayoritario", donde clasificará como "positivo" si la mayoría de los arboles predicen la observación como positiva.

[pic 15]http://2.bp.blogspot.com/-ngn9mrb4mBI/VHVHtVYNK1I/AAAAAAAABPw/39oUK7VBJf4/s1600/RandonForest_2.jpg

...

Descargar como (para miembros actualizados) txt (16 Kb) pdf (340 Kb) docx (162 Kb)
Leer 9 páginas más »
Disponible sólo en Clubensayos.com