Detecção de Produtos Anômalos em E-Commerce

Victor Nascimento
b2w engineering
Published in
13 min readJan 20, 2021

Quando os produtos entram no marketplace, eles precisam ser categorizados em uma das várias categorias existentes em nosso catálogo. De tempo em tempo, novas categorias podem ser criadas e categorias existentes podem ser modificadas ou até excluídas.

Dado este cenário, é necessário treinar o nosso classificador periodicamente com novos dados. O problema é que o conjunto de dados em que nosso modelo é treinado para aprender a classificar pode conter produtos anômalos — produtos mal classificados ou produtos com imagens e textos inconsistentes — o que dificulta a aprendizagem do nosso classificador e, em alguns casos, classifica produtos de forma errada.

A partir dessa problemática, surgiu a necessidade de criar uma forma de fazer a detecção de produtos anômalos dentro de uma categoria. Com a detecção desses outliers, seria possível limpar o conjunto de dados de treinamento do nosso classificador, corrigir possíveis informações inconsistentes nos produtos anômalos e fazer a reclassificação.

Modelo Proposto

Uma vez que um dos principais objetivos de fazer a detecção de produtos anômalos é eliminar os ruídos no conjunto de dados de treinamento do nosso classificador, não podemos abordar esse problema com um algoritmo de aprendizagem supervisionada, já que não é possível ter de antemão um conjunto de dados de treinamento com produtos anômalos para cada categoria do nosso catálogo.

A abordagem desenvolvida para resolver o problema é um modelo conjunto composto por três algoritmos que farão a classificação de anomalias de maneira não supervisionada, levando em consideração tanto as imagens quanto os textos dos produtos. A imagem abaixo mostra o fluxo do modelo para fazer a detecção de anomalias:

Figura 1: Fluxo do modelo conjunto para a detecção de anomalias

De forma resumida, o modelo segue o seguinte fluxo: Primeiro, o modelo recebe como entrada todos os produtos que foram classificados em uma determinada categoria. Em seguida, utilizam-se dois modelos para fazer a extração de atributos.

Um desses modelos (FastText) é utilizado para extrair atributos dos textos dos produtos, e o segundo (Encoder — Rede Siamesa) é utilizado para extrair atributos das imagens. O próximo passo é passar os atributos extraídos para os algoritmos que farão a detecção de anomalias de forma não supervisionada.

Cada algoritmo dará um score para cada produto que irá quantificar a confiança de um determinado produto ser considerado anomalia ou não. Por fim, o modelo levará em consideração o score retornado de cada algoritmo para determinar um score final, classificando se aquele produto é uma anomalia dentro do conjunto de dados que foi dado como entrada.

Modelos de Extração de Atributos

Os algoritmos que fazem a detecção de anomalias necessitam que as entradas sejam valores numéricos. Assim, é necessário extrair atributos das imagens e dos textos dos produtos e transformá-los em vetores numéricos.

FastText

O FastText, proposto inicialmente no artigo (BOJANOWSKI et al., 2016), é um algoritmo de Word Embedding que aprende a representar uma sequência de caracteres (N-grama) em vetores.

Uma palavra pode ser apresentada como uma sequência de N-gramas. Por exemplo a palavra “Where” com 3-gramas seria representado por <wh, whe, her, ere, re>, onde < e > são símbolos especiais utilizados para referenciar o início e o fim da palavra. A representação de uma palavra, seria então, a soma dos vetores que compõe seu N-grama.

A grande vantagem da utilização do FastText é, por aprender a representar N-gramas e não a palavra inteira, a capacidade de representar tanto palavras que não foram vistas durante o treinamento quanto palavras escritas de forma errada. Além disso, ele também é capaz de representar uma frase inteira em um único vetor, o que é útil no nosso caso para representar todo o título de um produto.

Para fazer a extração de atributos nos títulos, obtivemos um melhor resultado treinando um modelo FastText sobre a nossa base de dados.

Para mais informações sobre a normalização dos textos e os parâmetros utilizados para treinar o modelo FastText, acesse :

Rede Siamesa

Uma Rede Siamesa é uma arquitetura de rede neural proposta inicialmente por Bromley (Bromley et al., 1993) para resolver um problema de verificação de assinaturas.

No artigo escrito por Koch (Koch; Gregory, Zemel, 2015), foi proposto uma arquitetura de rede siamesa utilizando um modelo convolucional para fazer a classificação de imagens, com apenas um exemplo da classe de referência (One-Shot Learning).

