• Nenhum resultado encontrado

Análise de padrões para a identificação de fraudes em compras feitas por bots

N/A
N/A
Protected

Academic year: 2021

Share "Análise de padrões para a identificação de fraudes em compras feitas por bots"

Copied!
64
0
0

Texto

(1)

BRUNO SILVEIRA GUILHERME BATTISTELLA

ANÁLISE DE PADRÕES PARA A IDENTIFICAÇÃO DE FRAUDES EM COMPRAS FEITAS POR BOTS

Florianópolis 2018

(2)

ANÁLISE DE PADRÕES PARA A IDENTIFICAÇÃO DE FRAUDES EM COMPRAS FEITAS POR BOTS

Trabalho de Conclusão de Curso apresentado ao Curso de Graduação em Sistemas de Informação da Universidade do Sul de Santa Catarina, como requisito parcial à obtenção do título de Bacharel em Sistemas de Informação.

Orientador: Prof. Flávio Ceci, Dr.

(3)
(4)

Com o aumento da busca por produtos e serviços online, naturalmente o aumento de compras se tornou cada vez maior nos últimos anos. No mesmo ritmo que as compras online aumentaram, também aumentou-se o número de compras fraudulentas. Um dos tipos de compras fraudulentas são as compras efetuadas por bots. Cada vez mais os bots procuram simular um usuário real efetuando uma compra, tornando-se difícil diferenciar quando é um usuário normal ou um bot. Baseado neste problema o trabalho tem como objetivo diferenciar compras efetuadas por bots e por humanos. No desenvolvimento da pesquisa foi optado pela utilização de Machine Learning para fazer identificação de padrões, mais especificamente o classificador Naive Bayes. Foram utilizadas etapas metodológicas como o levantamento de requisitos, escolha de ferramentas, fazendo a modelagem com a metodologia ICONIX. Para o desenvolvimento foram utilizados linguagem de programação Java, a biblioteca Javalin, SQLite como base de dados, Python, a biblioteca Selenium e o GeckoDriver.

(5)

1 INTRODUÇÃO ... 8 1.1 PROBLEMÁTICA ...8 1.2 OBJETIVOS ...9 1.2.1 Objetivo Geral ...9 1.2.2 Objetivos Específicos ...10 1.3 JUSTIFICATIVA ...10 1.4 ESTRUTURA DA MONOGRAFIA ...11 2 FUNDAMENTAÇÃO TEÓRICA ... 12 2.1 APRENDIZADO DE MÁQUINA ...12 2.1.1 Aprendizado supervisionado...14 2.1.2 Aprendizado Semi-Supervisionado ...16 2.1.3 Aprendizado Não-Supervisionado ...19 2.2 CLASSIFICAÇÃO BAYESIANA ...21

2.2.1 Usando Teoría de Bayes para Determinar Pedidos Fraudulentos ...21

2.2.1.1 Probabilidades Condicionais ... 22

2.2.1.2 Probabilidade Condicional Inversa ... 23

2.2.2 Classificador Bayesiano Ingênuo ...24

2.2.2.1 A regra da Corrente ... 24

2.2.2.2 Ingenuidade no Raciocínio Bayesiano ... 25

2.2.2.3 Pseudocount ... 26

3 MÉTODO... 28

3.1 CARACTERIZAÇÃO DO TIPO DE PESQUISA ...28

3.2 ATIVIDADES METODOLÓGICAS ...29

3.3 DELIMITAÇÕES ...30

4 PROPOSTA DE SOLUÇÃO ... 31

4.1 DEFINIÇÃO DE TÉCNICA E METODOLGIA ...31

4.1.1 Prototipação ...31

4.1.2 Unified Modeling Language ...32

4.1.3 ICONIX ...34

4.2 MODELAGEM DO SISTEMA PROPOSTO ...35

4.2.1 Loja Virtual. ...35

(6)

4.2.1.4 Casos de uso. ... 37 4.2.1.5 Diagrama de Classes. ... 38 4.2.1.6 Prototipação. ... 39 4.2.2 Bot. ...43 4.2.2.1 Atores. ... 43 4.2.2.2 Requisitos Funcionais. ... 43

4.2.2.3 Requisitos Não Funcionais. ... 43

4.2.2.4 Diagrama de atividade. ... 44 4.3 FERRAMENTAS UTILIZADAS ...46 4.3.1 Loja Virtual ...46 4.3.1.1 Java ... 46 4.3.1.2 Javalin ... 47 4.3.1.3 SQLite ... 47 4.3.2 Bot ...47 4.3.2.1 Python ... 48 4.3.2.2 Selenium ... 48 4.3.2.3 GeckoDriver ... 48 5 DESENVOLVIMENTO ... 49 5.1 DINÂMICA DO DESENVOVIMENTO ...49 5.2 ETAPAS DO DESENVOLVIMENTO ...49 5.2.1 Loja ...50 5.2.2 Bot ...50 5.2.3 Bayes ...51 5.3 EXPERIMENTO ...52 5.3.1 Loja ...54 5.3.2 Bot ...55 5.3.3 Bayes ...56 5.4 RESULTADOS ...57 5.4.1 Tempo de Foco ...58 5.4.2 Matriz de Confusão...59

5.4.3 Análise dos resultados...59

6 CONCLUSÕES E TRABALHOS FUTUROS... 60

6.1 CONCLUSÕES ...60

(7)
(8)

1 INTRODUÇÃO

Comumente sites de vendas de tickets de eventos, shows entre outros, são alvos de programas especializados em efetuar compras, alguns destes programas são conhecidos como bots. “Em um dia normal, a Akamai monitora mais de 2,750 requisições feitas por bots por segundo, que acaba representando mais de 30 por cento de todo o tráfego web (excluindo streaming de vídeo) que passa pela sua plataforma.”, (AKAMAI, 2017, p. 1, tradução nossa).

Segundo Dunham e Melnick (2009), bot (abreviatura para robots), são softwares criados para automatizar uma tarefa repetitiva de uma forma similar a um humano. Existem utilizações legítimas como testes automatizados de software, garantia de qualidade e de disponibilidade, mas os bots também podem ser utilizados para fins maléficos.

Estes bots são programados para preencher os formulários da venda de ingressos em milésimos de segundo e adquirir ingressos de maior interesse no instante em que entram à venda, ao passo que um humano leva um tempo muito maior para fazer o mesmo. Estes tickets adquiridos acabam sendo revendidos por um preço maior do que o estipulado inicialmente pela vendedora oficial. Os bots mais complexos são programados para se mascarar como um usuário comum e abrir milhares de pedidos nos servidores a partir de milhares de endereços de IP diferentes assim, no caso de venda de tickets para shows e eventos, obtendo uma grande parte da quantidade de tickets disponível para compra no lote.

1.1 PROBLEMÁTICA

Com a crescente comodidade que é oferecida por sites de e-commerce para seus clientes pode-se observar cada vez mais um aumento de compras que são efetuadas online. No caso de compras de tickets para shows ou eventos, há anos já se observa um grande volume de vendas. De acordo com Courty (2003, p. 3):

Considerando apenas o mercado de concertos musicais, a Amusement Business estima que em 2000 foram vendidos 44.3 milhões de ingressos mundialmente, totalizando quase 1.6 bilhões de libras. A maior companhia de venda de ingressos do mundo, a Ticketmaster, vendeu 86.7 milhões de tickets em 2001 com um valor aproximado de 3.6 bilhões de libras. De acordo com a

(9)

Forrester Research, o mercado de ingressos nos Estados Unidos movimentou 15.5 bilhões de libras em 1999

Neste mercado milionário existe um problema conhecido pelo termo em inglês de “Ticket Scalping” que é o ato de comprar tickets de um vendedor autorizado e revender num mercado secundário. Muitas vezes esta tarefa não é realizada por um ser humano e sim por um bot que tem como objetivo comprar o mais rápido possível quando um lote é liberado, os lugares mais concorridos, para serem revendidos por um valor maior do que o comprado. Isto gera um problema, pois pessoas reais acabam ficando frustradas por não conseguirem comprar ingressos para elas mesmas. Existe um intermediário que está lucrando ilegalmente e isso gera uma má imagem para o site que está vendendo o ticket. Segundo Santiago (2014, p. 5):

Dado o alto volume de transações com as quais essas empresas precisam lidar, torna-se clara a necessidade de métodos computacionais para detecção de transações fraudulentas, visto que a utilização estrita de verificações manuais é inviável para lidar com tal volume de transações.

Logo tem-se a pergunta de pesquisa: Como diferenciar um usuário real de um bot em um processo de compra online?

1.2 OBJETIVOS

Nesta seção são apresentados os objetivos do trabalho proposto, tanto geral quanto os específicos.

1.2.1 Objetivo Geral

Este trabalho tem o objetivo de desenvolver um protótipo que permita a análise de padrões na identificação de fraudes em compras pela internet feitas por bots.

