• Nenhum resultado encontrado

Um framework para aplicações de formulários que utilizam aprendizado de máquina

N/A
N/A
Protected

Academic year: 2021

Share "Um framework para aplicações de formulários que utilizam aprendizado de máquina"

Copied!
133
0
0

Texto

(1)

Guilherme Aguiar

UM FRAMEWORK PARA APLICAÇÕES DE FORMULÁRIOS QUE UTILIZAM APRENDIZADO DE MÁQUINA

Dissertação submetida ao Programa de Pós-Graduação em Ciência da Computação da Universidade Federal de Santa Catarina para a obtenção do Grau de mestre em Ciência da Computação

Orientador: Prof. Dr. Patrícia Vilain.

Florianópolis 2019

(2)

Ficha de identificação da obra elaborada pelo autor através do Programa de Geração Automática da Biblioteca Universitária

(3)

Guilherme Aguiar

UM FRAMEWORK PARA APLICAÇÕES DE FORMULÁRIOS QUE UTILIZAM APRENDIZADO DE MÁQUINA Esta Dissertação foi julgada adequada para obtenção do Título de “Mestre” e aprovada em sua forma final pelo Programa Pós-Graduação

em Ciência da Computação Florianópolis, 27 de fevereiro de 2019.

________________________ Prof. José Luís Almada Güntzel, Dr.

Coordenador do Curso Banca Examinadora:

________________________ Prof.ª Patrícia Vilain, Dr.ª

Orientadora

Universidade Federal de Santa Catarina

________________________ Prof. Marcelo Thiry Comicholi da Costa, Dr.

Universidade do Vale do Itajaí

________________________ Prof. Mauro Roisenberg, Dr. Universidade Federal de Santa Catarina

(4)

________________________ Prof. Ricardo Azambuja Silveira, Dr. Universidade Federal de Santa Catarina

________________________ Prof. Ricardo Pereira e Silva, Dr. Universidade Federal de Santa Catarina

(5)

Este trabalho é dedicado aos meus queridos pais.

(6)
(7)

AGRADECIMENTOS

Inicialmente agradeço a Deus e a minha família, principalmente meus pais e meu irmão Thiago. Foram eles os responsáveis pela minha formação de caráter, fonte de todas as minhas qualidades pessoais e de inspiração para a realização dessa dissertação. A base familiar sempre será o apoio e a razão de qualquer conquista que obtiver.

Agradeço todos os professores que tive durante o mestrado, por dedicarem sua vida à formação e educação dos alunos, e por terem contribuído com o engrandecimento de meus conhecimentos. Cada um deles colaborou para o resultado dessa dissertação. Em especial, agradeço aos membros da banca e a minha orientadora Patrícia Vilain, por toda a convivência durante a realização da pesquisa. Durante esse período, ela acreditou em meu comprometimento em atingir as metas estabelecidas e sempre se dedicou a extrair o melhor de mim, para que essa dissertação atingisse o nível de qualidade proposto pela universidade.

Aos colegas e amigos que contribuíram com a realização dos experimentos contidos na pesquisa, Daniel Romão (Santos), John e Hallan. A conclusão dessa pesquisa só foi possível graças a disponibilidade deles em ajudar. Em especial Daniel, o maior amigo que fiz durante a graduação e que esteve sempre presente em minha vida desde então. Também agradeço a todos os outros amigos que nos momentos de convívio durante a pesquisa puderem contribuir com a diminuição do peso das responsabilidades impostas por ela. Entre eles, Pedro, com quem convivi no mesmo apartamento durante doze anos e todo o percurso da pesquisa, e Takeshi, que conheci como colega de trabalho e acabou se tornando um grande amigo, seus conselhos e conversas me guiaram durante muitas decisões importantes.

E por fim, agradecer minha companheira Luana Morais. Minhas obrigações e tarefas afetaram-na diretamente, causando restrições e momentos de sacrifício mútuo. Foi com ela que passei os momentos mais difíceis durante o cumprimento das obrigações da pesquisa, e apenas por isso obtive sucesso. Através de seu apoio e sacrifício pude reunir forças e manter-me resiliente para alcançar meus objetivos. Ela foi sempre minha fonte de energias e inspiração em busca de constante

(8)
(9)

“Capricha nos estudos.” (Herbert Kohler)

(10)
(11)

RESUMO

Aprendizado de Máquina tem sido usado eficientemente em aplicações de múltiplos domínios. Como consequência, há um interesse crescente em técnicas e artefatos que facilitem o uso de aprendizado de máquina. No entanto, a maioria deles é destinada a pesquisadores e usuários experientes. Além disso, poucos artefatos fornecem mais do que algoritmos prontos. Neste trabalho, apresentamos um framework capaz de fornecer algoritmos de aprendizado de máquina prontos para uso, bem como o código a ser reutilizado por aplicativos que usam algoritmos de aprendizado de máquina via formulários. Também são apresentados exemplos de uso do framework na construção de duas aplicações e avaliações feitas por programadores que criaram aplicações semelhantes, com e sem auxílio do framework. Os resultados mostram que o framework é capaz de reduzir o esforço de criação de um aplicativo e proporcionar um aumento na qualidade do código produzido. Além disso, o framework permite incluir novos algoritmos de aprendizado de máquina, além de fornecer um controle de fluxo que auxilia usuários inexperientes no uso desses algoritmos.

Palavras-chave: Aprendizado de máquina, framework, formulários.

(12)
(13)

ABSTRACT

Machine Learning (ML) has been used efficiently in applications across multiple domains. As a consequence, there is a growing interest in ML techniques and artifacts that facilitate its use. However, most of them are aimed at researchers and experienced users. In addition, few artifacts provide more than ready-made algorithms. In this work, we present a framework capable of delivering ready-to-use ML algorithms, as well as the code to be reused by form applications that use ML algorithms. We also show an example where we use the framework to build two form applications and evaluations made by programmers who created similar applications, with and without the framework. The results show that the framework is able to reduce the effort when creating an application and provide an increase in the quality of the code produced. Moreover, the framework allows to include new state-of-the-art ML algorithms, as well as it provides a flow control that assists inexperienced users in the use of ML algorithms.

Keywords: Machine learning, framework, forms

(14)
(15)

LISTA DE FIGURAS

Figura 1- Etapas para a criação e utilização do modelo de

aprendizado de máquina. ... 37

Figura 2- Framework de Costa e seus componentes. ... 50

Figura 3- Diagrama de classes de domínio do framework e seus pacotes. ... 60

Figura 4- Digrama de classes do framework. ... 61

Figura 5– Classe MainForm. ... 62

Figura 6– Classe QuestionPanel. ... 62

Figura 7– Classes Application e Inductor. ... 63

Figura 8– Classes OperationMode e suas subclasses. ... 63

Figura 9– Classe Classifier e suas associações. ... 64

Figura 10 – Diagrama de atividades que representa o método construtor da classe MainForm. ... 66

Figura 11 – Diagrama de atividades do método defineDataInfo. 67 Figura 12– Diagrama de atividades do método setIntructionsPanelComponents. ... 67

Figura 13 – Diagrama de sequência do método createQuestionPanels. ... 68

Figura 14 – Diagrama de sequência do método dataReady. ... 69

Figura 15 – Diagrama de sequência do método dataReady. ... 70

Figura 16 – Diagrama de sequência do método collectData. ... 71

Figura 17 – Diagrama de sequência de criação da classe Application. ... 72

Figura 18 – Diagrama de sequência do método run. ... 74

Figura 19 – Diagrama de sequência do método test. ... 75

Figura 20 – Diagrama de sequência do método train ... 78

Figura 21– Exemplo de código de integração com WEKA. ... 80

Figura 22– Diagrama de classes com sublcasses de Algorithm. 81 Figura 23– Captura de tela da aplicação para avaliação de personalidade. ... 86

Figura 24 – Diagrama de classes da aplicação de teste de personalidade. ... 87

Figura 25 – Diagrama de classes da aplicação de teste de personalidade. ... 90

