O que é isso sobre Machine Learning na prática real?

11

Sou novato em aprendizado de máquina (também algumas estatísticas), aprendendo conhecimento (algoritmos de aprendizado supervisionado / não supervisionado, métodos de otimização relevantes, regularizações, algumas filosofias (como compensação de desvios de variação)?) Por um tempo. Eu sei que sem nenhuma prática real, eu não obteria uma compreensão profunda dessas coisas de aprendizado de máquina.

Então começo com algum problema de classificação com dados reais, digamos, classificação de dígitos manuscritos (MNIST). Para minha surpresa, sem nenhum aprendizado / engenharia de recursos , a precisão chega a 0,97 usando o classificador de floresta aleatória com valores de pixels brutos como entrada. Eu também tentei outros algoritmos de aprendizado, como SVM, LR, com parâmetros sendo ajustados.

Então me perdi, seria fácil demais ou estou perdendo alguma coisa aqui? Basta pegar um algoritmo de aprendizado no kit de ferramentas e ajustar alguns parâmetros?

Se isso fosse tudo sobre aprendizado de máquina na prática, eu estaria perdendo meu interesse nesse campo. Pensei e li alguns blogs por alguns dias e cheguei a algumas conclusões:

  1. A parte mais importante do aprendizado de máquina na prática é a engenharia de recursos , ou seja, dados os dados, descobrimos uma melhor representação dos recursos.

  2. Qual algoritmo de aprendizado a ser usado também é importante, também o ajuste de parâmetros, mas a escolha final é mais sobre experimentação.

Não sei se entendi direito, esperando que alguém possa me corrigir e me dar algumas sugestões sobre o aprendizado de máquina na prática.

loganecolss
fonte
1
Eu não acho que poderia responder sua pergunta completamente, mas gostaria de garantir que há muitos problemas em que os algoritmos / ferramentas são insatisfatórios, além da baixa qualidade dos recursos (na minha experiência, as ciências sociais são abundantes com ambas as situações). Não acho que essa seja sua única preocupação, mas você parece desconfortável com a facilidade de seus projetos até agora.
1
@ Matthew, sim, eu me perdi sem saber por onde começar quando estou enfrentando um problema real. Devo analisar os dados para descobrir a natureza para que eu possa extrair recursos úteis ou apenas pegar um algoritmo de aprendizado e executar?
abacate
Eu não iria embarcar em um avião que voar corretamente 97 vezes fora de 100.
lcrmorin

Respostas:

12

O aprendizado de máquina (ML) na prática depende de qual é o objetivo de fazer o ML. Em algumas situações, um pré-processamento sólido e a aplicação de um conjunto de métodos ML prontos para o uso podem ser bons o suficiente. No entanto, mesmo nessas situações, é importante entender como os métodos funcionam para poder solucionar problemas quando as coisas dão errado. No entanto, o BC na prática pode ser muito mais do que isso, e o MNIST é um bom exemplo do porquê.

É enganosamente fácil obter um desempenho 'bom' no conjunto de dados MNIST. Por exemplo, de acordo com o site de Yann Le Cun sobre o desempenho do MNIST , os vizinhos K mais próximos (K-NN) com a métrica de distância euclidiana (L2) também têm uma taxa de erro de 3%, a mesma que a sua aleatória pronta para uso. floresta. L2 K-NN é tão simples quanto um algoritmo ML. Por outro lado, o melhor de Yann, Yoshua, Leon e Patrick, o primeiro tiro neste conjunto de dados, LeNet-4, tem uma taxa de erro de 0,7%, 0,7% é inferior a um quarto de 3%, portanto, se você colocar esse sistema em Para praticar a leitura de dígitos manuscritos, o ingênuo algoritmo requer quatro vezes mais esforço humano para corrigir seus erros.

A rede neural convolucional que Yann e seus colegas usaram é compatível com a tarefa, mas eu não chamaria isso de 'engenharia de recursos', tanto quanto fazer um esforço para entender os dados e codificar esse entendimento no algoritmo de aprendizado.

Então, quais são as lições:

  1. É fácil alcançar a linha de base do desempenho ingênuo usando um método pronto para uso e bom pré-processamento. Você sempre deve fazer isso, para saber onde está a linha de base e se esse nível de desempenho é bom o suficiente para seus requisitos. Cuidado, porém, os métodos de ML geralmente prontos para uso são "quebradiços", isto é, surpreendentemente sensíveis ao pré-processamento. Depois de treinar todos os métodos prontos para uso, é quase sempre uma boa idéia tentar ensacá-los.
  2. Problemas difíceis exigem conhecimento específico do domínio ou muito mais dados ou ambos para solução. Engenharia de recursos significa usar conhecimentos específicos de domínio para ajudar o algoritmo de ML. No entanto, se você tiver dados suficientes, um algoritmo (ou abordagem) que possa tirar proveito desses dados para aprender recursos complexos e um especialista que aplique esse algoritmo, poderá às vezes renunciar a esse conhecimento (por exemplo, o desafio Kaggle Merck ). Além disso, às vezes os especialistas em domínio estão errados sobre o que são bons recursos; portanto, mais dados e conhecimentos de ML são sempre úteis.
  3. Considere taxa de erro, não precisão. Um método de ML com precisão de 99% comete metade dos erros que um método com 98% de precisão; às vezes isso é importante.
qdjm
fonte
2
+1, muito obrigado. Enquanto eu leio sua resposta, se eu não tiver conhecimento específico de domínio para fazer engenharia de recursos, devo me concentrar em inventar bons métodos para aprender recursos usando os dados fornecidos e tentar diferentes algoritmos de aprendizado.
abacate
@loganecolss Ou você também pode ler o que outras pessoas fizeram com dados semelhantes ou conversar com um especialista em domínio.
Qdjm
7

Eu acho que os exemplos que você encontra em blogs ou sites são exemplos em que se sabe que os métodos comuns funcionam bem (mesmo que, é claro, eles possam ser aprimorados).

Minha especialização é em engenharia de recursos e posso lhe dizer que geralmente os algoritmos padrão não funcionam bem. (Eu não tenho nenhum conhecimento do campo, mas frequentemente trabalho com pessoas que o possuem.).

Aqui há um problema real no qual trabalhei por 6 meses: Dada uma matriz X com 100 amostras e 10000 variáveis ​​representando o valor genético dos pacientes e uma saída y do tamanho 100 x 1 que representa a densidade dos ossos.

Você pode me dizer quais genes influenciam a densidade dos ossos?

Agora estou trabalhando em outro problema. Eu tenho um conjunto de dados de produção de produção com 2000 amostras e 12000 variáveis. Meu chefe gostaria de extrair desse conjunto de dados não mais de 30 variáveis ​​de maneira não supervisionada.
Eu tentei alguns algoritmos, mas não posso escolher menos de 600 variáveis, porque estas estão muito correlacionadas entre elas. (Eu ainda estou trabalhando nisso ...)

Outro pensamento importante a considerar é o desempenho da velocidade dos vários algoritmos. Em muitas situações, você não pode esperar 20 minutos esperando por um resultado. Por exemplo, você precisa saber quando usar o NIPALS e quando usar o SVD para calcular o PCA.

Espero que isso possa lhe dar uma idéia dos problemas comuns em ml.

Donbeo
fonte
Obrigado pelo seu conselho, parece que não abordei problemas como esse, interessantes. n<<p
abacate