A Rede siamesa possui uma arquitetura similar ao diagrama mostrado na Figura 2. A ideia é tentar identificar se duas imagens são similares ou não. Para isso, as duas imagens passam por uma rede neural convolucional (Encoder na Figura 2) que vai codificar cada imagem em um vetor unidimensional. Pode-se pensar que esse Encoder irá extrair os principais atributos das imagens a armazená-las em um vetor.

Em seguida, os vetores resultantes são concatenados e passam por uma rede neural densa (Predict Model na Figura 2) de várias camadas, que resultará em uma saída que constatará a similaridade entre as duas imagens.

Se observar a Figura 2, pode-se notar que existem dois blocos encoder (um para cada imagem). Na realidade, esses dois encoders são redes com a mesma arquitetura e com os mesmos parâmetros e, exatamente por isso, o nome rede siamesa é empregado.

Figura 2: Diagrama da Rede Siamesa

Na B2W existe um conceito chamado WIT(What is this?), que é uma expressão que define o que é de forma clara. Por exemplo, os produtos iphone 6s e samsung galaxy S9, apesar de serem diferentes, podem ser definidos pelo mesmo WIT Smartphone.

Para extrair os atributos das imagens dos produtos, foi treinado uma rede siamesa cujo objetivo era identificar se duas imagens de produtos representam o mesmo WIT ou não.

A ideia é que caso a rede seja capaz de identificar corretamente se duas imagens são ou não o mesmo WIT, a sua camada de codificação (Encoder) seria capaz de fazer uma boa representação da imagem de entrada em um vetor. Então, o Encoder poderia ser utilizado para extrair os atributos das imagens que serviriam de entrada para os algoritmos de detecção de anomalias.

Para o treinamento da rede foram utilizadas imagens de mais de 8 milhões de produtos que representavam cerca de 1997 WIT’s diferentes. A partir das imagens, foram criados vários exemplos para que a rede possa aprender se duas imagens pertencem a mesma classe ou não.

65% desses exemplos foram usados para treinar propriamente a rede, 15% foram usados para a validação do modelo e 10% dos exemplos foram usados para teste. A função de custo escolhida para treinar a rede foi a mesma da utilizada por Koch, sendo definida abaixo:

Onde y(x1,x2) = 1 quando as imagens representarem a mesma classe e y(x1,x2) = 0 quando representarem classes diferentes. p(x1,x2) é a probabilidade dada pela rede de x1 e x2 representarem a mesma classe. i representa um exemplo do batch size.

Algoritmos de Detecção de Anomalias

Para fazer a detecção de anomalias, nós utilizamos no total três algoritmos:

  • Detecção de Anomalias por Similaridade de Cosseno;
  • DBSCAN (Density Based Spatial Clustering of Application with Noise);
  • Similaridade utilizando a Rede Siamesa.

Os algoritmos similaridade de Cosseno e DBSCAN são utilizados para fazer a detecção de anomalias a partir dos textos e das imagens, e a Rede Siamesa, por ter sido treinada somente em imagens, só é utilizada para fazer a detecção utilizando apenas as imagens dos produtos.

Conforme demonstrado no fluxo da Figura 1, a detecção é feita tratando imagens e textos separadamente. Cada algoritmo de detecção irá retornar uma métrica que irá quantificar a probabilidade de um determinado produto ser uma anomalia.

Em seguida, levando em consideração as métricas retornadas por todos os algoritmos, será definida uma métrica final que definirá se um produto é ou não uma anomalia dentro do conjunto de produtos analisado.

A seguir, descreverei mais detalhes sobre os algoritmos utilizados.

Similaridade de Produtos utilizando Similaridade de Cosseno

A ideia do algoritmo é calcular a similaridade entre os produtos usando a similaridade de cosseno e categorizar os mais dissimilares como anomalias.

O algoritmo irá receber uma matriz de entrada, que podem ser os títulos dos produtos após a codificação pelo Modelo FastText ou as imagens dos produtos depois de terem sido codificados pelo encoder da Rede Siamesa.

Primeiramente, o algoritmo irá calcular a média da similaridade de cosseno de cada produto (representado por uma linha na matriz) com todos os outros. Basicamente, é calculada a similaridade de cosseno de um produto para todos os outros e na sequência é retirada uma média dos valores obtidos como mostrado nas equações (2) e (3).

O Resultado será um vetor de tamanho N (quantidade total de produtos), onde cada elemento é a média de similaridade de um produto. Em seguida, é calculado a média deste vetor resultante (M) e o seu desvio padrão (d).

E finalmente, um produto é considerado como anomalia se a sua média de similaridade for menor que a média das médias de similaridade de todos os produtos (M), menos duas vezes o desvio padrão (d).