Figura 26 – Resultado da análise qualitativa do primeiro avaliador. ... 97

Figura 27 – Resultado da análise qualitativa do segundo avaliador. ... 101

(16)
(17)

LISTA DE QUADROS

Quadro 1 – Quadro comparativo entre os trabalhos. ... 52 Quadro 2 – Tempos medidos para as atividades de criação da primeira aplicação sem o uso do framework. ... 94

Quadro 3 – Tempos medidos para as atividades de criação da aplicação que utilizou o framework... 94

Quadro 4 – Comparação das linhas de código das duas aplicações criadas pelo primeiro avaliador do framework. ... 96

Quadro 5 – Tempos medidos para as atividades de criação da primeira aplicação sem o uso do framework, pelo segundo avaliador. . 99

Quadro 6 – Tempos medidos para as atividades de criação da aplicação utilizando o framework, pelo segundo avaliador. ... 99

Quadro 7 – Comparação das linhas de código das duas aplicações criadas pelo segundo avaliador do framework. ... 100

Quadro 8 – Tempos medidos para as atividades de criação da primeira aplicação sem o uso do framework. ... 103

Quadro 9 – Tempos medidos para as atividades de criação da primeira aplicação sem o uso do framework. ... 103

Quadro 10 – Comparação das linhas de código das duas aplicações criadas pelo primeiro avaliador do framework. ... 104

Quadro 11 – Comparação dos tempos gastos para cada aplicação criada pelos avaliadores. ... 106

Quadro 12 – Relação do número total de linhas com o número de linhas criadas pelos avaliadores ao produzir a aplicação utilizando o

framework. ... 108

Quadro 13 – Comparação do número de linhas criadas pelos avaliadores ao criar aplicações com e sem o framework proposto. ... 109

(18)
(19)

LISTA DE ABREVIATURAS E SIGLAS

WEKA – Waikato Environment for Knowledge Analysis

UML – Unified Modeling Language

iiWAS – International Conference on Information Integration and Web-based Applications & Services

CANDAR – International Symposium on Computing and Networking PROMISE – International Conference on Predictive Models and Data Analytics in Software Engineering

SBCARS – Brazilian Symposium on Components, Architectures and Software Reuse

AICCSA – International Conference on Computer Systems and Applications

IDEAL – The International Conference on Intelligent Data Engineering and Automated Learning

SCCC – International Conference of the Chilean Computer Science Society

(20)
(21)

SUMÁRIO

1 INTRODUÇÃO ... 27

1.1 PROBLEMA DE PEQ UISA ... 28

1.1.1 SOLUÇÃO PROPOSTA ... 29 1.1.2 DELIMITAÇÃO DO ESCOPO ... 30 1.1.3 JUSTIFICATIVA ... 30 1.2 OBJETIVOS ... 32 1.3 METODOLOGIA ... 32 1.4 ESTRUTURA DA DISSERTAÇÃO ... 33 2 FUNDAMENTAÇÃO TEÓRICA ... 35 2.1 APRENDIZADO DE MÁQUINA ... 35 2.2 FRAMEWORK ... 37 2.2.1 Classificação de frameworks ... 40 2.2.2 Aplicações de formulários ... 41 3 REVISÃO BIBLIOFRÁFICA ... 43

3.1 BRAINY: A MACHINE LEARNING LIBRARY ... 46

3.2 AUTO-WEKA 2.0: AUTOMATIC MODEL SELECTION AND HYPERPARAMETER OPTIMIZATION IN WEKA. ... 47

3.3 MLweb: A TOOLKIT FOR MACHINE LEARNING ON THE WEB ... 48

3.4 A FRAMEWORK FOR BUILDING WEB MINING APPLICATIONS IN THE WORLD OF BLOGS: A CASE STUDY IN PRODUCT SENTIMENT ANALYSIS ... 49

3.5 QUADRO COMPARATIVO ... 51 4 FRAMEWORK PROPOSTO ... 55 4.1 VISÃO GERAL ... 55 4.2 ARQUITETURA DO FRAMEWORK ... 57 4.3 ESTRUTURA DO FRAMEWORK ... 58 4.3.1 Pacote formsmanagement ... 65 4.3.2 Pacote machinelearning ... 72 5 EXEMPLOS DE USO... 83

(22)

PERSONALIDADE ... 84 5.3 EXEMPLO 2: SERIOUS GAME PARA GESTORES ... 88 6 AVALIAÇÕES DO FRAMEWORK ... 91 6.1 PRIMEIRA AVALIAÇÃO ... 93 7 AMEAÇAS À VALIDADE ... 111 8 CONCLUSÃO ... 113 REFERÊNCIAS ... 117 APÊNDICE A – Resumo dos métodos template e hot spots do framework ... 121 APÊNDICE B – Instruções para o avaliador criar a aplicação de classificação das flores sem o framework ... 126 APÊNDICE C – Instruções enviadas para o avaliador criar a aplicação utilizando o framework ... 127 APÊNDICE D – Questionário enviado para o avaliado do

framework ... 131

APÊNDICE E – Questionário respondido pelo primeiro avaliador do framework ... 132 APÊNDICE F – Instruções para o avaliador criar a aplicação de classificação das flores sem o framework ... 134 APÊNDICE G – Questionário respondido pelo segundo avaliador do framework ... 135 APÊNDICE H – Questionário respondido pelo terceiro avaliador do framework ... 136

(23)

1 INTRODUÇÃO

Aprendizado de máquina é um subcampo da Ciência da Computação que fornece aos computadores a capacidade de aprenderem, sem que sejam explicitamente programados (SAMUEL, 2000). O aprendizado de máquina induz resultados a partir de exemplos previamente conhecidos. Tais exemplos são descritos pelos valores de um conjunto de atributos.

Técnicas de aprendizado de máquina são utilizadas em diversos domínios. Wen et al. (2012) realizou uma revisão sistemática de literatura sobre o uso de aprendizado de máquina na estimativa de esforços para criação de software, comprovando a relevância delas para o domínio. Outro exemplo do uso dessas técnicas é a descoberta de padrões e previsão do comportamento do mercado financeiro (ZHANG, D.; ZHOU, L, 2004). Aprendizado de máquina também vem sendo usado para reconhecer expressões faciais (FATHALLAH; ABDI; DOUIK, 2017). Além dos campos de economia e corporativo, áreas como o entretenimento, através de jogos virtuais (HSIEH; SUN, 2008), e a saúde (PYKA, 2012) também se beneficiam do aprendizado de máquina.

A popularização do aprendizado de máquina possibilitou que ele fosse utilizado como abordagem de solução para problemas que anteriormente eram amplamente discutidos e abordados de diferentes modos. Tarefas relacionadas à manutenção de código podem ser utilizadas para corroborar essa ideia. Em Pinto e Terra (2017) e SOUZA t al. (2017), os autores dispensam esforços desenvolvendo diferentes técnicas de aprendizado de máquina para aprimorar os resultados obtidos durante a detecção de code smell. Enquanto isso, NUCCI et al (2018) apresenta uma comparação dos resultados obtidos através do uso de diferentes técnicas de aprendizado de máquina que buscaram solucionar tal problema.

Portanto, é notório que o aprendizado de máquina pode ser aplicado em domínios que vão muito além daqueles puramente científicos. Além disso, como descrito no parágrafo anterior, sua popularização pode impactar diretamente nos problemas em que é aplicado, trazendo novas possibilidades de solução e uma consequente evolução de tais áreas.

Tendo em vista tais benefícios, essa dissertação pretende utilizar uma abordagem de engenharia de software para facilitar o uso de técnicas de aprendizado de máquina, tornando-o ainda mais popular.

(24)

Um framework orientado a objetos foi produzido com o intuito de reduzir o esforço de seus usuários no desenvolvimento de aplicações que utilizassem o aprendizado de máquina. Além disso, o framework possui mecanismos que evitam erros durante o desenvolvimento de tais aplicações, contribuindo para o ganho de qualidade delas.

1.1 PROBLEMA DE PEQUISA

A versatilidade demonstrada pelo aprendizado de máquina, aliada a resultados promissores, ampliou o foco de pesquisadores e desenvolvedores para o uso de suas técnicas em diversos casos. No entanto, tal interesse não é exclusivo de especialistas. Programadores de todos os níveis e pesquisadores de diversas áreas buscam encontrar benefícios em tais técnicas.

Além disso, as tarefas e processos de criação do modelo de aprendizado de máquina e do software que irá utilizá-lo podem ser totalmente independentes. Desse modo, os perfis dos envolvidos em cada uma dessas etapas podem ser variados. Enquanto engenheiros de software podem não ter familiaridade com aprendizado de máquina e seu uso, especialistas em tais técnicas podem produzir modelos eficientes e eficazes, mas não ter conhecimento para desenvolver os softwares que farão uso dos modelos.

Em Sparks et al. (2013), os autores alertam também para o fato de os pesquisadores de aprendizado de máquina usarem preferencialmente ferramentas em linguagens computacionais estatísticas como R e MATLAB. Segundo Sparks et al. (2013), essas ferramentas permitem aos programadores fugirem do baixo nível dos algoritmos de aprendizado de máquina e aceleram o desenvolvimento de soluções que utilizam essas técnicas. Contudo, tais soluções são tipicamente não escaláveis e não robustas.

Os diferentes perfis citados anteriormente possuem necessidades distintas durante o processo de criação e uso do aprendizado de máquina, criando uma ampla demanda de artefatos que facilitem suas tarefas. Desse modo, Sonnenburg (2007) já apontava para a necessidade de que soluções com código aberto fossem adotadas para difundir o uso de aprendizado de máquina. Tais soluções podem ir desde algoritmos prontos (Collobert et al., 2002), soluções para parametrizá-los (Kotthoff et al., 2017), até frameworks para criar as aplicações que usam tais algoritmos (Costa et al., 2012).

(25)

Em suma, o processo de criação de uma aplicação de aprendizado de máquina possui diversas etapas, normalmente executadas por usuários de diferentes perfis e com diferentes expertises. Criar uma solução completa, desenvolvendo desde o modelo de aprendizado até a aplicação que o utiliza é um processo complexo. Facilitar essas etapas promove o acesso aos benefícios do aprendizado de máquina de maneira mais abrangente e relevante.

1.1.1 SOLUÇÃO PROPOSTA

Este trabalho apresenta um novo framework orientado a objetos para utilização de técnicas de aprendizado de máquina. Este framework traz controles de fluxo que guiam o programador durante a criação da lógica de utilização do aprendizado de máquina. Desse modo, é capaz de auxiliar seus usuários em tarefas pertinentes tanto à criação dos modelos, quanto à codificação da aplicação que fará uso dele. O

framework proposto explora a inversão de controle e classes abstratas

para que o usuário codifique a aplicação da maneira a atingir seus objetivos

O diferencial deste framework é que ele reduz os esforços durante a implementação de aplicações que entregam dados para os algoritmos de aprendizado de máquina através de formulários, e permite que os programadores usem bibliotecas prontas contendo algoritmos de aprendizado de máquina. Assim, o uso do framework traz benefícios que abrangem uma vasta gama das etapas que envolvem o uso de aprendizado de máquina. Portanto, qualquer aplicativo que pretenda utilizar aprendizado de máquina, e que utilize formulários como entrada para fornecer os dados ao algoritmo treinado, pode ser facilmente produzido através do framework.

Deste modo, a seguinte hipótese é levantada:

• Hipótese: Através o uso de frameworks é possível facilitar a criação de aplicações que utilizam aprendizado de máquina, mesmo por usuários com conhecimento limitado em aprendizado de máquina, difundindo ainda mais tais técnicas. A entrada de dados será realizada através de formulários pois estes são um meio eficiente e prático para realizar a interface entre o usuário final e o modelo de aprendizado de máquina.

(26)

1.1.2 DELIMITAÇÃO DO ESCOPO

O escopo do trabalho está limitado a criar um framework orientado a objetos para redução de esforços durante a codificação de aplicações que utilizam técnicas de aprendizado de máquina. O

framework foi concebido para promover o uso de formulários como

método de entrada dos dados inseridos pelos usuários das aplicações. Portanto, limita-se a apoiar o desenvolvimento de aplicações desse tipo.

Não faz parte do trabalho a criação e o aprimoramento de algoritmos e técnicas de aprendizado de máquina. Além disso, o

framework trabalha com dados exclusivamente em formato numérico e a

análise dos dados que serão fornecidos aos modelos e aplicações desenvolvidas não será realizada de maneira automática.

Do mesmo modo, a escolha das técnicas pertinentes a cada passo das etapas do processo de criação da aplicação, deve ser realizada pelos usuários do framework. Nesses casos, o framework limita-se a fazer uso de mecanismos para salientar a necessidade da realização de determinadas tarefas durante esse processo, muitas vezes desconhecidas por usuários menos familiarizados com aprendizado de máquina.

Por fim, o framework foi desenvolvido com o propósito da utilização de técnicas de aprendizado de máquina supervisionado. 1.1.3 JUSTIFICATIVA

Conforme mencionado, o profundo interesse de diferentes perfis de usuários pelo aprendizado de máquina evidencia a necessidade de meios de facilitar seu uso e difundir ainda mais suas técnicas. Diversos esforços já foram dispendidos para atingir esse objetivo.

Collobert et al. (2002) traz algoritmos de aprendizado de máquina prontos para o uso. Gashler (2011) produz facilidades que vão desde algoritmos prontos até um assistente gráfico para sua utilização por linhas de comando. Entretanto, nenhuma dessas bibliotecas ajuda os usuários mais inexperientes a utilizar o aprendizado de máquina. Konkol (2014) também criou uma biblioteca com algoritmos de aprendizado já implementados, porém, sua maior contribuição está em seu sofisticado sistema de definição e gerenciamentos dos atributos. Tal sistema auxilia os usuários a apresentarem seus dados numericamente para alimentar os algoritmos.

Kotthoff et al. (2017) abordou a questão de maneira distinta. Criou uma ferramenta que facilita o uso da Waikato Environment for

(27)

Knowledge Analysis (WEKA), um pacote de software amplamente utilizado, que contém algoritmos de aprendizado de máquina e uma ferramenta para visualizá-los. Tal ferramenta auxilia os usuários menos experientes a escolher automaticamente um de seus algoritmos de aprendizado e a parametrizá-lo.

Apesar de facilitar o uso por usuários novatos, os artefatos mencionados até aqui não proporcionam código para ser reusado no escopo do domínio de uma aplicação. Todos focam seus esforços em implementar algoritmos de aprendizado de máquina ou em facilitar sua parametrização. Assim qualquer aplicação que venha a ser criada para utilizar tais algoritmos, deve ser produzida desde seu início.

Na busca de trabalhos que abordassem também o aspecto da codificação das aplicações que utilizam o aprendizado de máquina, o trabalho de Costa et al. (2012) ganha destaque. Nele um framework é apresentado, contudo, possui limitações quanto à redução de esforços durante a criação das aplicações, como descrito no Capítulo 3.

Para que algoritmos de aprendizado de máquina possam ser utilizados apropriadamente, as aplicações devem ser capazes de apresentar dados condizentes com as variáveis utilizadas durante o seu treinamento.

Após a fase de treinamento, novas entradas de dados podem ser apresentadas ao algoritmo para que ele realize o aferimento de sua saída. Esses dados podem ser coletados de diversas maneiras, porém, uma das maneiras mais simples, e amplamente utilizada, são os formulários. Esses formulários podem conter meros campos de preenchimento direto, ou até mesmo serem a interface de aplicações com regras de negócio mais elaboradas. Calderon-Vilca et al. (2017) exemplifica como os formulários podem ser úteis como interface entre o usuário final e o modelo de aprendizado de máquina.

Diante disso, o framework proposto foi concebido para que seus usuários pudessem ter seus esforços reduzidos durante a criação das aplicações que utilizam modelos de aprendizado de máquina. Para isso, foi escolhido o uso de formulários como meio de entrada para os dados do modelo treinado. Através dessa combinação, foi possível atingir outros aspectos do processo do uso de aprendizado de máquina, e orientar os usuários durante as etapas da criação e uso dos modelos de aprendizado de máquina das aplicações.

(28)

1.2 OBJETIVOS

O principal objetivo da pesquisa é produzir um framework para construção de aplicações baseadas em formulários, possibilitando também que tais aplicações utilizem técnicas de aprendizado de máquina supervisionado de maneira simples e eficiente. Para atingir esse objetivo geral, os seguintes objetivos específicos foram traçados:

a) Selecionar algoritmos e/ou bibliotecas de aprendizado de máquina para serem utilizados pelo framework;

b) Fazer um estudo do domínio e construir um framework a partir da abstração de suas semelhanças;

c) Avaliar o framework desenvolvido quanto ao apoio no uso das técnicas de aprendizado de máquina.

1.3 METODOLOGIA

Para atender aos objetivos dessa pesquisa, o seguinte conjunto de etapas é realizado:

1. Buscar na literatura iniciativas para reduzir e facilitar o uso de aprendizado de máquina. Dentre elas, encontrar aquelas que buscam auxiliar usuários durante a criação do código das aplicações que utilizam modelos de aprendizado de máquina. 2. Criar um framework orientado a objetos, utilizando inicialmente

o conhecimento no domínio de aprendizado de máquina para abstrair seus conceitos e funcionalidades.

3. Criar aplicações utilizando o framework concebido inicialmente. Desse modo, novos conceitos podem ser abstraídos e funcionalidades adicionadas.

4. Comparar aplicações, criadas por programadores voluntários, que utilizam o framework com aplicações que não utilizam o framework.

5. Realizar uma avaliação quantitativa do código das aplicações criadas pelos voluntários e uma avaliação qualitativa através de um questionário com questões discursivas.

6. Analisar o resultado das avaliações quantitativa e qualitativa e realizar alterações no framework, identificando as melhorias a serem implementadas.

(29)

8. Disponibilizar todo o material produzido durante a realização

da dissertação em plataforma online e aberta.

1.4 ESTRUTURA DA DISSERTAÇÃO

O trabalho está estruturado em oito capítulos. Seu restante está organizado da seguinte forma: o Capítulo 2 apresenta a fundamentação teórica. O Capítulo 3 apresenta a revisão bibliográfica. O Capítulo 4 apresenta o framework proposto. O capítulo 5 traz exemplos de uso do

framework. O capítulo 6 apresenta a avaliação do framework, realizada

através de aplicações produzidas com ele. O Capítulo 7 mostra as ameaças à validade. Por fim, o Capítulo 8 apresenta as conclusões.

(30)
(31)

2 FUNDAMENTAÇÃO TEÓRICA 2.1 APRENDIZADO DE MÁQUINA

Aprendizado de máquina consiste em fornecer aos computadores a capacidade de aprender, sem que eles sejam explicitamente programados para isso (SAMUEL, 2000). O aprendizado de máquina utiliza exemplos previamente conhecidos para generalizar regras e fornecer resultados às novas entradas. Os exemplos devem ser descritos por valores preenchidos em um conjunto de atributos definidos para descrevê-los.

Existem duas técnicas principais de aprendizado: o aprendizado supervisionado e o aprendizado não supervisionado. O aprendizado supervisionado obrigatoriamente relaciona cada um dos exemplos com uma classe que é chamada de rótulo (label). Ou seja, o algoritmo é ensinado fornecendo os dados de treinamento e as respectivas respostas corretas. Tais exemplos são descritos por um conjunto de características (features). A partir disso um indutor é capaz de classificar novos exemplos em uma das classes conhecidas (MOHRI; MOHRI; TALWALKAR, 2012). Em suma, no aprendizado supervisionado um agente recebe entradas e saídas e aprende uma função para mapeá-las. Caso a função mapeie as entradas para valores discretos, o problema posto para o indutor é categorizado como um problema de classificação, e caso a saída da função seja um valor contínuo, a tarefa é conhecida como um problema de regressão.

Para ilustrar um problema de aprendizado supervisionado, definiu-se um exemplo onde é desejado saber o preço estimado de um imóvel a venda. Para que seja possível aplicar uma técnica de aprendizado máquina, deve-se obter dados para ensinar o algoritmo a induzir o preço dos imóveis. Sendo assim, é preciso buscar dados de imóveis que possuem o valor de venda previamente definido. Após isso, é necessário definir quais características dos imóveis influenciaram no valor de venda definido. Neste exemplo pode-se definir o bairro onde está localizado o imóvel, sua quantidade de metros quadrados e quando o imóvel foi finalizado. Portanto, as características do imóvel fornecida ao algoritmo são as features do problema. Do mesmo modo, o valor de venda definido é o label fornecido para cada exemplo. A partir desses dados, ao fornecer um imóvel sem o label definido, o modelo produzido deverá me fornecer um valor para ele. Como nesse caso o valor de

(32)

venda de um imóvel está definido em um intervalo contínuo, o exemplo definiu um problema de regressão.

Para exemplificar um problema de classificação, o exemplo deve definir os possíveis valores de saída. Por exemplo, tem-se a tarefa de classificar frutas como maçãs ou laranjas. Nesse caso, podemos descrever os exemplares de cada fruta através das features: peso, cor, tipo de casca, origem e quantidade de suco. Os labels de cada exemplar devem estar contidos no conjunto discreto das possíveis frutas escolhidas. Após o treinamento do modelo com os dados rotulados, o modelo deverá produzir saídas contidas exclusivamente no conjunto discreto de frutas, caracterizando assim o problema de classificação.

O aprendizado não supervisionado apresenta exemplos não rotulados ao indutor. Portanto, o algoritmo recebe apenas um conjunto de dados de entrada, sem suas determinadas saídas, durante o processo de treinamento. Nesses casos, a intenção é identificar padrões nos dados. Normalmente, o indutor analisa os exemplos fornecidos e tenta determinar quais deles podem ser agrupados de alguma maneira, formando agrupamentos ou clusters.

Usando o exemplo das frutas, podemos descrever brevemente um problema de aprendizado de máquina não supervisionado. Considere que foram obtidos dados sobre as laranjas e maçãs, mas, apesar de receber os exemplares descritos através de suas features, eles não estão rotulados, ou seja, ainda não existe a informação de que existe dois grupos de frutas definidos nos dados. A tarefa do modelo de aprendizado de máquina é, portanto, agrupar as frutas em grupos semelhantes através das características fornecidas. Ou seja, o modelo inicialmente irá criar dois clusters, um deles com as laranjas e outro com as maçãs. Em seguida, ao receber um novo exemplo, será definido a qual cluster a fruta pertence.

Deste modo, tanto para os problemas de aprendizado supervisionado quanto para os problemas de aprendizado não supervisionado, o fluxo para a geração de um modelo preditivo é o mesmo. Primeiramente os dados devem ser fornecidos para um algoritmo. O algoritmo então passar por um processo de aprendizado. A segunda etapa é a utilização do modelo gerado. Tal modelo é capaz de generalizar novas entradas e realizar uma previsão de saída baseado nos dados utilizados durante o treinamento. A Figura 1 ilustra as duas etapas descritas anteriormente. Nela, cada um dos passos descritos está contido em um pequeno retângulo com um texto que o descreve. Também é possível visualizar uma flecha que aponta de um passo precedente para

(33)

o imediatamente posterior. Os passos da primeira etapa, a criação do modelo, estão contidos no retângulo com o número 1 escrito em seu canto superior esquerdo. Os passos da segunda etapa, a utilização do modelo, estão contidos no retângulo com o número 2 escrito em seu canto inferior esquerdo.

Figura 1- Etapas para a criação e utilização do modelo de aprendizado de máquina.

Fonte: Autoria própria.

