lunes, 28 de septiembre de 2015

Ejecutar modelos SAS/Enterprise Miner desde SAS/Enterprise Guide

Muchos de los procesos de analítica que habitualmente realizamos en los proyectos SAS  quedan soportados por las funcionalidades de SAS/Enterprise Guide, en los casos en los que trabajamos con modelos más avanzados una de las herramientas de SAS que permite hacerlos es SAS/Enterprise Miner. En este post vamos a ver cómo integrar un modelo generado en Miner en un flujo de proceso de Guide.

En el siguiente ejemplo, tenemos un modelo basado en el algortimo de árbol de decisión generado en Enterprise Miner.



El siguiente paso es generar el modelo como paquete en Miner, para ello:



A continuación es necesario registrar el modelo:




Una vez registrado, ya es posible acceder a él desde un proceso de Enterprise Guide. Para ello hacemos uso de la tarea 'Model scoring' del grupo de tareas 'Data mining'.



Seleccionamos desde la tarea el modelo a aplicar en el flujo:



Finalmente lo integramos dentro del proceso guide para aplicar el modelo a los datasets del proceso.



Más info y formación práctica SAS en:  Formación SAS






12 comentarios:

  1. Muy bueno! Muchísimas gracias por la ayuda!!!! VL.-

    ResponderEliminar
  2. Hola Juan,

    Muchas gracias por la ayuda. Una pregunta que me surge:

    ¿Es necesario tener ambos productos instalados en servidor?

    Muchas gracias,

    ResponderEliminar
  3. Yo creo que no es necesario, pero es cuestión de probar.
    Si tienes E. Miner instalado en servidor1 genera aquí el paquete de modelos y copialo al servidor2 donde tengas instalado E. Guide para que Guide tenga acceso a él. Si tienes acceso y permisos desde servioor2 a servidor1 pruebalo sin copiar el modelo. Yo creo que debería funcionar.

    ResponderEliminar
  4. Hola Juan,

    Desearía preguntarle una duda que nos ha surgido cruzando dos ficheros de SAS:

    -El primer fichero tiene sólo una columna con números de DNI
    -El segundo fichero tiene varias columnas en los que en algunas a veces se indica el DNI e incluso en ocasiones en la misma celda tenemos DNI, Pasaporte, NIE separados por este símbolo |

    Nos gustaría hacer una rutina para buscar los DNI del primer fichero en TODAS las columnas del segundo fichero. ¿Es eso posible?

    Muchas gracias por su ayuda y un saludo

    ResponderEliminar
  5. Hola,

    Si que es posible lo que comentas. El cruce se realizaría vía join de proc sql o bien un merge, el hacerlo para todas las columnas con una macro que ejecute una estructura repetitiva y las columnas para los que lo debe hacer se scan del diccionario de SAS (dictionary.columns). El campo con | de separador, habría que subdividirlo en varios con la función scan().

    Os puedo mandar un ejemplo, pasarme un e-mail o bien escribir a: cursos_a_medida_r@yahoo.es

    saludos

    ResponderEliminar
  6. Mil gracias Juan!!
    Disculpa nuestra tardanza en responderte, ya hemos aplicado lo que nos dice y nos sale perfectamente, muchísimas gracias por tu ayuda nos ha sido de gran utilidad.
    Un saludo y mil gracias de nuevo!

    ResponderEliminar
  7. Hola Juan,
    al aplicar la tarea 'Model scoring' sobre una nueva base "test", me surge el siguiente error en el Log:

    ...119 *------------------------------------------------------------*;
    120 * MBR4: Create DMDB;
    121 *------------------------------------------------------------*;
    122 proc dmdb batch data=EMWS.Ids_DATA
    123 dmdbcat=WORK.MBR4_DMDB
    ERROR: Libname EMWS is not assigned.
    124 maxlevel = 513
    125 ;
    126 class %DMDBClass;
    127 var %DMDBVar;
    ERROR: No data set open to look up variables.
    ERROR: No data set open to look up variables.....

    Me podrás ayudar a encontrar una solución?.

    Muchas gracias! Saludos, Verónica.-

    ResponderEliminar
  8. Hola Verónica,

    Por lo que dice el log la tabla ids_DATA está en EMWS y esa librería no está asignada. Prueba a hacer el libname del directorio donde está la tabla y vuelve a ejeuctarlo.

    Saludos,

    ResponderEliminar
  9. Muchas gracias Juan! pude aplicar el modelo desde Guide. Pero he tenido algunas trabas (librerías que nos existían, errores en códigos), por lo que finalmente opté por hace todo directamente en el Miner, aplicando el modelo mediante el nodo "Score". Comento el procedimiento por si alguien se encuentra en la misma situación que yo.
    Hay que agregar al diagrama -en Miner - la base a testear (con rol score) y conectarla con el modelo seleccionado (o con el nodo que compara los modelos) mediante el nodo "Score" que se encuentre en "Evaluación" (optar por SI en la parte de propiedades: Datos de puntuación / Prueba, para que se exporte la tabla con las salidas y poder verla). Ejecutamos y listo. Luego en propiedades, datos exportados se puede observar la ruta en donde se encuentra la base generada con las salidas.
    Saludos.-

    ResponderEliminar
  10. Muchas gracias por la aportación Verónica!!

    Saludos,

    ResponderEliminar
  11. Hola, estoy utilizando SAS Enterprise Guide y, cada vez que abro un proyecto, cuando tengo que asignar una librería en el servidor tengo que hacerlo utilizando el ratón y pinchando el botón derecho y asignar. A veces se me olvida y me saltan muchos errores ya que tengo colgadas muchas tablas que se utilizan en el servidor y si no se asigna la librería no las reconoce. Mi pregunta es, ¿existe alguna sentencia en código para asignarlas automáticamente sin necesidad de utilizar el ratón?

    Saludos y gracias.

    ResponderEliminar
    Respuestas
    1. Pregunta ya contestada en:
      https://sasybi.blogspot.com.es/2016/06/convocatoria-cursos-sas-en-septiembre.html

      Eliminar