Para determinar o score de cada produto — valor para quantificar a confiança de um produto ser anomalia — se subtraiu a Média de similaridade de cada produto da Média de todos os produtos (M), menos duas vezes o desvio padrão.

Assim, todos os produtos que foram classificados como anomalias terão scores negativos, enquanto os produtos classificados como não anomalias terão scores positivos. Quanto maior o score do produto, mais confiança de que produto não é anomalia.

Como os scores desse algoritmo irão ser comparados com os scores de outros algoritmos para se chegar a um veredito final, foi necessário normalizar os scores para que todos os valores ficassem no intervalo entre [-1,1]. Para isso, foi utilizada a classe MinMaxScaler da biblioteca scikit-learn.

DBSCAN

O DBSCAN é um algoritmo de clusterização utilizado para identificar clusters com alta densidade. A ideia é que dado uma classe, os produtos que pertencem a ela ficarão próximos no espaço vetorial, formando um cluster com alta densidade.

As anomalias ficariam distantes no espaço vetorial e não pertenceriam a nenhum cluster, sendo considerados outliers. O algoritmo irá receber uma matriz de entrada que podem ser os títulos dos produtos após a codificação pelo Modelo FastText ou as imagens dos produtos depois da codificação pelo encoder da Rede Siamesa.

O DBSCAN necessita de dois hiperparâmetros, o Epsilon que é a distância máxima para que dois itens sejam considerados próximos e min_samples, que é a quantidade mínima de itens próximos para que um cluster seja formado. O hiperparâmetro min_samples foi definido em 5% do tamanho do total data set, sendo que a quantidade mínima de itens necessária é 5.

Para determinar o hiperparâmetro Epsilon, o seguinte algoritmo é executado:

  1. A função NearestNeighbors da biblioteca sklearn é executada para encontrar os min_samples produtos mais próximos para cada um, utilizando a distância de cosseno;
  2. É calculado a média das distâncias de cosseno de cada produto para seus min_samples produtos mais próximos;
  3. É calculado a média das médias dos produtos (Mp) e o seu desvio padrão (Dp);
  4. O valor de epsilon será Mp + Dp.

O algoritmo DBSCAN da biblioteca scikit-learn pode ser utilizado para fazer a detecção de anomalias. No caso, o algoritmo retorna em quais clusters cada produto foi alocado. Os itens que não forem alocados em nenhum cluster seriam considerados outliers.

O problema é que o algoritmo não retorna nenhuma métrica para quantificar o quão distante um produto outlier ficou de um cluster. Esse tipo de métrica seria útil para fazer uma média dos scores com os outros algoritmos. Neste caso, os seguintes procedimentos foram feitos para determinar o score de um produto — métrica para identificar a confiança de um produto ser anomalia — no DBSCAN:

  1. Utiliza o DBSCAN no conjunto de produtos;
  2. Identifica-se quais produtos formam os núcleos do clusters (produtos que possuem mais de min_samples vizinhos a uma distância menor que epsilon, também chamados de core points);
  3. Para cada produto, calcula-se a distância de cosseno para o core point mais próximo(Pdist);
  4. O Score do produto será epsilon — Pdist.

Ou seja, quanto mais distante um produto estiver do seu core_point mais próximo e maior será seu Pdist e, consequentemente, mais negativo o seu score.

Com o objetivo de diminuir os falso-positivos (produtos normais categorizados como anomalias), foi definido que um item deve ter ao menos 5% do conjunto de produtos como vizinhos para se tornar um core point.

Sendo que esse conjunto de 5% contenha pelo menos 5 produtos, ou seja, o tamanho do conjunto para rodar o DBSCAN, não deve ser menor que 100. No caso de existir menos de 100 produtos no conjunto e os exemplos de referência tiverem sido passados, uma união dos produtos de referência com o conjunto de produtos é feita para a execução do DBSCAN.

Caso após a união o conjunto de produtos não tenha no mínimo 100 produtos, o algoritmo retorna nenhuma anomalia, com os scores dos produtos em 0.

Rede Siamesa

O terceiro algoritmo para fazer a detecção de anomalias é utilizar a segunda parte da rede siamesa (predict_model).

A ideia é utilizar produtos de referência - produtos que se têm alta confiança de que pertencem e este conjunto de produtos (estrutura mercadológica)- e compará-los com os produtos que desejamos fazer a predição utilizando o predict_model.

O algoritmo recebe de entrada dois conjuntos de imagens: o primeiro que se deseja saber se são ou não anomalias depois de terem passados pelo Features_model e o segundo com produtos de referência depois de terem passados pelo Features_model.

