Uma das principais tarefas dos computadores é automatizar as 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.
Historicamente, esses algoritmos foram construídos por cientistas ou especialistas que possuíam conhecimento íntimo 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.
Mais popularizado aprendizado de máquina os conceitos atuais têm a ver com redes neurais e, em minha experiência, isso criou em muitas pessoas a impressão de que as redes neurais são algum tipo de arma milagrosa para todos os problemas de inferência. Na verdade, isso está muito 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 isso 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 podem 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 ' rede neural ”Ao enfrentar um problema de aprendizado de máquina.
Com as redes neurais, a inferência é feita por meio de uma 'rede' ponderada. Os pesos são calibrados durante o processo denominado de “aprendizagem” e, posteriormente, aplicados para atribuir resultados aos insumos.
Por mais simples que possa parecer, todos os pesos são parâmetros para a rede calibrada e, geralmente, isso significa muitos parâmetros para um humano entender.
Portanto, podemos também considerar as redes neurais como algum tipo de caixa preta de inferência que conecta a entrada à saída, sem nenhum modelo específico entre elas.
Vamos examinar mais de perto os prós e os contras dessa abordagem.
Exemplo de rede neural de sucesso: Do Google Eu encontrei um planeta orbitando uma estrela distante - onde a NASA não - analisando dados acumulados do telescópio.
Um exemplo de falha: Um parente falou-me de uma grande empresa (que não consigo nomear) 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 foi tirada em um dia chuvoso, enquanto a última foi tirada em um dia ensolarado. Como resultado, o sistema aprendeu a distinguir a luz da 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 sua popularidade superar 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 de rede neural padronizados é um processo muito mais previsível do que procurar especialistas em 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 é, na verdade, apenas atirar em um pardal com um canhão: ela precisa de muitos dados, requer muito trabalho de anotação e, em troca, pode apenas baixo desempenho quando comparado a um modelo sólido. Não é o melhor pacote.
Ainda assim, há um grande poder no fato de eles “democratizarem” 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.
Ao abordar problemas de aprendizado de máquina, estas são as etapas pelas quais você precisará seguir:
Vamos ver esses itens em detalhes.
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 pelo qual você trabalhará.
Esta é a etapa mais crítica. Em primeiro lugar, seus dados não devem conter (ou ter poucos) erros. Limpá-lo é 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 são muito informativos (no sentido linear), então praticamente qualquer método de inferência lhe dará 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 relacionamentos não lineares úteis nos dados e linearizá-los. 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 úteis. Você pode identificar variáveis úteis se, por exemplo, plotá-las contra as variáveis de destino de aprendizagem e descobrir que o gráfico é semelhante a uma função (ou seja, a faixa estreita na entrada corresponde a uma faixa estreita na saída). Essa variável pode então ser linearizada - por exemplo, se ela for plotada como uma parábola, subtraia alguns valores e obtenha a raiz quadrada.
Para variáveis com ruído - 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 as 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 da informação da entrada melhorar, então o mesmo acontecerá com a sua inferência, 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.
Uma vez que seus dados estejam em uma forma decente, você pode ir para 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 bons motivos para acreditar que pode construir um bom modelo para a tarefa, então provavelmente deveria. Se você não pensa assim, mas há muitos dados com boas anotações, então você pode usar o viva-voz com uma rede neural. Em aplicativos práticos de aprendizado de máquina, no entanto, muitas vezes não há dados suficientes para isso.
A precisão de jogo vs. cobertura geralmente compensa tremendamente. As abordagens híbridas geralmente são totalmente aceitáveis. Suponha que os dados sejam tais que você possa obter precisão de quase 100% em 80% deles com um modelo simples. Isso significa que você pode demonstrar resultados rapidamente e, se seu sistema puder identificar quando está operando em um território amigável de 80%, basicamente você cobriu a maior parte do problema. Seu cliente pode ainda não estar totalmente satisfeito, mas isso fará com que você ganhe a confiança deles rapidamente. E não há nada que o impeça 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 que, no restante 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 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 da operadora 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 maneira confiável.
Resumindo: Se os dados não forem informativos o suficiente ou se o problema for muito complexo para ser resolvido 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.
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, em seguida, 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ê está feliz com os resultados, a tarefa está concluída. Porém, é mais provável que você tenha desenvolvido algumas idéias novas 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ê fique ocupado por um bom tempo.
Então, boa sorte e aproveite o trabalho que tem pela frente!
Relacionado:O aprendizado de máquina inclui todas as técnicas de inferência, enquanto o aprendizado profundo visa descobrir relacionamentos não lineares significativos nos dados. Portanto, o aprendizado profundo é um subconjunto do aprendizado de máquina e também um meio de engenharia automatizada de recursos aplicada a um problema de aprendizado de máquina.
como escrever casos de teste de unidade
A escolha ideal é uma linguagem que tenha amplo suporte para biblioteca de programação e permita que você se concentre na matemática em vez da infraestrutura. A linguagem mais popular é Python, mas linguagens algorítmicas como Matlab ou R ou mainstreamers como C ++ e Java também são escolhas válidas.
As redes neurais representam apenas uma abordagem dentro do aprendizado de máquina com seus prós e contras, conforme detalhado acima.
Existem alguns bons cursos online e páginas de resumo. Tudo depende das habilidades e gostos de cada um. Meu conselho pessoal: pense no aprendizado de máquina como uma programação estatística. Aprimore sua matemática e evite todas as fontes que equiparam o aprendizado de máquina às redes neurais.
Algumas vantagens: nenhuma matemática, engenharia de recursos ou habilidades artesanais necessárias; fácil de treinar; pode revelar aspectos do problema não considerados originalmente. Algumas desvantagens: requer relativamente mais dados; trabalho de preparação tedioso; não deixa nenhuma explicação de por que eles decidem da maneira que fazem, overfitting.