Tutorial: Tradeoff Analytics

Todos nós ao longo de nossas vidas tomamos várias decisões, algumas simples e outras nem tanto.

Muitas de nossas decisões são empíricas (com base em experiências vividas e observações), e isso já pode ser suficiente, desde que saibamos como lidar com resultados inesperados e frustrações.

De forma similar, inúmeras vezes tomamos uma decisão, e depois de conhecer o resultado desejaríamos ter feito uma escolha diferente.

Uma citação do escritor norte americano Elbert Hubbard a qual diz: “Não é preciso muito esforço para fazer as coisas, mas é exigido muito esforço para decidir o que fazer”, retrata muito bem o quão importante é o fato de tomarmos uma decisão.

Vamos imaginar então se pudéssemos ter um assistente que nos ajudasse a fazer a melhor, ou melhores escolhas de forma científica em critérios muitas vezes conflitantes e sem nossas emoções na jogada. Isso seria uma grande vantagem para nós, e para os nossos negócios, não acha?

E se pudéssemos ter esse assistente tão perto quanto uma chamada de uma API?

É nesse momento que apresento de forma breve mais um serviço disponível dentro o IBM Bluemix na seção de Watson, estou falando do Tradeoff Analytics.

 

Tradeoff Analytics

 

O Tradeoff Analytics é um serviço que leva em consideração vários critérios (objetivos) para ajudar a tomar uma decisão. Esse serviço explora uma técnica conhecida por “Eficiência de Pareto”, parte de área de estudo em decisões de múltiplos critérios.

Podemos usar o serviço de forma pontual para ajuda-lo a fazer uma decisão, mas gosto de pensar nesse serviço sendo usado como parte um sistema ou solução que você como desenvolvedor esta construindo para seus clientes.

As aplicações e usos para esse serviço são inúmeras, tais como escolher um melhor plano de saúde, comprar um bem de consumo como um celular, escolher um apartamento, decidir por qual tratamento médico, escolher um carro, etc.

Na sequencia desse artigo vamos juntos explorar passo a passo, como utilizar a API do Tradeoff Analytics para ajudar a escolher um plano de saúde. Os dados utilizados aqui são fictícios, com o simples propósito de exemplificar o funcionamento dessa API.

 

Problema

 

Vamos usar um cenário onde você esta desenvolvendo uma aplicação para uma corretora de seguros de saúde, e você não quer ficar para trás dos seus concorrentes, e deseja deixar a sua app mais cognitiva de forma a ajudar seus clientes a conhecer as melhores opções de planos de saúde com base em diferentes critérios, além do preço.

Nesse cenário, o cliente terá alguns critérios (objectives) definidos, e os mesmos serão envidados para o Watson juntamente com todas as opções de planos de saúde que a sua corretora trabalha.

1

Figura 1 – Composição de objeto JSON para envio ao serviço

 

 

Observando a Figura 1, é esperado pelo serviço Tradeoff Analytics um objeto JSON. Esse objeto JSON, será representado aqui através de um arquivo chamado problema.json. Esse arquivo inclui os objetivos de interesse do cliente, e o conjunto de planos de saúde que serão avaliados com os objetivos (critérios) selecionados.

Nesse exemplo, o cliente da corretora, está mais interessado em preço baixo, tamanho da rede credenciada, e se o plano oferece reembolso. Esses então serão critérios chave para que o serviço ajude esse cliente a fazer uma escolha.

 

 

Como utilizar o serviço

 

Assim como qualquer outro serviço do Bluemix, você deve estar logado no Bluemix.net para poder criar uma instancia do Tradeoff Analystics.Dentro do catálogo do Bluemix, vá até a seção Watson, e lá você pode encontrar o Tradeoff Analytics.

2

Figura 2 – Tradeoff Analytics no Catálogo

Selecione o serviço, e proceda com a criação do mesmo, escolhendo um nome para as credenciais e o serviço, ou simplesmente aceite os valores default.  Clique em Create para continuar e então o  Tradeoff Analytics é criado e pronto para receber consultas.

3

Figura 3 – Criação do Serviço na console do Bluemix

Logo apos a criação, você vera na pagina principal links para a documentação e uma aplicação de demonstração para ajuda-lo a escolher um carro com base em múltiplos objetivos.

Como nosso artigo é introdutório, recomendo você ficar familiarizado com a documentação para aproveitar ainda mais o que esse serviço tem a oferecer.

 

Para utilizar o serviço dentro de uma aplicação ou uma ferramenta de testes devemos ter em mãos as credenciais, então ainda na página principal, dentro da tab Service Credentials, iremos obter e guardar os dados de acesso pois usaremos mais para frente. São eles URL, username e password.

4

Figura 4 – Obtendo as credenciais

 

Preparando o JSON

 

Nosso próximo passo é criar o JSON, que chamaremos de problema.json, onde teremos os dados referentes aos critérios e aos planos de saúde da sua corretora. Na figura 1, são os itens A e B combinados.

 

A definição da estrutura desse objeto JSON está detalhada na documentação do serviço, mas você pode pegar um atalho e usar o exemplo do tutorial também na documentação, ou ainda baixar o problema.json que construímos para esse artigo.

Clique aqui para baixar o arquivo.

 

A estrutura mínima desse JSON deve conter um array do tipo columns, e um outro do tipo options, conforme a figura 5.

5 (2)

Figura 5 – Estrutura básica do JSON de entrada

O elemento Columns deve retratar quais são os objetivos (critérios) que serão utilizados pelo Tradeoff Analytics durante o seu filtro de escolhas. Conforme a figura 1-A, temos 6 critérios, dos quais o cliente da corretora nesse cenário considera. Lembro que Preço, Rede Credenciada e Reembolso são pontos chave para a sua decisão.

 

Criaremos agora o array Columns de forma a refletir esse cenário. Você irá perceber que embora todos os critérios estejam  listados, somente Preço, Rede Credenciada e Reembolso tem o atributo is_objective definido como true. A Figura 6 retrata esse cenário parcialmente.

6

Figura 6 – Cenário do elemento Columns com valores

Feito isso, o próximo passo é incluir no JSON o conjunto de planos de saúde que serão avaliados. Isso é compreendido através do elemento options, conforme a Figura 7.

7

Figura 7 – Options contempla os planos de saúde que serão analisados

 

O JSON que acabamos de formar foi construído de forma simplificada, com valores hardcoded, e com finalidade didática, em uma aplicação real, você no papel de desenvolvedor irá criar e compor essas informações de forma dinâmica. Por exemplo, os critérios podem vir de uma interface gráfica onde o cliente determina o que é mais relevante, da mesma forma os dados dos planos de saúde viriam de um banco de dados com as ofertas de planos de saúde referentes a região do Brasil onde o cliente reside.

 

Interagindo com a API

 

Estamos bem perto de enviar o JSON para o Tradeoff Analytics e conhecer os resultados. Nesse artigo usaremos um utilitário chamado POSTMAN para interagir com a API do Tradeoff Analytics. Você pode baixa-lo em www.getpostman.com

De forma similar, você poderia utilizar o utilitário CURL ou outro de sua preferencia.

 

Escolhi o POSTMAN por ser mais fácil e ter um visual atraente.

 

Instale e inicie o POSTMAN, e logo na tela principal, haverá somente uma tab disponível. É justamente nela que iremos trabalhar.

 

Na parte cinza, modifique o método HTTP para POST, e insira a URL para o Tradeoff Analytics. Uma parte da URL veio da seção credentials (Figura 4). Isso é na verdade o endpoint para chegar ao serviço, mas ainda necessitamos de um complemento para essa URL, que é de fato o que solicitar nesse endpoint. Esse pedaço da informação que está nos faltando encontra-se na documentação da API desse serviço. (Ver referencias no final do texto)

