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:
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.
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.
fonte
Respostas:
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:
fonte
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.
fonte