Baixe o app para aproveitar ainda mais
Prévia do material em texto
Indaial – 2020 Machine learning i – classificação e regressão Prof. Rodrigo Ramos Nogueira 1a Edição Copyright © UNIASSELVI 2020 Elaboração: Prof. Rodrigo Ramos Nogueira Revisão, Diagramação e Produção: Centro Universitário Leonardo da Vinci – UNIASSELVI Ficha catalográfica elaborada na fonte pela Biblioteca Dante Alighieri UNIASSELVI – Indaial. Impresso por: N778m Nogueira, Rodrigo Ramos Machine learning I - Classificação e regressão. / Rodrigo Ramos Nogueira. – Indaial: UNIASSELVI, 2020. 186 p.; il. ISBN 978-65-5663-320-6 ISBN Digital 978-65-5663-316-9 1. Machine learning. - Brasil. II. Centro Universitário Leonardo da Vinci. CDD 004 apresentação Caro acadêmico! Seja bem-vindo ao Livro Didático Machine learning I – Classificação e Regressão. Esta disciplina objetiva proporcionar uma introdução aos conceitos fundamentais de Machine learning e aprofundar os estudos sobre as tarefas de classificação e regressão. Este material conta com recursos didáticos externos, por isso, recomendamos fortemente que você realize todos os exemplos, explore as bases de dados e pratique com os exercícios resolvidos, para um aproveitamento excepcional da disciplina. Nesse contexto, este livro didático está dividido em: Unidade 1, que apresenta uma introdução ao aprendizado de máquina; Unidade 2, que mostra a classificação das Machine learning e Unidade 3, que trata da regressão. Destacamos também a importância de realizar as autoatividades, que objetivam a fixação dos conceitos apresentados – lembrando que elas não são opcionais. Em caso de dúvida durante a realização das atividades, sugerimos que entre em contato com seu tutor externo ou com a tutoria do Centro Universitário Leonardo Da Vinci (UNIASSELVI) – não continue as atividades enquanto todas as dúvidas não tiverem sido sanadas. Bom estudo! Sucesso na sua trajetória acadêmica e profissional! Prof. Rodrigo Ramos Nogueira Você já me conhece das outras disciplinas? Não? É calouro? Enfim, tanto para você que está chegando agora à UNIASSELVI quanto para você que já é veterano, há novi- dades em nosso material. Na Educação a Distância, o livro impresso, entregue a todos os acadêmicos desde 2005, é o material base da disciplina. A partir de 2017, nossos livros estão de visual novo, com um formato mais prático, que cabe na bolsa e facilita a leitura. O conteúdo continua na íntegra, mas a estrutura interna foi aperfeiçoada com nova diagra- mação no texto, aproveitando ao máximo o espaço da página, o que também contribui para diminuir a extração de árvores para produção de folhas de papel, por exemplo. Assim, a UNIASSELVI, preocupando-se com o impacto de nossas ações sobre o ambiente, apresenta também este livro no formato digital. Assim, você, acadêmico, tem a possibilida- de de estudá-lo com versatilidade nas telas do celular, tablet ou computador. Eu mesmo, UNI, ganhei um novo layout, você me verá frequentemente e surgirei para apresentar dicas de vídeos e outras fontes de conhecimento que complementam o assun- to em questão. Todos esses ajustes foram pensados a partir de relatos que recebemos nas pesquisas institucionais sobre os materiais impressos, para que você, nossa maior prioridade, possa continuar seus estudos com um material de qualidade. Aproveito o momento para convidá-lo para um bate-papo sobre o Exame Nacional de Desempenho de Estudantes – ENADE. Bons estudos! NOTA Olá, acadêmico! Iniciamos agora mais uma disciplina e com ela um novo conhecimento. Com o objetivo de enriquecer seu conhecimento, construímos, além do livro que está em suas mãos, uma rica trilha de aprendizagem, por meio dela você terá contato com o vídeo da disciplina, o objeto de aprendizagem, materiais complemen- tares, entre outros, todos pensados e construídos na intenção de auxiliar seu crescimento. Acesse o QR Code, que levará ao AVA, e veja as novidades que preparamos para seu estudo. Conte conosco, estaremos juntos nesta caminhada! LEMBRETE suMário UNIDADE 1 — MACHINE LEARNING ............................................................................................. 1 TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING ........................................................... 3 1 INTRODUÇÃO .................................................................................................................................... 3 2 ASPECTOS HISTÓRICOS DE MACHINE LEARNING ............................................................... 5 3 DEFINIÇÃO DE CONCEITOS ......................................................................................................... 7 4 CARACTERÍSTICAS DE MACHINE LEARNING ...................................................................... 11 RESUMO DO TÓPICO 1..................................................................................................................... 14 AUTOATIVIDADE .............................................................................................................................. 15 TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING ............................................................................................... 19 1 INTRODUÇÃO .................................................................................................................................. 19 2 LINGUAGEM DE PROGRAMAÇÃO .......................................................................................... 19 3 JUPYTER NOTEBOOK E GOOGLE COLAB RESEARCH ....................................................... 21 4 GITHUB ............................................................................................................................................... 24 5 DATASETS ......................................................................................................................................... 26 5.1 BANCOS DE DADOS E DATA WAREHOUSING .................................................................. 27 5.2 ÁUDIO, IMAGEM E VÍDEO ....................................................................................................... 27 5.3 ARQUIVOS DE TEXTOS ............................................................................................................. 28 5.4 DOCUMENTOS SEMIESTRUTURADOS ................................................................................. 29 5.5 KAGGLE ........................................................................................................................................ 30 5.6 UCI MACHINE LEARNING REPOSITORY .............................................................................. 30 RESUMO DO TÓPICO 2..................................................................................................................... 33 AUTOATIVIDADE .............................................................................................................................. 34 TÓPICO 3 — ARQUITETURA DE UM PROJETO DE MACHINE LEARNING ...................... 37 1 INTRODUÇÃO .................................................................................................................................. 37 2 COLETA DE DADOS ........................................................................................................................ 38 3 PREPARAÇÃO DOS DADOS ......................................................................................................... 38 4 ESCOLHA DO MODELO ................................................................................................................ 39 5 TREINO E TESTE .............................................................................................................................. 41 6 AVALIAÇÃO ...................................................................................................................................... 44 7 TUNING DE PARÂMETROS ..........................................................................................................44 8 PREDIÇÃO .......................................................................................................................................... 45 LEITURA COMPLEMENTAR ............................................................................................................ 46 RESUMO DO TÓPICO 3..................................................................................................................... 51 AUTOATIVIDADE .............................................................................................................................. 52 REFERÊNCIAS ...................................................................................................................................... 55 UNIDADE 2 — CLASSIFICAÇÃO ................................................................................................... 59 TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE CLASSIFICAÇÃO ........................................ 61 1 INTRODUÇÃO .................................................................................................................................. 61 2 VISÃO GERAL DA CLASSIFICAÇÃO ....................................................................................... 61 3 CENÁRIOS DE CLASSIFICAÇÃO ............................................................................................... 63 4 FERRAMENTAS COMPLEMENTARES ....................................................................................... 64 4.1 LISTAS ........................................................................................................................................... 65 4.2 NUMPY .......................................................................................................................................... 66 4.3 ANACONDA ................................................................................................................................ 67 4.4 SCIPY .............................................................................................................................................. 68 4.5 SCIKIT-LEARN .............................................................................................................................. 69 5 MÉTRICAS DE AVALIAÇÃO PARA CLASSIFICAÇÃO .......................................................... 69 RESUMO DO TÓPICO 1..................................................................................................................... 73 AUTOATIVIDADE .............................................................................................................................. 74 TÓPICO 2 — MÉTODOS DE CLASSIFICAÇÃO BASEADOS EM DISTÂNCIA .................. 77 1 INTRODUÇÃO .................................................................................................................................. 77 2 MÉTODOS BASEADOS EM DISTÂNCIA .................................................................................. 78 2.1 KNN ................................................................................................................................................ 79 2.1.1 Implementação matemática do método .......................................................................... 80 2.2 IMPLEMENTAÇÃO COM SCIKIT-LEARN .............................................................................. 89 2.3 CLASSIFICANDO O IRIS DATASET COM O KNN ............................................................... 91 RESUMO DO TÓPICO 2..................................................................................................................... 95 AUTOATIVIDADE .............................................................................................................................. 96 TÓPICO 3 — MÉTODOS PROBABILÍSTICOS E OUTROS MÉTODOS DE CLASSIFICAÇÃO ................................................................................................. 99 1 INTRODUÇÃO .................................................................................................................................. 99 2 MÉTODOS PROBABILÍSTICOS ................................................................................................... 99 2.1 NAÏVE BAYES .............................................................................................................................. 99 2.1.1 Implementação matemática do método ........................................................................ 103 2.2 IMPLEMENTAÇÃO COM O SCIKIT-LEARN ........................................................................ 107 2.3 CLASSIFICANDO O IRIS DATASET COM O NAÏVE BAYES ............................................ 108 3 OUTROS CLASSIFICADORES .................................................................................................... 110 3.1 REGRESSÃO LINEAR .............................................................................................................. 110 3.2 REGRESSÃO LOGÍSTICA ........................................................................................................ 111 3.3 MÁQUINA DE VETOR DE SUPORTE .................................................................................. 112 3.4 PERCEPTRON ............................................................................................................................. 113 LEITURA COMPLEMENTAR .......................................................................................................... 115 RESUMO DO TÓPICO 3................................................................................................................... 121 AUTOATIVIDADE ............................................................................................................................ 122 REFERÊNCIAS .................................................................................................................................... 123 UNIDADE 3 — REGRESSÃO .......................................................................................................... 127 TÓPICO 1 — INTRODUÇÃO ÀS TAREFAS DE REGRESSÃO ............................................... 129 1 INTRODUÇÃO ................................................................................................................................ 129 2 VISÃO GERAL DA REGRESSÃO ............................................................................................... 129 3 MÉTRICAS ....................................................................................................................................... 132 3.1 ERRO QUADRÁTICO MÉDIO ................................................................................................ 132 3.2 ERRO ABSOLUTO MÉDIO ....................................................................................................... 134 3.3 OVERFITTING E UNDERFITTING .......................................................................................... 134 3.4 VALIDAÇÃO CRUZADA ......................................................................................................... 135 RESUMO DO TÓPICO 1................................................................................................................... 136 AUTOATIVIDADE ............................................................................................................................ 137 TÓPICO 2 — REGRESSÃO LINEAR ............................................................................................. 139 1 INTRODUÇÃO ................................................................................................................................ 139 2 UTILIZANDO REGRESSÃO ....................................................................................................... 140 3 DERIVADAS ..................................................................................................................................... 150 4 GRADIENTE DESCENDENTE ....................................................................................................152 5 IMPLEMENTAÇÃO DA REGRESSÃO LINEAR ...................................................................... 155 RESUMO DO TÓPICO 2................................................................................................................... 161 AUTOATIVIDADE ............................................................................................................................ 162 TÓPICO 3 — TÉCNICAS AVANÇADAS DE REGRESSÃO ..................................................... 165 1 INTRODUÇÃO ................................................................................................................................ 165 2 REGRESSÃO LOGÍSTICA ............................................................................................................ 165 3 REDES NEURAIS ARTIFICIAIS .................................................................................................. 169 4 IMPLEMENTANDO REGRESSÕES COM BIBLIOTECAS DO PYTHON ......................... 175 LEITURA COMPLEMENTAR .......................................................................................................... 177 RESUMO DO TÓPICO 3................................................................................................................... 183 AUTOATIVIDADE ............................................................................................................................ 184 REFERÊNCIAS .................................................................................................................................... 185 1 UNIDADE 1 — MACHINE LEARNING OBJETIVOS DE APRENDIZAGEM PLANO DE ESTUDOS A partir do estudo desta unidade, você deverá ser capaz de: • compreender os conceitos fundamentais e históricos sobre Machine learning; • conhecer exemplos de aplicações de Machine learning no mundo real; • entender as principais características das aplicações de Machine learning; • saber quais são as principais ferramentas para codificação; • conhecer exemplos de aplicações e tipos de conjuntos de dados; • dominar o desenvolvimento de um algoritmo de Machine learning por meio da apresentação das principais etapas de implementação. Esta unidade está dividida em três tópicos. No decorrer da unidade, você encontrará autoatividades com o objetivo de reforçar o conteúdo apresentado. TÓPICO 1 – INTRODUÇÃO AO MACHINE LEARNING TÓPICO 2 – PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING TÓPICO 3 – ARQUITETURA DE UM PROJETO DE MACHINE LEARNING Preparado para ampliar seus conhecimentos? Respire e vamos em frente! Procure um ambiente que facilite a concentração, assim absorverá melhor as informações. CHAMADA 2 3 TÓPICO 1 — UNIDADE 1 INTRODUÇÃO AO MACHINE LEARNING 1 INTRODUÇÃO A inteligência artificial, por meio das suas mais diversas subáreas, tem alterado a nossa maneira de interagir com os sistemas computacionais, bem como a própria forma de interação com outros seres humanos. Neste livro didático, estudaremos alguns algoritmos de inteligência artificial. Entretanto, antes de aprofundarmos os conceitos de Machine learning (em português, “aprendizado de máquina”), é preciso ressaltar que você já é um usuário de Machine learning. Por exemplo, quando acessamos as plataformas de streaming de vídeo, é comum que filmes e vídeos sejam recomendados automaticamente. Para isso são considerados nossos dados pessoais, os filmes que positivamos (curtimos), bem como os dados de navegação do usuário (cookies). Em 2009, apenas a Netflix, uma das pioneiras dessas plataformas, ofereceu 1 milhão de dólares para quem conseguisse otimizar seu algoritmo de recomendação de filmes. Até hoje, a plataforma investe pesado para ter maior nível de assertividade nesse algoritmo, permitindo manter mais usuários em frente à concorrência. FIGURA 1 – RECOMENDAÇÕES DE FILMES DA PLATAFORMA NETFLIX FONTE: O autor UNIDADE 1 — MACHINE LEARNING 4 Outra situação cotidiana em que nos tornamos usuários de Machine learning são os anúncios e as propagandas que aparecem após procurarmos um termo em um site de buscas ou em uma rede social. Durante a elaboração deste livro didático, pesquisamos as opções para adquirir um novo computador e, adivinha, todos os sites que tinham acesso aos cookies de pesquisa nos apresentaram recomendações relacionadas as minhas buscas anteriores, cuja maioria das propagandas era gerida pelo Google. Segundo Chow (2017), hoje, são poucas as tecnologias do Google que não usam inteligência artificial e machine learning. A inteligência artificial está reinventando nossos produtos, desde o Google Maps até o YouTube, e promovendo novas experiências. Quando o Google lançou a ferramenta “Ok, Google”, particularmente não vimos grandes vantagens no início, porém, foi a ferramenta que possibilitou o aprendizado de uso de smartphone dos nossos pais, até então avessos à tecnologia. O recurso, agora chamado de “Assistente”, permite reconhecimento de voz e a realização de ações no dispositivo auxilia em diversos contextos da acessibilidade a recursos. FIGURA 2 – CONVERSA COM O GOOGLE ASSISTENTE FONTE: O autor Nas mais diversas ciências, as técnicas de Machine learning têm sido utilizadas para auxiliar os mais diversos processos, como a biologia, a aeronáutica, a física, a economia, entre muitas outras áreas. Entre os exemplos está a sua aplicação nas ciências da saúde, tanto na realização de diagnósticos quanto de prognósticos. A área da saúde permite trabalhar com cenários interessantes, que vão desde a análise de prontuários e o reconhecimento de imagens até a análise dos dados históricos (por exemplo, utilizando relógios medidores). TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING 5 FIGURA 3 – APLICAÇÃO DE MACHINE LEARNING NA DETECÇÃO DO CÂNCER FONTE: <https://cutt.ly/SgVuOv3>. Acesso em: 2 out. 2020. É fato que o Machine learning está presente em nosso cotidiano e é parte da próxima revolução industrial, em conjunto com Big Data e tecnologias 4.0. Nas próximas seções, compreenderemos melhor seu conceito e seu funcionamento. 2 ASPECTOS HISTÓRICOS DE MACHINE LEARNING A história do Machine learning teve início em 1959, com o cientista Arthur Lee Samuel (SAMUEL, 1959), do Instituto de Tecnologia de Massachusetts (MIT), considerado pioneiro do desenvolvimento de jogos de computador, inteligência artificial e aprendizado de máquina. Em seu artigo, Samuel (1959) apresenta um estudo sobre algoritmos de inteligência artificial que consultam dados históricos para aprender a jogar damas – aprendendo com acertos e erros, a cada partida, a máquina estava mais aperfeiçoada no jogo. FIGURA 4 – ARTHUR LEE SAMUEL E A MÁQUINA QUE JOGAVA DAMAS FONTE: <https://www.appai.org.br/desenrola-machine-learning-aprendizado-de-maquina/>. Acesso em: 2 out. 2020. UNIDADE 1 — MACHINE LEARNING 6 As redes neurais são um modelo matemático de inteligência artificial que simula o comportamento do cérebro humano, tendo um papel importante na história e na atualidade do desenvolvimento de algoritmos inteligentes. O primeiro algoritmo de redes neurais é conhecido como Perceptron (ROSENBLATT, 1957), utilizado para a realização de tarefas com reconhecimento de padrões. Entretanto, alguns anos depois, Minsky e Papert (1969) realizaram a prova do funcionamento do algoritmo e concluíram que não existia poder computacional suficiente na época para que ele funcionasse. Nos anos de 1970, já com a existência dos bancos de dados relacionais e o início do desenvolvimento de sistemas de apoio à decisão, um marco para evolução dos sistemas inteligentes foi o algoritmo ID3 (Inductive Decision Tree), utilizado nas chamadas árvores de decisão, tendo novas versões nas décadas seguintes (QUINLAN, 1986; 1993). Em um paralelo com a história dos computadores, nos anos de 1980, surgiu a segunda geração de computadores, com máquinas menores e poder computacional maior. Com isso, as redes neurais ressurgiram, afinal as máquinas ficaram mais potentes. A partir dessaépoca, despontou também o uso de metodologias experimentais para validar os experimentos. A mineração de dados permite a descoberta de conhecimento a partir dos bancos de dados. Nos anos de 1990, essa tecnologia atraiu uma quantidade significativa de atenção da pesquisa e das organizações, por explorar o uso de algoritmos de Machine learning em outras aplicações e ter relação com outras áreas da inteligência artificial (FAYYAD; PIATETSKY-SHAPIRO; SMYTH, 1996). Por fim, foi na década de 2000 que a internet chegou às casas dos usuários e as redes sociais assumiram seu papel na comunicação virtual, gerando um grande impacto no cotidiano das pessoas e das organizações. Esse momento, com o grande volume de dados, gerando cenários de Big Data, contribuiu para que os algoritmos de Machine learning fossem utilizados pelas empresas. A Figura 5 sumariza a história do Machine learning, bem como dos demais métodos de inteligência artificial descritos anteriormente. TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING 7 FIGURA 5 – HISTÓRIA DOS MÉTODOS DE MACHINE LEARNING FONTE: CAO (2018, p. 3) 3 DEFINIÇÃO DE CONCEITOS Machine learning, compreendido como o aprendizado de máquina a partir dos dados previamente conhecido, é definido como um campo preocupado com a questão de como construir programas de computador que melhorem automaticamente a experiência do usuário (MITCHELL, 1997). Para compreendermos melhor essa definição, tomaremos como exemplo o “game of checkers”, proposto no experimento de Arthur Samuel (1959), que tratava de um programa de aprendizado de máquina para jogar damas. Complementarmente a essa definição, Machine learning também é “Um programa [que] aprende a partir da experiência E, em relação a uma classe de tarefas T, com medida de desempenho P, se seu desempenho em T, medido por P, melhora com E” (Mitchell, 1997). NOTA UNIDADE 1 — MACHINE LEARNING 8 FIGURA 6 – GAME OF CHECKERS FONTE: Samuel (1959, p. 4) Ao aplicarmos a definição de Machine learning proposta por Mitchell (1997) no exemplo do jogo de damas, têm-se: • T: tarefa de realizar o jogo de damas. • E: experiência com histórico de vários jogos de damas. • P: a medida de desempenho é a probabilidade de ganhar a próxima partida, com base em jogos anteriores. Um exemplo cotidiano na internet são as tarefas relacionadas aos bots, algoritmos que enviam mensagens e fazem postagens simulando serem pessoas na rede. Nesses cenários, algoritmos de Machine learning podem ser utilizados para a detecção de mensagens feitas por bots. FIGURA 7 – BOTS NA WEB FONTE: <https://avengering.com/en/bot-chatbot-internet-bot-heres-everything-you-need-to-know/>. Acesso em: 2 out. 2020. O jogo de damas, com certeza, não é segredo para você. Confira o artigo que deu origem ao primeiro trabalho (SAMUEL, 1959), bem como originou o termo Machine learning: https://hci.iwr.uni-heidelberg.de/system/files/private/downloads/636026949/report_frank_ gabel.pdf. INTERESSA NTE TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING 9 Ao aplicarmos a definição de Machine learning proposta por Mitchell (1997) no exemplo da classificação de bots na web, têm-se: • T: tarefa de categorizar as mensagens enviadas por bots e por humanos. • E: experiência com histórico de várias mensagens anteriores corretamente identificadas. • P: a medida de desempenho é a porcentagem de mensagens de bots corretamente classificadas. A área médica provê uma grande quantidade de dados para as mais diversas aplicações de Machine learning. Um exemplo é a área de diagnósticos, em que as imagens podem ser analisadas para gerar o diagnóstico com base nos sintomas apresentados pelo paciente. FIGURA 8 – DIAGNÓSTICO UTILIZANDO INTELIGÊNCIA ARTIFICIAL FONTE: <https://cutt.ly/GgVoEwx>. Acesso em: 2 out. 2020. Ao aplicarmos a definição de Machine learning proposta por Mitchell (1997) no exemplo da aplicação para diagnósticos médicos automatizados, têm-se: • T: tarefa de diagnosticar um paciente de acordo com os sintomas que ele apresentar. • E: experiência com histórico de pacientes anteriores, que foram diagnosticados conforme seus respectivos sintomas. • P: a medida de desempenho é a porcentagem de pacientes que obtiverem o diagnóstico correto. Os bots invadiram a vida dos mais diversos usuários da web, seja para quem joga, utiliza e-mail, aplicativos de mensagens, bem como as mais diversas redes sociais. Por isso, é interessante conhecer mais sobre os bots, uma vez que, no decorrer dos nossos estudos, compreenderemos o seu desenvolvimento e a sua detecção. Leia: https://www.techtudo.com.br/noticias/2018/07/o-que-e-bot-conheca-os-robos-que- estao-dominando-a-internet.ghtml. INTERESSA NTE UNIDADE 1 — MACHINE LEARNING 10 Até o momento, vimos que um algoritmo de Machine learning funciona por meio de experiência, tarefa e medidas de desempenho. Ao analisar os exemplos apresentados, a experiência é sempre adquirida por meio dos dados, ou seja, os dados são essenciais para a existência do processo de Machine learning. Machine learning é uma forma de Inteligência Artificial muito utilizada atualmente, que permite o aprendizado, pelo sistema, a partir de dados imputados, que servirão como base de treinamento para que o sistema gere modelos ou saídas que possam servir para análises preditivas ou, ainda, para futuras tomadas de decisão (MOREIRA, 2020, p. 1). De modo geral, os algoritmos de Machine learning são de inteligência artificial, pois aprendem com dados históricos armazenados. Essa tecnologia utiliza os mais diversos tipos algoritmos, embora, em geral, sejam modelos matemáticos baseados em distância, probabilísticos, baseados em regras, gradiente descendente, e muitos outros que iremos estudar ao longo deste livro didático. Os modelos matemáticos geram a inteligência dos algoritmos, permitindo a existência do conhecimento a partir dos dados. A Figura 9 mostra uma maneira simplificada de como os algoritmos de Machine learning funcionam. FIGURA 9 – FLUXO DE APRENDIZADO DE UM ALGORITMO DE MACHINE LEARNING FONTE: O autor Existem diversas aplicações na área médica, desde a medicina avançada até o suporte ao usuário. Um exemplo é a Dra. Lara, uma assistente virtual de apoio e acompanhamento ao pré-natal, desenvolvida no seguinte trabalho sobre o processo de desenvolvimento de um chatbot para área médica: https://www.researchgate.net/profile/ Rodrigo_Nogueira16/publication/338668367_DRA_LARA_ASSISTENTE_VIRTUAL_DE_ APOIO_E_ACOMPANHAMENTO_AO_PRE-NATAL/links/5e95fd93a6fdcca78915bf24/ DRA-LARA-ASSISTENTE-VIRTUAL-DE-APOIO-E-ACOMPANHAMENTO-AO-PRE-NATAL.pdf. INTERESSA NTE TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING 11 4 CARACTERÍSTICAS DE MACHINE LEARNING Os sistemas de aprendizado de máquina apresentam características peculiares, que possibilitam uma classificação não exclusiva desses sistemas em função da linguagem de descrição, do modo de aprendizado, do paradigma de aprendizado, das formas e da tarefa de aprendizado (STANGE, 2011). Para elucidar a relação dessas características, o quadro a seguir elenca maneira organizada de acordo com os seus tipos. QUADRO 1 – CLASSIFICAÇÃO DOS SISTEMAS DE MACHINE LEARNING Modos de aprendizado Paradigmas de aprendizado Formas de aprendizado Tarefas de aprendizado Supervisionado Simbólico Incremental Classificação Não supervisionado Estatístico Não incremental Regressão Por reforço Conexionista Agrupamento Genético Associação FONTE: Adaptado de Stange (2011) No que se refere à classificação dos métodos de Machine learning, podem acontecer pela característica denominada modo de aprendizado, isto é, a maneira com que os resultados da execução dos algoritmos são influenciados por especialistas externos. Os modos de aprendizado podem ser supervisionados, semissupervisionados, não supervisionados e aprendizado por reforço. Segundo Zubelli (2017), no aprendizado supervisionado, são apresentados exemplos do que é desejado como entrada e saída, de modo que o objetivoé aprender uma regra que mapeia a entrada na saída. Já no não supervisionado, nenhuma informação é dada a priori, deixando o algoritmo descobrir sozinho estruturas e padrões nas entradas fornecidas. Complementarmente, o aprendizado semissupervisionado envolve um pequeno grau de supervisão, tal como um conjunto de “sementes”, para começar o processo de aprendizagem. O aprendizado por reforço envolve a interação com o ambiente circundante, abordando a questão de como um agente autônomo que sente e age em seu ambiente pode aprender a escolher ações ideais para atingir seus objetivos. O comportamento de um agente é recompensado com base nas ações que ele realiza no ambiente. Ele considera as consequências de suas ações e adota medidas ótimas. Um computador jogando xadrez com um ser humano, aprendendo a reconhecer palavras faladas e a classificar novas estruturas astronômicas é um exemplo de aprendizado por reforço (SHOBHA; RANGASWAMY, 2018). UNIDADE 1 — MACHINE LEARNING 12 Os paradigmas de aprendizado de máquina podem ser simbólicos, estatísticos, conexionistas, baseado em exemplos ou genético. Tais conceitos são descritos por Monard e Baranauskas (2003) como: • Simbólico: os sistemas de aprendizado simbólico buscam aprender construindo representações simbólicas de um conceito, por meio da análise de exemplos e contraexemplos dele. As representações simbólicas estão tipicamente na forma de alguma expressão lógica, árvore de decisão, regras ou rede semântica. • Estatístico: pesquisadores em estatística têm criado diversos métodos de classificação, muitos deles semelhantes aos métodos posteriormente desenvolvidos pela comunidade de aprendizado de máquina. A ideia geral consiste em modelos estatísticos para encontrar uma boa aproximação do conceito induzido. • Baseado em exemplos: uma forma de classificar um exemplo é lembrar de outro similar, cuja classe é conhecida, e assumir que o novo exemplo tem a mesma classe. Essa filosofia demonstra os sistemas baseados em exemplos, que os classificam como nunca vistos por meio de exemplos similares conhecidos. Esse tipo de sistema de aprendizado é denominado lazy (preguiçoso) e necessita manter os exemplos na memória para classificar novos exemplos, em oposição aos sistemas eager (gulosos), que utilizam os exemplos para induzir o modelo, descartando-os logo após. • Conexionista: de modo geral, essa abordagem trata das redes neurais, que são construções matemáticas simplificadas, inspiradas no modelo biológico do sistema nervoso. A representação de uma rede neural envolve unidades altamente interconectadas e, por isso, o nome conexionismo é utilizado, para descrever a área de estudo. • Genético: paradigma de aprendizado derivado do modelo evolucionário pro- posto por David Goldberg, em 1989, no livro “Algoritmos genéticos em pesqui- sa, otimização e Machine learning”. Um classificador genético consiste de uma população de elementos de classificação que competem para fazer a predição. As formas de aprendizado estão ligadas à maneira com que o algoritmo obtém o conhecimento a partir dos dados. Como você aprendeu, os algoritmos de Machine learning aprendem a partir dos dados armazenados, e as formas de aprendizado estão relacionadas à atualização desses dados. No cenário real de implementação de um algoritmo que tem os dados atualizados a todo momento, a cada novo dado, o algoritmo precisa atualizar o modelo matemático; quando o algoritmo precisa ler todo o conjunto de dados, ele é chamado de não incremental, mas se conseguir atualizar o modelo a partir do novo dado é incremental. As tarefas de aprendizado de máquina são tipicamente divididas conforme os sinais de entrada e as respostas do aprendizado (ZUBELLI, 2017). Essas tarefas podem ser de classificação, regressão, agrupamento ou associação – cada um desses métodos será estudado em seguida. TÓPICO 1 — INTRODUÇÃO AO MACHINE LEARNING 13 FIGURA 10 - A CIÊNCIA DOS DADOS É MULTIDISCIPLINAR FONTE: <https://www.quora.com/What-is-machine-learning-and-how-it-is-linked-to-Big- -Data-Data-Mining>. Acesso em: 2 out. 2020. Machine learning, muitas vezes, pode ser confundida com outras áreas do conhecimento, principalmente em sistemas inteligentes, pois, como são áreas próximas, é comum tal confusão. Por isso, é interessante compreender a relação entre essas áreas: • A ciência de dados é o guarda-chuva de técnicas nas quais você está tentando extrair informações e insights sobre os dados. Isso inclui desde trabalhar com programação em baixo nível até a entrega de informação em nível mais alto. • A mineração de dados é a ciência de coletar histórico de dados e, em seguida, procurar padrões neles. Você procura padrões consistentes e relacionamentos entre variáveis. Depois de encontrar essas informações, você as válidas aplicando os padrões detectados a novos subconjuntos de dados. • Análise de dados é qualquer tentativa de entender os dados. • Estatística é o estudo da coleta, da análise, da interpretação, da apresentação e da organização dos dados. A estatística lida com todos os aspectos dos dados, incluindo o planejamento da coleta de dados, em termos de projeto de pesquisas e experimentos. • Bancos de dados é uma coleção organizada de dados, com esquemas, tabelas, consultas, relatórios, visualizações e outros objetos. Os dados são normalmente organizados para modelar aspectos da realidade, de maneira a suportar processos que requerem informações. • Inteligência artificial (IA) é a inteligência exibida por máquinas ou software, isto é, campo de estudo acadêmico sobre como criar computadores e softwares capazes de comportamento inteligente. • A descoberta de conhecimento em bancos de dados (KDD) é o processo que identifica o conhecimento útil de uma coleção de dados. • O reconhecimento de padrões se concentra no reconhecimento de padrões e regularidades nos dados, embora em alguns casos seja considerado quase sinônimo de aprendizado de máquina. • A neurocomputação estuda um programa de software que usa uma rede neural, simulando o cérebro humano, que pode ser treinada para executar tarefas específicas, como reconhecimento de padrões. FONTE: <https://www.quora.com/What-is-machine-learning-and-how-it-is-linked-to-Big- Data-Data-Mining>. Acesso em: 2 out. 2020. INTERESSA NTE 14 Neste tópico, você aprendeu que: • O Machine learning está presente no cotidiano dos usuários da web. • As grandes corporações utilizam essa tecnologia para otimizar seus negócios. • A história do Machine learning teve início com um jogo de damas que utilizava inteligência artificial. • Os fundamentos históricos acompanham o de outras tecnologias, como a inteligência artificial e Big Data. • Um programa aprende a partir da experiência E, em relação a uma classe de tarefas T, com medida de desempenho P; se seu desempenho em T, medido por P, melhora com E. • Os algoritmos são de inteligência artificial, que aprendem com dados históricos armazenados. • Os sistemas apresentam diversas características. São elas: modos de aprendizado – supervisionado, não supervisionado e por reforço; paradigmas de aprendizado – simbólico, estatístico, conexionista ou genético; formas de aprendizado – incremental ou não incremental; e tarefas de aprendizado – classificação, regressão, agrupamento ou associação. RESUMO DO TÓPICO 1 15 1 Leia o texto a seguir: Os sistemas de Machine learning, em português conhecidos como sistema de aprendizagem automática ou sistemas de aprendizado de máquina, podem ajudar a descobrir padrões, realizar determinadas tarefas através da generalização de casos e na utilização de dados. FONTE: OLIVEIRA, P. M. M. de. Benchmarking sobre técnicas de otimização para modelos de apoio à decisão na medicina intensiva. 2015. Tese de Doutorado. Os algoritmos de aprendizado de máquina têm um modo de aprendizado que depende de um especialista externo para avalizar seus resultados. Assinale a alternativa CORRETA que contenha essemodo: a) ( ) Aprendizado por reforço. b) ( ) Aprendizado supervisionado. c) ( ) Aprendizado não supervisionado. d) ( ) Aprendizado por inteligência. 2 Leia o texto a seguir: Os algoritmos de Machine learning podem ser aplicados para uma larga gama de situações problema, desde detecção de fraudes fiscais, até recomendações, porém isso só pode ser feito devido à grande quantidade de dados fornecidas pelos datasets. FONTE: FREITAS, D. W. Recomendação de animes utilizando Machine learning: uma aborda- gem baseada em avaliações dos usuários. Engenharia da Computação, 2018. Com relação aos algoritmos de Machine learning, assinale a alternativa CORRETA que contenha os paradigmas de aprendizado: a) ( ) Simbólico, estatístico, conexionista e genético. b) ( ) Supervisionado, estatístico, conexionista e genético. c) ( ) Simbólico, estático, conexionista e genético. d) ( ) Simbólico, estatístico, colaborador e georreferenciado. 3 A internet soma mais de 2 bilhões de sites publicados, sendo a principal fonte de informação deste século. No entanto, cada vez mais opções de sites implicam diversos veículos que não produzem notícias verdadeiras, as ditas fakes news. O sistema desenvolvido por Monteiro, Nogueira e Moser (2019) tem como objetivo implementar um algoritmo de Machine Leaning para classificar notícias em reais e fake news. AUTOATIVIDADE 16 FONTE: MONTEIRO, R.; NOGUEIRA, R.; MOSER, G. Desenvolvimento de um sistema para a classificação de Fakenews acoplado à etapa de ETL de um Data Warehouse de Textos de No- tícias em língua Portuguesa. In: Anais da XV Escola Regional de Banco de Dados. SBC, 2019. p. 131-140. Disponível em: https://sol.sbc.org.br/index.php/erbd/article/view/8486/8387. Acesso em: 2 out. 2020. Sobre o problema de Machine learning apresentado no enunciado, indique a experiência, a tarefa e a medida de desempenho. E:__________________________________________________________________ ____________________________________________________________________ T:__________________________________________________________________ ____________________________________________________________________ P:__________________________________________________________________ ____________________________________________________________________ 4 Leia o texto a seguir: A lucratividade promovida pelo Google em sua nova plataforma de distribuição de vídeos do YouTube atraiu um número crescente de usuários. No entanto, esse sucesso também atraiu usuários mal-intencionados, que têm como objetivo autopromover seus vídeos ou disseminar vírus e malwares. Como o YouTube oferece ferramentas limitadas para moderação de comentários, o volume de spam aumenta surpreendentemente, o que leva os proprietários de canais famosos a desativar a seção de comentários em seus vídeos. FONTE: ALBERTO, T. C.; LOCHTER, J. V.; ALMEIDA, T. A. TubeSpam: Comment spam filtering on YouTube. In: 2015 IEEE 14th International Conference on Machine learning and Applica- tions (ICMLA). IEEE, 2015. p. 138-143. Disponível em: http://www.dt.fee.unicamp.br/~tiago/ papers/TCA_ICMLA15.pdf. Acesso em: 2 out. 2020. No trabalho descrito pelo texto, foram implementados algoritmos de Machine learning para a detecção de comentários de publicidade (spam) em vídeos da internet. Sobre o problema de Machine learning apresentado, indique a experiência, a tarefa e a medida de desempenho. 17 E:__________________________________________________________________ ____________________________________________________________________ T:__________________________________________________________________ ____________________________________________________________________ P:__________________________________________________________________ ____________________________________________________________________ 5 Os algoritmos de Machine learning têm seu aprendizado baseado em dados históricos e diversas aplicações: agricultura de precisão, reconhecimento de imagem, classificação de textos, desenvolvimento de chatbots. Torna-se difícil um setor do novo modelo tecnológico que não utilize suas técnicas. Sobre Machine learning, assinale a alternativa CORRETA que contenha as tarefas de aprendizado: a) ( ) Classificação, revolução, agrupamento e associação. b) ( ) Classificação, regressão, agrupamento e associação. c) ( ) Categorização, regressão, análise e dissociação. d) ( ) Classificação, regressão, agrupamento e dissociação. 18 19 TÓPICO 2 — UNIDADE 1 PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING 1 INTRODUÇÃO Ao desenvolver sistemas que utilizam Machine learning são diversos os itens a serem considerados, desde a compreensão do conceito, as características dos métodos, os tipos de métodos, as tarefas que podem ser realizadas, e as estratégias para otimizar e avaliar o funcionamento. Este livro didático tem uma abordagem prática sobre Machine learning e, para facilitar a compreensão de cada um desses conceitos, primeiramente, vamos preparar o nosso ambiente, conhecendo e instalando as principais ferramentas. 2 LINGUAGEM DE PROGRAMAÇÃO O desenvolvimento de sistemas inteligentes, por meio de algoritmos de Machine learning, pode ser feito pelas diversas linguagens de programação. Entre elas, podemos destacar as ferramentas MatLab, R, Scala e Python. Um ponto importante é que praticamente todas as linguagens de programação da atualidade têm a capacidade de implementar algoritmos de Machine learning, bem como bibliotecas que já contêm esses algoritmos implementados. Um exemplo é a linguagem Java, que teve um papel importante na implementação do framework de Big Data Apache Hadoop, além de sua aplicabilidade em sistemas distribuídos. A linguagem conta com o JAVA-ML, uma biblioteca que apresenta os algoritmos de Machine learning implementados. No decorrer dos estudos e da prática sobre programação, a programação vetorial (ou programação matricial) será muito utilizada. Para isso, recomendamos a seguinte leitura: GOLUB, G. H.; VAN LOAN, C. F. Matrix Computations. 4. ed. Baltimore: The Johns Hopkins University Press, 2013. NOTA 20 UNIDADE 1 — MACHINE LEARNING A Microsoft, por sua vez, tem evoluído muito no mercado de computação em nuvem, por meio da sua plataforma Microsoft Azure. A linguagem C# e a plataforma .NET têm recursos de integração com as ferramentas de Machine learning, bem como sua própria biblioteca dessa tecnologia, denominada de ML.NET. Diante de um cenário no qual há diversas linguagens com suas respectivas características, daremos continuidade ao estudo de Machine learning com a linguagem Python. O Python é uma linguagem de código aberto, com diversas bibliotecas para auxiliar na preparação de dados e no desenvolvimento de algoritmos de Machine learning. Entre suas principais características, o Python pode ser executado na maioria dos sistemas operacionais, desde os tradicionais, como Windows, MacOs e Linux, até sistemas operacionais diversos como FreeBSD, utilizado em servidores, e OpenELEC, uma versão do Linux com poucos recursos utilizada em dispositivos de IoT (Internet of Things). Para realizar a instalação do Linux, você pode acessar direto a página de downloads da plataforma: https://www.python.org/downloads/. No decorrer do desenvolvimento deste livro didático, foi utilizada a versão 3.8 do Python, porém os códigos desenvolvidos podem ser executados em qualquer instalação da versão 3.X. No decorrer desta unidade, você irá utilizar algumas das principais bibliotecas do Python para realização de tarefas correlatas aos processos Machine learning, desde coleta de dados, pré-processamento até implementação dos algoritmos. Para instalar bibliotecas, o Python utiliza o gerenciador de pacotes PIP. Existem diversas características que fazem do Python uma poderosa linguagem de programação. Confira algumas listadas pela ComputerWorld (2019): 1. Python é linguagem de programação popular na ciência e nas empresas.2. Conhecimentos em Python são exigidos em muitas vagas. 3. Python tem muitas bibliotecas e estruturas. 4. Python tem bibliotecas poderosas para a ciência de dados. 5. Python é muito utilizado em inteligência artificial e Machine learning. Além de muito usada na ciência de dados, há também muitas bibliotecas eficientes na programação de inteligência artificial e Machine learning. Theano, Scikit-learn, Tensorflow estão entre os módulos mais usados para algoritmos de machine learning. Já o Keras é uma biblioteca de rede neural open source, dedicada para aplicações de inteligência artificial. 6. Python é utilizado no desenvolvimento de aplicações web. 7. Python é funcional em diversos sistemas operacionais. 8. Tem uma comunidade grande de desenvolvedores contribuindo com sua evolução. 9. Python é usado para criar interfaces gráficas de usuário (GUI). 10. Python é usado para automação de diversas tarefas. INTERESSA NTE TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING 21 3 JUPYTER NOTEBOOK E GOOGLE COLAB RESEARCH O notebook Jupyter é uma interface gráfica que utiliza os navegadores de internet para executar códigos Python e cria, nele, um rico conjunto de recursos de exibição dinâmica. Além de executar instruções Python, o Jupyter Notebook permite que o usuário inclua texto formatado, visualizações estáticas e dinâmicas, equações matemáticas, widgets JavaScript e muito mais. Ademais, esses documentos podem ser salvos de maneira a permitir que outras pessoas os abram e executem o código em seus próprios sistemas (VANDERPLAS, 2016). Se você seguiu os passos indicados na seção anterior e realizou a instalação do Python e o gerenciador de pacotes PIP na sua máquina, basta executar o seguinte comando: Na sequência, para executar o Jupyter Notebook e receber o link para que seja aberto, deve ser executado: A partir de agora, você já terá o Jupyter instalado em seu computador e estará apto a executar códigos dinâmicos com IPython. A Figura 11 mostra a tela do Jupyter após a instalação – ao clicar em New Python 3, será inicializada uma tela em branco, chamada de Notebook. Para realizar a instalação do PIP nos principais sistemas operacionais, confira alguns links para o auxiliar: • Windows: https://dicasdepython.com.br/resolvido-pip-nao-e-reconhecido-como-um- comando-interno/ • Linux: https://python.org.br/instalacao-linux/ • MacOS: https://python.org.br/instalacao-mac/ DICAS 22 UNIDADE 1 — MACHINE LEARNING FIGURA 11 – TELA INICIAL DO JUPYTER NOTEBOOK FONTE: O autor Atualmente, nosso mundo é dinâmico no que se refere às equipes de desenvolvimento de sistemas e multidisciplinares. Nesse cenário, pesquisadores e desenvolvedores atuam em projetos de maneira remota, acessando o mesmo código e compartilhando soluções. Com relação à utilização do Notebook e ao compartilhamento de código, uma solução interessante é o Google Colaboratory, também chamado de Google Colab. Segundo Rosa (2019), trata-se de um serviço na nuvem gratuito, que oferece suporte de processamento (nesse caso, uma GPU Tesla K80) e também pode contar com 12 GB de memória RAM. Por isso, é uma ótima ferramenta para o treinamento de algoritmos de aprendizado de máquina. Tendo como objetivo aproximar o aluno do conteúdo prático apresentado ao longo deste livro didático, iremos utilizar diversos exemplos desenvolvidos na plataforma Google Colab. Com a utilização dessa ferramenta, os processos de ensino- aprendizagem podem se beneficiar do uso de recursos on-line, permitindo a melhoria da produtividade para alunos e professores, por meio da flexibilidade e do trabalho colaborativo. Particularmente, nos cursos de computação, as ferramentas de código aberto, como o Jupyter Notebook, fornecem um ambiente de programação para o desenvolvimento e o compartilhamento de materiais educacionais, combinando O termo GPU (Graphics Processing Unit, em português “Unidade de Processamento Gráfico”) é a responsável por dar vida aos jogos eletrônicos. De modo geral, pode-se compreendê-la como as placas de vídeo de aceleração. O motivo de uma placa de vídeo ter destaque em um tema como o nosso é que, com GPU, é possível a execução dos algoritmos utilizando CUDA e OpenCL. Em geral, essas duas tecnologias permitem que os algoritmos sejam executados utilizando a placa de vídeo. NOTA TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING 23 diferentes tipos de recursos, como texto, imagens e código, em várias linguagens de programação em um único documento, acessível pela web do navegador. Esse ambiente também é adequado para fornecer acesso a experimentos on-line e explicar como usá-los (CARDOSO; LEITÃO; TEIXEIRA, 2018). No decorrer de nossa disciplina, utilizaremos o Google Colab para que você tenha acesso aos exemplos completos desenvolvidos no curso. Caso ainda não tenha experiência com o Google Colab, convido-o a acessar o link do Notebook e dar início ao uso dessa ferramenta, que será importante para o desenvolvimento da disciplina. A Figura 12 mostra um exemplo da tela de cabeçalho de um documento Colab Notebook. Para ter um melhor aproveitamento desse conteúdo, é necessário conectar-se à plataforma utilizando uma conta Google. Ao abrir o programa, você perceberá que poderá apenas visualizar os códigos disponibilizados, sem poder executá-los – clique em Open in playground para poder habilitar essa função e, a partir desse momento, você irá executar os códigos em seu próprio ambiente, utilizando os recursos de hardware anteriormente mencionados. FIGURA 12 – TELA INICIAL DO GOOGLE COLAB NOTEBOOK FONTE: O Autor O Notebook com o conteúdo deste tópico está disponível no link: https://colab. research.google.com/drive/1SD5qmxVjTtOpbfcSXN1G9WTqsr06ci0w. ATENCAO Caso esteja curioso sobre o funcionamento do Google Colab, e para conhecer mais sobre a execução de código utilizando GPU, leia o artigo Google Colab – Guia do Iniciante: https://medium.com/machina-sapiens/google-colab-guia-do-iniciante-334d70aad531 DICAS 24 UNIDADE 1 — MACHINE LEARNING 4 GITHUB No processo de desenvolvimento de software, seja de cunho comercial ou desenvolvimento de sistemas inteligentes utilizando algoritmos de Machine learning, o código passa por diversas alterações conforme o projeto evolui. Nesse contexto, o versionamento de código permite que sejam geradas diversas versões do código-fonte desenvolvido. Um sistema de versionamento de código é uma aplicação capaz de gravar as mudanças em um ou mais arquivos durante determinado período. A utilização desse tipo de aplicação torna possível retornar a uma versão específica daquele arquivo em qualquer momento. A principal vantagem do uso desse tipo de sistema é a organização do projeto, visto que se pode manter um histórico do desenvolvimento, possibilitando desenvolver funcionalidades paralelamente a partir do mesmo código. Além disso, viabiliza a criação de uma nova versão do projeto sem alterar a versão principal (GIORDANI, 2019). Nos mais diversos tipos de projetos de software são utilizadas estratégias de versionamento, cada qual abordada de maneira distinta. Existem diversos softwares de gerenciamento de versões disponíveis no mercado, podendo-se citar CVS, Subversion, TFS e o Git – o qual iremos conhecer mais a fundo. O Git é um sistema de controle de versão distribuído, utilizado para registrar o histórico de alterações em arquivos e comum em equipes de desenvolvimento de software. Com o uso do Git, é possível reverter um software para versões anteriores de forma rápida e fácil (SILVERMAN, 2013). O Git utiliza repositórios que armazenam as versões do código-fonte e, embora os repositórios possam ser feitos em servidores das empresas, tradicionalmente, são feitos on-line em serviços próprios, como o GitHub. O GitHub é um repositório de hospedagem de serviços Git – entre outras tantas características próprias. As interações entre seus usuários são de natureza complexa e ocorrem dediferentes formas, principalmente porque pode ser considerado uma rede social, além de uma plataforma colaborativa. Usando o GitHub, os programadores podem interagir e colaborar em torno de repositórios de código aberto, o que permite que eles façam download, cooperem, compartilhem, entre outras funcionalidades (WEITZEL; SPIES; SANTOS, 2017). TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING 25 Para compreender melhor o funcionamento do Git, o ideal é criar um repositório. Para isso, utilizaremos o GitHub (www.github.com) – entretanto, você pode optar por uma alternativa de repositório. Cada sistema operacional tem sua particularidade durante a instalação do Git; por isso, separamos alguns artigos para auxiliar na instalação de acordo com o seu sistema operacional: • Instalação em Windows: https://woliveiras.com.br/posts/instalando-o-git-windows/. • Instalação no Linux: https://www.digitalocean.com/community/tutorials/como- instalar-o-git-no-ubuntu-18-04-pt. • Instalação no MacOS: https://git-scm.com/book/pt-br/v2/Come%C3%A7ando- Instalando-o-Git. IMPORTANT E Mesmo o GitHub tendo destaque no mercado há muito tempo são diversas alternativas para criar seu repositório de arquivos versionados na nuvem. Veja, a seguir, a lista criada pelo Imaster (2018) com cinco das principais alternativas: • GitLab (BSD): certamente, a alternativa mais conhecida. Escrito em Ruby on Rail, é de longe o mais completo (e complexo) de todos, abrangendo outras funcionalidades que não estão presentes, por padrão, no Github (por exemplo, Continous Integration). Pode ser acessado em: https://www.gitlab.com. • Gogs (MIT): mais simples que o GitLab, mesmo assim consegue oferecer uma boa gama de recursos, aproximando-se bastante das funções mais importantes do GitHub, inclusive na interface de usuário web. Pode ser acessado em: https://www.gogs.io. • Phabricator: a opção que tenta se afastar mais do GitHub, na tentativa de criar algo melhor e mais completo, que supra a maior parte das necessidades de um projeto de desenvolvimento de software. Pode ser acessado em: https://phacility.com/phabricator/. • GitBucket: é uma plataforma web escrita em Scala, que conta com a instalação simplificada de um arquivo .war em sistemas que podem rodar Java 8. Pode ser acessada em: https://github.com/gitbucket. • Kallithea (GPL3): o projeto é membro da Software Freedom Conservancy e suporta Mercurial, além de Git. Escrito em Python, traz alguns outros recursos interessantes. Pode ser acessado em: https://kallithea-scm.org/. • GitPrep (GPL): um recurso mais simples, mas que tem uma interface semelhante à do GitHub, precisa apenas de Perl 5.10.1+ para rodar e já traz um servidor web integrado. Além disso, possui issue tracker e suporte a CGI, SSL e autenticação por chave pública. Pode ser obtido em: http://gitprep.yukikimoto.com/. DICAS 26 UNIDADE 1 — MACHINE LEARNING 5 DATASETS O termo Dataset vem do idioma inglês e tem como significado “conjunto de dados”. Em disciplinas relacionadas a bancos de dados (Relacionais, NoSQL, entre outras), o tema pode ser discutido mais a fundo – com conceito de dados, informação e conhecimento (Figura 13). FIGURA 13 – DADOS, INFORMAÇÃO E CONHECIMENTO FONTE: <https://www.gapingvoid.com/blog/2019/03/05/want-to-know-how-to-turn-change-in- to-a-movement/>. Acesso em: 20 maio 2020. Vamos relembrar os conceitos de dados, informação e conhecimento, uma vez que, no decorrer desta disciplina, nosso objetivo é extrair conhecimento. Na definição de Nogueira (2020): • Dados: são fatos de um mundo real, que estão armazenados em algum lugar, mas não contêm sentido; pode-se dizer que o dado é a informação em sua forma bruta, ou seja, ainda não lapidada. • Informação: é quando o dado tem algum tipo de organização, de tal modo que passa a ter algum sentido. Pode-se dizer que a informação é composta por dados organizados, mas de maneira compreensível. • Conhecimento: vem de discernimento, prática e experiência de vida. O conhecimento é extraído a partir dos dados e das informações armazenadas, sendo aquilo que não pode ser visto por uma perspectiva humana, mas, sim, extraído. INTERESSA NTE Em nosso estudo sobre Machine learning, consideraremos que um Dataset é literalmente um conjunto de dados, que, quando utilizado, será extraído conhecimento, ou seja, é um conjunto de dados sob qual será aplicado o algoritmo de Machine learning. TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING 27 Nesse sentido, para essa aplicação, um conjunto de dados pode ter diversas formas. Na sequência, veremos alguns exemplos de tipos de fontes de dados (datasets) para algoritmos de Machine learning, bem como exemplos de suas aplicações. 5.1 BANCOS DE DADOS E DATA WAREHOUSING No ambiente empresarial, os dados são armazenados prioritariamente em sistemas gerenciadores de bancos de dados (relacionais ou NoSQL). Os dados organizacionais também podem ser depositados em um ambiente de Business Intelligence, integrados por intermédio de um Data Warehouse. FIGURA 14 – MACHINE LEARNING EM AMBIENTES ORGANIZACIONAIS FONTE: <https://pixabay.com/pt/photos/empreendedor-id%C3%A9ia-compet%C3%AAncia-1340649/>. Acesso em: 2 out. 2020. Do ponto de vista dos ambientes organizacionais, são diversas as aplicações de algoritmos de Machine learning e elas podem variar conforme o segmento de atuação da empresa: • Detecção de perfil de clientes. • Previsão de falhas na linha de produção. • Predição de lucros e dividendos. • Sugestão de produtos em loja on-line. • Previsão de falhas em equipamentos. • Obtenção de valores que impactam na compra/venda de ações. • Análise automática de mercado financeiro. 5.2 ÁUDIO, IMAGEM E VÍDEO Os dados não estruturados apresentam diversos formatos, como imagens, áudios e vídeos – esses três tipos, em especial, têm como característica comum a demanda por processamento para que os algoritmos sejam executados. Uma sequência de passos tem que ser executada para que os dados se tornem compreensíveis para os algoritmos de Machine learning. 28 UNIDADE 1 — MACHINE LEARNING FIGURA 15 – RECONHECIMENTO DE FACES COM MACHINE LEARNING FONTE: <https://www.pyimagesearch.com/2018/06/18/face-recognition-with-opencv-python- -and-deep-learning/>. Acesso em: 2 out. 2020. Apesar da demanda por processamento ser alta, as aplicações com esses tipos de dados estão entre as mais interessantes, podendo-se citar como exemplos: • Reconhecimento facial. • Detecção de objetos em vídeos. • Reconhecimento por voz. • Classificação de imagens. • Identificação de objetos. 5.3 ARQUIVOS DE TEXTOS Os textos podem ser coletados de sites de notícias, redes sociais, mensagens SMS, e-mails, além de poderem ser utilizados documentos na forma de texto (PDF, por exemplo). Os documentos de texto também são do tipo não estruturado e demandam preprocessamento para que sejam compreendidos pelos algoritmos de Machine learning. FIGURA 16 – EXEMPLO DE APLICAÇÃO DE DATASETS DE TEXTO FONTE: <https://cutt.ly/5gVjQBy>. Acesso em: 2 out. 2020. TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING 29 A área que utiliza textos com algoritmos de Machine learning faz parte do NLP (Natural Language Processing, que significa “Linguagem de Processamento Natural”). As tarefas de Machine learning são utilizadas na automatização de diversos tipos de cenários com textos, por exemplo: • Detecção automática de spams (Ham ou Spam). • Classificação de notícias (esporte, política, economia etc.). • Análise de sentimento (positivo, negativo, neutro). • Agrupamento de textos (juntar textos de acordo com as palavras). • Sumarização de textos (resumo de textos). • Detecção automática de notícias falsas (real ou fake news). • Desenvolvimento de chatbots. 5.4 DOCUMENTOS SEMIESTRUTURADOS Os documentos semiestruturados são aqueles cuja estrutura pode ser alterada durante a execução de programas. No caso de algoritmos de Machine learning,estes recebem tais documentos para análise. São exemplos de documentos planilhas de Excel, documentos JSON, documentos CSV e arquivos XML. FIGURA 17 – EXEMPLO DE DOCUMENTO SEMIESTRUTURADO FONTE: O autor Os documentos semiestruturados permitem armazenar os mais diversos tipos de dados, mas, principalmente, valores numéricos e discretos. Com isso, existem as mais diversas aplicações, bem como inúmeros conjuntos desses dados. Como são tantas as aplicações que utilizam os dados semiestruturados, desde análises simples, como tipos de folhas de flores, até datasets mais complexos, com dados de células que objetivam a classificação em cancerígena ou não. Para compreender melhor os muitos exemplos que utilizam dados nos formatos mencionados, vamos estudar, a seguir, alguns sites que disponibilizam datasets gratuitos. 30 UNIDADE 1 — MACHINE LEARNING 5.5 KAGGLE Uma das fontes de conjuntos de dados que utilizaremos, no decorrer do nosso estudo, é o Kaggle. Considerado um dos maiores repositórios de dados para aplicações de Machine learning, também é uma rede social para cientistas de dados. O Kaggle é uma plataforma feita para a comunidade de Data Science e Machine learning, cujos propósitos são compartilhar conjuntos de dados, fomentar a formação de novos Data-Scientists e engenheiros de Machine learning, e promover competições entre profissionais da área (JORDÃO, 2018). FIGURA 18 – EXEMPLO DE UTILIZAÇÃO DO KAGGLE FONTE: O autor Em seu ambiente, o Kaggle disponibiliza diversos recursos além dos conjuntos de dados. Você poderá codificar on-line, utilizar Jupyters e participar de desafios utilizando os datasets da plataforma. 5.6 UCI MACHINE LEARNING REPOSITORY Em ambientes de pesquisa científica, o UCI Machine learning Repository está entre os sites mais utilizados para obter datasets para realização de pesquisas, bem como para benchmark para novas bases criadas (MENEZES, 2016). Acesse o Kaggle, crie sua conta e explore os mais diversos datasets que a plataforma disponibiliza: https://www.kaggle.com/. DICAS TÓPICO 2 — PREPARANDO O AMBIENTE PARA TRABALHAR COM MACHINE LEARNING 31 O UCI Machine learning Repository é um site que provê diversos datasets gerados e utilizados pela comunidade para aplicação de algoritmos de Machine learning. Foi criado, inicialmente, em 1987, por David Aha e outros alunos da Universidade da Califórnia. Esse site tem sido muito utilizado por pesquisadores em todo mundo como um centralizador com diversos conjuntos de dados. Essa centralização permite que possam ser comparados diferentes resultados, metodologias e abordagens que utilizam o mesmo conjunto de dados. A Figura 19 mostra um trecho do acesso a um Dataset (no caso, Iris Dataset), na qual: Data Set Information traz um texto descrevendo, de maneira geral, do que se trata o conjunto de dados; Attribute Information descreve cada campo e seu respectivo tipo de dados; e Relevant Papers traz a lista de artigos que utilizaram o Dataset para o seu desenvolvimento. FIGURA 19 – EXEMPLO DA UTILIZAÇÃO DO UCI MACHINE LEARNING REPOSITORY FONTE: O autor Link para acesso ao UCI Machine learning Repository: https://archive.ics.uci. edu/ml/index.php. DICAS 32 UNIDADE 1 — MACHINE LEARNING Existem diversos outros sites que disponibilizam bases de dados, com duas opções interessantes com dados brasileiros: • Portal Brasileiro de Dados Abertos: concentra dados do governo brasileiro, distribuindo dados e informações públicas sobre os mais diversos setores do governo. Disponível em: http://www.dados.gov.br/. • O Brasil em Dados Libertos: é um site mantido pela comunidade de desenvolvedores e cientistas de dados brasileiros, que tem como objetivo aumentar a qualidade dos dados disponibilizados pelo governo, bem como complementá-lo por meio de outras fontes. Disponível em: https://brasil.io/. ESTUDOS FU TUROS 33 RESUMO DO TÓPICO 2 Neste tópico, você aprendeu que: • Existem diversas linguagens de programação e bibliotecas para desenvolver algoritmos de Machine learning. • Por diversas características positivas, o Python é uma das linguagens mais utilizadas para a aplicação de Machine learning. • O Python pode ser instalado nos principais sistemas operacionais do mercado. • É possível codificar algoritmos de Machine learning on-line pelo Google Colab Research. • É possível executar algoritmos de Machine learning utilizando GPU. • Os versionadores de código permitem uma melhor gestão dos algoritmos desenvolvidos. • Algoritmos de Machine learning podem consumir dados de diversos tipos de fontes de dados, bem como serem aplicados em vários cenários. • Existem diversos conjuntos de dados sob os quais podem ser realizados experimentos e desenvolvidas aplicações de Machine learning. 34 1 Leia o texto a seguir: Machine learning pode ser utilizado para vários objetivos, para ofertar programação de acordo com sua utilização na Netflix, saber o que estão falando sobre sua marca no Twitter e detecção de fraudes em compras com cartão de crédito, por exemplo. FONTE: STAUDT, J. M. Machine learning para análise do desgaste da força de trabalho. Mo- nografia (Sistemas de Informação). Novo Hamburgo: Universidade Feevale, 2017. Disponível em: https://tconline.feevale.br/NOVO/tc/files/0002_4351.pdf. Acesso em: 2 out. 2020 Assinale a alternativa CORRETA que contenha uma linguagem de programação que pode ser utilizada para desenvolvimento de algoritmos de Machine learning: a) ( ) Matlab. b) ( ) Python. c) ( ) Java. d) ( ) Todas as alternativas. 2 No desenvolvimento de programas que aplicam algoritmos de Machine learning, a linguagem Python tem sido muito utilizada, principalmente pelo seu grande número de bibliotecas e pela participação da comunidade em sua evolução. Dentro do Python, o PIP tem uma importante contribuição. Assinale a alternativa CORRETA sobre o PIP: a) ( ) O PIP é o gerenciador de pacotes do Python. b) ( ) O PIP é o gerenciador de arquivos do Python. c) ( ) O PIP é a linguagem de programação do Python. d) ( ) O PIP é o sistema operacional do Python. 3 O Jupyter Notebook permite a execução de códigos Python no navegador, fazendo com que os usuários incluam texto formatado, visualizações estáticas e dinâmicas, equações matemáticas, entre outros recursos. Assinale a alternativa CORRETA com o comando para inicializar o Jupyter Notebook: a) ( ) pip install jupyter. b) ( ) sudo apt-get jupyter. c) ( ) jupyter notebook. d) ( ) notebook jupyter. AUTOATIVIDADE 35 4 Leia o texto a seguir: Machine learning é uma técnica utilizada para auxiliar os programas a aprenderem a partir de informações existentes em bases de dados, cujo principal objetivo é a previsão de resultados futuros, por exemplo, indicando um produto do agrado de um consumidor de acordo com o comportamento de compras dele. FONTE: STAUDT, J. M. Machine learning para análise do desgaste da força de trabalho. Mo- nografia (Sistemas de Informação). Novo Hamburgo: Universidade Feevale, 2017. Disponível em: https://tconline.feevale.br/NOVO/tc/files/0002_4351.pdf. Acesso em: 2 out. 2020. Sobre o Google Colab Research, assinale a alternativa CORRETA: a) ( ) É uma linguagem de programação. b) ( ) É uma plataforma colaborativa para codificação. c) ( ) É um navegador de internet. d) ( ) É um porta-documentos na nuvem. 5 As aplicações de Machine learning estão dominando os mais diversos setores, mandatoriamente os da tecnologia, mas também envolvendo diversas áreas multidisciplinares. Com isso, são gerados cada vez mais dados. Vimos alguns sites de datasets que fornecem dados para pesquisas com Machine learning. Busque na web e liste ao menos outros cinco sites que forneçam dados. 1. _________________________________________________________________ 2. _________________________________________________________________ 3. _________________________________________________________________ 4. _________________________________________________________________5. _________________________________________________________________ 36 37 TÓPICO 3 — UNIDADE 1 ARQUITETURA DE UM PROJETO DE MACHINE LEARNING 1 INTRODUÇÃO Ao atuar no desenvolvimento de software, existe um conjunto de ferramentas que auxilia a garantir a qualidade do software que chegará ao usuário final. Há todo o arcabouço fornecido pela engenharia de software, levantamento de requisitos, diagramas UML (Unified Modeling Language) e também técnicas de teste de software – tudo para garantir que o software desenvolvido atenderá a necessidade de um cliente, o usuário final. No entanto, neste livro didático não tratamos do simples processo de software que atenderá à necessidade de um usuário. Um algoritmo de Machine learning automatizará importantes processos nas organizações e, muitas vezes, até pode substituir o agente humano em tais operações. FIGURA 20 – ROBÔS QUE UTILIZAM MACHINE LEARNING FONTE: <https://cutt.ly/tgBisbb>. Acesso em: 2 out. 2020. Quando falamos que um algoritmo de Machine learning pode substituir um ser humano, por exemplo, na forma de chatbot, temos que considerar que, se ele falhar, poderá apresentar erros como saudar um cliente com bom dia em vez de boa noite ou, até mesmo, responder a alguma informação de maneira errônea em um FAQ da empresa. E se for um algoritmo que realiza análise e predição de células cancerígenas? Com certeza, ele terá uma responsabilidade maior, trazendo preocupação com quem o desenvolveu e para seus usuários. Para ambos os exemplos citados, existe um fluxo de implementação (Figura 21) para algoritmos de Machine learning. Trata-se de uma sequência de passos que objetivam ensinar o algoritmo, a partir de um conjunto de dados, a realizar a ação, mas, principalmente, garantir que o algoritmo aprendeu. 38 UNIDADE 1 — MACHINE LEARNING FIGURA 21 – FLUXO DE UM ALGORITMO DE MACHINE LEARNING FONTE: Adaptado de <https://cutt.ly/igBiTd0>. Acesso em: 2 out. 2020. 2 COLETA DE DADOS A etapa de coleta de dados é a primeira do processo de Machine learning e pode ser simples, do ponto de vista de se conectar a um Dataset CSV ou a um banco de dados relacional. No entanto, quando se trabalha com outros tipos de dados, torna-se necessário criar scripts específicos para coletar dados desses cenários. 3 PREPARAÇÃO DOS DADOS Cada base de dados tem uma característica em especial, sejam números, textos, imagens ou vídeos. Não importa o tipo de dados que exista na fonte na hora da coleta, uma série de procedimentos deve ser realizada, a fim de preparar os dados para a execução de um algoritmo. Sabe-se que mais de 80% do tempo necessário para realizar qualquer projeto de Machine learning com dados reais, geralmente, é gasto na etapa de preparação dos dados (LOSARWAR; JOSHI, 2012). Essa etapa é responsável por preparar os dados, tornando-os mais limpos e consistentes para a execução de um algoritmo de Machine learning. A preparação de dados é a etapa em que se deve tratá-los, de forma correta, antes de seu uso ou armazenamento. Pode ser utilizada em conjunto com a análise exploratória de dados, quando se realiza um estudo das características dos dados, geralmente por meio de gráficos (ERBS, 2020, p. 13). Ao longo dos próximos conteúdos, desenvolveremos exemplos práticos de todas as etapas do processo de Machine learning. No que se refere à etapa de coleta de dados, ela é muito similar ao processo de extração de um Data Warehouse, por isso recomendamos a leitura do livro “Business intelligence na prática: modelagem multidimensional e data warehouse”, disponível na Biblioteca Virtual da UNIASSELVI: https://bibliotecavirtual.uniasselvi.com.br/livros/livro/247328. IMPORTANT E TÓPICO 3 — ARQUITETURA DE UM PROJETO DE MACHINE LEARNING 39 Nos exemplos práticos, aplicaremos alguns dos principais métodos de preparação dos dados, conforme é possível observar no livro Business intelligence na prática: modelagem multidimensional e data warehouse, disponível na sua Biblioteca Virtual: https://bibliotecavirtual.uniasselvi.com.br/livros/livro/247328. Com relação ao processo de preparação de dados e análise exploratória, recomendamos a leitura do livro Preparação e Análise Exploratória de Dados, disponível em: https:// bibliotecavirtual.uniasselvi.com.br/livros/livro/249088. DICAS 4 ESCOLHA DO MODELO O processo de desenvolvimento com Machine learning pode envolver um ou vários algoritmos para sua implementação. Esse é o momento de selecionar os algoritmos que serão avaliados e futuramente aplicados em sua aplicação de Machine learning. No decorrer dos nossos estudos, você aprenderá alguns dos principais algoritmos utilizados em Machine learning. Segundo Mall et al. (2014), existem diversos métodos de Machine learning no mundo, para as mais diversas aplicações. Então, como escolher o melhor algoritmo para resolver o seu problema? O primeiro passo é seguir os estudos deste livro didático – note que você já conhece os principais tipos de dados e as principais tarefas para os respectivos datasets. No decorrer dos seus estudos, seu conhecimento sobre tarefa de aprendizado de máquina, bem como os principais métodos, será aprofundado – e isso servirá de fundamento para a escolha de um método de Machine learning. Complementarmente, lembre-se de que você está se tornando um cientista de dados e esse é o momento de recorrer ao método científico. Especificamente, para obter os principais métodos, será necessário realizar uma pesquisa exploratória nas principais bases de dados, tendo como objetivo encontrar artigos científicos relacionados ao problema que deseja resolver. Pesquisa exploratória: é usada em casos nos quais é necessário definir o problema com maior precisão e identificar cursos relevantes de ação ou obter dados adicionais antes que se possa desenvolver uma abordagem. Como o nome sugere, a pesquisa exploratória procura explorar um problema ou uma situação para prover critérios e compreensão (VIEIRA, 2002). NOTA 40 UNIDADE 1 — MACHINE LEARNING Aniceto (2016) é um exemplo de pesquisa exploratória com revisão da literatura para suporte na escolha de um método de Machine learning. Esse estudo visa a identificar técnicas de Machine learning para estimação de risco de crédito. No trabalho de Aniceto (2016), foi possível listar mais de 50 algoritmos diferentes para resolução do problema, os quais foram obtidos na leitura de 80 artigos distribuídos em dez revistas científicas. A Figura 22 mostra um gráfico de radar que sumariza os principais métodos obtidos e permitiu a continuidade das etapas do processo de Machine learning. FIGURA 22 – TÉCNICAS DE APRENDIZADO DE MÁQUINA MAIS UTILIZADAS NA ESTIMAÇÃO DE RISCO DE CRÉDITO FONTE: Aniceto (2016, p. 31) Confira a lista com algumas das principais bases de dados acadêmicos que podem ajudá-lo a encontrar artigos científicos: https://blog.doity.com.br/sites-de-artigos- cientificos/. DICAS Para realizar um estudo mais aprofundado, você pode fazer a leitura do trabalho de Aniceto (2016), disponível em: https://repositorio.unb.br/bitstream/10482/20522/1/2016_ Ma%c3%adsaCardosoAniceto.pdf. DICAS TÓPICO 3 — ARQUITETURA DE UM PROJETO DE MACHINE LEARNING 41 5 TREINO E TESTE Você já sabe que os algoritmos de Machine learning aprendem com determinado conjunto de dados. O objetivo desses algoritmos é realizar a predição de um campo (chamado de output) com base em um conjunto de características (input). Se o algoritmo utilizar todo o conjunto de dados para aprender, a única maneira de saber até que ponto um modelo está funcionando corretamente é testá- lo em novos casos. Uma maneira de fazer isso é colocar seu modelo em produção e monitorar o seu desempenho, o que, em teoria, não parece ser uma má ideia, mas, se o modelo for horrivelmente ruim, você pode ter sérios problemas (GÉRON, 2019). Para compreender melhor, imagine que você esteja desenvolvendo um algoritmo para a detecção de células cancerígenas (malignas ou benignas).
Compartilhar