Luiz Santana
Gerente de
Desenvolvimento
Narlei Moreira
iOS Developer
Igor Siciliani
Data Science
/narlei igorschoeller/luizsantana
Agenda
● Sobre o SocialBase
● Big Data?
● IBM Watson
● Apache Spark
● Tensor Flow
● Conclusões
Descendente Ascendente Inter
Entre grupos
1 to 1Intra
Dentro de um grupo
Alcance
Alinhamento
Formalização
Ser ouvido
Empoderamento
Compartilhamento
Alinhamento
Formalização
Co-criação e inovação
Imediatismo
Follow-up
Como chegamos ao Big Data?
2014
Versão 1 e 2
Primeiros usuários
PHP frontend e backend
baseadas no Social Engine
2016
Escalabilidade
Mais de 20k usuários
2015
Versão 3
Frontend em AngularJS e API REST em PHP
Elasticsearch e RabbitMQ
Mobile
2017
Senior
Projeção de crescimento acelerado
Relatórios em Excel
2018
Data Science e ML
Primeiras ações de DS e ML
2020
SocialBase Inteligente e Escalável
2019
Cenários para
Análise de
Sentimentos
Predição de
Turnover
Bots
Recomendação
de Conteúdo
Classificação
de Conteúdo
Aumento do
engajamento
Digest
Personalizado
Sugestão de
usuários e
grupos
Produtividade
Muitas opções...
Trabalhando com...
SparkIBM Watson TensorFlow
IBM
WATSON
Visual Recognition
Natural Language Understanding
Natural Language Classifier
Personality Insights
Tone Analyzer
Knowledge Studio
Machine Learning
Uso na SocialBase
Tone Analyzer: Analizando post para
antecipar a reação à postagem.
Personality Insights: Conhecer o perfil
dos nossos usuários.
Na prática
curl -X POST --user "{username}":"{password}" 
--header "Content-Type: application/json" 
--header "Accept-Language: pt-br" 
--data-binary 
"{"text": "TDC is an awesome event. Do you know which one is best?."}" 
"https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-2
1"
O que retorna?
"text": "TDC is an awesome event.",
"tones": [
{
"score": 0.892129,
"tone_id": "joy",
"tone_name": "Alegria"
}
O que retorna?
"text": "Do you know which one is best?",
"tones": [
{
"score": 0.801827,
"tone_id": "analytical",
"tone_name": "Analítico"
}
Tone Analyzer
PRICE
2,500 API calls per month free
1 - 250,000 $0.0088 USD/api call
250,001 - 5,000,000 $0.0013 USD/api
5,000,000 + $0.0008 USD/api call
Personality Insights
1000 API calls free per month
1000+ $0.020 USD /api call
premium
Engine para processamento rápido de
dados em larga escala;
Programar e distribuir processos
paralelizados em clusters “facilmente”.
Poliglota:
Spark:
Escrito em Scala;
100x mais rápido que o convencional Hadoop
Mapreduce em memória e 10x em disco(DAG
Engine);
DAG Engine(Directed acyclic graph);
Lazy Evaluation: Nada realmente acontece (para
você) até a realização de uma ação:
O motivo de usar Scala
Spark:
RDD:
Resilient;
Distributed;
DataSet.
Driver Program(Script)-> Spark Context->RDD’s
https://data-flair.training/
Spark:
Na prática: Spark Context
val sc = new SparkContext("local[*]", "My App")
library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib")))
sparkR.session(master = "local[*]", sparkConfig = list(spark.driver.memory = "20g"))
# my_script.py
sc = SparkContext("local", "My App")
Na prática: Contagem de palavras
package com.tdc.spark
import org.apache.spark._
import org.apache.spark.SparkContext._
import org.apache.log4j._
object WordCountTDC{
def main(args: Array[String]) {
val sc = new SparkContext("local", "WordCountTDC")
val input = sc.textFile("../someBook.txt")
val words = input.flatMap(x => x.split("W+"))
val lowerWords = words.map(x => x.toLowerCase())
val wordCount = lowerWords.map(x => (x, 1)).reduceByKey( (x,y) => x + y )
val wordCountSorted = wordCount.map( x => (x._2, x._1) ).sortByKey()
wordCountSorted.foreach(println)
}
}
Engajamentos
Análise de correlação: MAU vs. Engajamento
Correlação positiva -> são proporcionais
Pearson’s ~0.6 (moderada - forte)
p-value~10⁻³
Análise de entropia (informação) mútua com o
Engajamento
Cliente desengajado (i): Eng(i)< média(Eng) .
n_inf : # de posts possíveis
n_ifl : # de influenciadores
n_post: # de posts
n_p_g: # de posts por grupos ativo
n_p_ifl: # de posts por influenciador
mau
n_g_ifl: # de grupos por influenciador
n_g: # de grupos ativos
Árvore de decisão
A precisão da árvore ficou em 75% gerando
uma ideia para os cortes de cada variável.
1. n_inf >16 , n_p_g>14 ou
2. n_inf>16, n_p_g<14 e n_g>1.5
n_inf : # de posts possíveis
n_ifl : # de influenciadores
n_post: # de posts
n_p_g: # de posts por grupos ativo
n_p_ifl: # de posts por influenciador
mau
n_g_ifl: # de grupos por influenciador
n_g: # de grupos ativos
Classificador p/ Engajamento
Através das variáveis elencadas via RF (Random Forest ) a precisão do
classificador ficou em 87,5%.
n_inf : # de posts acessíveis
n_ifl : # de influenciadores
n_post: # de posts
n_p_g: # de posts por grupos ativo
n_p_ifl: # de posts por influenciador
mau
n_g_ifl: # de grupos por influenciador
n_g: # de grupos ativos
Relação entre as variáveis
n_inf : # de posts possíveis
n_ifl : # de influenciadores
n_post: # de posts
n_p_g: # de posts por grupos ativo
n_p_ifl: # de posts por influenciador
mau
n_g_ifl: # de grupos por influenciador
n_g: # de grupos ativos
Rede Bayesiana de influência
Analisador de Sentimento
TEXTO 1:
"Excited as well, excited for the game. Yesterday was fantastic, getting
on the pitch, coaching, watching the lads train, meeting over the last
couple of days, trying to get my message across as quickly as possible,
and also trying to simplify it as best I can because we have not got a lot
of time to work."So a lot of things are going through my head at the
moment, but probably; proud, excited, and really looking forward to the
game tomorrow are the overriding emotions that I am feeling at the
moment."
TEXTO 2:
Believe in yourself! Have faith in your abilities! Without a humble but
reasonable confidence in your own powers you cannot be successful or
happy.
T1: 86% Joy; 88% Tentative.
T2: 97% Joy ; 88% Analytical; 92% Confident.
T1: 10% Surprise; 15% Confident ; 75% Joy.
T2: 4% Joy, 96% Confident.
TensorFlow
● Framework de código aberto para Aprendizado de Máquina
● Desenvolvido pelo Google Brain Team
● A primeira versão foi lançada em 2015
● Possui APIs para várias linguagens, incluindo Python e Java
● O TensorFlow Lite pode ser executado no Android e no iOS
● Integração com o Cloud Machine Learning Engine
TensorFlow
Arquitetura do TensorFlow
Stack do TensorFlow
Métodos implementados
● No nível mais alto de abstração o TensorFlow oferece premade
estimators como: DNNClassifier, DNNRegressor, e LinearClassifier
Métodos implementados
Classificação
TensorFlow Lite
Como podemos usar o TensorFlow?
● Reconhecimento de imagens postadas na rede
● Comandos por voz, por exemplo, abrir email ou criar uma tarefa
● Criação de resumos de textos como atas de reunião ou digest diário
● Análise de séries temporais para recomendação
● Análise de vídeos
Comparação
TensorFlow IBM Watson Spark
Métodos Deep Learning
Deep Learning e
Machine Learning
como serviço
Machine Learning
Preço Baixo Alto Baixo
Dificuldade Alto Baixo Médio
Conclusões
Conclusões
● IBM Watson limita nossas opções e é caro para estar em produção,
mas facilita a criação de protótipos
● Apache Spark e o MLlib facilita a criação de protótipos e a sua
arquitetura escalável permite a implementação de novos modelos
● TensorFlow é ainda muito distante das necessidades da SocialBase,
mas pode ser uma opção no futuro
Estamos
contratando!!!
desenvolvimento@socialbase.com.br
IBM Watson, Apache Spark ou TensorFlow?

IBM Watson, Apache Spark ou TensorFlow?

  • 2.
    Luiz Santana Gerente de Desenvolvimento NarleiMoreira iOS Developer Igor Siciliani Data Science /narlei igorschoeller/luizsantana
  • 3.
    Agenda ● Sobre oSocialBase ● Big Data? ● IBM Watson ● Apache Spark ● Tensor Flow ● Conclusões
  • 5.
    Descendente Ascendente Inter Entregrupos 1 to 1Intra Dentro de um grupo Alcance Alinhamento Formalização Ser ouvido Empoderamento Compartilhamento Alinhamento Formalização Co-criação e inovação Imediatismo Follow-up
  • 6.
    Como chegamos aoBig Data? 2014 Versão 1 e 2 Primeiros usuários PHP frontend e backend baseadas no Social Engine
  • 7.
    2016 Escalabilidade Mais de 20kusuários 2015 Versão 3 Frontend em AngularJS e API REST em PHP Elasticsearch e RabbitMQ Mobile 2017 Senior Projeção de crescimento acelerado Relatórios em Excel
  • 8.
    2018 Data Science eML Primeiras ações de DS e ML 2020 SocialBase Inteligente e Escalável
  • 9.
    2019 Cenários para Análise de Sentimentos Prediçãode Turnover Bots Recomendação de Conteúdo Classificação de Conteúdo Aumento do engajamento Digest Personalizado Sugestão de usuários e grupos Produtividade
  • 12.
  • 13.
  • 14.
    IBM WATSON Visual Recognition Natural LanguageUnderstanding Natural Language Classifier Personality Insights Tone Analyzer Knowledge Studio Machine Learning
  • 15.
    Uso na SocialBase ToneAnalyzer: Analizando post para antecipar a reação à postagem. Personality Insights: Conhecer o perfil dos nossos usuários.
  • 16.
    Na prática curl -XPOST --user "{username}":"{password}" --header "Content-Type: application/json" --header "Accept-Language: pt-br" --data-binary "{"text": "TDC is an awesome event. Do you know which one is best?."}" "https://gateway.watsonplatform.net/tone-analyzer/api/v3/tone?version=2017-09-2 1"
  • 17.
    O que retorna? "text":"TDC is an awesome event.", "tones": [ { "score": 0.892129, "tone_id": "joy", "tone_name": "Alegria" }
  • 18.
    O que retorna? "text":"Do you know which one is best?", "tones": [ { "score": 0.801827, "tone_id": "analytical", "tone_name": "Analítico" }
  • 19.
    Tone Analyzer PRICE 2,500 APIcalls per month free 1 - 250,000 $0.0088 USD/api call 250,001 - 5,000,000 $0.0013 USD/api 5,000,000 + $0.0008 USD/api call Personality Insights 1000 API calls free per month 1000+ $0.020 USD /api call premium
  • 20.
    Engine para processamentorápido de dados em larga escala; Programar e distribuir processos paralelizados em clusters “facilmente”. Poliglota:
  • 21.
    Spark: Escrito em Scala; 100xmais rápido que o convencional Hadoop Mapreduce em memória e 10x em disco(DAG Engine); DAG Engine(Directed acyclic graph); Lazy Evaluation: Nada realmente acontece (para você) até a realização de uma ação: O motivo de usar Scala
  • 22.
  • 23.
  • 24.
  • 25.
    Na prática: SparkContext val sc = new SparkContext("local[*]", "My App") library(SparkR, lib.loc = c(file.path(Sys.getenv("SPARK_HOME"), "R", "lib"))) sparkR.session(master = "local[*]", sparkConfig = list(spark.driver.memory = "20g")) # my_script.py sc = SparkContext("local", "My App")
  • 26.
    Na prática: Contagemde palavras package com.tdc.spark import org.apache.spark._ import org.apache.spark.SparkContext._ import org.apache.log4j._ object WordCountTDC{ def main(args: Array[String]) { val sc = new SparkContext("local", "WordCountTDC") val input = sc.textFile("../someBook.txt") val words = input.flatMap(x => x.split("W+")) val lowerWords = words.map(x => x.toLowerCase()) val wordCount = lowerWords.map(x => (x, 1)).reduceByKey( (x,y) => x + y ) val wordCountSorted = wordCount.map( x => (x._2, x._1) ).sortByKey() wordCountSorted.foreach(println) } }
  • 27.
  • 28.
    Análise de correlação:MAU vs. Engajamento Correlação positiva -> são proporcionais Pearson’s ~0.6 (moderada - forte) p-value~10⁻³
  • 29.
    Análise de entropia(informação) mútua com o Engajamento Cliente desengajado (i): Eng(i)< média(Eng) . n_inf : # de posts possíveis n_ifl : # de influenciadores n_post: # de posts n_p_g: # de posts por grupos ativo n_p_ifl: # de posts por influenciador mau n_g_ifl: # de grupos por influenciador n_g: # de grupos ativos
  • 30.
    Árvore de decisão Aprecisão da árvore ficou em 75% gerando uma ideia para os cortes de cada variável. 1. n_inf >16 , n_p_g>14 ou 2. n_inf>16, n_p_g<14 e n_g>1.5 n_inf : # de posts possíveis n_ifl : # de influenciadores n_post: # de posts n_p_g: # de posts por grupos ativo n_p_ifl: # de posts por influenciador mau n_g_ifl: # de grupos por influenciador n_g: # de grupos ativos
  • 31.
    Classificador p/ Engajamento Atravésdas variáveis elencadas via RF (Random Forest ) a precisão do classificador ficou em 87,5%. n_inf : # de posts acessíveis n_ifl : # de influenciadores n_post: # de posts n_p_g: # de posts por grupos ativo n_p_ifl: # de posts por influenciador mau n_g_ifl: # de grupos por influenciador n_g: # de grupos ativos
  • 32.
    Relação entre asvariáveis n_inf : # de posts possíveis n_ifl : # de influenciadores n_post: # de posts n_p_g: # de posts por grupos ativo n_p_ifl: # de posts por influenciador mau n_g_ifl: # de grupos por influenciador n_g: # de grupos ativos Rede Bayesiana de influência
  • 33.
    Analisador de Sentimento TEXTO1: "Excited as well, excited for the game. Yesterday was fantastic, getting on the pitch, coaching, watching the lads train, meeting over the last couple of days, trying to get my message across as quickly as possible, and also trying to simplify it as best I can because we have not got a lot of time to work."So a lot of things are going through my head at the moment, but probably; proud, excited, and really looking forward to the game tomorrow are the overriding emotions that I am feeling at the moment." TEXTO 2: Believe in yourself! Have faith in your abilities! Without a humble but reasonable confidence in your own powers you cannot be successful or happy. T1: 86% Joy; 88% Tentative. T2: 97% Joy ; 88% Analytical; 92% Confident. T1: 10% Surprise; 15% Confident ; 75% Joy. T2: 4% Joy, 96% Confident.
  • 34.
    TensorFlow ● Framework decódigo aberto para Aprendizado de Máquina ● Desenvolvido pelo Google Brain Team ● A primeira versão foi lançada em 2015 ● Possui APIs para várias linguagens, incluindo Python e Java ● O TensorFlow Lite pode ser executado no Android e no iOS ● Integração com o Cloud Machine Learning Engine
  • 35.
  • 36.
  • 37.
  • 38.
    Métodos implementados ● Nonível mais alto de abstração o TensorFlow oferece premade estimators como: DNNClassifier, DNNRegressor, e LinearClassifier
  • 39.
  • 40.
  • 41.
  • 42.
    Como podemos usaro TensorFlow? ● Reconhecimento de imagens postadas na rede ● Comandos por voz, por exemplo, abrir email ou criar uma tarefa ● Criação de resumos de textos como atas de reunião ou digest diário ● Análise de séries temporais para recomendação ● Análise de vídeos
  • 43.
    Comparação TensorFlow IBM WatsonSpark Métodos Deep Learning Deep Learning e Machine Learning como serviço Machine Learning Preço Baixo Alto Baixo Dificuldade Alto Baixo Médio
  • 44.
  • 45.
    Conclusões ● IBM Watsonlimita nossas opções e é caro para estar em produção, mas facilita a criação de protótipos ● Apache Spark e o MLlib facilita a criação de protótipos e a sua arquitetura escalável permite a implementação de novos modelos ● TensorFlow é ainda muito distante das necessidades da SocialBase, mas pode ser uma opção no futuro
  • 46.