Além das etapas em que o modelo realiza o aprendizado e torna-se pronto para realizar classificações, normalmente, os modelos passam por uma etapa de testes e validação. É nessa etapa que o algoritmo tem sua precisão averiguada para que a qualidade de suas asserções seja atestada. Nesse caso, se o modelo não obtiver os resultados esperados, alterações na configuração do algoritmo de treinamento, ou nos dados, devem ser realizados, e o modelo é novamente gerado.

2.2 FRAMEWORK

O framework produzido para esta dissertação é definido como em FAYAD e SCHIMDT (1997). Segundo os autores, um framework é uma aplicação semi completa, reusável, que pode ser especializada para criar aplicações específicas e que, diferentemente das bibliotecas de classes, é voltado para um domínio específico de aplicações. Tais frameworks se apoiam fortemente nas características das linguagens orientadas a objetos e sua estrutura de classes, e por isso também são chamados de

(34)

Através dessas características, os frameworks promovem benefícios como modularidade, reutilização, extensibilidade e inversão de controle. A modularidade é promovida através do encapsulamento de detalhes voláteis atrás de interfaces sólidas, localizando o impacto das mudanças de modelagem e implementação. Isso torna possível aumentar a qualidade, pois reduz esforços para o entendimento e manutenção do

software existente.

As interfaces estáveis dos frameworks aumentam o reuso definindo componentes genéricos que podem ser reutilizados por diversas aplicações. Esses componentes são produzidos através do conhecimento de domínio adquirido previamente pelo desenvolvedores do framework. Através dele é possível evitar esforços repetitivos para a criação das aplicações, promovendo um ganho substancial de produtividade.

Frameworks possuem um grande poder de extensão

proporcionado por métodos chamados de ganchos (em inglês, hooks), que permitem às aplicações estendê-los e são essenciais para garantir as customizações das aplicações específicas. Desse modo, acontece o desacoplamento das partes fixas do framework, comuns a todas as aplicações, das partes introduzidas durante sua personalização para uma determinada aplicação.

A inversão de controle, característica dos frameworks, permite que certas etapas do processamento das aplicações sejam personalizadas por objetos que manipulam os eventos gerados pelo framework. O evento invocará um método hook que pode ser modificado para atender às necessidades específicas da aplicação, no entanto, quem define quais métodos serão chamados em resposta a determinados eventos é o

framework (FAYAD; SCHIMDT, 1997). Desse modo, quem define

quem comanda o fluxo de controle do programa é o framework, e não a aplicação criada a partir dele. Essa é a principal diferença entre os

frameworks e algumas outras abordagens de reuso. Em outras

abordagens, como as bibliotecas, o artefato que é reutilizado é passivo, diferente dos frameworks.

Durante o projeto do framework, é importante identificar as partes estáveis e flexíveis dele. Através delas a inversão de controle será promovida. As partes estáveis do framework, compõem uma lógica comum às aplicações de seu domínio e não devem ser modificadas por seus usuários. Para essas partes, dá-se o nome de frozen spots. As partes flexíveis permitem que as aplicações sejam personalizadas, adicionando comportamentos e características peculiares a cada uma delas. Tais

(35)

partes são denominadas hot spots. Note que a importância está na interpretação de quanto a aplicação precisa ser personalizada. A decisão sobre a importância/relevância da personalização dependerá do tipo de problema.

Os frozen spots podem ser promovidos através de métodos que possuem algoritmos definidos, chamados de template. Esses métodos possuem o esqueleto de um algoritmo, encapsulando controles do fluxo da lógica da aplicação, e podem realizar chamadas para métodos hooks, que por sua vez auxiliam na flexibilidade da aplicação podendo representar hot spots. Os métodos hooks podem ser abstratos ou podem fornecer um comportamento padrão para o framework, sem impedir que o usuário faça modificações pertinentes quando necessário.

Identificar quais métodos e classes caracterizam os frozen e hot

spots na documentação do framework permite ao usuário fazer o correto

uso do artefato. Desse modo, destacá-los na documentação torna-se importante por guiar os usuários durante as personalizações para criar as aplicações, impedindo que pontos essenciais a seu funcionamento sejam modificados equivocadamente ou que deixem de ser sobrescritos quando necessário.

Apesar de suas vantagens, os frameworks implicam em alguns desafios para sua construção e uso, como apontado em FAYAD e SCHIMDT (1997). A primeira delas é o esforço necessário para o seu desenvolvimento. Do mesmo modo que desenvolver uma aplicação complexa não é uma tarefa simples, desenvolver um artefato, o

framework, que generaliza tais aplicações pode exigir um esforço ainda

maior.

Outro desafio imposto pelos frameworks é a curva de aprendizado para utilizá-lo de forma eficiente e produtiva. Extrair as vantagens de reutilização de um framework pode exigir bastante tempo e no desenvolvimento de várias aplicações, portanto, deve-se observar se o investimento dispensado nesse aprendizado será compensado pelo ganho de qualidade e produtividade a longo prazo.

Outro ponto desafiador é produzir frameworks que possam ser integrados com outros artefatos de software. Devido às características dos frameworks, eles tendem a ser mais eficientes para solucionar um problema isoladamente e não para resolver problemas de integração.

Por fim, podemos apontar a manutenção dos frameworks como um desafio complexo. Do mesmo modo que os requisitos de aplicações mudam com o decorrer do tempo, os dos frameworks também. Contudo,

(36)

mudanças em frameworks, podem afetar as aplicações já produzidas por eles, tornado necessária a manutenção delas.

2.2.1 Classificação de frameworks

A constante evolução, e o crescimento contínuo da quantidade de

frameworks disponíveis, tornaram necessária a categorização deles. Frameworks podem ser classificados segundo diversos critérios como

escopo, abordagem, padronização, formato, entre outros (KRAJNC; HERICKO, 2003). No entanto, é importante categorizar o framework proposto por sua extensibilidade, por ser um ponto diretamente relacionado ao modo que seus usuários irão interagir com ele. Podemos separar os frameworks de acordo com as técnicas utilizadas para estender suas classes.

A primeira classificação foi feita por Johnson e Foote (1988). Eles classificaram os frameworks em dois tipos, caixa branca e caixa preta. Essa classificação foi estendida por Fayad, Schmidt e Johnson (1999), que incluíram a categoria caixa cinza. Por fim, alguns autores complementaram essa classificação com uma categoria conhecida como caixa de vidro (Eisenecker, 1996). A descrição de cada categoria é apresentada abaixo.

• Caixa Branca: Para atingir a extensibilidade, os frameworks caixa branca dependem fortemente de recursos ligados à orientação a objetos, como herança e ligação dinâmica. Funcionalidades existentes do framework são reusadas e estendidas através da herança de classes do framework e a sobrescrita de métodos ganchos pré-definidos. É necessário que o usuário conheça a fundo o funcionamento do framework para utilizá-lo.

• Caixa Preta: Os frameworks caixa preta provém a extensibilidade definindo interfaces para componentes que podem ser acoplados no framework através da composição de objetos. Não é necessário entender o funcionamento interno deles detalhadamente, porém eles promovem menos flexibilidade do que os frameworks caixa branca.

• Caixa Cinza: Tais frameworks possuem pontos de extensão que utilizam as duas abordagens anteriores (caixa branca e caixa preta). Buscam explorar as vantagens das abordagens anteriores, bem como minimizar suas desvantagens.

(37)

• Caixa de vidro: Alguns autores adicionaram às três categorias anteriores a categoria de caixa de vidro. Essa nomenclatura foi designada para os frameworks cuja implementação interna pode ser vista, mas não pode ser modificada (Eisenecker, 1996). Os frameworks de caixa branca exigem um conhecimento profundo do desenvolvedor com relação a sua estrutura interna. Eles tendem a produzir aplicações fortemente acopladas com a estrutura de hierarquias do framework. Em contrapartida, os frameworks caixa preta utilizam mais a composição e delegação do que a herança, sendo geralmente mais fácil de serem utilizados e estendidos. Contudo, esses

frameworks são mais difíceis de serem desenvolvidos, já que os

desenvolvedores do framework precisam definir uma grande quantidade de interfaces e de métodos ganchos, que devem cobrir uma grande quantidade de casos de uso em potencial. Os frameworks caixas cinza possuíam uma flexibilidade e extensibilidade suficientes, além da capacidade de esconder dos desenvolvedores informações desnecessárias (Eisenecker, 1996).

O framework concebido durante o desenvolvimento da dissertação, enquadra-se na categoria caixa cinza. Todos os seus pontos de extensão serão identificados e expostos no Capítulo 4.

2.2.2 Aplicações de formulários

Formulários são meios de criar uma interface simples para que os usuários possam se comunicar com as aplicações de software. Através deles os usuários são capazes de trocar informações com as aplicações de maneira mais intuitiva. No contexto deste trabalho, aplicações de formulários são definidas como aquelas que possuem esses elementos para realizar a troca de informações com os usuários. Os formulários podem representar o papel central em determinadas aplicações, sendo eles os responsáveis por guiar o fluxo de execução. Algumas aplicações que exemplificam esse comportamento, são testes que utilizam os formulários como única maneira de entrada e saída de informações, e aplicam regras aos dados preenchidos, orientando o fluxo da aplicação baseando-se nessas regras. Também podemos citar aplicações que possuem um formulário único, fazendo interface com algum serviço já implementado, como aplicações que fazem oferecem formulários de busca em bases de dados, e a aplicação apresentada em Calderon-Vilca et al. (2017).

(38)

O framework desenvolvido auxilia a criação dos formulários das aplicações criadas através dele, fornecendo uma integração com a camada de negócios voltada ao aprendizado de máquina. O framework foi desenvolvido para suportar aplicações desenvolvidas para a plataforma desktop, direcionando os esforços de pesquisa e desenvolvimento desse trabalho para aplicações e artefatos que contenham as mesmas características.

(39)

3 REVISÃO BIBLIOFRÁFICA

A fim de encontrar trabalhos que compõem o estado da arte, foi realizada uma pesquisa seguindo o guia para revisões sistemáticas em engenharia de software, apresentado pela universidade de Durham na Inglaterra (Kitchenham, 2007). Através de sua metodologia, o seguinte termo para pesquisa foi gerado:

“((software) OR (application) OR (product)) AND

((machine learning) OR (supervised learning) OR (Data mining)) AND

((framework) OR (application framework)) AND

((Accuracy) OR (predict accuracy) OR (reuse) OR (code reuse) OR (software reuse) OR (effort reduction))”

Com a definição deste termo, pretendia-se encontrar frameworks voltados à criação de aplicações orientadas a objetos que fazem uso de aprendizado de máquina para, desse modo, apoiar a primeira hipótese de pesquisa da dissertação.

O termo foi, então, pesquisado no mês de outubro de 2016 na plataforma Google Scholar e nas bases de dados IEEExplore e Springer. Para a base da dados IEExplore, foi adicionado como filtro o intervalo de datas a partir do ano 2000, já nas outras não foram adicionados filtros de data. No entanto, resultados com data inferior ao ano 2000 foram desconsiderados. Todos os mecanismos de busca foram verificados até pelo menos a quinta página de resultados, totalizando cinquenta resultados para cada uma.

Contudo, o termo framework pode ser utilizado em diversos contextos, e compreender artefatos com inúmeros propósitos. Sendo assim, após realizada a primeira busca, foram criados novos conjuntos de palavras-chave a partir de termos considerados apropriados para a pesquisa. Portanto, em maio de 2017 a pesquisa com o termo obtido anteriormente foi refeita, e foram realizadas novas pesquisas, cada uma utilizando individualmente os três termos a seguir:

(1) “software framework for form-based applications”;

(2) “(software OR Object Oriented OR application) AND framework AND (form OR quiz)”; e

(40)

Tais termos foram adaptados com a intenção de encontrar trabalhos que trouxessem frameworks capazes de apoiar a criação de aplicações que utilizassem formulários como interface com o usuário. Ao avaliar o uso desses frameworks em aplicações que utilizassem aprendizado de máquina, a segunda hipótese do trabalho poderia ser verificada. Todos esses termos foram pesquisados no Google Scholar e na categoria de Ciência da Computação da Springer, pelo menos até a quinta página novamente. Como feito na pesquisa anterior, não foram adicionados filtros de data. Os resultados obtidos não trouxeram nenhum trabalho que fosse relevante para a dissertação.

Do mesmo modo, a fim de encontrar, novamente, frameworks capazes de construir aplicações e os formulários pertencentes a elas, foi realizada uma nova pesquisa. Os conjuntos elencados de palavras-chave foram:

(1) “(software OR Object Oriented OR application) AND framework AND (form OR quiz)”;

(2) “application framework for questionnaire forms”; (3) “framework for build questionnaire systems”; (4) “framework for build questionnaire”;

(5) “object oriented framework for build questionnaire systems”. Todos os termos mencionados foram pesquisados de maneira individual, com o mesmo padrão e critérios das pesquisas anteriores. Novamente, após a aplicação dos critérios de exclusão, nenhum resultado obtido se mostrou relevante para a dissertação. Com isso, a abordagem da pesquisa foi modificada.

Após adaptar o termo de busca inicial para encontrar trabalhos que fossem relacionados à essa dissertação por se tratarem de

frameworks que apoiassem a criação de aplicações que utilizassem

formulários, foram criados termos para encontrar os trabalhos que pudessem trazer os frameworks que promovessem a redução de esforços durante a criação de aplicações que utilizassem aprendizado de máquina, mas que não compreendessem necessariamente o uso de formulários para isso.

Desse mesmo modo, foi utilizado o seguinte conjunto de termos: (1) “machine learning framework”;

(2) “software framework machine learning”; (3) “application framework machine learning”.

Por fim, o termo “machine learning” deu lugar ao nome de uma plataforma conhecida para trabalhar com aprendizado de máquina em

(41)

Java, linguagem escolhida para a implementação do trabalho, e foi utilizado o termo “Weka framework”.

Através de todas as pesquisas até agora citadas, cerca de 43 artigos foram selecionados para leitura a partir da análise dos seus títulos. A compatibilidade de conteúdo foi então utilizada para excluir esses trabalhos. Eles foram avaliados pelo seu resumo, e posteriormente por seu conteúdo. Através deles, buscava-se encontrar pesquisas relacionadas à proposta por esta dissertação. A relação poderia estar na redução de esforços para a utilização de técnicas de aprendizado de máquina, no uso de frameworks para apoiar a criação de aplicações de aprendizado de máquina, no uso de formulários como meio de entrada para os modelos de aprendizado de máquina, ou na combinação de algumas dessas características. Quando algum dos trabalhos não se enquadrava na descrição anterior, ele era descartado da leitura.

Com isso, foram encontradas iniciativas de produzir artefatos que tragam mais eficiência e produtividade para o desenvolvimento de aplicações que utilizam aprendizado de máquina. Algumas destas iniciativas produzem implementações prontas de algoritmos conhecidos (COLLOBERT; BENGIO; MARIÉTHOZ, 2002) (GASHLER, 2011), outras adaptam tais algoritmos para domínios ou linguagens específicas (BISCHL, et al. 2016), existem também as que endereçam seus esforços para facilitar o entendimento e aplicação dessas técnicas.

A partir de janeiro de 2018, também foram realizadas buscas em eventos acadêmicos relacionados ao tema da dissertação. A intenção era poder estar completamente atualizado com o estado da arte. Tais eventos tiveram seus trabalhos averiguados pelos mesmos critérios citados anteriormente, e foram verificados os anos de 2018, 2017 e 2016 para a seleção de conteúdo. Os eventos analisados foram: International Conference on Information Integration and Web-based Applications & Services (iiWAS), International Symposium on Computing and Networking (CANDAR), International Conference on Predictive Models and Data Analytics in Software Engineering (PROMISE), Brazilian Symposium on Components, Architectures and Software Reuse (SBCARS), International Conference on Computer Systems and Applications (AICCSA), International Conference of the Chilean Computer Science Society (SCCC) e The International Conference on Intelligent Data Engineering and Automated Learning (IDEAL).