(10)

1.2.2 Objetivos Específicos

Os objetivos específicos deste trabalho são:

 Construir uma base de padrões de fraudes que possa ser utilizada como meio para a análise.

 Identificar algoritmos de reconhecimento de padrão que possam auxiliar no domínio de aplicação.

 Desenvolver um protótipo funcional que permita a avaliação do algoritmo escolhido.

 Avaliar o protótipo desenvolvido a partir de um experimento.

1.3 JUSTIFICATIVA

O desenvolvimento deste trabalho tem como premissa o aprofundamento em técnicas de análise e detecção de bots e fraudes dos autores, tanto quanto nas práticas de desenvolvimento de sistemas web como na área inteligência artificial.

De acordo com Almeida, et al (2014, p. 2), é esperado que a população de bots, como crawlers, shopbots, pricebots e agentes de softwares autônomos interagindo com a internet e e-business, continue a crescer significativamente no futuro.

O fato de desenvolver este tema veio a partir da necessidade de criar formas de mitigar as ações de bots que tem propósitos de se passarem por usuários normais, que acabam frustrando tanto o usuário, por não conseguir efetuar uma compra, quanto lojas on-line de vendas de tickets, que tem seus tickets revendidos de uma forma injusta. Segundo Santiago (2014, p. 5):

Nos últimos anos, tem-se observado um aumento significativo no volume de transações financeiras realizada pela internet. Esse crescimento no volume financeiro, associado à fragilidade inerente à ausência de verificações básicas, possíveis somente em transações do mundo físico, tem atraído atenção de pessoas com objetivo de obter vantagens financeiras de forma ilícita.

(11)

1.4 ESTRUTURA DA MONOGRAFIA

Neste capítulo 1 apresentou-se a problemática, objetivo geral, objetivos específicos e a justificativa do trabalho.

No capítulo 2 será apresentada a fundamentação teórica. No capítulo 3 encontra-se a metodologia do trabalho. No capítulo 4 será apresentada a proposta de solução. No capítulo 5 será apresentado o experimento.

(12)

2 FUNDAMENTAÇÃO TEÓRICA

Neste capítulo é apresentada a fundamentação teórica que foi utilizada para elaboração deste trabalho.

2.1 APRENDIZADO DE MÁQUINA

Segundo Rezende (2003, p. 89) “Aprendizado de Máquina é uma área da IA que cujo o objetivo é o desenvolvimento de técnicas computacionais sobre o aprendizado bem como a construção de sistemas capazes de adquirir conhecimento de forma automática.”

Um sistema de aprendizado é um programa de computador que toma decisões baseado em experiências acumuladas por meio da solução bem-sucedida de problemas anteriores. (REZENDE, p. 89, 2003)

Já Kirk (2014, p. 15) fala que aprendizado de máquina é a interseção entre ciência da computação teoricamente sólida e dados praticamente ruidosos. Essencialmente, trata-se de máquinas interpretando dados de uma forma muito semelhante à humanos interpretam.

Aprendizado de Máquina é um tipo de inteligência artificial, ele pode ser tanto um algoritmo como um método que tem como função extrair padrões de dados. (KIRK, p. 15, 2014).

Em um programa de aprendizado indutivo tem como objetivo mostrar um conjunto de sentenças para a Hipótese, satisfazendo a restrição de consequência lógica. (RUSSELL, p. 910, 2013)

Para Rezende (2003, p.91) o aprendizado pode ser dividido em supervisionado e não-supervisionado.

(13)

Figura 1 – Hierarquia do aprendizado

Fonte: Rezende (p. 91, 2003)

Conforme Rezende (2003, p. 91), no aprendizado supervisionado é fornecido ao algoritmo de aprendizado, ou indutor, um conjunto de exemplos de treinamento para os quais o rótulo de classe associado é conhecido.

No entanto “Já o aprendizado não-supervisionado, o indutor analisa os exemplos fornecidos e tenta determinar se alguns deles podem ser agrupados de alguma maneira, formando agrupamentos ou clusters”. (REZENDE, 2003, p. 91)

Segundo Chapelle (2006, p. 2):

Aprendizado Semi-Supervisiondo é um meio termo entre o aprendizado supervisionado e o não supervisionado. Além da informação não catalogada, é fornecido ao algoritmo algumas informações de supervisão - mas não necessariamente para todos os exemplos. Muitas vezes, essa configuração padrão de informações serão os alvos associados a alguns dos exemplos.

Como afirma Rezende (2003, p. 90) ainda que o aprendizado de máquina seja uma ferramenta poderosa para a aquisição automática de conhecimento, deve-se observar que não existe um único algoritmo que apresente o melhor desempenho para todos os problemas.

Assim, Rezende (2003, p. 90) complementa que “é importante compreender o poder e a limitação dos diversos algoritmos de aprendizado de máquina utilizando alguma

(14)

metodologia que permita avaliar os conceitos induzidos por esses algoritmos em determinados problemas”.

Em seguida é discutido a diferença entre aprendizado supervisionado e não supervisionado.

2.1.1 Aprendizado supervisionado

Conforme Duda (2000, p. 16), na aprendizagem supervisionada, um professor provê um rótulo de categoria ou um custo para cada padrão em um conjunto de treinamento, e procura-se reduzir a soma dos custos destes padrões.

Em relação a tal aspecto “na aprendizagem supervisionada, o agente observa alguns exemplos de pares de entrada e saída, e aprende uma função que faz o mapeamento da entrada para a saída” (RUSSEL, 2009, p. 808).

Deste modo “aprendizagem supervisionada, ou aproximação de função, é simplesmente ajustar os dados a uma função de qualquer finalidade. Por exemplo, levando em consideração os pontos ruidosos mostrados na figura 2, pode-se encaixar uma linha que os aproxima”. (KIRK, 2014, p. 16)

Figura 2 - Uma linha ajustada a alguns dados aleatórios

(15)

Alguns exemplos de técnicas tradicionais de aprendizado supervisionado são:

 Árvores de Decisão: “Uma árvore de decisão representa uma função que toma como entrada um vetor de valores de atributos e retorna uma “decisão” — um valor de saída único.” (RUSSEL, 2013 p. 811)

“É fácil perceber que a árvore pode ser representada como um conjunto de regras. Cada regra tem seu início na raiz da árvore e caminha até uma de suas folhas.” (REZENDE, p. 119, 2003)

Segundo Quinlan (1986, apud CUPERTINO, 2014, p.17) Uma árvore de decisão é uma estrutura simples recursiva para expressar um processo de classificação sequencial em que um caso, descrito por um conjunto de atributos, é atribuído a um conjunto de classes disjuntas. Cada folha da árvore denota uma classe. Um nó interno indica um teste em um ou mais atributos com uma árvore de decisão subsidiária para cada resultado possível do teste. Para classificar o caso, começamos na raiz da árvore. Se este nó for uma folha, o caso é atribuído à classe nomeada; se for um teste, o resultado para este caso é determinado e o processo continua com a árvore subsidiária apropriada para esse resultado.

“Uma árvore de decisão (ou AD) é uma estrutura de dados definida recursivamente como:

- Um nó folha que corresponde a uma classe ou

- Um nó de decisão que contém um teste sobre algum atributo. Para cada resultado do teste existe uma aresta para uma subárvore. Cada subárvore tem a mesma estrutura que a árvore.” (REZENDE, 2003, p. 119)

 Modelos gráficos probabilísticos (Redes Bayesianas): Segundo Russell et al (1995, p. 600) As redes bayesianas podem representar essencialmente qualquer distribuição de probabilidade conjunta completa e, em muitos casos, muito concisamente. Uma rede bayesiana é um grafo orientado em que cada nó é identificado com informações de probabilidade quantitativa. Cada nó corresponde a uma variável aleatória, que pode ser discreta ou contínua. Um conjunto de vínculos orientados ou setas conectam pares de nós. Se houver uma seta do nó X até o nó Y, X será denominado pai de Y.

(16)

O grafo não tem ciclos orientados (e, portanto, é um grafo acíclico orientado, ou GAO). Cada nó Xi tem uma distribuição de probabilidade condicional P(Xi | Pais(Xi )) que quantifica o efeito dos pais sobre o nó.

 Redes Neurais Artificiais: As redes neurais são compostas por nós ou unidades, como pode-se observar na figura 3, conectadas por ligações direcionadas. Uma ligação da unidade i para a unidade j serve para propagar a ativação ai de i para j.8 Cada ligação também tem um peso numérico wi, j associado a ele, que determina a força e o sinal de conexão. (RUSSELL, 2013, p. 843)

Figura 3 – Esquema de um nó em uma rede neural

Fonte: (Russel, p. 843, 2013)

Em seguida é discutido o conceito de aprendizado semi-supervisionado.

2.1.2 Aprendizado Semi-Supervisionado

