Como abordar problemas de aprendizado de máquina

Publicados: 2022-03-11

Uma das principais tarefas dos computadores é automatizar tarefas humanas. Algumas dessas tarefas são simples e repetitivas, como “mover X de A para B”. Fica muito mais interessante quando o computador tem que tomar decisões sobre problemas que são muito mais difíceis de formalizar. É aí que começamos a encontrar problemas básicos de aprendizado de máquina.

Ilustração de capa de problemas de aprendizado de máquina

Historicamente, esses algoritmos foram construídos por cientistas ou especialistas que tinham conhecimento profundo de seu campo e eram amplamente baseados em regras. Com a explosão do poder de computação e a disponibilidade de grandes e diversos conjuntos de dados, o foco mudou para uma abordagem mais computacional.

Os conceitos de aprendizado de máquina mais popularizados atualmente têm a ver com redes neurais e, na minha experiência, isso criou a impressão em muitas pessoas de que as redes neurais são algum tipo de arma milagrosa para todos os problemas de inferência. Na verdade, isso está bem longe da verdade. Aos olhos do estatístico, eles formam uma classe de abordagens de inferência com seus pontos fortes e fracos associados, e depende completamente do problema se as redes neurais serão a melhor solução ou não.

Muitas vezes, existem abordagens melhores.

Neste artigo, descreveremos uma estrutura para atacar problemas de aprendizado de máquina. Não há espaço para entrar em muitos detalhes sobre modelos específicos de aprendizado de máquina, mas se este artigo gerar interesse, os artigos subsequentes poderão oferecer soluções detalhadas para alguns problemas interessantes de aprendizado de máquina.

Primeiro, no entanto, vamos nos esforçar para mostrar por que você deve ser mais cauteloso do que pensar automaticamente em “rede neural” quando se depara com um problema de aprendizado de máquina.

Prós e Contras das Redes Neurais

Com redes neurais, a inferência é feita por meio de uma “rede” ponderada. Os pesos são calibrados durante o chamado processo de “aprendizagem” e, posteriormente, aplicados para atribuir resultados aos insumos.

Por mais simples que isso possa parecer, todos os pesos são parâmetros para a rede calibrada e, geralmente, isso significa muitos parâmetros para um humano entender.

Ilustração de entrada-saída da teoria da rede neural

Portanto, podemos considerar as redes neurais como uma espécie de caixa preta de inferência que conecta a entrada à saída, sem nenhum modelo específico no meio.

Vamos dar uma olhada nos prós e contras dessa abordagem.

Vantagens das Redes Neurais

  • A entrada são os próprios dados. Resultados utilizáveis ​​mesmo com pouca ou nenhuma engenharia de recursos.
  • Habilidade treinável. Sem engenharia de recursos, não há necessidade de habilidades difíceis de desenvolver, como intuição ou conhecimento de domínio. Ferramentas padrão estão disponíveis para inferências genéricas.
  • A precisão melhora com a quantidade de dados. Quanto mais entradas ele vê, melhor o desempenho de uma rede neural.
  • Pode superar os modelos clássicos quando não há informações completas sobre o modelo. Pense no sentimento público, por exemplo.
  • A inferência aberta pode descobrir padrões desconhecidos. Se você usar um modelo e deixar de lado uma consideração, ele não detectará o fenômeno correspondente. As redes neurais podem.

Exemplo de rede neural bem-sucedida: a IA do Google encontrou um planeta orbitando uma estrela distante – onde a NASA não fez – analisando dados acumulados do telescópio.