Outras iniciativas conhecidas pela indústria também foram levadas em consideração. Contudo, por se tratar de bibliotecas de algoritmos, ou provedores de serviços como indexação e distribuição de

(42)

servidores em clusters, e possuírem, portanto, foco distinto do presente trabalho, estas não foram selecionadas para maiores detalhamentos. Entre essas iniciativas estão ElasticSearch, Lucene, Pandas e DICE. Sendo assim, as publicações selecionadas são mostradas a seguir. 3.1 BRAINY: A MACHINE LEARNING LIBRARY

A pesquisa apresentada por Konkol (2014) traz facilidades para o uso de técnicas de aprendizado de máquina por novatos. Brainy é o nome dado para uma biblioteca que possui uma interface para as principais tarefas pertinentes ao uso de aprendizado de máquina além de algoritmos populares. Tal interface é exclusivamente fornecida via API, não possuindo facilidades gráficas para o usuário. Além disso, possui uma infraestrutura matemática complexa para dar apoio ao seu sofisticado sistema de definição e gerenciamento de features. Segundo os autores, tal sistema é a grande contribuição científica da pesquisa.

O componente de processamento das features traz algoritmos que auxiliam a representação de objetos definidos pelos usuários na forma numérica. Além disso, ele inclui uma classe que auxilia na gestão do conjunto de features. Essa classe cria matrizes com todas as features definidas pelo usuário, e permite experimentos rápidos com mudanças de seu conjunto sem modificar o código fonte da aplicação.

A infraestrutura matemática fornecida é baseada na álgebra linear. Brainy representa seus dados como matrizes e vetores, que são a forma de comunicação entre o componente de processamento das

features e os algoritmos de aprendizado de máquina. Com isso,

operações de álgebra linear são utilizadas no processamento dos algoritmos. O componente conta também com métodos matemáticos implementados, e através de suas interfaces, novas técnicas podem ser adicionadas com facilidade.

As duas estruturas mencionadas fazem uso dos pacotes de algoritmos implementados pelos autores. Todos eles contam com uma interface adaptada aos métodos de matrizes e vetores criados por Brainy. Algoritmos de um mesmo tipo compartilham a mesma interface, e também podem ser adicionados de maneira simples ao pacote.

Os autores fazem uma reflexão sobre as diferenças e semelhanças do Brainy com outros artefatos. Citam semelhanças com outras bibliotecas e definem WEKA como sendo uma biblioteca com propósito diferente da proposta. Afirmam também que o uso padrão através de sua

(43)

interface gráfica e seu nível de abstração maior, distanciam ainda mais a WEKA do Brainy.

Konkol (2014) promove a redução de esforços para seus usuários através de duas características: o fornecimento dos algoritmos prontos e o apoio oferecido na representação e manipulação das features. Entretanto, fornece exclusivamente uma interface via API e não abrange o desenvolvimento das aplicações que consumirão seus algoritmos. 3.2 AUTO-WEKA 2.0: AUTOMATIC MODEL SELECTION AND HYPERPARAMETER OPTIMIZATION IN WEKA.

Kotthoff et al. (2017) mostra outra ferramenta para facilitar o uso de aprendizado de máquina, o Auto-Weka 2.0. No entanto, seu foco está diretamente relacionado a uma ferramenta bastante conhecida, chamada WEKA.

WEKA é uma plataforma open source muito utilizada por novatos em aprendizado de máquina devido a sua interface intuitiva. Contudo, por possuir uma vasta gama de algoritmos implementados, é comum que os usuários tenham dificuldades em definir qual a melhor abordagem para lidar com seu conjunto de dados. Bischl et al. (2013) definem, então, o Auto-Weka 2.0, que auxilia os usuários nesta tarefa.

O Auto-Weka 2.0 é uma extensão da ferramenta Auto-Weka apresentada em Thornton et al. (2013). Com relação a Thornton et al. (2013), o Auto-Weka 2.0 traz quatro novas características vantajosas para seus usuários. Primeiramente, foi adicionado o suporte a algoritmos de regressão, expandindo o foco inicial em algoritmos de classificação. Em segundo lugar, foi adicionado suporte a todas as métricas de performance da WEKA. A terceira vantagem com relação à versão inicial é a capacidade de suportar, de forma nativa, execuções paralelas na mesma máquina, permitindo assim encontrar e salvar as N melhores configurações de cada uma das execuções em vez de apenas uma. A quarta vantagem promovida foi a integração completa com WEKA. Através dessa integração, a instalação e utilização do artefato ficou muito mais simples. Além disso, essa integração é crucial para que o artefato alcance seu objetivo.

O ponto crucial do Auto-Weka 2.0 é que o usuário não necessariamente conheça os algoritmos disponíveis e seus hiperparâmetros, mas que utilize o artefato através de um botão, e que forneça apenas o limite de memória a ser utilizada e o tempo máximo do processo de aprendizado, além do conjunto de dados.

(44)

Para obter tal resultado, os autores definem o problema de encontrar o melhor algoritmo de aprendizado, com seus hiperparâmetros otimizados, como um problema de caixa preta de otimização de função. A partir dessa definição, eles aplicam um algoritmo de otimização bayesiana.

Os autores citam seu pioneirismo no uso de otimização bayesiana para a solução do problema, e relatam uma implementação semelhante, o Auto-sklearn. O Auto-sklearn (Feurer et al., 2015) faz uso da mesma abordagem para selecionar e parametrizar os algoritmos da biblioteca scikit-learn em python. Entretanto, apesar do Auto-sklearn ser capaz de reduzir esforços de usuários novatos em aprendizado de máquina, ele limita seus usuários a uma plataforma singular e seu foco não está relacionado ao reúso de código das aplicações.

3.3 MLweb: A TOOLKIT FOR MACHINE LEARNING ON THE WEB

O trabalho apresentado em Lauer (2018), por sua vez, dedicou-se em abordar problemas encontrados nas bibliotecas direcionadas ao uso do aprendizado de máquina em ambientes Web. Segundo Lauer (2018), as soluções existentes são geralmente baseadas em servidores, cabendo a eles fazer o treinamento e predições. Esse modelo se adequa para enfrentar os desafios de big data, mas traz algumas questões para seu uso. Tal modelo pode pôr em risco a privacidade dos dados que precisam trafegar entre os clientes e o servidor, bem como impossibilitar o uso offline de serviços importantes. Além disso, tais servidores são normalmente computadores de alta capacidade, e seus custos impossibilitam a disponibilidade das soluções por indivíduos ou entidades com fins não lucrativos. Com o foco nessas questões, Lauer (2018) apresenta um kit de ferramentas de software de código aberto para aprendizado de máquina na Web.

Essa ferramenta é composta por três componentes. O primeiro deles é uma API Javascript para computação científica. Essa API fornece algoritmos de álgebra linear para que o browser seja capaz de realizar as tarefas relacionadas a esses cálculos. A biblioteca escolhida para implementar os algoritmos desse componente foi concebida com foco no desempenho. Uma comparação, realizada pelos autores, com outras bibliotecas do estado da arte, como a encontrada em Mura et al. (2015), pôde mostrar o desempenho superior de tal biblioteca.

(45)

O segundo componente é uma extensão dessa biblioteca com algoritmos de aprendizado de máquina. Através dele os autores entregam uma interface fácil de usar, com algoritmos de classificação e regressão compartilhando uma interface única. Os dois componentes até aqui citados apresentam os benefícios do processamento offline e da privacidade dos dados, já que o processamento realizado pelo cliente remove a necessidade da navegação dos dados pela internet.

O terceiro componente é um ambiente online de desenvolvimento baseado nos componentes já descritos, com uma interface amigável e exemplos de cada função. Este componente permite que os programadores sejam capazes de realizar testes de algoritmos específicos a qualquer momento em diversos aparelhos como

smartphones e tablets.

A proposta de Lauer et al. (2018) pode ser muito útil em demonstrações e aborda problemas específicos do ambiente Web. Ela também se adequa nos casos em que a privacidade dos dados da aplicação é mais importante que a eficiência. Contudo, a proposta limita o programador aos algoritmos fornecidos por apenas uma biblioteca e, como nos casos anteriores, não traz nenhuma redução de esforço durante a criação das aplicações que fazem uso do aprendizado de máquina. 3.4 A FRAMEWORK FOR BUILDING WEB MINING

APPLICATIONS IN THE WORLD OF BLOGS: A CASE STUDY IN PRODUCT SENTIMENT ANALYSIS

Costa et al. (2012), define um framework orientado a objetos que une técnicas de aprendizado de máquina com as vantagens de reúso de código e diminuição do esforço. O framework permite construir aplicações web, voltadas para a mineração de informações de blogs. Ele foi concebido utilizando uma arquitetura com dois sub-frameworks, um deles para navegar e obter dados dos blogs, e outro dedicado a minerar informações desses dados. Além disso, também conta com um terceiro componente, que inicia o processo de extração das informações dos blogs e fornece uma interface para as aplicações requisitarem os serviços.

O framework foi projetado para que as funcionalidades de seus sub-frameworks sejam vistas como Web Services. O grande diferencial da proposta de framework está na utilização de Web semântica na descrição desses serviços. Através do uso de ontologias nessa descrição, o framework permite a automatização da localização dos serviços que

(46)

uma aplicação exige. A Figura 2 mostra o framework e seus componentes.

Figura 2- Framework de Costa e seus componentes.

Fonte: (Costa et al., 2012) Editada pelo autor.

O framework é composto por três componentes. O componente

Text Extractor consiste em um sub-framework responsável por extrair

textos de conteúdo Web. Foi projetado em uma arquitetura em camadas e fornece pontos de flexibilidade para os usuários. Possui um componente de pré-processamento de texto, com funcionalidades como remoção de espaços em branco e um componente de pós-processamento de texto, que utiliza técnicas como sumarização para incrementar a qualidade dos dados. O componente de pós-processamento de texto é o ponto de flexibilização do framework, por permitir adição de novas técnicas ao framework.

O outro sub-framework é o componente Information Extractor, responsável por utilizar técnicas de mineração de dados para extrair informações pertinentes às aplicações. Esse componente segue a abordagem orientada a serviços e também possui um componente de pré-processamento e um de pós-processamento de texto. Além disso, contém um componente chamado Service Identification, responsável por descrever e localizar todos os serviços definidos pela aplicação.

Por fim, o componente de WebMining Controller, contido no extrator de informações, é composto de três atividades básicas: pré-processamento, mineração de dados e pós-pré-processamento, todas elas implementadas como web services. O componente de WebMining Controller possui dentro dele um componente responsável por cada atividade citada, e todos eles são controlados por um componente

(47)

chamado Service Manager. O Service Manager é um web service responsável por descobrir, compor e invocar os web servers semânticos disponíveis no componente Data Mining. Além dele, outros dois componentes formam o componente Data Mining: o Mining Algorithms e o Ontology O Mining Algorithms contém algoritmos utilizados no pré-processamento e na mineração. O Ontology detalha a descrição semântica dos web services, permitindo que eles sejam automaticamente selecionados e utilizados.

Por ter sido construído baseado em web services, o framework permite uma independência de linguagem de programação, e tem como principal vantagem a automatização da tarefa de descobrir, compor e invocar os serviços necessários para a aplicação, permitida pelo uso de Web semântica. Os serviços do framework são descobertos através de sua descrição semântica e, para isso, cada ferramenta recebe uma descrição em OWL que utiliza ontologias, em vez de WSDL. Cada uma dessas ferramentas é abstraída e seus requisitos descritos como web services para camadas superiores. Cada um desses web services recebem uma descrição semântica, sendo assim capaz de determinar quais os serviços podem ser selecionados para um determinado objetivo, sem a intervenção humana. Tudo isso é utilizado pelo Service Manager, que é o componente de comunicação do componente Data Mining com a aplicação cliente.

Apesar de apresentar diversas vantagens, este framework foge do proposto por esta pesquisa. Apesar de extensível, ele foi projetado para trabalhar com textos e não dados numéricos já estruturados. Além disso, o framework não faz uma extração automática de tais dados de formulários e difere do domínio das aplicações proposto.

3.5 QUADRO COMPARATIVO

A seguir, o Quadro 1 destaca as principais caraterísticas dos trabalhos analisados, e um “x” marca os trabalhos que apresentam estas características.

(48)

Quadro 1 – Quadro comparativo entre os trabalhos. Acesso a Algoritmos do estado da arte Integração com outras bibliotecas Redução de código da aplicação Aplicações para domínios variados Direcionado a usuários não especialistas Integração entre interface com o usuário e aprendizado de máquina KONKOL (2014)

x

x

KOTTHOFF (2017)

x

x

x

LAUER (2018)

x

x

COSTA (2012)

x

x

x

x

Framework proposto

x

x

x

x

x

x

Fonte: Autoria própria

A primeira coluna do quadro refere-se à capacidade dos trabalhos em fornecer algoritmos no estado da arte para seus. Todos os trabalhos analisados fornecem essa possibilidade, sendo porque eles são os próprios fornecedores dos algoritmos ou por permitirem a integração com bibliotecas que os forneçam. A segunda coluna refere-se à capacidade de integração do artefato produzido pelo trabalho com outras bibliotecas de algoritmos. Os únicos trabalhos com essa característica são os conduzidos nessa dissertação, e o framework proposto em Costa et al. (2012). Como Auto-Weka (Kotthoff et al., 2017) é capaz de integrar-se exclusivamente ao WEKA, foi considerado que ele não possui essa capacidade. A terceira coluna descreve a capacidade do artefato de reduzir o código das aplicações que irão fazer seu uso, desconsiderando o impacto da não implementação dos algoritmos de aprendizado de máquina. Esse reuso deve ser promovido na lógica da aplicação em si. Novamente, apenas o framework proposto neste trabalho e o desenvolvido por Costa et al. (2012) possuem tal característica. A quarta coluna, refere-se aos domínios das aplicações que serão desenvolvidos utilizando o artefato. Dessa vez, o trabalho de Costa et al. (2012) não apresenta esta característica, já que o framework proposto por eles é voltado apenas para aplicações de análise de sentimentos em conteúdo de blogs.

A penúltima coluna descreve o direcionamento do artefato produzido, sendo marcada caso ele seja direcionado aos usuários não especialistas em alguma das tarefas pertinentes ao desenvolvimento de aplicações de aprendizado de máquina. O primeiro trabalho a ser marcado por essa característica é o de Kothof et al (2017). O intuito da

Referências

Documentos relacionados

Após o início destas iniciativas, com a realização da Semana do Mocho-galego em Outubro de 2008 e da Semana da Coruja-do-mato em Dezembro de 2008, durante o ano

Com base nos resultados da pesquisa referente à questão sobre a internacionalização de processos de negócios habilitados pela TI com o apoio do BPM para a geração de ganhos para

Este trabalho teve por objetivo o estudo da dimensão das doenças crônicas, especificamente o diabetes mellitus, visando à elaboração de um modelo de processo

Para essa implementação deve-se observar que muitos sistemas têm sido construídos baseados exclusivamente em requisitos técnicos, deixando a arquitetura implícita

Sendo assim, a automação residencial pode prover meios para controlar todos os sistemas da residência como sistema de ar condicionado e aquecimento, home- office, contemplando

P := população inicial de indivíduos // conjunto de soluções Avalia aptidão de cada indivíduo de P // função objetivo. Enquanto critérioDeParada(MaxGerações, fitness(P)),

• É vantajoso usar esses algoritmos para problemas de aprendizado onde todos os exemplos estão disponíveis e, provavelmente, não irão ocorrer mudanças.. Linguagens

6 Consideraremos que a narrativa de Lewis Carroll oscila ficcionalmente entre o maravilhoso e o fantástico, chegando mesmo a sugerir-se com aspectos do estranho,