Para Chapelle (2006, p. 2) A aprendizagem semi-supervisionada (SSA) está no meio do caminho entre a aprendizagem supervisionada e a não supervisionada. Além dos dados não rotulados, o algoritmo é fornecido com algumas informações de supervisão - mas não necessariamente para todos os exemplos.

Chapelle (2006, p. 2) acrescenta que um conjunto de dados X = (xi) i∈ [n] pode ser dividido em duas partes: os pontos Xl: = (x1,..., Xl), para os quais os rótulos Yl: = (y1,..., yl) são fornecidos, e os pontos Xu: = (xl + 1,..., xl + u), cujos rótulos não são conhecidos.

(17)

É importante ressaltar que “na aprendizagem semi-supervisionada, são dados alguns poucos exemplos rotulados e deve-se fazer o que puder de uma grande coleção de exemplos não rotulados.” (RUSSEL, 2013, p.808)

Segundo RUSSEL (2013, p. 695):

Mesmo os rótulos em si podem não ser as verdades oraculares que esperamos. Imagine que você está tentando criar um sistema para adivinhar a idade de uma pessoa a partir de uma foto. Você recolhe alguns exemplos rotulados tirando fotos de pessoas e perguntando sua idade. Isso é aprendizado supervisionado. Mas na realidade algumas pessoas mentiram sobre sua idade. Não é apenas que há ruído aleatório nos dados; em vez disso, as imprecisões são sistemáticas, e descobri-las é um problema de aprendizado não supervisionado envolvendo imagens, idades auto relatadas e idades verdadeiras (desconhecidas). Assim, tanto o ruído quanto a falta de rótulos criam um continuo entre o aprendizado supervisionado e o não supervisionado.

Chapelle (2006 p. 11) comenta que um exemplo seria os casos de reconhecimento de fala, não custa quase nada armazenar os áudios gravados, mas para categorizá-los requer um ser humano para ouvi-los.

Desse modo “para caracterizar uma tarefa semi-supervisionada e diferenciá-la do paradigma utilizado, o número de amostras rotuladas é geralmente maior do que o número de amostras não rotuladas, ou seja, n << m.” (CUPERTINO, 2014, p. 18)

A Figura 4 retrata um exemplo de semi-supervisionado.

Figura 4: Ilustração da classificação transdutiva semi-supervisionada. (a) Rotulado e não rotulado dados. (b) Regiões de influência que mostram que todos os dados, rotulados e não rotulados, são em conta no processo de classificação. c) Resultado da classificação.

(18)

Devido a essa característica peculiar, alguns pressupostos relativos à distribuição dos dados devem ser levados em consideração para conduzir o processo de aprendizagem. CHAPELLE (2006, apud CUPERTINO, 2014, p.17)

Essas suposições podem ser declaradas da seguinte forma:

Suposição múltipla: Os dados de alta dimensão estão aproximadamente em uma variedade de baixa dimensão. Um problema característico de muitos métodos estatísticos e algoritmos de aprendizagem é a chamada maldição de dimensionalidade. Devido ao volume crescer exponencialmente com o número de dimensões, e um número exponencialmente crescente de exemplos é necessário para tarefas estatísticas, como a estimativa confiável de densidades. (CHAPELLE, 2000, p. 6)

Transdução: “Ao tentar resolver algum problema, não se deve resolver um problema mais difícil como um passo intermediário. [...] Modelos gerativos estimam a densidade de x como um passo intermediário, enquanto os métodos discriminativos estimam diretamente os rótulos.” (CHAPELLE, 2000, p.7)

Suposição da Suavidade: Caso dois pontos estão próximos em uma região de alta densidade, então os rótulos correspondentes devem estar próximos um do outro como uma roda. Então essa suposição afirma que as variações de rótulos de dados em regiões de alta densidade devem ser uniformes. (CHAPPELE, 2006, apud CUPERTINO, 2014, p.20)

Suposição de cluster: Se os pontos estiverem no mesmo cluster, provavelmente eles serão da mesma classe. Essa suposição pode ser considerada razoável com base na simples existência de classes. Considerando um contínuo densamente povoado de objetos, pode parecer improvável que eles tenham sido classificados em diferentes classes. A suposição de cluster não implica que cada classe forma um cluster único e compacto, significa apenas que, geralmente, se não observa objetos de duas classes distintas no mesmo cluster. (CHAPELLE, 2000, p.6)

Modelos Gerativos: Usando um modelo generativo envolve a estimativa da densidade condicional p (x | y). Neste quesito, qualquer informação adicional em p (x) é útil. Como um exemplo simples, assume que p (x | y) é gaussiano. Então pode-se usar o algoritmo EM para encontrar os parâmetros do Gaussian correspondentes a cada classe. A única diferença para o algoritmo EM padrão usado para armazenamento em cluster é que a "variável oculta"

(19)

associada a qualquer exemplo rotulado não está realmente oculta, mas é conhecida e iguala seu rótulo de classe. (CHAPELLE, 2006, p. 8)

Auto treinamento: O auto treinamento é um processo iterativo, no qual o aluno imputa os rótulos de exemplos classificados com confiança na etapa anterior. Amini e Gallinari (2002) analisaram essa técnica e mostraram que ela é equivalente a uma versão do algoritmo EM de classificação (Celeux e Govaert, 1992), que minimiza a probabilidade de privação da entropia da partição. (CHAPELLE, 2006, p. 159)

Como afirma Chapelle (2006, p. 11) “o aprendizado semi-supervisionado é mais útil nos casos onde há muito mais dados não categorizados do que categorizados. Isto é especialmente comum em casos onde é fácil obter-se dados, mas categorizá-los é uma tarefa demorada, custosa ou cara.”

2.1.3 Aprendizado Não-Supervisionado

Na concepção de Russell (2013, p. 808) “Na aprendizagem não supervisionada, o agente aprende padrões na entrada, embora não seja fornecido nenhum feedback explícito”.

Kirk (2014, p.17) complementa que “Aprendizado não supervisionado envolve descobrir o que torna os dados especiais. Por exemplo, se nos fosse fornecido vários dados, pode-se agrupá-los em grupos por semelhança ou até determinar quais variáveis são melhores que as outras”.

Duda (2000, p.16) conceitua que “No aprendizado ou agrupamento não supervisionado, não há um professor explícito, e o sistema forma agrupamentos ou "agrupamentos naturais" dos padrões de entrada”.

A aplicação mais conhecida do aprendizado não supervisionado é o agrupamento de dados. O clustering é usado de forma onipresente na mineração de dados como um método para descobrir subconjuntos novos e acionáveis dentro de um conjunto de dados. A figura 5 demonstra um exemplo de clustering simples. (CUPERTINO, 2014, p. 22)

(20)

Figura 5 – Ilustração do processo de clustering. Dados não rotulados em (a) são agrupados em dois grupos em (b).

Fonte: Cupertino (2014, p. 22)

Segundo Kaufmann (2011, p. 444):

A análise de cluster ou simplesmente clustering é o processo de particionamento de um conjunto de objetos de dados (ou observações) em subconjuntos. Cada subconjunto é um cluster, de tal forma que os objetos em um cluster são semelhantes uns aos outros, mas diferentes de objetos em outros clusters. Nesse contexto, diferentes métodos de cluster podem gerar diferentes agrupamentos no mesmo conjunto de dados. O particionamento não é realizado por humanos, mas pelo algoritmo de clustering. Portanto, o armazenamento em cluster é útil, pois pode levar à descoberta de grupos anteriormente desconhecidos nos dados.

Kaufmann (2011, p. 445) acrescenta que clustering também pode ser chamado de segmentação de dados devido a sua habilidade de separar os dados em grupos levando em conta as similaridades entre eles. Logo, a técnica de clustering pode ser utilizada para encontrar dados isolados, onde estes podem ser os dados mais relevantes para análise do que os casos que foram agrupados. Uma aplicação de detecção de dados isolados é a detecção de fraudes com cartões de crédito, onde transações com compras muito caras e pouco frequentes podem ser consideradas como possíveis atividades fraudulentas.

(21)

2.2 CLASSIFICAÇÃO BAYESIANA

Lembre-se das caixas de e-mail há vários anos atrás. Era comum estarem cheias de spam. Este problema tornou-se uma questão tão importante que se perdia muito tempo filtrando Spam. Hoje em dia, gastasse muito menos tempo filtrando spam, graças a ferramentas como o SpamAssassin. Usando um método chamado Classificador Bayesiano Ingênuo, tais ferramentas conseguiram reduzir o fluxo de spam nas caixas de entrada. (KIRK, 2014, p. 51)

Classificação de padrões é uma área que busca a classificação de amostras em subconjuntos de elementos com atributos em comum. O estudo desta técnica busca realizar a distinção entre diferentes padrões dentro de um espaço de observação, e realizar decisões sobre as categorias de padrões observados. Exemplos deste tipo de aplicação tem-se reconhecimentos de letras manuscritas, classificação de imagens nas áreas biométricas, dados de sensoriamento remoto, bio-identificação. (FOSTER, 2011, p. 34)

Russell (2013, p. 33) diz que “Thomas Bayes (1702-1761), propôs uma regra para atualizar probabilidades à luz de novas evidências. A regra de Bayes e o campo resultante, chamado análise bayesiana, formam a base da maioria das abordagens modernas para raciocínio incerto em sistemas de IA.”

Duda (2000, p.3) complementa que:

A teoria da decisão bayesiana é uma abordagem estatística fundamental para o problema da classificação de padrões. Essa abordagem baseia-se em quantificar as compensações entre várias decisões de classificação usando a probabilidade e os custos que acompanham tais decisões. Parte-se da suposição de que o problema de decisão é colocado em termos probabilísticos e que todos os valores de probabilidade relevantes são conhecidos.

No próximo tópico é abordado como usar a teoria de Bayes para determinar o que são pedidos fraudulentos.

2.2.1 Usando Teoría de Bayes para Determinar Pedidos Fraudulentos

Em um caso onde uma loja online está sendo alvo de ladrões e estima-se que cerca de 10% de todos os pedidos recebidos são considerados fraudulentos. O processo de verificação

(22)

de pedidos é feito de um a um e a quantidade de vendas cresce a cada mês e a situação apenas está piorando. É possível observar que a maioria dos pedidos fraudulentos utilizam cartões presente ou códigos promocionais, utilizando este conhecimento como ele pode ajudar a determinar quais pedidos são fraudulentos? Como calcular a probabilidade de fraude quando o comprador utilizou um cartão presente? As probabilidades condicionais podem ajudar a responder estes questionamentos. (KIRK, 2014, p. 51)

2.2.1.1 Probabilidades Condicionais

As probabilidades condicionais podem ser definidas da seguinte forma: 𝑃 (𝐴 | 𝐵) = 𝑃 ( 𝐴 ∩ 𝐵)

𝑃 (𝐵)

Esta definição basicamente diz que a probabilidade de A acontecer dado que B ocorre é a probabilidade de A e B acontecerem divididos pela probabilidade de B. Esta definição pode ser observada graficamente na figura 5. (KIRK, 2014, p. 51)

Figura 5 – Exemplo gráfico da aplicação da fórmula

Fonte – Kirk (2014, p. 53)

Continuando no exemplo da fraude, quer-se avaliar a probabilidade de fraude, dado que um pedido usou um cartão-presente. A utilizando a fórmula da probabilidade condicional seria 𝑃( 𝐹𝑟𝑎𝑢𝑑𝑒|𝑐𝑎𝑟𝑡ã𝑜𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒) = 𝑐𝑎𝑟𝑡ã𝑜𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒 𝑓𝑟𝑎𝑢𝑑𝑒 ( )

( ã ) . Esta fórmula

apenas funcionará se for conhecida a probabilidade de fraude e cartão-presente acontecer. (KIRK, 2014, p. 53)

(23)

Neste ponto, o problema é que não se pode calcular 𝑃(𝑓𝑟𝑎𝑢𝑑𝑒|𝑐𝑎𝑟𝑡ã𝑜𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒) porque não é possível separá-los. Para resolver este problema é utilizado um truque introduzido por Bayes. (KIRK, 2014, p. 53)

2.2.1.2 Probabilidade Condicional Inversa

Em 1700, o Reverendo Thomas Bayes apresentou a pesquisa original que iria se tornar o teorema de Bayes. Pierre-Simon Laplace estendeu a pesquisa de Bayes para produzir o teorema conhecido hoje. O teorema de Bayes diz que:

𝑃(𝐵 | 𝐴) = 𝑃(𝐴 | 𝐵) 𝑃(𝐵) 𝑃(𝐴) Isso é devido ao seguinte:

𝑃(𝐵 | 𝐴) = 𝑃 (𝐴 ⋂ 𝐵) 𝑃(𝐵) 𝑃(𝐵) 𝑃(𝐴) = 𝑃 (𝐴 ⋂ 𝐵) 𝑃 (𝐴)

Isso é útil no exemplo de fraude porque pode-se efetivamente reverter o resultado usando outras informações. Usando o teorema de Bayes, obtem-se:

𝑃(𝑓𝑟𝑎𝑢𝑑𝑒|𝑐𝑎𝑟𝑡ã𝑜𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒) = 𝑃(𝑐𝑎𝑟𝑡ã𝑜𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒|𝑓𝑟𝑎𝑢𝑑𝑒) 𝑃(𝑓𝑟𝑎𝑢𝑑𝑒) 𝑃 (𝑐𝑎𝑟𝑡ã𝑜𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒)

Lembrando que a probabilidade de fraude era de 10% e supondo que a probabilidade de utilização cartões-presente é de 10% e com base em uma pesquisa externa, a probabilidade de uso do cartão de presente em uma forma fraudulenta a ordem é de 60%. Aplicando o teorema de bayes:

𝑃 (𝑓𝑟𝑎𝑢𝑑𝑒|𝑐𝑎𝑟𝑡ã𝑜𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒) = 60% 10%

10% = 60%

Partindo do pressuposto que foram feitos 1000 pedidos e que 100 deles são fraudulentos apenas será necessário analisar aproximadamente 60 pedidos. Dos 900 pedidos remanescentes, utilizando a probabilidade de uso de cartão-presente, 90 deles foram utilizados cartões-presente, trazendo o total de pedidos que devem ser analisados a 150 pedidos. Mas o que fazer caso forem introduzidas situações onde o cliente utiliza múltiplos códigos promocionais? (KIRK, 2014, p. 54)

(24)

2.2.2 Classificador Bayesiano Ingênuo

No tópico anterior foi citado a solução do problema de encontrar pedidos fraudulentos, dado que um cartão-presente foi usado, mas ainda assim não foi resolvido o problema de pedidos fraudulentos com códigos promocionais ou outras condições extras. Ou seja, tem-se a necessidade de resolver o problema de P (A|B, C) = ?. Para isso, a seguir será apresentado a regra da corrente. (KIRK, 2014, p. 54 e 55)

2.2.2.1 A regra da Corrente

Em classe de probabilidade, a probabilidade de A e B acontecendo é a probabilidade de B dado A vezes a probabilidade de A. Matematicamente, isso parece P (A ∩ B) = P (B | A) P (A). Isto está assumindo que esses eventos não são mutuamente exclusivos. Usando algo chamado de probabilidade conjunta, esse resultado menor transforma na regra da cadeia.

Probabilidades conjuntas são a probabilidade de que todos os eventos aconteçam. Denotando isso usando ∩. O caso genérico da regra da cadeia é:

𝑃 (𝐴1, 𝐴2, … , 𝐴𝑛) = 𝑃(𝐴1)𝑃(𝐴2|𝐴1)𝑃(𝐴3|𝐴1, 𝐴2) … 𝑃(𝐴𝑛|𝐴1, 𝐴2, … 𝐴𝑛 − 1) Esta versão expandida é útil na tentativa de resolver o problema alimentando muitas informações nas estimativas de probabilidade Bayesiana. Mas há um problema: isso pode evoluir rapidamente para um cálculo complexo usando informações não se tem, por isso no próximo tópico será abordado Ingenuidade no Raciocínio Bayesiano. (KIRK, 2014, p. 55)

(25)

2.2.2.2 Ingenuidade no Raciocínio Bayesiano

A regra da cadeia é útil para resolver problemas potencialmente inclusivos, mas não tem a capacidade de calcular todas essas probabilidades. Por exemplo, se introduzir várias promoções no exemplo de fraude, então tem-se o seguinte para calcular:

𝑃(𝑓𝑟𝑎𝑢𝑑𝑒|𝑐𝑎𝑟𝑡ã𝑜𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒, 𝑝𝑟𝑜𝑚𝑜) = 𝑃(𝑐𝑎𝑟𝑡ã𝑜𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒|𝑓𝑟𝑎𝑢𝑑𝑒) 𝑃(𝑓𝑟𝑎𝑢𝑑𝑒) 𝑃 (𝑐𝑎𝑟𝑡ã𝑜𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒, 𝑝𝑟𝑜𝑚𝑜)

Ignorando o denominador por enquanto, pois não depende se o pedido é fraudulento ou não. Neste ponto, é necessário encontrar o cálculo para P(cartãopresente, promo|fraude)P(fraude). Aplicando a regra da cadeia, isso é equivalente a P(fraude, cartãopresente,promo). Exemplo:

𝑃(𝑓𝑟𝑎𝑢𝑑𝑒, 𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒, 𝑝𝑟𝑜𝑚𝑜) = 𝑃(𝑓𝑟𝑎𝑢𝑑𝑒)𝑃(𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒, 𝑝𝑟𝑜𝑚𝑜|𝑓𝑟𝑎𝑢𝑑𝑒) = 𝑃(𝑓𝑟𝑎𝑢𝑑𝑒)𝑃(𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒|𝑓𝑟𝑎𝑢𝑑)𝑃(𝑝𝑟𝑜𝑚𝑜|𝑓𝑟𝑎𝑢𝑑𝑒. 𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒)

Enquanto esta é a probabilidade correta, pode ser realmente difícil de medir - especialmente com mais recursos chegando. E se era ser um pouco ingênuo e assumir que pode sair com independência e apenas dizer que não é importante as interações entre os códigos promocionais e cartões-presente, apenas a interação de cada um independentemente com a fraude?

Nesse caso, a matemática seria muito mais simples:

𝑃(𝑓𝑟𝑎𝑢𝑑𝑒, 𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒, 𝑝𝑟𝑜𝑚𝑜) = 𝑃(𝑓𝑟𝑎𝑢𝑑𝑒)𝑃(𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒|𝑓𝑟𝑎𝑢𝑑𝑒)𝑃(𝑝𝑟𝑜𝑚𝑜|𝑓𝑟𝑎𝑢𝑑𝑒)

Isso seria proporcional ao nosso numerador. E, para simplificar ainda mais as coisas, pode-se afirmar que normalizar mais tarde com algum Z mágico, que é a soma de as probabilidades de aulas. Então agora o modelo se torna:

𝑃(𝑓𝑟𝑎𝑢𝑑𝑒|𝑝𝑟𝑒𝑠𝑒𝑛𝑡𝑒, 𝑝𝑟𝑜𝑚𝑜) = 1

(26)

Para transformar isso em um problema de classificação, simplesmente determinamos qual entrada - fraude ou não fraude - produz a maior probabilidade. Esta definição pode ser observada graficamente na figura 6.

Figura 6 – Probabilidade de cartões de presente versos promo.

Fonte – Kirk (2014, p. 56)

Neste ponto, pode-se usar essas informações para determinar se um pedido é fraudulento baseado puramente em se tem um cartão presente e se usou múltiplos promocionais. A probabilidade de uma encomenda ser fraudulenta, dada a utilização de vales de oferta e promocionais múltiplos é de 62,5%.

Há um problema, no entanto: o que acontece quando a probabilidade de usar múltiplos promocionais dada um pedido fraudulento é zero? Um resultado zero pode acontecer por vários motivos, incluindo que não há apenas um tamanho de amostra suficiente. A maneira de resolver isso é por usando algo chamado pseudocount. Kirk (2014, p. 56)

2.2.2.3 Pseudocount

Há um grande desafio com um Classificador Naive Bayesiano, e essa é a introdução de novas informações. Por exemplo, vários e-mails que são classificados como spam ou ham. É construído probabilidades usando todos esses dados, mas depois algo de ruim acontece: uma nova palavra de spam, fuzzbolt.

(27)

Em nenhum lugar é possível ver a palavra fuzzbolt, e assim quando é calculado a probabilidade de spam dada a palavra fuzzbolt, tem-se uma probabilidade de zero. Isso pode ter um efeito de zeramento que distorcem muito os resultados para os dados que se tem.

Porque um classificador bayesiano ingênuo depende da multiplicação de todas as probabilidades independentes juntos para chegar a uma classificação, se alguma dessas probabilidades são zero então a probabilidade será zero. Esta definição pode ser observada graficamente na figura 7.

Figura 7 – Exemplo, do assunto do e-mail "Fuzzbolt: Prince of Nigeria".

Fonte – Kirk (2014, p. 56)

Supondo que se quer calcular uma pontuação para ham ou spam. Em ambos os casos, A pontuação acabaria sendo zero porque fuzzbolt não está presente, nesse ponto, tem-se um empate.

Isto significa que houve falha e foi classificado algo incorretamente devido a uma palavra não sendo reconhecido. Sendo assim podemos utilizar a solução de: pseudocount.

Quando se calcula a probabilidade, é adicionado um à contagem da palavra. Então, em outras palavras, tudo vai acabar sendo word_count + 1. Isso ajuda a mitigar o efeito de zerar.

No caso para detectar a fraude, adiciona-se um a cada contagem para garantir que nunca seja zero.

Assim, o exemplo anterior, supondo que se tem 3.000 palavras. É dado a fuzzbolt uma pontuação de 1/3000. As outras pontuações mudariam um pouco, mas isso evitaria o problema de zeramento.

(28)

3 MÉTODO

Neste capítulo é abordado o tipo de pesquisa utilizado neste trabalho e definir quais são as etapas metodológicas utilizadas para a conclusão da pesquisa.

3.1 CARACTERIZAÇÃO DO TIPO DE PESQUISA

Nesta monografia é apresentada uma pesquisa aplicada e quantitativa. Segundo Silva e Meneses (2005, p. 20) a pesquisa aplicada é cuja qual “objetiva gerar conhecimentos para aplicação prática e dirigidos à solução de problemas específicos. Envolve verdades e interesses locais”.

Os autores supracitados também dizem que:

A pesquisa quantitativa considera que tudo pode ser quantificável, o que significa traduzir em números opiniões e informações para classificá-las e analisá-las. Requer o uso de recursos e de técnicas estatísticas (percentagem, média, moda, mediana, desvio-padrão, coeficiente de correlação, análise de regressão, etc.).

Quanto aos objetivos este trabalho trata-se de uma pesquisa exploratória pois os autores buscam familiarizar-se com os conceitos de aprendizado de máquina. Conforme Silva e Meneses (2005, p.21) a pesquisa exploratória:

Visa proporcionar maior familiaridade com o problema com vistas a torná-lo explícito ou a construir hipóteses. Envolve levantamento bibliográfico; entrevistas com pessoas que tiveram experiências práticas com o problema pesquisado; análise de exemplos que estimulem a compreensão. Assume, em geral, as formas de Pesquisas Bibliográficas e Estudos de Caso.

Quanto aos procedimentos técnicos este estudo é uma pesquisa bibliográfica pois ele foi elaborado encima de materiais já existentes. Conforme Prodanov e Freitas (2013, p. 54): A pesquisa bibliográfica quando elaborada a partir de material já publicado, constituído principalmente de: livros, revistas, publicações em periódicos e artigos científicos, jornais, boletins, monografias, dissertações, teses, material cartográfico, internet, com o objetivo de colocar o pesquisador em contato direto com todo material já escrito sobre o assunto da pesquisa.

(29)

Na pesquisa bibliográfica, é importante que o pesquisador verifique a veracidade dos dados obtidos, observando as possíveis incoerências ou contradições que as obras possam apresentar (PRODANOV e FREITAS, p. 54)

3.2 ATIVIDADES METODOLÓGICAS

Para o desenvolvimento deste trabalho serão realizadas as etapas contidas na figura 8:

Figura 8: Fluxograma das atividades Metodológicas

(30)

a) Nesta etapa será desenvolvido o processo de compra de um produto em uma loja virtual. Um processo de compra consiste de múltiplos passos como a seleção do produto, inclusão do produto no carrinho de compras, preenchimento de dados do formulário de dados do comprador e a finalização da compra (checkout).

b) Nesta etapa será desenvolvido um bot que realizará todos os passos do processo de compra que seriam realizados por um usuário real.

c) Avaliação de possíveis dados para serem utilizados na aplicação da classificação.

d) Implementação do método de classificação bayesiano utilizando os dados levantados.

e) Realização de testes para validação da implementação feita.

Na próxima secção será abordada as delimitações desta monografia.

3.3 DELIMITAÇÕES

Esta monografia tem como intensão apresentar um protótipo utilizando apenas a classificação bayesiana na detecção de fraudes em lojas virtuais. Não foi utilizada nenhuma outra técnica de inteligência artificial. Não se tem como objetivo desenvolver uma loja virtual por completa, apenas foi desenvolvida a parte de visualização do produto e o processo de checkout e finalização da compra. Não é objetivo deste trabalho desenvolver um software com capacidade de ser comercializado. Não é abordado uma secção específica para bot no capítulo de fundamentação teórica, pois o foco do trabalho é a identificação dos mesmos.

(31)

4 PROPOSTA DE SOLUÇÃO

Neste capítulo, são abordados a definições técnicas, a metodologia, conceitos de UML (Unified Modelling Language) a Orientação a Objeto (OO), o modelo Iconix e o estudo de caso.

4.1 DEFINIÇÃO DE TÉCNICA E METODOLGIA

Segundo Fachin (2005, p. 29) o método é um instrumento do conhecimento que proporciona aos pesquisadores, em qualquer área de sua formação, orientação geral que facilita planejar uma pesquisa, formular hipóteses, coordenar investigações, realizar experiências e interpretai os resultados.

Técnica é o modo de fazer de forma mais hábil, mais segura, mais perfeita algum tipo de atividade, arte ou ofício. [...] A técnica, portanto, assegura a instrumentação específica da ação em cada etapa do método. Este, por seu turno, estabelece o caminho correto para chegar ao fim. (GALLIANO p. 6)

4.1.1 Prototipação

Vazquez (2016, p. 247) ressalta que a prototipação é utilizada para melhorar a experiência do usuário, avaliar opções de design e montar uma base para o desenvolvimento final do produto.

No entendimento de Vazquez (2016, p. 247):

A prototipação é uma técnica que busca simular para o usuário o funcionamento dos seus requisitos antes que o produto final esteja pronto. É um processo iterativo onde se geram versões iniciais de protótipos, e por meio deles o usuário poderá analisar se os seus requisitos estão sendo atendidos e até mesmo descobrir novos requisitos.

(32)

Para este trabalho, a prototipação será apenas aplicada para a loja virtual proposta.

4.1.2 Unified Modeling Language

A UML (Unified Modeling Language) é uma linguagem-padrão para elaboração da estrutura de projetos de software. Ela poderá ser empregada para visualização, a especificação, a construção e a documentação de artefatos que façam uso de sistemas complexos de software. (BOOCH p. 13)

Um diagrama é a apresentação gráfica de um conjunto de elementos, geralmente representadas como gráficos de vértices (itens) e arcos (relacionamentos). São desenhados para permitir a visualização de um sistema sob diferentes perspectivas. (BOOCH p. 26)

Por isso a UML incluir alguns desses diagramas:

1. Diagrama de classes: Um diagrama de classe exibe um conjunto de classes, interfaces e colaborações, bem como seus relacionamentos. (BOOCH p. 26)

2. Diagrama de objetos: exibe um conjunto de objetos e seus relacionamentos. Representa retratos estáticos de instancias de itens encontrados em diagramas de classes. São diagramas que abrangem a visão estática da estrutura ou do processo de um sistema, como ocorre nos diagramas de classes, mas sob perspectiva de casos reais ou de protótipos. (BOOCH p. 27)

3. Diagrama de componentes: exibe uma classe encapsulada e suas interfaces, portas e estrutura interna que consiste de componentes aninhados e conectores. Os diagramas de componentes abrangem a visão de implementação do projeto estático de um sistema. (BOOCH p. 27)

(33)

4. Diagrama de caso de uso: exibe um conjunto de casos de uso e atores (um tipo especial de classe) e seus relacionamentos. Diagramas de caso de uso abrangem a visão estática de casos de uso do sistema. (BOOCH p. 27)

5. Diagrama de sequência: Um diagrama de sequencias é um diagrama de interação cuja a ênfase está na ordenação temporal das mensagens. (BOOCH p. 27)

6. Diagrama de gráfico de estados: exibem uma máquina de estados, formada por estados, transições, eventos e atividades. (BOOCH p. 27)

7. Diagrama de atividade: exibe a estrutura de processo ou outra computação, como o fluxo de controle e os dados de cada etapa de uma computação. (p. 28)

8. Diagrama de implantação: mostra a configuração dos nós de processamento em tempo de execução e os componentes neles existentes. (BOOCH p. 28)

9. Diagrama de artefato: mostra os constituintes físicos de um sistema no computador. (BOOCH p. 28)

10. Diagrama de pacote: mostra a decomposição do próprio modelo em unidades organizacionais e suas dependências. (BOOCH p. 28)

11. Diagrama de temporização: é um diagrama de interação que mostra os tempos reais em diferentes objetos ou papeis, em vez das sequencias de mensagens relativas. (BOOCH p. 28)

(34)

4.1.3 ICONIX

Segundo Doug (2005, p. 41) “O processo ICONIX originou-se vários anos antes da UML e do Processo Unificado como uma síntese e destilação das melhores técnicas das metodologias originais que formaram a UML”.

Doug (2005, p.42) complementa que o ICONIX é um processo sobre como direcionar um design de software a partir de requisitos de comportamento, um passo de cada vez, buscando escrever o manual do usuário de uma forma mínima na forma de casos de uso, sempre verificando que ambos os melhores e piores casos estão sendo contabilizados e que o comportamento que está sendo descrito é o que o usuário requisitou. Também se verifica os objetos (classes) que estão sendo desenhados realmente conseguem atender os requisitos e que eles possuem os atributos e operações necessárias.

Rosenberg (2005, p. 44) diz que o ICONIX pode ser dividido nas seguintes etapas: Etapa 1: identificação dos objetos de domínio do mundo real (Modelagem de domínio).

Etapa 2: Definir os requisitos comportamentais (Casos de Uso).

Etapa 3: Executar a análise de robustez para remover ambiguidades nos casos de uso e identificar possíveis lacunas no modelo de domínio.

Etapa 4: Definir o comportamento dos objetos (Diagramas de Sequência). Etapa 5: Concluir o modelo estático (Diagrama de Classes).

Passo 6: Escrever ou gerar o código. (Código Fonte).

Etapa 7: Executar o teste de aceitação do sistema e do usuário. Na figura 9 é possível observar como as etapas estão relacionadas. Figura 9: Processo ICONIX

(35)

Rosenberg (2005, p 45) ressalta que o processo ICONIX possui quatro estágios onde as etapas supracitadas se encaixam:

1. Revisão dos Requerimentos, que engloba as etapas de identificação dos objetos do domínio do mundo real (etapa 1) e a definição de requisitos comportamentais (etapa 2).

2. Revisão do Desenho Preliminar, que engloba a etapa de execução de análise de robustez (etapa 3).

3. Revisão do Desenho Detalhado/Crítico, que engloba as etapas de definição do comportamento dos objetos (etapa 4) e conclusão do modelo estático (etapa 5).

4. Entrega, que engloba as etapas de escrita/geração do código (etapa 6) e a execução de teste de aceitação (etapa 7).

Para este trabalho será apenas realizado o primeiro estágio do processo ICONIX e apenas encima da parte da loja virtual proposta.

4.2 MODELAGEM DO SISTEMA PROPOSTO

Nesta seção é apresentada a modelagem da loja virtual e do bot.

4.2.1 Loja Virtual.

Nesta seção é apresentado os requisitos, regras de negócio, casos de uso da loja virtual.

(36)

4.2.1.1 Atores.

Atores segundo Booch (2006), representa um conjunto coerente de papeis que os usuários dos casos de uso desempenham quando interagem com esses casos. Os atores podem ser humanos ou sistemas automatizados.

1. Usuário – Utilizado para fazer compras de tickets.

4.2.1.2 Requisitos Funcionais.

Segundo Sommerville (2011, p. 59) requisitos funcionais “são declarações de serviços que o sistema deve fornecer, de como o sistema deve reagir a entradas específicas e de como o sistema deve se comportar em determinadas situações.”

RF001 - O sistema deverá permitir a compra de produtos

RF002 - O sistema deverá apresentar um catálogo para o usuário RF003 - O sistema deverá permitir a compra de múltiplos produtos RF004 - O sistema deverá possuir um carrinho de compras

RF005 - O sistema deverá possuir uma tela onde o usuário possa conferir o carrinho de compras

RF007 - O sistema deverá possibilitar a remoção de produtos do carrinho de compra RF008 - O sistema deverá apresentar uma tela de finalização de compra com um sumário do carrinho

RF009 - O sistema deverá possuir um formulário com nome, endereço e meio de pagamento na tela de finalização da compra

RF010 - O sistema deverá apresentar uma tela de agradecimento ao finalizar a compra

(37)

4.2.1.3 Requisitos Não Funcionais.

Segundo Sommerville (2011, p. 59), requisitos funcionais “São restrições aos serviços ou funções oferecidas pelo sistema. Incluem restrições de timing, restrições no processo de desenvolvimento e restrições impostas pelas normas.

RNF001 - O sistema deverá ser desenvolvido em Java

RNF002 - O sistema não deverá permitir a compra caso for detectado a utilização de um bot

RNF003 - Em caso de falha, o sistema deverá apresentar uma mensagem amigável ao usuário

RNF004 - O sistema deverá ser responsivo

RNF005 - O sistema deverá armazenar as compras efetuadas em um banco de dados SQL

4.2.1.4 Casos de uso.

Segundo Sommerville (2011, p. 74), casos de uso “identifica os atores envolvidos em uma interação e dá nome ao tipo de interação. Essa é, então, suplementada por informações adicionais que descrevem a interação com o sistema”. Na figura 10 é apresentado o caso de uso de uma compra realizada na loja.

(38)

Figura 10 – Caso de uso do fluxo de compra

Fonte: Autores

UC001 - Compra

1. O sistema apresenta a página do catálogo de produtos 2. O usuário clica no botão de detalhes do produto 3. O sistema apresenta a página de detalhes do produto

4. O usuário adiciona o produto no carrinho clicando no botão de adicionar

5. O sistema apresenta a página do catálogo de produtos 6. O usuário clica no botão de finalizar compra

7. O sistema apresenta a página de checkout

8. O usuário preenche os dados requisitados e clica no botão de finalizar

9. O sistema apresenta a tela de agradecimento

4.2.1.5 Diagrama de Classes.

Nesta seção é apresentado o diagrama de classes da loja virtual. Na figura 11 é apresentado o diagrama de classes da loja.

(39)

Figura 11 – Diagrama de classes Loja Virtual.

Fonte: Autores

Em seguida será abordado a prototipação da loja virtual.

4.2.1.6 Prototipação.

Nesta seção é apresentado os protótipos de telas e fluxo da loja virtual. Na figura 12 é apresentado o protótipo o catálogo de produtos onde o usuário poderá navegar para as telas de detalhamento de um produto específico, visualização do atual carrinho de compras e para a tela de finalização da compra.

(40)

Figura 12 –Catálogo de Produtos.

Fonte: Autores

Nesta tela é possível visualizar todos os produtos disponíveis na loja e navegar para a tela de detalhes do produto, visualizar o carrinho ou finalizar a compra. Na figura 13 é apresentado o protótipo do carrinho de compras.

(41)

Figura 13 – Carrinho de compras.

Fonte: Autores

Nesta tela é possível verificar quais produtos foram selecionados e que serão efetivamente comprados ao finalizar a compra. Também é possível navegar para a finalização da compra ou retornar ao catálogo. Na figura 14 é a parte final da loja o formulário de checkout.

(42)

Figura 14 – Checkout.

Fonte: Autores

Nesta tela é possível verificar os produtos que estão sendo comprados e o valor total da compra. Também é possível selecionar qual o método de pagamento será utilizado e inserir os dados do comprador.

(43)

4.2.2 Bot.

Nesta seção é apresentado os requisitos, regras de negócio, casos de uso do bot.

4.2.2.1 Atores.

Nesta seção é apresentado os atores participantes para a execução do bot. Usuário – Utilizado para iniciar o bot e definir quantidade de ataques a loja.

4.2.2.2 Requisitos Funcionais.

Nesta seção é apresentado os requisitos funcionais do bot.  RF001 - O bot deverá conseguir gerar dados falsos.

 RF002 - O bot deverá conseguir comprar qualquer produto da loja.

 RF003 - O bot deverá conseguir preencher automaticamente os formulário.  RF004 - O bot deverá conseguir efetuar compras na loja.

4.2.2.3 Requisitos Não Funcionais.

Nesta seção é apresentado os requisitos não funcionais do bot.  RNF001 - O bot deverá ser desenvolvido em Python

(44)

 RNF002 - Em caso de falha, o bot deverá seguir tentando efetuar a compra  RNF003 - O bot deverá ser escalavel.

 RNF004 - O bot deverá armazenar as compras efetuadas em um arquivo Json.

4.2.2.4 Diagrama de atividade.

Segundo Booch (2006), um diagrama de atividades mostra o fluxo de uma atividade para outra em um sistema. Uma atividade mostra um conjunto de atividade, o fluxo sequencial ou ramificado de uma atividade para outra e objetos que realizam ou sofrem ações. Na figura 15 é apresentando o diagrama de sequência do bot.

(45)

Figura 15 – Diagrama de atividade bot.

(46)

DA001 – Ataque a loja.

O usuário inicia o bot definindo a quantidade de ataques.

1. O bot acessa a loja e gera uma lista com as urls dos produtos. 2. Ele gera uma pessoa falsa para a compra.

3. Finaliza a compra com um produto e dados gerados.

4.3 FERRAMENTAS UTILIZADAS

Nesta seção é apresentado as ferramentas utilizadas para o desenvolvimento da loja virtual e do bot.

4.3.1 Loja Virtual

Nesta secção é apresentada a linguagem e bibliotecas utilizadas para o desenvolvimento da loja virtual.

4.3.1.1 Java

Segundo Lemay (1996, p. 4) “Java é uma linguagem orientada a objetos desenvolvida pela Sun Microsystems. Utilizando influências do C++, o Java foi concebido para ser uma linguagem pequena, simples e portátil entre várias plataformas e sistemas operacionais”.

Lemay (1996, p. 6) complementa que como os objetivos do Java eram de ser pequeno, rápido, eficiente e a independência de plataforma estes mesmos objetivos tornaram a

(47)

linguagem ideal para o desenvolvimento de aplicações executáveis distribuídas pela World Wide Web.

4.3.1.2 Javalin

O Javalin é um micro framework escrito em Java e Kotlin para o desenvolvimento de aplicações web (principalmente aplicações REST) que busca simplicidade, flexibilidade e leveza. O framework utiliza atualmente o Jetty como servidor Http.

4.3.1.3 SQLite

O SQLite é uma database SQL embutida, autocontida, transacional que não utiliza uma arquitetura cliente-servidor. Ela suporta transações ACID e operações com valores em JSON. O código do SQLite está no domínio público e pode ser utilizado para qualquer propósito, seja público, comercial ou privado.

4.3.2 Bot

Nesta seção é apresentada a linguagem utilizada e ferramentas de auxílio ao desenvolvimento do bot.

(48)

4.3.2.1 Python

De acordo com Borges (2010, p. 13) O Python possui uma sintaxe clara e concisa, que favorece a legibilidade do código fonte, tornando a linguagem mais produtiva.

Segundo BORGES (2010, p. 14):

A linguagem foi criada em 1990 por Guido van Rossum, no Instituto Nacional de Pesquisa para Matemática e Ciência da Computação da Holanda (CWI) e tinha originalmente foco em usuários como físicos e engenheiros. O Python foi concebido a partir de outra linguagem existente na época, chamada ABC.

É importante ressaltar que “além de ser utilizado como linguagem principal no desenvolvimento de sistemas, o Python também é muito utilizado como linguagem script em vários softwares, permitindo automatizar tarefas e adicionar novas funcionalidades.” (BORGES, 2010, p. 13)

4.3.2.2 Selenium

O Selenium automatiza os navegadores. Comumente, é utilizado para automatizar aplicativos da Web para fins de teste, mas não se limita apenas a isso.

O Selenium tem o apoio de alguns dos maiores fornecedores de navegadores que tomaram medidas para tornar o Selenium uma parte nativa de seu navegador. É também a principal tecnologia em inúmeras outras ferramentas de automação de navegadores, APIs e frameworks.

4.3.2.3 GeckoDriver

GeckoDriver é um driver utilizado para abrir instancias do browser, para abrir os sites nos testes automatizados via Selenium WebDriver.

(49)

5 DESENVOLVIMENTO

Neste capítulo, são abordadas as definições do desenvolvimento, etapas, experimentos e resultados obtidos.

5.1 DINÂMICA DO DESENVOVIMENTO

Durante o processo de desenvolvimento da proposta, não foi encontrado uma base de dados pública e de utilização gratuita, contendo compras realizadas por humanos e por bots, logo uma dinâmica de desenvolvimento foi proposta pelo o orientador do trabalho visando a construção de uma base de dados para o treinamento do classificador bayesiano.

A dinâmica foi constituída de duas partes, uma versão mais simples da loja virtual, que seria utilizada para coletar e armazenar dados e métricas para o treinamento e um bot que ficaria responsável em atacar a loja para gerar compras fraudulentas. Cada um dos autores ficou responsável por desenvolver uma parte, um responsável pela loja e outro pelo bot. Ambos os autores não sabiam como estava sendo feito a implementação das partes para assim evitar que fosse realizado um experimento viciado.

Ao fim do desenvolvimento da loja simplificada a mesma foi divulgada entre amigos e colegas dos autores e em redes socias para a coleta de dados de treinamento.

5.2 ETAPAS DO DESENVOLVIMENTO

Nesta seção é apresentado o processo de desenvolvimento da loja virtual, do bot e do método de Bayes, explicando em detalhes cada etapa e dificuldades encontradas no desenvolvimento.

(50)

5.2.1 Loja

Para desenvolver a loja virtual era necessário escolher linguagens e bibliotecas para o desenvolvimento tanto da parte visual quanto da parte lógica.

Na parte lógica da loja foi utilizada a linguagem de programação Java pela a afinidade dos autores com a mesma, a biblioteca Javalin que é uma biblioteca para o desenvolvimento de aplicações web construído em cima do servidor web Jetty e como banco de dados foi escolhido o SQLite devido a sua facilidade de implementação e também por ser um banco de dados embutido, assim facilitando a implantação da loja virtual em um ambiente de produção.

Na figura 16, é apresentado como os componentes citados se relacionam Figura 16 - Componentes e Ferramentas Utilizadas na Loja Virtual

. Fonte: Autores

5.2.2 Bot

Para desenvolvimento do bot é necessário que ele agisse de forma mais autônoma, e também que abrisse navegadores web para simular ações de um usuário normal.