Desvantagens das Redes Neurais

  • Eles exigem muitos dados (anotados!). Primeiro, essa quantidade de dados nem sempre está disponível. A convergência é lenta. Um modelo sólido (digamos, em física) pode ser calibrado após algumas observações – com redes neurais, isso está fora de questão. A anotação dá muito trabalho, sem falar que ela, por si só, não é infalível.
  • Nenhuma informação sobre a estrutura interna dos dados. Você está interessado no que a inferência é baseada? Sem sorte aqui. Existem situações em que o ajuste manual dos dados melhora a inferência em um salto, mas uma rede neural não poderá ajudar com isso.
  • Problemas de sobreajuste. Acontece muitas vezes que a rede tem mais parâmetros do que os dados justificam, o que leva a inferências abaixo do ideal.
  • O desempenho depende da informação. Se houver informações completas sobre um problema, um modelo sólido tende a superar uma rede neural.
  • Existem problemas de amostragem. A amostragem é sempre uma questão delicada, mas com um modelo pode-se desenvolver rapidamente uma noção de amostragem problemática. As redes neurais aprendem apenas com os dados, portanto, se obtiverem dados tendenciosos, terão conclusões tendenciosas.

Um exemplo de fracasso: um parente pessoal me contou sobre uma grande corporação (que não posso citar) que estava trabalhando na detecção de veículos militares em fotos aéreas. Eles tinham imagens onde havia tais veículos e outros que não. A maioria das imagens da primeira aula foram tiradas em um dia chuvoso, enquanto as últimas foram tiradas em dias ensolarados. Como resultado, o sistema aprendeu a distinguir luz de sombra.

Para resumir, as redes neurais formam uma classe de métodos de inferência que têm seus prós e contras.

O fato de que sua popularidade supera todos os outros métodos estatísticos aos olhos do público provavelmente tem mais a ver com governança corporativa do que qualquer outra coisa.

Treinar pessoas para usar ferramentas padrão e métodos padronizados de rede neural é um processo muito mais previsível do que procurar especialistas de domínio e artistas de várias áreas. Isso, no entanto, não muda o fato de que usar uma rede neural para um problema simples e bem definido é realmente apenas atirar em um pardal com um canhão: ele precisa de muitos dados, requer muito trabalho de anotação e, em troca, pode apenas um desempenho inferior quando comparado a um modelo sólido. Não é o melhor pacote.

Ainda assim, há um enorme poder no fato de que eles “democratizam” o conhecimento estatístico. Uma vez que uma solução de inferência baseada em rede neural é vista como uma mera ferramenta de programação, ela pode ajudar até mesmo aqueles que não se sentem confortáveis ​​com algoritmos complexos. Então, inevitavelmente, muitas coisas são construídas agora que de outra forma não existiriam se pudéssemos operar apenas com modelos sofisticados.

Abordando problemas de aprendizado de máquina

Ao abordar problemas de aprendizado de máquina, estas são as etapas pelas quais você precisará seguir:

  • Definir critérios de aceitação
  • Limpando seus dados e maximizando o conteúdo das informações
  • Escolhendo a abordagem de inferência mais ideal
  • Treine, teste, repita

Vamos ver esses itens em detalhes.

Diferentes etapas de um problema de aprendizado de máquina

Definir critérios de aceitação

Você deve ter uma ideia da precisão do seu alvo o mais rápido possível, na medida do possível. Este será o alvo para o qual você trabalha.

Limpando seus dados e maximizando seu conteúdo de informações

Este é o passo mais crítico. Em primeiro lugar, seus dados não devem ter nenhum (ou poucos) erros. Limpá-lo destes é um primeiro passo essencial. Substitua os valores ausentes, tente identificar padrões que são obviamente falsos, elimine duplicatas e qualquer outra anomalia que você possa notar.

Quanto à informação, se seus dados forem muito informativos (no sentido linear), praticamente qualquer método de inferência fornecerá bons resultados. Se as informações necessárias não estiverem lá, o resultado será ruído. Maximizar as informações significa principalmente encontrar quaisquer relações não lineares úteis nos dados e linearizá-las. Se isso melhorar significativamente as entradas, ótimo. Caso contrário, talvez seja necessário adicionar mais variáveis. Se tudo isso não der frutos, a precisão do alvo pode ser prejudicada.

Com alguma sorte, haverá variáveis ​​únicas que são úteis. Você pode identificar variáveis ​​úteis se, por exemplo, plotá-las em relação à(s) variável(is) de aprendizado e descobrir que o gráfico é semelhante a uma função (ou seja, uma faixa estreita na entrada corresponde a uma faixa estreita na saída). Essa variável pode então ser linearizada - por exemplo, se for plotada como uma parábola, subtraia alguns valores e tire a raiz quadrada.

Para variáveis ​​que são ruidosas – faixa estreita na entrada corresponde a uma faixa ampla na saída – podemos tentar combiná-las com outras variáveis.

Para ter uma ideia da precisão, você pode querer medir probabilidades de classe condicional para cada uma de suas variáveis ​​(para problemas de classificação) ou aplicar alguma forma muito simples de regressão, como regressão linear (para problemas de previsão). Se o conteúdo de informação da entrada melhorar, sua inferência também melhorará, e você simplesmente não quer perder muito tempo neste estágio calibrando um modelo quando os dados ainda não estão prontos. Portanto, continue testando o mais simples possível.

Escolhendo a abordagem de inferência mais ideal

Quando seus dados estiverem em boa forma, você pode usar o método de inferência (os dados ainda podem ser polidos mais tarde, se necessário).

Você deve usar um modelo? Bem, se você tem boas razões para acreditar que pode construir um bom modelo para a tarefa, então provavelmente deveria. Se você acha que não, mas há dados amplos com boas anotações, então você pode usar uma rede neural sem usar as mãos. Em aplicações práticas de aprendizado de máquina, no entanto, muitas vezes não há dados suficientes para isso.

Jogar com precisão versus cobertura muitas vezes compensa tremendamente. As abordagens híbridas geralmente são completamente boas. Suponha que os dados sejam tais que você possa obter quase 100% de precisão em 80% deles com um modelo simples? Isso significa que você pode demonstrar resultados rapidamente, e se o seu sistema puder identificar quando está operando no território 80% amigável, então você basicamente cobriu a maior parte do problema. Seu cliente pode ainda não estar totalmente satisfeito, mas isso lhe renderá a confiança rapidamente. E não há nada que impeça você de fazer algo semelhante com os dados restantes: com um esforço razoável, agora você cobre, digamos, 92% dos dados com 97% de precisão. É verdade, no resto dos dados, é um cara ou coroa, mas você já produziu algo útil.

Para a maioria das aplicações práticas, isso é muito útil. Digamos que você esteja no ramo de empréstimos e queira decidir a quem conceder um empréstimo, e tudo o que você sabe é que em 70% dos clientes seu algoritmo é muito preciso. Ótimo - é verdade, os outros 30% de seus candidatos exigirão mais processamento, mas 70% podem ser totalmente automatizados. Ou: suponha que você esteja tentando automatizar o trabalho do operador para call centers, você pode fazer um bom trabalho (rápido e sujo) apenas nas tarefas mais simples, mas essas tarefas cobrem 50% das chamadas? Ótimo, o call center economiza dinheiro se puder automatizar 50% de suas chamadas de forma confiável.

Para resumir: se os dados não forem suficientemente informativos ou o problema for muito complexo para ser tratado em sua totalidade, pense fora da caixa. Identifique subproblemas úteis e fáceis de resolver até ter uma ideia melhor.

Depois de ter seu sistema pronto, aprenda, teste e faça um loop até ficar satisfeito com os resultados.

Treinar, testar, repetir

Após as etapas anteriores, resta pouco de interesse. Você tem os dados, tem o método de aprendizado de máquina, então é hora de extrair parâmetros por meio do aprendizado e testar a inferência no conjunto de testes. A literatura sugere que 70% dos registros devem ser usados ​​para treinamento e 30% para teste.

Se você estiver satisfeito com os resultados, a tarefa está concluída. Mas, mais provavelmente, você desenvolveu algumas novas ideias durante o procedimento, e elas podem ajudá-lo a aumentar a precisão. Talvez você precise de mais dados? Ou apenas mais limpeza de dados? Ou outro modelo? De qualquer forma, é provável que você esteja ocupado por um bom tempo.

Então, boa sorte e aproveite o trabalho pela frente!

Relacionado:
  • Máquinas e confiança: como mitigar o viés da IA
  • Estrelas realinhadas: melhorando o sistema de classificação do IMDb