By Jim Walsh .

In the last article of this series, we met a concrete example of a system of “the Internet of Things“, using the case of Uber. We saw that the key feature of an IoT system is its ability to use the information it receives from sensors and people to make quick and contextual decisions. In this article, we will explore the heart of a system of this type, and describe how decision making can be automated based on the context.

Taking quick and contextual decisions

An architecture of great acceptance to make this type of decisions is called “Lambda architecture”. This system was originally proposed by a Twitter engineer named Nathan Martz in 2011, who included it in his book “Big Data”.

The concept behind Martz’s Lambda architecture is that there are two layers of analytics involved in decision making. First, a layer called “Batch Layer”, which uses traditional Big Data techniques such as Map-Reduce to obtain relational information continuously from multiple sources. This activity is called “Batch” because although it happens frequently, it is done according to a predefined schedule. While data manipulation tools have vastly improved in recent years, a complex analysis can still take minutes or even hours. This makes a “Batch” approach to Analytics for Big Data impractical for fast decisions on the scale we need for the Internet of Things (which requires a millisecond speed).

The second layer of the Lambda architecture is called “Speed”, and is responsible for quick decisions by the system. As any engineer knows, the key to making good decisions is to have all the relevant information about the problem. In the Lambda architecture, the results of the Batch layer are continuously processed for use in the Speed layer. This layer uses the pre-processed information when a new order arrives, which allows you to make informed decisions based on the context and in real time.

Además de Lambda, otras técnicas son utilizadas cuando se requieren resultados todavía más rápidos. Por ejemplo, en el mundo de las transacciones automatizadas en la bolsa, otras técnicas pueden ofrecer decisiones en una décima de milisegundo, sacrificando un poco de versatilidad. Para interactuar con humanos, sin embargo, el enfoque Lambda ofrece una buena combinación de velocidad y configuración.

El caso Uber

Como vimos en el ejemplo de Uber, la decisión en torno a los pasajeros y sus conductores depende de un cierto número de factores. Estas consideraciones incluyen:

  • ¿Está disponible el conductor y su auto? Es decir, ¿ya está llevando otro pasajero? ¿O se está tomando un descanso?
  • ¿Cuánto tiempo le llevará al auto llegar hasta su pasajero potencial?
  • ¿Dónde quiere ir el pasajero? Si esta información no está disponible, ¿podemos revisar viajes pasados de aquél usuario en particular?
  • ¿Cuál es la reputación del pasajero que pide el viaje? ¿Deberíamos darle un trato especial?
  • ¿Cuánto dinero genera el conductor para nuestra compañía? ¿Deberíamos asignarle el viaje con mayor potencial de ganancia?
  • De todos los conductores que están cerca, ¿cuánto ha ganado cada uno durante el día?

Estos no son factores del algoritmo de Uber, pero son representativos de la información que se tiene en cuenta a la hora de asignar conductores a pasajeros en este tipo de servicios IoT.

De los factores que mencionamos anteriormente, podemos pre-procesar los siguientes en modo “Batch”:

  • De acuerdo a categorías de comportamiento predefinidas, ¿cuál es el destino más probable de acuerdo a las coordenadas del pasajero? Por ejemplo, un análisis puede encontrar una persona con la categoría “viajero frecuente de negocios” que está llegando a un destino como “aeropuerto lejos de casa” y fuera de las horas de oficina. Este pasajero probablemente quiera ir a un destino como un hotel en una ciudad cercana.
  • Sin conocer nada sobre un pasajero particular, ¿cuál es el destino más probable para su ubicación actual? Por ejemplo, un pasajero de un área comercial de Manhattan posiblemente quiera ir hacia otro comercio, mientras que un pasajero ubicado en una oficina posiblemente busque otro destino.
  • Los clientes más valiosos (la reputación del pasajero).
  • Los mejores conductores (la reputación del conductor).
  • Ganancias totales según el conductor, desde que comenzó su horario laboral.

En la arquitectura Lambda, estos y otros factores serían analizados por la capa Batch de acuerdo a un cronograma, y serían presentados a la capa Speed en el momento que un pasajero pide un viaje. El cronograma depende de la frecuencia en la que la información se actualiza, del costo que tiene procesarla, y de la importancia de ella en el modelo de negocios. Los factores que se calculan rápidamente, o que cambian frecuentemente (como la ubicación del auto) no son procesados por la capa Batch, sino que son manejados por la capa Speed en el momento que se recibe un pedido. Mientras las computadoras y las analíticas se aceleran, la línea entre lo que podemos procesar en tiempo real y lo que reservamos para la capa Batch se irá desdibujando. Sin embargo, el objetivo clave se mantiene: lo más importante es asegurarnos que en el momento que el sistema toma una decisión, toda la información que se requiere está disponible.

Un operario humano toma decisiones de una manera similar a la que acabamos de describir. Cada decisión se alinea con los objetivos de la compañía, y tiene en cuenta todo el contexto. En el caso de un coordinador de taxis, uno puede esperar que se tomen decisiones similares para asignar pasajeros con conductores. Por ejemplo, si la señora Jones es un cliente importante, el operario humano debe tener en cuenta esta información y asegurarse de ofrecer la mejor experiencia posible. Este tipo de información contextual se aprende de la experiencia, y es por esto que un coordinador humano toma buenas decisiones en su trabajo diario.

La arquitectura Lambda es una de las maneras para que las máquinas exhiban una “inteligencia” similar a la de un empleado modelo, que debe tomar decisiones rápidas, consistentes y contextuales. En realidad, por supuesto, las máquinas están ejecutando un programa: más específicamente, un algoritmo de analíticas enfocado en obtener el mejor resultado. Esto no significa que exhiban una inteligencia similar a la de un humano. En particular, las máquinas no utilizan su conocimiento general sobre la manera en que funciona el mundo y los negocios. Los humanos tienen una inteligencia general y social, además de una experiencia de vida particular.

La verdadera inteligencia del algoritmo proviene de las personas que lo desarrollan, tanto los programadores como los encargados de la compañía. Esta combinación de negocios, análisis de datos, ciencias de la computación y conocimiento algorítmico es un campo pujante que se conoce como Data Science. Ya no estamos hablando de sistemas IT convencionales, sino de plataformas y algoritmos que posibilitan nuevos modelos de negocios. Los sistemas convencionales proveen información a los humanos que toman decisiones, pero en la IoT son los mismos sistemas los que están en control. El equipo que desarrolla estos algoritmos debe traducir las capacidades humanas para la toma de decisiones de la mejor manera posible.

In a way, this is what computer science has always done: automate human tasks and decisions. However, what has changed is the scale, which makes IoT systems practical and economically interesting. To face these new business challenges requires a new level of thinking, with developers focused on the business, and development-oriented executives.