Todas las entradas de: mattfield

idea

Recomendación de productos a traves de machine learning usando ElasticSearch

Elasticsearch nos proporciona una herramienta muy eficaz para la recomendación de productos para el comercio electrónico.

¿Qué sabemos sobre nuestros clientes?

Es relativamente fácil saber en qué productos nuestros clientes han mostrado interés o comprado en el pasado.  Utilizando elasticsearch podemos aprovechar esta información para recomendar otros productos que han sido comprados por otros usuarios que han mostrado interés en los mismos productos.

Por ejemplo si nuestro usuario ha clickeado sobre un libro sobre la historia de la Francia medieval, entonces parece obvio que podemos mostrar al usuario los libros más populares en la categoría de historia medieval de Francia.   Sin embargo este enfoque de repetir productos de la misma categoría puede llegar a ser aburrido, y podemos perder muchas posibilidades interesantes de ofrecer productos de los usuarios de otras categorias.  Por ejemplo si el usuario compra una cámara, podriamos ofrecer un libro de fotografía.

Recomendación de producto a traves de machine learning

Elasticsearch nos ofrece la posibilidad de recomendar productos a los usuarios basándose en lo que otros usuarios que compraron los mismos productos han comprado.

Term Aggregation

Por ejemplo tenemos un índice que contiene todos nuestros usuarios, con todos los productos que han adquirido como se muestra en el mapping abajo:

Si un usuario ha comprado una cámara polaroid, entonces podemos buscar los productos más populares adquiridos por otros usuarios que compraron la misma cámara polaroid.  Esta lista es probable que incluya los productos que se relacionan directamente con una cámara polaroid (como película polaroid) e indirectamente relacionados (libros de fotografía).

Significative Term Aggregation

La “term aggregation” puede indicar productos que son populares entre los usuarios de polaroid, pero es posible que algunos de estos productos no tengan relación con cámaras polaroid, (eg. Teléfonos móviles). Estos productos aparecen simplemente porque son populares con todo el mundo (incluyendo a personas que compran cámaras polaroid).  Si queremos evitar esto, podemos utilizar la agregación de términos significativos, que devolverá los productos que son significativamente más populares entre los compradores de camara polaroid en comparación con el conjunto de todos nuestros clientes.

El siguiente ejemplo muestra esta posibilidad:


 

 

Este enfoque es interesante porque en la medida que nuestro historial de datos aumenta, mejoramos la calidad de nuestras recomendaciones: aprendemos mas sobre nuestros usuarios individualmente y en su conjunto.

 

 

 

 

autocomplete

Crear su propio motor de búsqueda con elasticsearch

En este artículo enseñamos cómo crear un motor de búsqueda rápido capaz de búsqueda de texto profundo, trabajando con terabytes de datos utilizando elasticsearch.

Vamos a construir un motor de búsqueda basado en la categoría de wikipedia “living persons”, almacenar los datos en elasticsearch, probar la velocidad y la relevancia de nuestras consultas y también crear una consulta de autocompletado.

Requisitos previos

Ya tienes elasticsearch y kibana instalado.

Instalar Pywikibot

Pywikibot permite descargar el contenido de artículos de wikipedia.  Si tienes acceso a otra fuente de datos,  puede utilizarlo en su lugar.

Instrucciones para instalar el pywikibot están aqui : https://www.mediawiki.org/wiki/Manual:Pywikibot

Configurar pywikibot para usar  wikipedia.

Esto se hace ejecutando el script de configuración de pywikibot

Python pwb.py generate_user_files

El script es interactivo y permite definir el tipo de wiki que quieras.  En nuestro caso, elegimos wikipedia.

Instalar bibliotecas de Python
PIP instalar elasticsearch
Crear un mapping en Elasticsearch

El mapping define qué tipo de datos se guardan en cada campo, y cómo debe ser indexada.

El siguiente comando se puede pegar directamente en la consola Kibana Dev Tools

Esto crea una asignación de tipo de documento “wiki_page” en el índice “wikipeople” con cuatro categorías de texto ( url, título, categorías, texto) y un campo especial llamado “suggestion” que se utilizará para la función de autocompletar (explicamos más adelante).  Tenga en cuenta también que hemos especificado que el campo de texto utiliza un analizador de lengua inglesa.   (en lugar de francés, español o cualquier otro idioma).

Crear script  Pywikibot

En el directorio donde se instaló Pywikibot, encontrará un subdirectorio “/ pywikibot/core/scripts”

En el directorio de scripts se debe crear un nuevo script llamado wikipeopleloader.py

Se puede ejecutar el script utilizando la instrucció siguiente  (desde directorio/pywikibot/core)

Python pwb.py wikipeopleloader.py

La salida de la pantalla indicará  si hay algun error.  Si todo va bien, veremos cómo el script descarga las páginas de wikipedia y los carga en la base de datos de elasticsearch.   La velocidad de descarga depende de tu conexión a internet-  en mi caso una o dos páginas por segundo.  Para realizar las pruebas puedes abortar el proceso (ctrl Z) después de 60 segundos.

Ejemplo de consulta Elasticsearch para motor de búsqueda

A continuación encontrará una consulta y parte de su respuesta.

La parte de “source” de la consulta especifica que datos queremos excluir de la respuesta para reducir su tamaño.

La consulta busca “american football bearcats” en el título, categoría y cuerpo del texto.  Sin embargo da mayor peso a la valoración (score) si estos términos se encuentran en el campo  “categoría” o “título” (según lo determinado por los valores de “boost” en la consulta).

La consulta “highlight” devuelve el detalle de donde se ha encontrado el término de búsqueda.   Esto se puede ver en la respuesta con la etiqueta “highlight”.  De esta manera es fácil mostrar el contexto del término de búsqueda al usuario para que pueda valorar si le interesa los resultados.

Sugerencias de autocompletar usando ElasticSearch y Jquery

En nuestro  mapping creamos un campo especial llamado “suggest” basado en el título de la página.  Esto nos permite mostrar una propuesta de  “Autocompletar” a la medida que el usuario vaya introduciendo el texto.   Consultas de tipo autocompletar estan optimizadas para esta finalidad.    Se ve un ejemplo de esta consulta a continuación:

En nuestro caso, la consulta devuelve sugerencias cuando el título de la página comienza con las letras que hemos introducido en nuestra consulta.    Esto nos permitiría crear la funcionalidad autocompletar en una página web  con jquery o similar.

bigdata

Analizar Big Data de IoT con open source. MQTT y ElasticSearch – Tutorial

¿Por qué ElasticSearch?

  • open source
  • altamente escalable
  • Ideal para datos que varian durante el tiempo

Forma parte del  elasticsearch stack que puede proporcionar las funcionalidades siguientes:

  • Gráficos (Kibana)
  • Analytics (Kibana)
  • Alarmas (Logstash)

Lo que explicamos en este artículo

Vamos a configurar un nodo único elasticsearch en un servidor Linux Ubuntu 16.04 y lo vamos a usar para recopilar datos publicados en un servidor de MQTT Mosquitto.  (Se supone que ya tienes tu servidor MQTT instalado).

Instalar ElasticSearch

Crear un nuevo directorio  myElasticSearch

mkdir myElasticSearch
cd myElasticSearch

Download el tar Elasticsearch:

curl -L -O https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.4.1/elasticsearch-2.4.1.tar.gz

A continuación extraerlo como sigue:

tar -xvf elasticsearch-2.4.1.tar.gz

Luego creará un montón de archivos y carpetas en el directorio actual. Luego entramos en el directorio bin :

CD elasticsearch-2.4.1/bin

Y ahora estamos listos para comenzar nuestro nodo :

. / elasticsearch

Para almacenar los datos podemos utilizar el comando

curl -XPOST 'localhost:9200/customer/external?pretty' -d '
{
"name": "Jane Doe"
}'

Para leer los mismos datos , podemos utilizar

curl -XGET 'localhost:9200/customer/external/1?pretty'

Si ves los datos que creó, entonces elasticSearch ya está en marcha!

Instalar al cliente de Python para elasticsearch

Instalar al cliente de mqtt de PAHO y elasticsearch en el servidor

pip install elasticsearch
pip install paho-mqtt

Crear un script de cliente Python MQTT para incorporar los datos publicados en MQTT en elasticSearch

Use el script mqttToElasticSearch.py que utiliza los libraries MQTT PAHO y ElasticSearch  de python.  Tendrás que modificar las líneas en la parte superior dependiendo del puerto y dirección IP de la instalación de MQTT.

Se puede descargar el fichero desde

https://github.com/mattfield11/MQTT-elasticSearch

O si tienes GIT instalado:

git clone https://github.com/mattfield11/mqtt-elasticSearch.git

El script debería ser instalado en un directorio en el mismo servidor que tengas ElasticSearch funcionando.

Editar el script mqttToElasticSearch para incluir la dirección de tu servidor MQTT y el puerto.

Ejecutar al cliente de Python MQTT que acaba de descargar

Python mqttToElasticSearch.py

Para ver los datos que acabamos de crear en elasticsearch

curl 'localhost:9200/my-index/_search?q=*&pretty'

¡Ahora los datos publicados en MQTT se guardan  en elasticsearch ( en función de los topicos que tenemos configurado en el fichero)!
En los próximos días explicamos cómo ver datos MQTT en Kibana donde se puede hacer gráficos y análisis de los datos MQTT.

Para obtener más información

ElasticSearch

https://www.elastic.co/

https://www.elastic.co/Guide/en/elasticsearch/Reference/Current/Setup-Service.html#Using-systemd

Python ElasticSearch cliente

https://www.elastic.co/Guide/en/elasticsearch/Client/Python-API/Current/index.html

Trasformación digital Agile – reducir riesgos, maximizar ROI

Un video inspirador de CEO Peter Schroer de ARAS, un fabricante de Software de gestión de ciclo de vida de productos (PLM). Schroer defiende el uso de un enfoque “ágil” para la transformación digital de la fábrica, la misma que se utiliza en desarrollo de software. Estratégicamente es un error elaborar un proyecto grande y complejo, ya que durante la ejecución del proyecto se cambian muchas cosas, invalidando muchos de nuestros planes originales:

  • Cambio de objetivos de negocio
  • Cambios en el entorno empresarial ,
  • Cambios en el accionariado de la empresa (fusión / adquisición)
  • Cambios en requisitos de los clientes
  • Cambios en los requisitos legales que deben cumplir
  • Aparición de nuevas tecnologías

Si nos limitamos a la aplicación de tareas simples que tienen un impacto directo e inmediato en el negocio, y que además son alcanzables en un número de “sprints” (donde un sprint es administrado en semanas no meses) entonces tenemos mayor probabilidad de éxito.

Eso no significa que no tenemos una visión o hoja de ruta  a largo plazo, más bien significa que no dedicamos una gran cantidad de recursos a la planificación detallada de este futuro porque las consecuencias probables son la parálisis por análisis.

Este enfoque tiene importantes consecuencias:

Debemos aceptar que un solo sistema o plataforma no va a ser capaz de adaptarse continuamente a nuestros requerimientos. Esto significa que la comunicación entre sistemas y el uso de software de código abierto es una parte esencial de la estrategia para no encontrarnos secuestrados por sistemas propietarios que no se adaptan a lo que queremos.

Grandes inversiones en licencias o proyectos son dificilmente compatibles con esta filosofía por la misma razón. Software como un servicio SAAS que nos permite pagar como una funcion del número de usuarios o volumen de  transacciones es más compatible con este enfoque.

Debemos estar preparados meter un pie en el agua, probar, mejorar lo que funciona y abandonar lo que falla.  Como dice Schroer, “fijar un objetivo alcanzable, conseguirla y al siguiente”.

Se encuentra el video sobre aplicación de plm agile aquí.

Construir un fan base para tu producto

La construcción de un portal de cliente es una buena manera de conectar con clientes y conseguir que se involucran en el desarrollo de los productos.   Hace tiempo que empresas de software han utilizado software para crear bases de conocimiento (knowledge base) y foros para crear comunidad de usuarios, pero más recientemente fabricantes de otros productos han empezado a   seguir la misma tendencia.  Con la instalación de software de código libre, vuestros empleados pueden crear un repositorio de artículos en la web.  Además pueden autorizar la creación de contenidos por personal de vuestros clientes , usuarios o distribuidores.  Típicamente, son artículos sobre la elección,  instalación, uso o mantenimiento de los productos.

  • La creación de un portal de clientes tiene beneficios entre los cuales se puede enumerar:
  • Poner a la disposición de clientes actuales y potenciales el máximo de información en un formato abierto, indexable, fácil de buscar.
  • Información disponible 24horas dia 7 dias la semana.
  • Canalizar y ejercer control sobre debates relacionados con vuestro producto
  • Los buscadores de internet (google, yahoo etc) premian la creación de contenidos útiles, que ayudará al posicionamiento de los webs de la empresa en los buscadores.

La creación de un portal requiere la instalación y configuración de software en vuestro web,  (la parte más fácil) pero lo más importante es un cambio de mentalidad por parte del personal de atención al cliente y soporte post-venta.  Es imprescindible lograr la sustitución del intercambio por email con un intercambio a través del portal de clientes para conseguir que la información quede a la disposición de todos los usuarios en lugar de un intercambio privado.

 

Con este paso se puede conseguir que algunos clientes se conviertan en “fans” incondicionales de vuestro producto.

Save

Save

Save

Configurar un portal de servicio pos-venta

knowledgebase

La creación de un portal de servicio pos-venta permitirá a su personal configurar un knowledge base (“wiki” o repositorio de información)  para ayudar a los usuarios instalar, utilizar y mantener sus productos, utilizando un software similar al que se utiliza Wikipedia.  Esta herramienta, junto con un foro de usuarios permitirá a sus clientes hacer preguntas y recibir respuestas en un formato web que permite a otros usuarios  ver las respuestas 24 horas al dia 7 dias/ semana.

Además, estas herramientas (opcionalmente) pueden permitir que otras personas fuera de su organización contribuyan a la mejora de la base de conocimientos  sobre sus productos, y contribuyen al desarrollo de productos nuevos  añadiendo sus propios comentarios y participando en debates sobre los mismos.    La creación de una comunidad alrededor de sus productos aumente la fidelidad de sus clientes y usuarios de sus productos, y a la vez mejora  su servicio al cliente.  Además ayudará a aumentar la visibilidad de sus productos en la web, porque  google y otros motores de búsqueda posicionan los sitios web (entre otras cosas) en base al volumen de contenidos útiles en su sitio web.

Nuestro servicio incluye:

  • Instalación y configuración de software Wiki y Foro de  usuarios.
  • Formación de usuarios.
  • Teléfono de ayuda y soporte (12 meses)

Guardar

Guardar

Business Intelligence sin necesidad de cambiar su ERP

Las herramientas de Business Intelligence ( BI) están evolucionando a gran velocidad.   Big data está de moda y las empresas buscan herramientas para explotar los datos que tienen escondidos en sus servidores y PCs.   Si bien muchos fabricantes llevan años vendiendo “Business Intelligence” como una forma flexible de acceder a los datos de su ERP, creemos especialmente de interés las herramientas que son capaces de importar datos de una gran variedad de fuentes(como excel, ERP, bases de datos o incluso documentos word) y permitir usuarios con poco o ningún conocimiento informático analizar y sacar conclusiones para la toma de decisiones.        Si bien un cierto grado de conocimiento técnico puede ser necesario para configurar estas herramientas y entender cómo sus datos están (o no) estructurados, estas herramientas son una solución económica y de gran utilidad para cualquier gestor tanto en ventas, finanzas o fabricación.

Seguimiento y medición de campañas de marketing

definemeasureact

Todo seguidor de la doctrina “lean manufacturing” sabe  que la medición es un paso fundamental para la mejora continua.    En marketing esto significa medir el número de usuarios que abren nuestros mails o que hagan clic en nuestros enlaces, para determinar si nuestros mensajes llegan o no a los clientes.    Esto puede lograrse fácilmente utilizando herramientas de software de mailing combinada con herramientas de seguimiento como google analytics.   Mail chimp   por ejemplo puede utilizarse con poco o ningún coste y nos permite optimizar y realizar un seguimiento importante de la efectividad de nuestra comunicación de correo electrónico con clientes.   Esta herramienta nos permite controlar la efectividad de nuestros mensajes en atraer a los clientes a nuestro web, o incluso evaluar el % de clientes que llegan a comprar determinados productos en nuestra tienda on-line.   Smart factory ofrece un taller de marketing digital para acelerar el proceso de creación de un servicio de e-marketing e analisis integrado con su sitio web.

Guardar

Guardar

Save

Save

Ciberseguridad – 10 pasos para reducir los riesgos

En los últimos años ha habido dos tendencias claves en la ciberseguridad.  La primera es que los ataques se perpetran por grupos profesionales organizados, en lugar de hackers amateurs que quieren probar su capacidad.  Por el otro lado, existe un reconocimiento creciente que la seguridad en red depende mas de los procesos y personas que de la tecnología en sí mismo.  Continue reading “Ciberseguridad – 10 pasos para reducir los riesgos” »