Para simplificar a nossa vida, a URL completa é essa logo abaixo, e foi adicionado o /v1/dilemmas

 

https://gateway.watsonplatform.net/tradeoff-analytics/api/v1/dilemmas?generate_visualization=false

 

O parâmetro generate-visualization=false informa que não estamos interessados nos dados para representação gráfica.

 

A POSTMAN após essas alterações iniciais deverá estar igual a Figura 8

8

Figura 8 – POSTMAN com método POST e URL definidos

 

Na sequencia devemos ainda informar no utilitário as credenciais, o header content-type e o JSON que preparamos.

 

Clique em Authorization, escolha Basic Auth, e preecha os campos Username e Password com os valores que você obteve da tela de credenciais (Figura 4).

9

Figura 9 – Informando as credenciais

 

Ainda nos resta definir o tipo de informação que estamos trafegando através de um HEADER HTTP.

Clique em HEADERS e insira o Content-Type para application/json conforme a figura 10.

10

Figura 10 – Ajustando o HEADER

 

E por fim, vamos preencher a seção Body copiando e colando o conteúdo do arquivo problema.json que preparemos nos passos anteriores, e fazer a requisição através do botão Send

11

Figura 11 – Preparando o Body para a chamada

Ao enviar requisição para o Tradeoff Analytics, você terá de volta o mesmo JSON com um elemento adicional chamado resolution, o qual apresenta a solução para o problema que enviamos. A solução é determinada através de um status que exclui as opções que não são interessantes do conjunto. Analisando a Figura 12, com essas respostas, podemos ver que os planos de saúde 1,2 e 6 foram excluídos, portanto os demais planos são melhores opções para o cliente escolher.

12

Figura 12 – Resolução do problema apresentado ao Tradeoff Analytics

 

O resultado apresentado pelo serviço levou em conta os critérios (columns) definidos no JSON na escolha das melhores opções. Cabe a você desenvolvedor definir os critérios e suas variações como range, preferences, is_objectice de forma a obter um conjunto resposta diferente, maior ou menor.

Você deve também avaliar se o todo conjunto de respostas (todas com status FRONT) será ou não apresentado para o seu cliente, isso dependerá da necessidade de negócio e aplicação.

 

Conclusao

 

Acabamos de conhecer um serviço do Watson capaz de ajudar a escolher entre opções com objetivos conflitantes, isso é diferente de um filtro em SQL por exemplo, pois a resolução desse problema é feita levando-se em considerações diferentes objetivos e valores, e os conflitos entre esses interesses através de um algoritmo matemático criado para esse tipo de situação.

O Tradeoff Analytics possui também um componente gráfico (widget) que você pode plugar na sua aplicação, de forma a permitir que o cliente possa modificar os filtros e obter resultados dinamicamente. O uso desse widget é opcional.

13

Figura 13 – widget disponível no Tradeoff Analytics

 

Como fundamento de micro serviços, a combinação dos mesmos podem trazer grandes resultados, então não deixe de considerar o uso do Watson Tradeoff Analytics com outros serviços como Personality Insights, entre muitos outros disponíveis no IBM Bluemix. A sua criatividade é o limite agora.

 

 

Nesse texto, fizemos chamadas diretas da API rest desse serviço, mas voce também pode utilizar o SDK do Watson para utilizar esse serviço.

Diverta-se e boas decisões !!!

 

Referencias

Watson SDK –

https://github.com/watson-developer-cloud/

Multiple-criteria decision analysis

https://en.wikipedia.org/wiki/Multiple-criteria_decision_analysis

Input and output

https://www.ibm.com/watson/developercloud/doc/tradeoff-analytics/inout.shtml
API Reference

https://www.ibm.com/watson/developercloud/tradeoff-analytics/api/v1/

Programming with the widget

https://www.ibm.com/watson/developercloud/doc/tradeoff-analytics/client.shtml

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *