• Nenhum resultado encontrado

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
84
0
0

Texto

(1)

Um sistema de recomendação de

produtos baseado em grafos

Renato Pedigoni!

Engenheiro Líder

@rpedigoni

André Fatala!

Diretor P&D

@andrefatala

(2)

744 lojas físicas

8 centros de distribuição

+24 mil colaboradores

+22 milhões de clientes

(3)

"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

(4)
(5)
(6)
(7)
(8)
(9)
(10)

Grafos

Vértices

(entidades, objetos)

(11)

Grafos

Vértices

(entidades, objetos)

Arestas

(12)

Grafos

Vértices

(entidades, objetos)

Arestas

(relacionamentos, conexões)

pertence

Pessoa Sessão Produto Categoria Depto

(13)

Grafos

Vértices

(entidades, objetos)

Arestas

(relacionamentos, conexões)

pertence

Pessoa Sessão Produto Categoria Depto

visitou

comprou

avaliou

nome email

timestamp titulo estoque

(14)
(15)

Modelo: e-commerce

(16)

Modelo: e-commerce

Pessoa

(17)

Modelo: e-commerce

Pessoa Sessão

(18)

Modelo: e-commerce

Pessoa Sessão

iniciou

(19)

Modelo: e-commerce

Pessoa Sessão

iniciou

(20)

Modelo: e-commerce

Pessoa Sessão Produto iniciou visitou pertence

(21)

Modelo: e-commerce

Pessoa Sessão Categoria

iniciou

visitou

(22)

Modelo: e-commerce

Pessoa Sessão Categoria

Produto

iniciou

visitou

pertence

(23)

Modelo: e-commerce

Pessoa Sessão Categoria

Depto

iniciou

visitou

pertence

(24)

Modelo: e-commerce

Pessoa Sessão Categoria

Depto Produto iniciou visitou crosssell pertence pertence

(25)

Modelo: e-commerce

Pessoa Sessão Categoria

Depto Produto iniciou visitou crosssell pertence pertence

(26)

Modelo: e-commerce

Pessoa Sessão Categoria

Depto Produto Produto iniciou visitou crosssell pertence pertence upsell

(27)

Modelo: e-commerce

Pessoa Sessão Categoria

Depto Produto iniciou visitou crosssell pertence pertence upsell

(28)

Modelo: e-commerce

Pessoa Sessão Categoria

Depto Produto Produto Produto iniciou visitou similar crosssell pertence pertence upsell

(29)

Modelo: e-commerce

Pessoa Sessão Produto Categoria Depto Produto iniciou visitou similar crosssell pertence pertence upsell

(30)
(31)
(32)
(33)

Tinkerpop

Java

Conjunto de ferramentas para trabalhar

com grafos

(34)
(35)

Grafos persistentes

(36)

Grafos persistentes

Suporta grandes grafos

Código aberto, uso gratuito (incl. comercial)

Storage configurável: Cassandra, HBase, entre

outros

Nossa escolha:

(37)

Grafos persistentes

Teorema "CAP"

(38)

Grafos persistentes

Teorema "CAP"

Consistência - Disponibilidade - Particionamento

Nossa escolha

- Sem ponto único de falha

- Consistência eventual

(39)
(40)

Como interagir com o grafo?

?

?

(41)

Como interagir com o grafo?

Gremlin:

Parte do Tinkerpop

DSL para grafos

Simples

Comunidade ativa

(42)
(43)

Exemplo

> vert1 = g.addVertex();

>

vert1

.tipo =

'visitante'

;

(44)

Exemplo

> vert1 = g.addVertex();

>

vert1

.tipo =

'visitante'

;

> vert2 = g.addVertex();

>

vert2.tipo =

'produto'

;

(45)

Exemplo

> vert1 = g.addVertex();

>

vert1

.tipo =

'visitante'

;

> vert2 = g.addVertex();

>

vert2.tipo =

'produto'

