Capítulo 97 – Machine Learning – Guia Definitivo – Parte 7
Nos 10 capítulos finais deste livro online vamos trazer um grande resumo sobre Machine Learning. O objetivo é fornecer uma visão clara do que é e como Machine Learning está sendo usado no dia a dia, um pouco de matemática, as principais regras e princípios. Queremos ainda que esses capítulos finais possam servir de material de referência para os alunos que estão buscando as certificações oferecidas pela DSA no Bootcamp de Certificação.
Serão 10 partes no total com um guia completo sobre Machine Learning. Aproveite a leitura para compreender de forma definitiva o que é uma das tecnologias mais incríveis do nosso tempo.
Neste capítulo vamos seguir explicando para você dezenas de regras e princípios sobre Machine Learning para resolver problemas de negócio, agora com ênfase na Engenharia de Atributos (Feature Engineering).
Boa leitura!
Engenharia de Atributos
A Engenharia de Atributos (também chamada de Engenharia de Recursos) é uma das partes mais importantes e ao mesmo tempo mais complexas em Machine Learning.
Quando estamos diante de um problema e recebemos os dados, não sabemos previamente se cada variável (cada atributo ou recurso) é realmente útil ou não. Também não sabemos se a combinação de variáveis pode ser mais interessante do que o uso de variáveis individuais. Ou ainda, não sabemos se outros atributos serão necessários. E como resolvemos isso?
Através da experimentação, trabalho fundamental do Cientista de Dados. Ou seja, diversos experimentos devem ser feitos com diferentes atributos a fim de chegar no conjunto ideal para resolver determinado problema. E diversas técnicas podem ser usadas na Engenharia de Atributos, técnicas que são ensinadas nos cursos da DSA.
Mas depois que o modelo está criado e em produção, será que podemos melhorar sua performance incluindo mais atributos ou modificando atributos já usados pelo modelo? Afinal, o padrão previamente detectado nos dados pode mudar ao longo do tempo e a performance do modelo será reduzida de forma gradual. Logo, mesmo depois que o modelo estiver em produção o trabalho de Engenharia de Atributos continua, mas nesse caso passa a ser responsabilidade do Engenheiro de Machine Learning.
Vamos continuar listando as regras e princípios em Machine Learning e agora compreender algumas técnicas fundamentais ao trabalhar com Engenharia de Atributos. Algumas das técnicas listadas aqui são de nível avançado e requerem boa experiência em Machine Learning e no processo de Ciência de Dados.
Regra 16: O Processo é Iterativo
Não espere que o modelo em que você está trabalhando agora seja a última e perfeita versão. De fato, o modelo nunca será perfeito e raramente será a última versão. O processo é iterativo e contínuo.
Muitas equipes lançam um modelo para um determinado problema por trimestre ou por semestre (lembrando que cada problema de negócio vai requerer um modelo diferente). Existem três razões básicas para lançar novos modelos:
- Você deseja usar novos recursos (atributos) testados recentemente.
- Você está ajustando a regularização e combinando recursos antigos de novas maneiras.
- Você está ajustando o objetivo.
Assim como qualquer sistema de software, um modelo de Machine Learning tem o seu ciclo de vida e requer manutenção constante. Monitorando as métricas conseguimos detectar eventuais quedas de performance e tomar ações para que o modelo siga atendendo o propósito para o qual ele foi criado. A Engenharia de Atributos será, portanto, um processo constante.
Regra 17: Comece com Recursos Observados Diretamente em Oposição aos Recursos Aprendidos
Este pode ser um ponto controverso, mas evita muitas armadilhas. Em primeiro lugar, vamos descrever o que é um recurso aprendido.
Um recurso aprendido é um recurso gerado por um sistema externo (como um sistema de clustering não supervisionado) ou pelo próprio modelo (por exemplo, por meio de um modelo fatorado ou aprendizado profundo). Ambos podem ser úteis, mas podem ter muitos problemas, portanto, não devem estar na primeira versão do modelo.
Se você usar um sistema externo para criar um recurso, lembre-se de que o sistema externo tem seu próprio objetivo. O objetivo do sistema externo pode ser apenas fracamente correlacionado com seu objetivo atual. Se você capturar um instantâneo do sistema externo, ele poderá ficar desatualizado. Se você atualizar os recursos do sistema externo, os significados podem mudar. Se você usar um sistema externo para fornecer um recurso, saiba que essa abordagem requer muito cuidado.
Quem disse que seria fácil?
O principal problema com modelos fatorados e modelos profundos é que eles não são convexos. Assim, não há garantia de que uma solução ótima possa ser aproximada ou encontrada e os mínimos locais encontrados em cada iteração podem ser diferentes.
Essa variação torna difícil julgar se o impacto de uma mudança em seu sistema é significativo ou aleatório. Ao criar um modelo sem recursos profundos, você pode obter um excelente desempenho de linha de base (benchmark). Depois que essa linha de base for alcançada, você pode tentar abordagens mais esotéricas.
Regra 18: Combine Recursos Usando Discretização
Há várias maneiras de combinar e modificar recursos. Sistemas de aprendizado de máquina, como o TensorFlow, permitem que você pré-processe seus dados por meio de transformações. As duas abordagens mais comuns são “discretizações” e “cruzamentos”.
A discretização consiste em pegar um recurso contínuo e criar muitos recursos discretos a partir dele. Considere um recurso contínuo, como a idade. Você pode criar um recurso (um novo atributo) que terá o valor 1 quando a idade for menor que 18, outro recurso que o valor será 1 quando a idade estiver entre 18 e 35, etc. Podemos usar os quartis para fazer essa divisão.
Dependendo do problema, o recurso original contínuo pode apresentar melhor performance. Mas em um outro tipo de problema, o mesmo recurso de forma discretizada pode ser uma melhor opção. A discretização oferece ainda uma vantagem: pode ser mais fácil de compreender para os seres humanos e assim facilitar a interpretação dos resultados de um modelo.
No fim, precisamos experimentar. Isso faz parte do nosso trabalho em Ciência de Dados.
Regra 19: Combine Recursos Usando Cruzamento
Cruzamentos combinam duas ou mais colunas de recursos. Uma coluna de recursos, na terminologia do TensorFlow, é um conjunto de recursos homogêneos (por exemplo, {masculino, feminino}, {EUA, Canadá, México} etc.).
Um cruzamento é uma nova coluna de recurso com recursos em, por exemplo, {masculino, feminino} × {EUA, Canadá, México}. Esta nova coluna de recurso conterá o recurso (masculino, Canadá). Se você estiver usando o TensorFlow e disser ao TensorFlow para criar esse cruzamento para você, esse recurso (masculino, Canadá) estará presente em exemplos que representam homens canadenses. Observe que são necessárias grandes quantidades de dados para aprender modelos com cruzamentos de três, quatro ou mais colunas de recursos básicos. Isso é muito útil para regras de associação e sistemas de recomendação.
Cruzamentos que produzem colunas de recursos muito grandes podem se ajustar demais. Por exemplo, imagine que você está fazendo algum tipo de pesquisa e tem uma coluna de recurso com palavras na consulta e uma coluna de recurso com palavras no documento. Você pode combiná-los com um cruzamento, mas acabará com muitos recursos.
Ao trabalhar com texto, existem duas alternativas. O mais draconiano é um produto escalar. Um produto escalar em sua forma mais simples conta o número de palavras em comum entre a consulta e o documento. Este recurso pode então ser discretizado. Outra abordagem é uma interseção: assim, teremos um recurso que está presente se e somente se a palavra “pônei” estiver no documento e na consulta, e outro recurso que está presente se e somente se a palavra “o” estiver no documento e na consulta, por exemplo.
Regra 20: Use Recursos Muito Específicos Quando Puder
Com toneladas de dados é mais simples aprender milhões de recursos simples do que alguns recursos complexos.
Portanto, não tenha medo de grupos de recursos em que cada recurso se aplica a uma fração muito pequena de seus dados, mas a cobertura geral está acima de 90%. Você pode usar a regularização para eliminar os recursos que se aplicam a poucos exemplos.
Regra 21: Pesos dos Recursos
O número de pesos de recursos que você pode aprender em um modelo linear é aproximadamente proporcional à quantidade de dados que você possui.
Existem resultados fascinantes da teoria da aprendizagem estatística sobre o nível apropriado de complexidade para um modelo, mas essa regra é basicamente tudo o que você precisa saber. Muitos profissionais duvidam que algo possa ser aprendido com mil exemplos, ou que você precisaria de mais de um milhão de exemplos, porque eles ficam presos a um certo método de aprendizado. A chave é dimensionar seu aprendizado para o tamanho de seus dados. Por exemplo:
Se você estiver trabalhando em um sistema de classificação de pesquisa e houver milhões de palavras diferentes nos documentos e na consulta e tiver 1.000 exemplos rotulados, você deve usar um produto escalar entre os recursos de documento e consulta, TF-IDF e uma dúzia de outros recursos altamente projetados por humanos. Ou seja, 1000 exemplos, uma dúzia de recursos.
Se você tiver um milhão de exemplos, cruze as colunas de recurso de consulta e documento, usando regularização e possivelmente seleção de recurso. Isso lhe dará milhões de recursos, mas com a regularização você terá menos. Ou seja, 10 milhões de exemplos, talvez 100 mil recursos.
Se você tiver bilhões ou centenas de bilhões de exemplos, poderá cruzar as colunas de recursos com tokens de documento e consulta, usando seleção e regularização de recursos. Você terá um bilhão de exemplos e 10 milhões de recursos.
A teoria da aprendizagem estatística raramente fornece limites, mas dá uma ótima orientação para um ponto de partida.
Regra 22: Limpe os Recursos Que Você Não Está Mais Usando
Recursos não utilizados criam dívida técnica.
Se você achar que não está usando um recurso e que combiná-lo com outros recursos não está funcionando, remova-o de sua infraestrutura e do seu modelo (o modelo obviamente terá que ser retreinado sem aquele recurso).
Você deve manter sua infraestrutura limpa para que os recursos mais promissores possam ser testados o mais rápido possível. Se necessário, alguém sempre pode adicionar de volta seu recurso. Por isso as Features Stores (Lojas de Recursos) estão cada vez mais populares. São repositórios que armazenam os recursos já tratados e processados e que podem ser usados a qualquer momento. Leia mais sobre isso aqui.
Lembre-se da cobertura ao considerar quais recursos adicionar ou manter. Quantos exemplos são cobertos pelo recurso? Por exemplo, se você tiver alguns recursos de personalização, mas apenas 8% de seus usuários tiverem recursos de personalização, isso não será muito eficaz.
Se, por outro lado, você tem um recurso que cobre apenas 1% dos dados, mas 90% dos exemplos que têm o recurso são positivos, então será um ótimo recurso para adicionar.
Machine Learning não é mais um hype. É uma tecnologia usada pelas empresas no dia a dia e a gestão desse processo se torna cada vez mais importante.
Continuaremos no próximo capítulo.
Referências: