1

Primeros pasos con Google Prediction API

802Puntos

hace 6 años

Obtener big data de nuestras aplicaciones y plataformas es un tarea muy importante y necesaria, ya que a futuro toda esta información puede usarse para hacer análisis cuantitativos. Así podremos mejorar la experiencia de nuestros usuarios y tendremos la capacidad de tomar decisiones más certeras basados en esta información.

Además se dice que toda la información que obtengamos puede cambiar el ambiente competitivo en el que nuestra compañía se desenvuelve y que el big data es un nuevo tipo de capital.

A medida que recuperemos esta información y que su cantidad aumente, necesitaremos comenzar a procesarla para generar un valor. Para todas estas tareas Google Cloud Platform nos ofrece diferentes productos como Big Query, que permite realizar consultas sobre cantidades enormes de información en poco tiempo, y Prediction API, del cual estaremos hablando hoy.

Uno de los objetivos propuestos por Google Prediction API es que nuestras aplicaciones sean un poco más “inteligentes”. Con inteligencia me refiero a que sean capaces de reconocer lo que está pasando con el comportamiento de los usuarios y con las interacciones, de manera que podamos detectar spam, diagnosticar nuestra app, identificar actividades sospechosas y generar recomendaciones a nuestros usuarios —una de las características más usadas y llamativas— entre muchas otras actividades.

Predicciones

Para comenzar trabajaremos en el ejemplo de la Introducción que viene en la documentación de Google Prediction API, que plantea como problema la necesidad de detectar el idioma del texto contenido en un mail para ser enviado a una persona de soporte técnico que entienda ese idioma.

Casi todas las máquinas o servicios de predicción están consolidados en dos etapas: el entrenamiento y la predicción. Google Prediction API no es la excepción y funciona de la misma manera, por lo que en este caso antes de hacer peticiones de alguna predicción tendremos que entrenar a nuestra máquina para que entienda el tipo de predicciones estamos pidiendo.

Entrenamiento

Tomando como ejemplo nuestro problema anterior, lo primero que tenemos que hacer es mostrarle a Google Prediction API, con ejemplos, cuáles textos están en español, en inglés o en francés. Así podrá tomar estos casos de ejemplo para analizar nuestros futuros textos. El formato del contenido de nuestros ejemplos será separado por comas como si fuera un archivo CSV. Para poder subir nuestros casos de ejemplo usaremos otro servicio de Google Cloud Platform llamado Google Cloud Storage, que nos permite almacenar archivos binarios.

Una vez arriba nuestro archivo con los casos de ejemplo, sólo queda decirle a Prediction API que “entrene” con el contenido del archivo y cuando el entrenamiento se haya completado, podremos empezar a solicitar predicciones.

Comentado lo anterior, comenzaremos a trabajar en ello paso a paso.

1.Contar con un proyecto de Google Cloud Platform: lo primero que vamos a necesitar es acceder a nuestro proyecto en la consola de desarrollador de Google Cloud Platform o crear un proyecto nuevo si es que no contamos con uno (es bastante sencillo).

  1. Activar Google Prediction API para nuestro proyecto: en la barra lateral izquierda accederemos a la sección de APIs y autenticación > APIs, después en la lista de servicios de Google Cloud APIs seleccionar Prediction API y dar clic al botón que dice “Habilitar API”.

  2. Subir nuestro archivo TXT separado por comas con los casos de ejemplo.

3.1. Descargar el archivo con los casos de ejemplo de la URL: https://cloud.google.com/prediction/docs/language_id.txt

3.2.Crear un bucket en Google Cloud Storage para almacenar nuestro archivo recién descargado dirigiéndose a la sección de Almacenamiento > Cloud Storage > Explorador de Storage en el menú lateral izquierdo y dar clic en Crear Bucket.

3.3. Subir archivo a nuestro bucket seleccionando la opción Subir Archivos dentro de nuestro nuevo bucket o usando gsutil de la siguiente manera:

$ gsutil cp FILE gs://BUCKET_NAME
  1. Entrenamos Prediction API con los datos que subimos. Para el ejemplo usaremos el explorador de APIs de Google pero también podemos realizar las tareas de predicción mediante librerías para diferentes lenguajes. Abrimos el explorador de APIs de Google (http://developers.google.com/apis-explorer/) y seleccionamos Prediction API. Después tendremos que activar los request vía OAuth2 en el toggle button que aparece ahí:

  2. Dentro del explorador usaremos el método prediction.trainedmodels.insert para entrenar un nuevo modelo y para lo cual vamos a necesitar el Project number que podrás encontrar en la consola de desarrollador de Google entrando a tu proyecto en la sección de Overview.

Deberás llenar los datos del formulario de manera que se parezca a este ejemplo. Es muy importante que esté activado el botón de autorización para hacer peticiones por medio de OAuth2.0, así como que el valor que escribas dentro de project sea el mismo que el project number que encontraste en la consola de desarrollador. Para la parte del request body usaremos sólo dos parámetros por el momento: id y storageDataLocation.

El valor de id será el nombre al que le queramos poner a nuestro modelos y el valor de storageDataLocation sigue el formato de BUCKET_NAME/file, por ejemplo, si tuviéramos un bucket llamado Platzi y dentro nuestro archivo se llama languages.txt el valor de storageDataLocation sería platzi/languages.txt.

A partir del momento en que apretemos Execute la tarea quedará corriendo en el background siendo posible checar el estado en el que nuestro entrenamiento se encuentra usando el método prediction.trainedmodels.get y los parámetros project* (el *project number) y id (el id que le pusimos a nuestro modelo a la hora de iniciar el entrenamiento).

El resultado de esta consulta se puede resumir al valor que contendrá nuestra respuesta en el parámetro trainingStatus.

Predicción

Una vez entrenado nuestro modelo, la parte más fácil será la de hacer predicciones. Tal cual como hemos hecho el entrenamiento por medio del explorador de APIs de Google, también podremos hacer una predicción simplemente haciendo uso del método ** prediction. trainedmodels.predict e ingresando el project number y el id que le designamos al modelo cuando lo entrenamos, así como el input del cual queremos hallar el idioma.

Eso será suficiente para recibir una respuesta dándonos “scores”, y observando que tanto nuestro texto empata con los patrones que antes hemos ingresado. Para el texto “Hey! ¿Alguna vez han probado Platzi? Está genial!” la respuesta fue:

Que nos dice que, según los casos de ejemplo que introdujimos y con los cuales entrenamos, que hay un 0% certeza de que es inglés o francés, mientras que hay 100% de certeza de que es español, de acuerdo al score que le asignó a cada uno.

Pablo
Pablo
Escribe tu comentario
+ 2