Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de...

84
Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni Engenheiro Líder @rpedigoni [email protected] André Fatala Diretor P&D @andrefatala [email protected]

Transcript of Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de...

Page 1: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Um sistema de recomendação de produtos baseado em grafos

Renato Pedigoni!Engenheiro Líder @rpedigoni [email protected]

André Fatala!Diretor P&D @andrefatala [email protected]

Page 2: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

744 lojas físicas 8 centros de distribuição +24 mil colaboradores +22 milhões de clientes 14 milhões de visitantes únicos por mês

Page 3: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

–Dan Ariely

"Big data is like teenage sex: everyone talks about it, nobody really knows how to do it,

everyone thinks everyone else is doing it, so everyone claims they are doing it..."

Page 4: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com
Page 5: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com
Page 6: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com
Page 7: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com
Page 8: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com
Page 9: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Grafos

Page 10: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Grafos

Vértices (entidades, objetos)

Pessoa Sessão Produto Categoria Depto

Page 11: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Grafos

Vértices (entidades, objetos)

Arestas (relacionamentos, conexões)

Pessoa Sessão Produto Categoria Depto

Page 12: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Grafos

Vértices (entidades, objetos)

Arestas (relacionamentos, conexões)

pertence

Pessoa Sessão Produto Categoria Depto

visitou comprou avaliou

Page 13: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Grafos

Vértices (entidades, objetos)

Arestas (relacionamentos, conexões)

pertence

Pessoa Sessão Produto Categoria Depto

visitou comprou avalioutimestamp timestamp

quantidadetimestamp avaliacao

nome email

timestamp titulo estoque

titulo titulo

Page 14: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Page 15: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Pessoa

Page 16: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Pessoainiciou

Page 17: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Pessoa Sessãoiniciou

Page 18: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Pessoa Sessãoiniciou

visitou

Page 19: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Pessoa Sessão

Produto

iniciou

visitou

Page 20: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Pessoa Sessão

Produto

iniciou

visitou

pertence

Page 21: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Pessoa Sessão Categoria

Produto

iniciou

visitou

pertence

Page 22: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Pessoa Sessão Categoria

Produto

iniciou

visitou

pertence

pertence

Page 23: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Pessoa Sessão Categoria

Depto

Produto

iniciou

visitou

pertence

pertence

Page 24: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Pessoa Sessão Categoria

Depto

Produto

iniciou

visitou

crosssell

pertence

pertence

Page 25: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Pessoa Sessão Categoria

Depto

Produto

Produto

iniciou

visitou

crosssell

pertence

pertence

Page 26: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Pessoa Sessão Categoria

Depto

Produto

Produto

iniciou

visitou

crosssell

pertence

pertence

upsell

Page 27: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Pessoa Sessão Categoria

Depto

Produto

Produto Produto

iniciou

visitou

crosssell

pertence

pertence

upsell

Page 28: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Pessoa Sessão Categoria

Depto

Produto

Produto Produto

iniciou

visitou

similar

crosssell

pertence

pertence

upsell

Page 29: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Modelo: e-commerce

Pessoa Sessão

Produto

Categoria

Depto

Produto

Produto Produto

iniciou

visitou

similar

crosssell

pertence

pertence

upsell

Page 30: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com
Page 31: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Tinkerpop

Page 32: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Tinkerpop

Page 33: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Tinkerpop

Java Conjunto de ferramentas para trabalhar com grafos Blueprints: análogo ao JDBC, para grafos

Page 34: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Grafos persistentes

Page 35: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Grafos persistentesEntre as possibilidades:

Page 36: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Grafos persistentes

Suporta grandes grafos Código aberto, uso gratuito (incl. comercial) Storage configurável: Cassandra, HBase, entre outros

Nossa escolha:

Entre as possibilidades:

Page 37: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Grafos persistentes• Teorema "CAP"

Consistência - Disponibilidade - Particionamento

Page 38: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Grafos persistentes• Teorema "CAP"

Consistência - Disponibilidade - Particionamento

Nossa escolha

- Sem ponto único de falha - Consistência eventual

Page 39: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Como interagir com o grafo?

Page 40: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Como interagir com o grafo????

Page 41: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Como interagir com o grafo?

