[Música] bem-vindos a nossa quinta semana da disciplina de processamento de linguagem natural e hoje a gente vai começar a abordar um tópico bastante interessante que eu sei que vocês estão bem ansiosos para ver isso para falar sobre isso que é o aprendizado de máquina né famoso machine learning que tá em tudo que é lugar atualmente e não é diferente em PLN bom stop que a gente vai abordar na aula de hoje fazer uma introdução sobre aprendizado o que que é aprendizado falar sobre os paradigmas que a gente tem no aprendizado de máquina Mais especificamente falar da tarefa de classificação de dados que é o que a gente vai abordar com mais profundidade aqui na disciplina e falar também sobre avaliação de classificadores como é que a gente consegue comparar o resultado de diferentes classificadores sendo aplicados aí no contexto de classificação de dados bom primeira parte interessante que a gente tem aqui né antes de falar um pouco aprender o que que é o aprendizado de máquina como que a máquina prende a gente precisa saber o que que é aprendizado né E já não é uma tarefa fácil né existem muitas definições não tem tempo para trazer todas elas aqui para vocês né mas desde a época de diálogos de Platão né só que já dizia que aprender a recordar né então se a gente for pegar a maioria das definições que a gente tem sobre aprendizado utiliza essa ideia né para poder fazer essa definição e aí eu peguei aqui uma mais formal possível que a gente possa ter aí para tentar trazer um pouco mais para quem é da área das exatas uma definição um pouco mais exata do que o padrão né Não tanto filosófica que foi feito por tommation em 1997 né que um programa de computador ele editou aprender a partir de uma experiência aí com respeito alguma classe de tarefas ter e medida de desempenho P se seu desempenho em tarefas de tema medido por P melhora com a experiência então BA sicamente O que que a gente tá colocando aqui né que a experiência vai fazer a gente aprender que a gente aprende com a experiência é isso que a gente vê quando trabalha com machine learning né É isso que a gente vai acabar utilizando aqui para realizar resolver nosso problemas com aprendizado de máquina né existem vários paradigmas de aprendizado né basicamente a gente tem o as paradigmas eles eram antigamente classificados como supervisionado por reforço e não supervisionado e ultimamente chegou aí também um novo paradigma que se chama sempre supervisionado nós vamos focar um pouco no aprendizado supervisionado que é aquele que a gente conhece como sendo guiado por um professor né esse aprendizado supervisionado a gente tem a ideia de que dada algumas determinadas entradas vai ter um professor que vai dizer para nós ó para essas entradas aqui tem que dar tal resultado na saída que é o que a gente chama de rótulo né então para essas entradas tem que dar um rótulo tal na saída Então a gente tem esse processo guiado pelo professor porque porque a gente sabe o que que a gente vai o que que a gente precisa aprender né então a gente vai ter aqui por exemplo os nossos dados né é vão ser representado pelo conjuntos de pares XD né XX seria a entrada conjunto de atributos preditivos que a gente ama né e dê é a saída desejada né que isso que a gente reproduz esse comportamento do professor né então o algoritmo de aprendizado de máquina A ideia é gerar um modelo né que constrói esse mapeamento né dado uma entrada tem que dar o resultado na saída né E quando a gente faz essa construção no modelo a gente chama uma etapa de treinamento do modelo nós vamos ver isso com mais detalhes mais para frente né porque o treinamento do modelo nada mais é do que aprender né aprender o conhecimento e gerar esse modelo que é aquele cara que vai ter o conhecimento na máquina né no nosso caso aqui para poder ser utilizado depois né quando esse rótulo que eu falei para vocês né O que que tem que dar na saída quando ele é um valor numérico a gente tem o que a gente chama de problema de regressão e quando ele é um valor categórico o valor nominal a gente tem um problema que é conhecido como classificação Então é só para mostrar para vocês a diferença então com um exemplo aqui classificar objetos é colocar rotular determinados objetos de acordo com alguma característica que a gente define pelo nome para uma categoria já quando for a regressão a gente vai fazer uma previsão de valor numérico contínuo no caso né não é qualquer numérica tem que ser contido porque a categoria ela pode ser também ser representada por números né então por exemplo fazer a previsão do tempo previsão de do Mercado de Ações é o valor do dólar vamos dizer assim esse é uma tarefa de regressão né já fazer uma classificação de padrões a gente pode classificar clientes por exemplo de um banco como sendo bom pagador ou não ou classificar e-mail como sendo spam ou não spam né seria um problema de classificação tá basicamente a ideia toda da nossa classificação aqui né de um problema de classificação utilizando aprendizado de máquina é dado um conjunto de dados de entrada com os rótulos conhecidos né que que a gente vai fazer a partir de um algoritmo de aprendizado de máquina o algoritmo de Machine a gente vai aprender né o relacionamento entre entradas e saída nada mais é pessoal do que uma função matemática vamos dizer assim só que não necessariamente essa função tá explícita em termos de função né mas eu penso que é uma caixinha preta que na entrada vão ter esses valores que a gente tem de entrada e na saída ele tem que dar o resultado a saída desejada a classe ou o valor do do número contínuo se for uma regressão né Então a partir desse algoritmo de aprendizado a gente vai construir esse modelo que a gente chama o modelo preditivo porque por que que é o modelo preditivo porque a nossa ideia não é só aprendendo normalmente a gente vai querer aprender o conhecimento para poder aplicar depois para dados desconhecidos então a gente construiu um modelo preditivo aqui que prendeu fez esse mapeamento entre relacionamento dos e-mails e Meios que são Espanha e meio que não são Espanha por exemplo para quê para depois a gente pegar um novo e-mail que não foi utilizado na hora de fazer a construção desse modelo né Eu não sei o roto né quando eu construir o modelo eu sabia né agora quando tem o e-mail novo chegando eu já não sei se ele é ou não um spam aí eu vou dar de entrada para esse meu modelo aqui ele vai dizer para mim na saída se é isso para não é né e eu quero que ele faça isso com uma taxa de acerto alta né certo então aqui a ideia desse que eu falei para vocês do modelo preditivo e esse modelo preditivo pessoal é onde tá é aquela caixinha preta que eu falei para vocês Onde tá o conhecimento representado né o conhecimento adquirido e a forma de representar esse conhecimento são diversas formas diversas formas de apresentar esse conhecimento Isso é uma das etapas importantes quando a gente trabalha com classificação né Então aqui tem alguns exemplos de representação do conhecimento né redes neurais é um exemplo máquina de vetores de suporte são suporte Vector Machine aro de decisão regras de decisão o na evidência que nós vamos aprender também na disciplina redesbesianas Então são várias formas de representar o conhecimento como que uma rede neural representa o conhecimento dela por meio dos pesos que a gente tem aqui das conexões entre os neurônios elas vão ver isso mas adiante Mas é só para vocês terem uma ideia de como que esse conhecimento é representado Qual é a estrutura de dados vamos dizer assim que representa esse conhecimento né como que uma árvore de decisão representa o conhecimento dessa forma aqui né os nós internos representam os atributos que a gente tem aqueles de entrada as arestas os resultados possíveis para que eles atributos e os nós folha representa o resultado Ou seja a classe para aquele para encontrar para aquele determinado exemplo Então se a gente tem lá um exemplo é um dado que o valor da tributo sorria não e a gente já vai direto para o nosso olhar então se não tá sorrindo é o inimigo tá na classe inimigo e assim por diante né cada uma dessas formas de representação de conhecimento Elas têm algumas vantagens e desvantagens em relação às outras né as áreas de decisão ela tem por exemplo como vantagem a interpretabilidade do modelo a gente viu a árvore ali a gente consegue entender Qual foi a lógica né Quais foram as regras que foram utilizadas para classificar um exemplo como centro de uma classe A ou classe B já na rede neural a gente não tem essa essa capacidade porque é um monte de número conexões neurônio e a gente não tem essa facilidade de interpretação né então só um exemplo de critério que a gente pode utilizar né E quando a gente vai construir esse modelo preditivo a gente utiliza esse algoritmo de aprendizado de máquina que eu falei para vocês né E também esses algoritmos eles têm diferentes técnicas para poder realizar esse aprendizado né então aqui a gente tem essas diferenças dessas técnicas diferentes que a gente tem a gente tem alguns baseados em Gradiente e outros baseados de programação dinâmica ou sem divisão em Conquista que são utilizados por área de decisão por exemplo tem aqueles baseados em probabilidades que a gente vai ver que é o algoritmo da rigidez né que utiliza o conceito de probabilidades para poder adquirir o conhecimento tem alguns baseados em computação evolutiva e assim por diante são várias técnicas diferentes para poder construir né adquirir o conhecimento a partir dos dados e uma vez que a gente construiu esse classificador que eu falei para vocês né A ideia é que a gente tem um classificador que seja capaz não só de adquirir o conhecimento a partir dos dados mas também que a gente diz que é generalizar o que que é isso ele é capaz de fazer a classificação adequada de dados que não foram utilizados durante o treinamento e como é que a gente faz isso a gente não tem como prever o futuro como é que eu vou saber se ele vai ou não prever bem o futuro e aí que entra as Protocolos de avaliação dos classificadores né que é o que a gente vai dar uma olhada agora então a gente tem que usar alguma estratégia para simular o futuro então basicamente O que que a gente tem a gente tem um histórico de dados né vamos supor um banco ele tem lá um histórico Com milhões de clientes que lá ele tem várias informações dos clientes idade sexo renda e várias outras informações dos clientes ele também tem como saber se o cliente é um bom pagador ou não que a gente poderia definir isso como um problema de uma classe ó beleza eu tenho todos esses clientes aqui eu vou classificar eles como sendo bons pagadores ou maus pagadores porque se ele for bom pagador ele vier pedir um empréstimo eu vou provar um empréstimo para ele mas se ele não for eu não vou provar empréstimo para ele né e não tem como fazer esse forma Manual tem que ser automática porque o gerente não vai conseguir olhar para aquela tabela gigante com milhões de clientes e identificar um padrão para saber qual o cara que vai ser ou não bom pagador é difícil de saber né porque porque o cara que tá chegando novo no banco agora a gente não tem os dados dele a gente tem só de outros né então a gente tá tentando encontrar algum relacionamento né dos atributos dos outros que vão caracterizar esse cara como um perfil de alguém que vai ser um bom pagador ou não né então a ideia o que que acontece né O que que a gente quer fazer aqui como eu tenho esses milhões de clientes Então tem que encontrar uma forma de separar esses dados separar a cor ó Vou fazer de conta eu vou pegar desse 1 milhão de clientes se eu pegar 100 mil por exemplo é 100. 000 aqui eu vou considerar eles como como sendo faz de conta que eu não sei eu sei qual é a classe dele mesmo eu vou fazer de conta que eu não sei vou construir um modelo com os outros 900. 000 e depois eu vou ver se esses caras estão ou não né se esse modelo que eu gerei e tal secando bem esse 100 mil aí uma forma de eu pensar então ele tá generalizando bem porque esses caras não foram usados na hora de construir o modelo mas depois eu consegui classificar eles de forma adequada porque uma vez que o classificador gerou a classe para ele eu consigo comparar com que ele que realmente Qual é a classe verdadeira porque eu sei isso né apesar de não saber do futuro se eu tô simulando o futuro ali eu tô sabendo só que claro né Existem várias formas de fazer essa divisão porque vamos supor eu peguei 100.
000 mas se em vez de eu pegar esse 100 mil ele classificou bem eu pegasse outro 100 mil Será que ele ia classificar também ou se fosse outros ainda então simples escolha de Quais são esses caras que eu tô escolhendo para fazer parte do meu futuro vamos dizer assim né para fazer esse teste que eu chamo de chama de conjunto de teste só essa escolha pode mudar a tua completamente o meu o resultado porque às vezes não é porque o algoritmo ele foi bem ele deu sorte de pegar 100 cara 100 mil caras que eram fáceis de classificar Então esse é um isso que define o protocolo Então qual é a melhor estratégia pra gente fazer isso aí tem várias estratégias né que o roldauch é mostrar de aleatória a validação cruzada livro out Bootstrap são várias formas várias protocolos pra poder fazer a construção desses conjuntos de idade e fazer estimativa se o modelo é um não bom classificador né eu vou mostrar para vocês aqui o hold que é o caso mais simples possível que é exatamente esse exemplo que eu falei para vocês de um milhão pega a 100 mil por exemplo né que é o caso mais simples é esse né que vai fazer uma única partição aleatória dos dados então vou ter aqui um modelo de treinamento e o modelo de teste Então vamos supor eu falei 100. 000 mas nesse caso aqui um exemplo bem bem trabalhado né bem utilizado de quando se utiliza Hold é pegar dois terços dos dados para treinamento e um terço para para fazer o teste Então nesse nosso exemplo de um milhão seria mais ou menos 600 mil vão botar né 700 mil vamos arredondar 700. 000 para ser utilizado como treinamento e 300.
000 como teste Então pega ele é 70% e 30% né só para arredondar né e é isso aqui é importante também pessoal que a gente chama de roda estratificado isso vale para as outras técnicas também é não adianta eu pegar 100 mil pegar esses 300. 000 todos eles da classe Ball pagadora ou todos eles da classe bom pagador não é importante que eu mantenha a mesma distribuição das classes que eu tenho no conjunto de dados original Então se o meu conjunto de dados original Eu tenho um milhão de de clientes né Desse 1 milhão de clientes 600. 000 é bom pagador e 400.
000 mal pagador ó eu tenho uma proporção de 60 para 40 né 60% é bom pagador e 40% também então quando eu escolher esses 300. 000 para fazer o teste eu preciso manter também é importante não é que eu preciso mas é importante que eu mantenha essa distribuição também para que eu consiga ter uma estimativa melhor se meu modelo está funcionando bem ou não então vou manter também 60% bom pagador e 40% mau pagador tá E aí o que que eu faço pessoal uma vez que eu rodei o algoritmo vai lá e comparo né o rodeio algoritmo faço a previsão desses caras que eu utilizei como conjunto de teste vejo se ele acertou se ele errou né O que era da Classe A deu como Classe A não às vezes alguns eram da Classe A mas eles o classificador classificou como da Classe B e assim por diante e para poder fazer essa avaliação eu posso utilizar por exemplo uma matriz de confusão que também é conhecida como tabela de contingência né é a partir dela permite a extração de várias medidas né basicamente o que que eu tenho aqui qual é a classe verdadeira e qual é a classe prevista pelo classificador aqui é um problema de três classes né então o que que a gente consegue extrair daqui a diagonal principal vai ser os acertos ou seja aqueles que são da Classe A fora classificados corretamente como sendo da descrição da Classe B corretamente assim por diante pelo classificador E aí a gente tem os valores fora da diagona fora da Diagonal principal são os erros são aqueles cara que ele errou por exemplo esse 25 exemplos que eram da Classe A não Cinco exemplos que eram da Classe A Verdade foram classificados erroneamente pelo classificador como sendo da classe c tá só para a gente ter uma ideia né e aqui a gente tira algumas medidas como acurácia por exemplo que que seria acurácia a soma de todos os acertos soma soma de todos os valores que é o percentual de acerto então aqui por exemplo deu 85%. e o erro que que é o erro é o complemento da Croácia se acurácia de 85%, o erro é 15%.
certo é importante também que a gente tem uma a gente pode nos casos de Matriz de confusão binária a gente tem algumas medidas interessantes para fazer aqui né então a gente pode colocar aqui a nossa Matriz de confusão binária normalmente a gente utiliza ela quando a gente tem as nossas classes são Claro binário porque são duas classes a gente considera uma acontecendo positiva e a outra como sendo negativa né então aqui seria a nossa classe positivo e negativa os nossos dados aqui a classe verdadeira que a classe prevista pelo classificador é a mesma esquema né só que aqui a gente tem os nomes interessantes que nos ajuda a fazer os cálculos para essas medidas né que é o verdade VP de verdadeiro positivo v n verdadeiro negativo FP é de falso positivo e fn de falso negativo porque isso porque o seguinte verdadeiro positivo o que que é exemplos de classe positiva que foram classificados verdadeiramente classificados como positiva e exemplos da classe negativa que foram verdadeiramente classificados como da classe negativa o FP o que que é são exemplos da classe negativa que foram falsamente classificados como positivo e aqui falsamente classificados como negativo que era para ser positivo então a gente consegue ter essa esses termos assim para poder facilitar alguns cálculos que a gente vai ver né então acurácia seria VP + VN sobre a soma de tudo o erro já seria só essa outra diagonal aqui sobre a soma de tudo né que são os erros né que é um menos acurácia e a gente tem outras medidas interessantes também como a sensibilidade também chamada de Recall Evocação que vai ser o nosso VP sobre fn mais VP tem apreciam tem a precisão que é VP sobre FP + VP então uma medida que a gente consegue ver daquelas que o nosso classificador classificou como positiva né o quão preciso foi né porque não adianta a gente classificar tudo como positiva acertar todos aqui mas as custas por quê Porque a gente quase ficou todo mundo com positivo Mas aí o nosso FP vai ser altíssimo também então não adianta a gente ter um VP alto e o nosso FP for alto também importante que ele seja baixo Então são outras medidas que a gente vai utilizando aí que são interessantes né E sempre importante a gente fazer uma um Trader off aqui entre o percevejo Recall porque pessoal o que que vai acontecer se a gente utilizar um classificador que classifica todos os exemplos como sendo positivo isso aqui essas esse tipo de medida é bastante importante quando a gente tem problemas de desbalanceados né como por exemplo fazer uma vamos fazer a transação de cartão de crédito cara essa transação bancária né transação de tentar encontrar fraude vocês imaginam qual o percentual que vai ser fraude de transações bancárias isso aí tá toda hora tá acontecendo a transação e existe bastante fraude mas percentualmente é muito baixo porque tem muito mais transação legítima do que transação fraudulenta né E se a gente for usar umacurácia para poder fazer uma estimativa a gente só chutando 99% 99,9%.