Vale a pena notar que esse algoritmo é utilizado apenas para detectar anomalias usando as imagens, uma vez que o predict_model foi treinado apenas as imagens dos produtos.

Para cada produto do primeiro conjunto, a rede siamesa vai calcular a similaridade para cada produto do segundo conjunto. Em seguida, será calculado uma média de similaridade deste produto. Caso a média de similaridade for menor que 0.5, ele será considerado como anomalia. A Figura 3 ilustra o processo do cálculo do score de um produto P1 utilizando a rede siamesa.

Figura 3: Cálculo do Score de um produto utilizando a Rede siamesa.

Modelo Conjunto

Cada Algoritmo utilizado irá estabelecer um score para cada produto que quantificará a confiança de um determinado produto como anomalia ou não. Como utiliza-se três algoritmos diferentes, cada um deles irá atribuir um score diferente para cada produto.

Sendo que os scores dos algoritmos foram normalizados de forma que fiquem no intervalo de -1 a 1, para determinar o score final usa-se a média dos scores dos algoritmos.

No caso, para determinar o score de anomalia de um produto considerando-se o texto do produto, será feito a média dada pelo DBSCAN com o score fornecido pela Similaridade de Cosseno, como mostrado na equação (7).

Já para determinar o score de anomalia pautando-se nas imagens dos produtos, será feita a média dos scores dos três algoritmos descritos como mostrado na equação (8).

O score de anomalia final de um produto é a média entre o score de texto e o score de imagem, como apresentando na equação (9). Quanto menor o score final de um produto, maior é a confiança de que este item é anômalo. Nos resultados são considerados como anomalias todos os produtos com score final menor que 0.

Resultados

O Método de detecção de anomalias utilizado antes da abordagem descrita neste artigo referia-se apenas aos títulos dos produtos. De forma resumida, empregava-se TF-IDF (Term Frequency — Inverse Document Frequency) como métrica de distância das palavras do título e a similaridade de cosseno para analisar a semelhança entre um produto para todos os outros.

Os itens que possuíssem uma média de similaridade menor que dois desvios padrões em comparação com as demais seriam considerados como anomalias.

Para analisar o benefício de performance do método atual em relação ao método antigo, foi utilizado um conjunto de dados anotados manualmente para proceder com a comparação.

Foi coletada uma amostra de dados do departamento de games, mais especificamente da categoria de Consoles Xbox One, e foi considerado como anomalia qualquer produto que não deveria estar presente nesta categoria específica. A tabela abaixo mostra mais informações sobre o Dataset.

Utilizando o Dataset Consoles Xbox One como conjunto de entrada, a abordagem anterior não havia encontrado nenhuma anomalia. Utilizando o método descrito neste artigo, obteve-se os seguintes resultados:

Figura 4: Matriz de Confusão do Modelo aplicado ao dataset de Consoles Xbox.

Observando a tabela acima, nota-se que a abordagem foi capaz de identificar cerca de 30% (Recall) de todas as anomalias presentes no Dataset de teste com uma precisão muita alta.

Ou seja, dificilmente o detector de anomalias vai acusar um produto regular de ser anomalia, o que é adequado para o nosso caso de uso, pois não é desejado que um produto regular seja retirado de sua categoria.

Existem algumas ideias que podem ser testadas a fim de aprimorar o modelo como tentar utilizar a descrição e o preço dos produtos como novos atributos para serem utilizados na detecção de anomalias. Essas e outras ideias poderão ser implementadas futuramente.

Resumo

Este artigo contém um resumo do trabalho que foi desenvolvido dentro da B2W para fazer a identificação de produtos Anômalos no E-Commerce. A solução proposta foi utilizar um Ensemble Model composto de três algoritmos que fazem a detecção de outliers dentro de um conjunto.

Referências

Koch, Gregory, Richard Zemel, and Ruslan Salakhutdinov. “Siamese neural networks for one-shot image recognition.” ICML deep learning workshop. Vol. 2. 2015.

Bojanowski, Piotr, et al. “Enriching word vectors with subword information.” Transactions of the Association for Computational Linguistics 5 (2017)

Bromley, Jane, Bentz, James W, Bottou, L ́eon, Guyon,Isabelle, LeCun, Yann, Moore, Cliff, S ̈ackinger, Ed-uard, and Shah, Roopak. Signature verification using asiamese time delay neural network.International Journal of Pattern Recognition and Artificial Intelligence, 1993.

Se você busca uma oportunidade de desenvolvimento, trabalhando com inovação em um negócio de alto impacto, acesse o portal B2W Carreiras! Nele, você consegue acessar todas as vagas disponíveis. Venha fazer parte do nosso time!

--

--