Gremlin: Parte do Tinkerpop DSL para grafos Simples Comunidade ativa

Page 42: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Exemplo

Page 43: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Exemplo

> vert1 = g.addVertex();> vert1.tipo = 'visitante';

Visitante

Page 44: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Exemplo

> vert1 = g.addVertex();> vert1.tipo = 'visitante';

> vert2 = g.addVertex();> vert2.tipo = 'produto';

Visitante Produto

Page 45: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Exemplo

> vert1 = g.addVertex();> vert1.tipo = 'visitante';

> vert2 = g.addVertex();> vert2.tipo = 'produto';

> g.addEdge(vert1, vert2, 'visitou');

> g.commit()

Visitantevisitou

Produto

Page 46: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Quem viu, também viuRecomendação

Page 47: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Sessão!#21162

Quem viu, também viu

TV LED 40"

Sessão!#826482

Sessão!#4337189

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"

Recomendação

Page 48: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Sessão!#21162

Quem viu, também viu

TV LED 40"

Sessão!#826482

Sessão!#4337189

visitou

visitou

visitou

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"

visitou

visitou

visitou

visitou

visitou

visitou

Recomendação

Page 49: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Sessão!#21162

Quem viu, também viu

TV LED 40"

Sessão!#826482

Sessão!#4337189

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"

Recomendação

Page 50: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Sessão!#21162

Quem viu, também viu

TV LED 40"

Sessão!#826482

Sessão!#4337189

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"g.V('product_sku', 'tv_led_40')

Recomendação

Page 51: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Sessão!#21162

Quem viu, também viu

TV LED 40"

Sessão!#826482

Sessão!#4337189

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"g.V('product_sku', 'tv_led_40')

.in('visitou')

Recomendação

Page 52: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Sessão!#21162

Quem viu, também viu

TV LED 40"

Sessão!#826482

Sessão!#4337189

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"g.V('product_sku', 'tv_led_40')

.in('visitou')

Recomendação

Page 53: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Sessão!#21162

Quem viu, também viu

TV LED 40"

Sessão!#826482

Sessão!#4337189

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"g.V('product_sku', 'tv_led_40')

.in('visitou')

Recomendação

.out('visitou')

Page 54: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Sessão!#21162

Quem viu, também viu

TV LED 40"

Sessão!#826482

Sessão!#4337189

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"g.V('product_sku', 'tv_led_40')

.in('visitou')

Recomendação

.out('visitou')

Page 55: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Sessão!#21162

Quem viu, também viu

TV LED 40"

Sessão!#826482

Sessão!#4337189

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"g.V('product_sku', 'tv_led_40')

.in('visitou')

Recomendação

.out('visitou')

.groupCount()

Page 56: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Sessão!#21162

Quem viu, também viu

TV LED 40"

Sessão!#826482

Sessão!#4337189

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"g.V('product_sku', 'tv_led_40')

.in('visitou')

Recomendação

.out('visitou')

.groupCount()

key value

TV LCD 40"

TV PLASMA 52"

TV LED 42”

TV LCD 32"

1

2

3

1

Page 57: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Sessão!#21162

Quem viu, também viu

TV LED 40"

Sessão!#826482

Sessão!#4337189

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"g.V('product_sku', 'tv_led_40')

.in('visitou')

Recomendação

.out('visitou')

.groupCount()

key value

TV LCD 40"

TV PLASMA 52"

TV LED 42”

TV LCD 32"

1

2

3

1

.sort{-it.value}

Page 58: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Sessão!#21162

Quem viu, também viu

TV LED 40"

Sessão!#826482

Sessão!#4337189

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"g.V('product_sku', 'tv_led_40')

.in('visitou')

Recomendação

.out('visitou')

.groupCount()

key value

TV LCD 40"

TV PLASMA 52"

TV LED 42”

TV LCD 32"

1

2

3

1

.sort{-it.value}

Page 59: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Produto

Supernodes• Vértices com número desproporcional de arestas

conectadas

http://thinkaurelius.com/2012/10/25/a-solution-to-the-supernode-problem/Benchmark

Page 60: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Produto

Supernodes• Vértices com número desproporcional de arestas

conectadas

Produto +1.000.000

http://thinkaurelius.com/2012/10/25/a-solution-to-the-supernode-problem/Benchmark

Page 61: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Produto

Supernodes• Vértices com número desproporcional de arestas

conectadas

Produto

Solução (Titan): vertex-centric indices

+1.000.000

http://thinkaurelius.com/2012/10/25/a-solution-to-the-supernode-problem/Benchmark

Page 62: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Arestas de atalho

TV LED 40"

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"

Sessão"#21162

Sessão"#826482

Sessão"#4337189

visitou

visitou

visitou

visitou

visitou

visitou

visitou

visitou

visitou

1

Page 63: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Arestas de atalho

TV LED 40"

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"

Sessão"#21162

Sessão"#826482

Sessão"#4337189

visitou

visitou

visitou

visitou

visitou

visitou

visitou

visitou

visitou

1

Page 64: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Arestas de atalho

TV LED 40"

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"

Sessão"#21162

Sessão"#826482

Sessão"#4337189

visitou

visitou

visitou

visitou

visitou

visitou

visitou

visitou

visitou

1

quem_viu_tb_viu

quem_viu_tb_viu

Page 65: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Arestas de atalho

TV LED 40"

TV LCD 40"

TV PLASMA

52"

TV LED 42”

TV LCD 32"

Sessão"#21162

Sessão"#826482

Sessão"#4337189

visitou

visitou

visitou

visitou

visitou

visitou

visitou

visitou

visitou

1

quem_viu_tb_viu

quem_viu_tb_viu

g.V('product_sku', ‘tv_led_40’).out(‘quem_viu_tb_viu’)

Page 66: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Mas e o Hadoop?

Page 67: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Aurelius Graph Stack

Page 68: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Aurelius Graph Stack

Page 69: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Faunus

Roda sobre o Hadoop, armazena os dados no HDFS Ferramenta para operações globais no grafo Diversas utilidades

Graph analytics Schema migration Sub grafos Detecção de comunidades

Page 70: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Faunus: exemploIn degree distribution

g.V.sideEffect('{it.degree=it.inE.count()}').degree.groupCount

Page 71: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Faunus: exemploIn degree distribution

g.V.sideEffect('{it.degree=it.inE.count()}').degree.groupCount

Page 72: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Faunus: exemploIn degree distributiong.V.sideEffect('{it.degree=it.inE.count()}').degree.groupCount

Page 73: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Faunus: exemploIn degree distributiong.V.sideEffect('{it.degree=it.inE.count()}').degree.groupCount

==>1 167050!==>10 2305!==>100 6!==>108 3!==>119 3!==>122 3!==>133 1!==>144 2!==>155 1!==>166 2!==>18 471!==>188 1!==>21 306!==>232 1!==>254 1!==>...

Page 74: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Rexster

• Parte da stack Tinkerpop

• Permite acessar qualquer grafo Blueprints através de uma API REST

• Além de HTTP, possui protocolo binário (RexPro)

Page 75: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Gremlin Demo

Page 76: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

User

type userId

Gremlin Demo

Page 77: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

User

type userId

Gremlin Demo

initialized

Page 78: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

User

type userId

Gremlin Demo

initializedSession

type sessionId timestamp

Page 79: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

User

type userId

Gremlin Demo

initializedSession

type sessionId timestamp

viewed

Page 80: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

User

type userId

Gremlin Demo

initializedSession

type sessionId timestamp

Product

type category

name

viewed

Page 81: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Gremlin Demoinitialized

User

type userId

Session

type sessionId timestamp

Product

type category

name

viewed

50 users 90 products 102 sessions !690 edges

Page 82: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Analytics

Page 83: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Bob

• Infra: AWS

• +1.2 bilhões de arestas armazenadas

• + 300 milhões de vértices

• 20 milhões de recomendações por dia

Page 84: Um sistema de recomendação de produtos baseado em grafos€¦ · Um sistema de recomendação de produtos baseado em grafos Renato Pedigoni! Engenheiro Líder @rpedigoni renato@luizalabs.com

Renato Pedigoni"Engenheiro Líder @rpedigoni [email protected]

André Fatala"Diretor P&D @andrefatala [email protected]

Há vagas!luizalabs.com