;

> g.addEdge(vert1, vert2,

'visitou'

);

> g.commit()

Visitante

visitou

(46)

Quem viu, também viu

(47)

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 


Recomendação

(48)

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

(49)

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 


Recomendação

(50)

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

(51)

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

(52)

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

(53)

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

(54)

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'

)

(55)

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'

)

(56)

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

(57)

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'

)

key

value

TV LCD 40"

TV PLASMA 52"

TV LED 42”

TV LCD 32"

1

2

3

1

(58)

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}

(59)

Produto

Supernodes

Vértices com número desproporcional de arestas

conectadas

(60)

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

(61)

Produto

Supernodes

Vértices com número desproporcional de arestas

conectadas

Produto

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

+1.000.000

(62)

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

(63)

Arestas de atalho

TV LED 
 40" TV LCD 
 40" TV PLASMA 
 52" TV LED 
 42” TV LCD 
 Sessão" #21162 Sessão" #826482 Sessão" #4337189

visitou

visitou

visitou

visitou

visitou

visitou

visitou

visitou

visitou

1

(64)

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

(65)

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

(66)
(67)
(68)
(69)

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

(70)

Faunus: exemplo

In degree distribution

(71)

Faunus: exemplo

In degree distribution

(72)

Faunus: exemplo

In degree distribution

(73)

Faunus: exemplo

In degree distribution

g.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!

(74)

Rexster

Parte da stack Tinkerpop

Permite acessar qualquer grafo Blueprints através

de uma API REST

(75)
(76)

User

type

userId

(77)

User

type

Gremlin Demo

(78)

User

type

userId

Gremlin Demo

initialized Session

type

sessionId

timestamp

(79)

User

type

userId

Gremlin Demo

initialized Session

type

sessionId

viewed

(80)

User

type

userId

Gremlin Demo

initialized Session

type

sessionId

timestamp

Product

type

category

name

viewed

(81)

Gremlin Demo

initialized User

type

userId

Session

type

sessionId

timestamp

Product

type

category

name

viewed

50 users

90 products

102 sessions

!

(82)
(83)

Bob

Infra: AWS

+1.2 bilhões de arestas armazenadas

+ 300 milhões de vértices

(84)

Renato Pedigoni"

Engenheiro Líder

@rpedigoni

renato@luizalabs.com

André Fatala"

Diretor P&D

@andrefatala

fatala@luizalabs.com

Há vagas!

luizalabs.com

Referências

Documentos relacionados

That is why old narrative techniques such as the lead and the inverted pyramid of conventional journalism are replaced in literary journalism by sophisticated narrative resources

Entendemos que o equipamento que pretendemos ofertar estaria atendendo aos requisitos do projeto como um todo, já que não está explícito que haverá utilização para as 16 portas

Então, recebendo esta forma de debate, o Sotoshu foi instado a aceitar O Significado da prática e verificação como base para ensinar os leigos sobre a Constituição Sotoshu que

Resumidamente a forma de comercialização dos apartamentos FLAT e operação de locação dos apartamentos do HOTEL para uma bandeira hoteleira proposta a seguir objetiva a

Mais uma vez, vamos trabalhar com duas perspectivas: Estrutura e Conteúdo. E, no caso do Artigo Científico, nosso modelo será o artigo de intitulado: ADMINISTRAÇÃO PARTICIPATIVA:

bandamento da rocha. 43 Figura 17: Variações texturais e feições estruturais dos ignimbritos do Morro dos Cavalos, Setor 2: a) ignimbrito com baixa carga de cristais, b)

BÉRIOU, Nicole, JOSSERAND, Philippe (coord.), Prier et Combattre – Dictionnaire européen des ordres militaires au Moyen Âge, Fayard, 2009..

4.5 Conclusões: Este trabalho mostrou um modelo criado para representar uma linha de transmissão monofásica através de uma cascata de circuitos π, cujos parâmetros longitudinais