Sendo assim foi optado pela escolha do desenvolvimento em Python pela escalabilidade e velocidade de desenvolvimento. Para a navegação e manipulação dos objetos de html, foi utilizado uma biblioteca muito conhecida que é a Selenium. E por fim o Geckodriver que é um driver que possibilita abrir várias instâncias de um navegador.

Na figura 17 é apresentado a interação das ferramentas utilizadas para desenvolvimento do bot.

(51)

Fonte: Autores

Como ilustrado na figura 17, todo desenvolvimento feito na linguagem Python utilizando a biblioteca externa Selenium, juntos abrem e operam ações no navegador, e executando ações previamente definidas.

5.2.3 Bayes

Para a implementação do classificador naive bayes foram consideradas algumas bibliotecas prontas disponíveis publicamente como exemplo a biblioteca WEKA, desenvolvida pela universidade de Waikato, e algumas implementações encontradas no GitHub. Foi optado por uma das implementações encontradas no GitHub devido a sua facilidade de utilização e documentação direta e clara. O código fonte está disponível em https://github.com/ptnplanet/Java-Naive-Bayes-Classifier.

(52)

5.3 EXPERIMENTO

As aplicações foram desenvolvidas com uma dinâmica entre os autores do trabalho, um ficou responsável por desenvolver a loja virtual e o outro ficou responsável por desenvolver o bot, sendo que as partes não sabiam como e o que cada implementou.

A escolha da dinâmica entre os autores foi proposta pelo orientador do trabalho, para trazer um nível de realismo ao experimento. O fluxo do experimento pode ser observado no fluxograma apresentado na figura 18:

(53)

Figura 18 – Fluxograma das etapas do experimento.

Fonte: Autores

Como não foi encontrado uma base de dados disponível que se encaixasse no cenário proposto, uma primeira versão da loja virtual foi construída com intuito de coletar dados para o treinamento do classificador bayesiano.

Tanto a loja quanto o bot foram desenvolvidos em paralelo, sem que um autor soubesse o que o outro estava fazendo e parametrizando.

Após a conclusão do desenvolvimento da loja virtual, a mesma foi divulgada em redes sociais e entre colegas e amigos dos autores.

Concluindo três semanas de coletas de dados da loja, foi efetuado o ataque o ataque a mesma com o bot, assim encerrando o processo de coleta de dados.

Por fim foram compilados os dados que foram utilizados no treinamento do classificador bayesiano e também o mesmo foi implementado e integrado na loja virtual.

(54)

5.3.1 Loja

O desenvolvimento da loja virtual foi simples e direto e sem muitos problemas. Primeiramente foram elaboradas e codificadas as telas da página principal, do catálogo, do carrinho, dos detalhes do produto, do checkout e a de agradecimento. Na figura 19 é apresentado o catálogo de produtos da loja virtual.

Figura 19 – Catalogo de produtos da loja virtual.

Fonte: Autores

Após feita as telas, começou a implementação das interações do usuário com a tela, como por exemplo, a adição de um produto ao carrinho. Na figura 20 é apresentado o checkout da loja virtual.

(55)

Figura 20 – Checkout da loja virtual.

Fonte: Autores

Para finalizar foi escrita a parte de persistência das compras realizadas pelos usuários e foram realizados testes simples para garantir o funcionamento básico.

5.3.2 Bot

O desenvolvimento do bot foi dividido em algumas etapas. Primeiramente ele coleta todos os produtos que estão expostos na loja, depois baseado na quantidade de ataques que o usuário determinou ele gera usuários falsos e por fim ele faz a compra na loja para cada usuário gerado.

Inicialmente ele foi projetado para reutilizar a mesma janela do navegador, porém, descobriu-se que o Geckodriver não é “safe thread” pois notou-se que utilizar várias threads no mesmo driver ocorria muitos erros, então foi optado por subir 10 instâncias do driver por vez e efetuar o ataque e finaliza-los.

(56)

Durante o ataque o Bot salva em um arquivo “json” dados falsos utilizados no preenchimento do formulário de compra, e também ele gera um arquivo “log” descrevendo o que aconteceu em cada etapa do processo do ataque à loja.

5.3.3 Bayes

Para o treinamento do classificador bayesiano, a loja coletou diversos dados nas compras realizadas pelos usuários, entre eles:

 As informações preenchidas nos campos.  O tempo de foco em cada campo do formulário.  Produtos que foram comprados.

 Tempo desde o início da compra até a finalização.  Quantidade de vezes que o catálogo foi visitado.

 Quantidade de vezes que a página de detalhes do produto foi visualizada.

Entre os dados mencionados acima, foram utilizadas as informações de tempo do foco em cada campo do formulário e o tempo por caractere devido a notável diferença observada entre compras realizadas por humanos e pelo bot. A loja em si não acompanha o tempo por caractere, mas um tempo aproximado foi calculado utilizando o tempo de foco total no campo dividido pela quantidade de caracteres digitadas.

𝑇𝑒𝑚𝑝𝑜 𝑑𝑒 𝑓𝑜𝑐𝑜 𝑛𝑜 𝑐𝑎𝑚𝑝𝑜 𝑁𝑢𝑚. 𝑐𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑒𝑠 𝑑𝑜 𝑐𝑎𝑚𝑝𝑜

Uma problemática encontrada durante o preparo dos dados de treinamento foi que os dados escolhidos eram numéricos e o classificador bayesiano trabalha com dados categóricos. Para solucionar este problema foi realizada a categorização dos dados coletados, utilizando uma escala determinada pelos autores. As escalas utilizadas para o tempo de foco e o tempo por caractere foram as seguintes demonstradas na figura 19:

(57)

Figura 19 – Categorização dos dados coletados.

Fonte: Autores

Após determinar como os dados seriam categorizados, foi feita uma análise dos dados e foram extraídos cinquenta registros de compras realizados por pessoas reais.

Com estes registros, foi aplicado a classificação dos dados, utilizando a categorização apresentada anteriormente.

O mesmo processo de categorização foi feito com os registros de compras realizadas pelo bot.

Com as informações categorizadas, foram criados arquivos de texto simples para armazenamento dos dados de treinamento e foram anexados ao código da loja.

Ao iniciar, a loja carrega estas informações pré compiladas para o treinamento do classificador.

5.4 RESULTADOS

Nesta seção é apresentado os resultados gerados pelo desenvolvimento proposto, tabelas e análises.

(58)

5.4.1 Tempo de Foco

O tempo de foco representa quanto tempo em milissegundos o usuário levou para digitar uma informação em um dos campos do formulário. Nas figuras 20 e 21 são apresentados o menor, o maior e o tempo médio de focos em cada campo do formulário preenchido pelo bot e por humanos respectivamente.

Figura 20 – Estatística de compras realizadas pelo bot

Fonte - Autores

Figura 21 – Estatística de compras realizadas por humanos

Fonte – Autores

Observando as tabelas é possível observar uma grande discrepância entre pessoas reais e o bot em todas as colunas.

(59)

5.4.2 Matriz de Confusão

A matriz de confusão é uma tabela onde é possível observar a precisão de um algoritmo supervisionado. Na figura 22 é apresentada a matriz de confusão utilizando um esquema de teste 50/50, ou seja, 50% das tentativas foram realizadas por humanos e as outras 50% pelo bot.

Figura 22 – Matriz de confusão

Fonte: Autores

É possível observar que em duas instâncias o classificador bayesiano previu erroneamente a classe, no caso da classificação errônea do humano como bot foi devido a utilização da funcionalidade de autopreenchimento do formulário do navegador.

5.4.3 Análise dos resultados

Com este experimento foi possível observar que o classificador Naive Bayes é um classificador de simples implementação, baixo custo computacional e de grande eficácia desde que o universo que está sendo classificado não sofra muitas alterações ao longo do tempo. Se o universo possuir uma grande mutabilidade deve-se considerar outras técnicas de aprendizado de máquina que consigam melhor se adaptar às mudanças.

Referências

Documentos relacionados

As variantes devem ter o mesmo significado, isto é, devem se referir ao mesmo estado de coisas. Entretanto, para tomar o domínio funcional da sequenciação

(2013 B) avaliaram a microbiota bucal de oito pacientes submetidos à radioterapia na região de cabeça e pescoço através de pirosequenciamento e observaram alterações na

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

Contudo, sendo um campo de pesquisa e de atuação muito específico e novo no Brasil, ainda existe uma série de dificuldades para a eleição de parâmetros de conservação

Acompanha molho churrasco e cesto de pães fatiados.. 3101 -

camarões grelhados, pasta de queijo branco, lascas de parmesão light, tomate cereja, dueto de gergelim, rúcula e

• The definition of the concept of the project’s area of indirect influence should consider the area affected by changes in economic, social and environmental dynamics induced

Reprodução: Reproduz-se de novembro a abril (no Atlântico); Atinge a maturidade sexual a partir dos 2 anos (alguns machos) ou dos 3 anos (machos e fêmeas).. Atingem