Usando {drake} para Machine Learning

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


[Esteartigofoipublicadopelaprimeiravezem[Thisarticlewasfirstpublishedon Isso é tão aleatório, e gentilmente contribuiu para R-blogueiros]. (Você pode relatar um problema sobre o conteúdo desta página aqui)


Deseja compartilhar seu conteúdo com R-blogueiros? clique aqui se você tiver um blog ou aqui se não tiver.

Algumas semanas atrás, Miles McBain nos levou para um passeio por sua organização de projetos neste post do blog. Não surpreendentemente, devido às frequentes críticas de Miles sobre o pacote, ele é completamente centrado drake. Há cerca de um ano, no twitter, ele me convenceu a dar uma olhada neste pacote. Eu fui vendido imediatamente. Ele curou várias dores que tive ao longo dos anos em projetos de aprendizado de máquina; armazenando resultados intermediários, reprodutibilidade, tendo uma única versão da verdade, esquecendo em que ordem as etapas devem ser aplicadas etc. Além de Miles, gostaria de compartilhar meus drakefluxo de trabalho centrado. Como descobri ao ler o blog, há muita sobreposição em nossos fluxos de trabalho.

Esta postagem do blog destaca as diferenças e acréscimos no meu fluxo de trabalho do descrito por Miles. Supõe-se que você leu o seu post no blog. Apenas ressalto alguns dos benefícios que ele mencionou, com os quais concordo totalmente.

  • drake descobre qual dos alvos precisa ser recalculado, isso economiza muito tempo.
  • abstrair as etapas das funções fará do seu plano uma visão clara e concisa de todo o seu fluxo de trabalho.
  • com as infinitas opções de R para interagir com outros idiomas e plataformas, o plano não serve apenas como mestre de concertos da parte R do projeto, mas pode direcionar todos os aspectos do início ao fim.

Construindo modelos de aprendizado de máquina com drake

Onde o fluxo de trabalho de Miles se concentra em fornecer informações em curto prazo com descontos R, a maioria dos projetos nos quais estou envolvida é sobre a entrega de modelos de aprendizado de máquina. Eles normalmente duram muitos meses, nos quais o modelo é incrementalmente aprimorado até atingir um nível satisfatório de previsão (ou falhamos e o plugue é puxado). Conforme descrito detalhadamente no Agile Data Science com R, adotei uma abordagem bidirecional para o desenvolvimento de modelos. Ou estou pesquisando como o modelo pode ser aprimorado ou estou melhorando o modelo. Você pode se perguntar qual é a diferença. O primeiro é rápido e sujo, destinado a testar uma hipótese o mais rápido possível. Para o segundo, existem altos padrões de qualidade de código, reprodutibilidade e construindo um produto coerente.

Em termos de construção de um produto coerente, para mim, há um tempo antes e um tempo depois drake. Uma das maiores lutas que tive ao longo dos anos é como gerenciar fluxos de dados através de todos os diferentes estágios de busca, disputa, determinação de casos no escopo, pré-processamento relacionado ao modelo, modelagem, avaliação, previsão etc. Adotei muitos sistemas e convenções de nomenclatura, mas esse estresse nunca foi aliviado. Sai da caixa drake cuida disso. É imediatamente claro como a saída de uma etapa serve como entrada para a próxima. Ainda mais que o gerenciamento de cache, o gerenciamento de dependência é o que faz drake uma inovação no fluxo de trabalho para mim. Todo o projeto é realizado em torno do oleoduto, é o coração do produto. A partir daqui, tudo se ramifica. Também é uma verificação de compilação para mim. Desde que seja executado do início ao fim sem interferência, o trabalho é suficientemente automatizado.

Leia Também  Calculadora de hipoteca em R Shiny

Usando pacotes R com drake

Eu sempre organizo meu trabalho em uma estrutura de pacotes R, mesmo que raramente os construa. Um grande benefício disso é que você sempre tem toda a sua função disponível na memória. Dentro da pasta do pacote, todas as funções são simplesmente carregadas pelo devtools::load_all(), que muitas vezes sigo por uma função utils chamada settings() isso definirá todas as configurações necessárias e carregará as dependências. Uma segunda razão pela qual eu amo trabalhar com pacotes é que eles o impõem a desenvolver cada etapa na forma de funções. Como Miles estipulou, funções não são apenas meios para reduzir repetições, mas também são ótimas para abstrair a complexidade. A combinação de funções e um drake O plano expressa seu fluxo de trabalho como uma narrativa, sem ser incomodado pelos detalhes técnicos da implementação. o drake planos que eu mantenho fora da pasta / R, para que não faça parte do pacote. Isso faz parte dos scripts executados dentro da pasta do pacote, para que todo o código e dependências necessárias sejam carregados especificando devtools::load_all() no prework argumento ao chamar drake::make().

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br

Eu adotei um drake Fluxo de trabalho dos pacotes + R devido ao seu potencial para criar produtos robustos de ciência de dados com alta reprodutibilidade. Não decepcionou isso. No entanto, parecia haver um segundo benefício igualmente importante que eu não previa. Isso me permite testar hipóteses quanto a melhorias muito mais rapidamente do que antes. Não são apenas todas as funções usadas prontamente disponíveis usando devtools::load_all(), todos os diferentes estágios da preparação de dados são armazenados em drakeCache do Antes drake, uma quantidade significativa de tempo foi gasta na determinação de qual forma de formulário os dados deveriam ter para testar uma ideia e, posteriormente, obtê-la dessa forma (geralmente apenas copiando e colando grandes blocos de código de diferentes scripts ) Isso foi confuso e demorado. Agora, todos os estágios de dados estão organizados de forma organizada no plano, e podemos simplesmente obter o resultado intermediário apropriado do cache usando drake::readd() ou drake::loadd(). Além disso, depois de fazer as modificações nos dados de acordo com a hipótese, podemos conectar os dados novamente ao pipeline para que todas as etapas subsequentes sejam executadas nele. O desempenho do modelo com validação cruzada sempre faz parte do pipeline, para que possamos descobrir rapidamente se as alterações feitas resultam em uma melhoria nas estatísticas relevantes da qualidade do modelo.

Leia Também  D é para dummy_cols | R-bloggers

Dispare consultas a bases de dados e chame outros idiomas com drake

Como mencionado anteriormente, usamos drake como mestre do concerto, não apenas para gerenciar a parte R do projeto, mas todas as etapas começam a terminar. Isso sempre envolve chamadas para bancos de dados ou clusters e, muitas vezes, ferramentas e linguagens de modelagem, como Stan e H20. Algo que lutei por um tempo é como garantir a sequência das etapas se não houver objetos retornados para R. Muitas vezes, temos uma sequência de consultas, cada uma armazenando sua saída para que a próxima consulta use o resultado anterior. Somente o último resultado é buscado para R. Para executar as consultas na ordem correta, o drake etapas precisam depender de um destino anterior. Uma maneira eficaz de fazer isso é agrupar todas as etapas que não retornam resultados em R em uma função que simplesmente retorna o Sys.time(). Isso é armazenado em um destino, usado como entrada de uma etapa subsequente. Não só diz drake de qual destino uma etapa depende, você também cria o log como parte de seu pipeline, informando quando o código externo foi executado pela última vez.

Uma palavra de agradecimento

Não consigo parar de me surpreender com os fantásticos pacotes que continuam sendo criados para esse idioma. Criando uma ferramenta que é tão complexa e ainda funciona tão bem, não consigo imaginar o número de horas e o suor necessários para criar drake. Um grande agradecimento a Will Landau e a todas as pessoas do ROpenSci que o ajudaram a criá-lo. Eu não daria drake uma tentativa, se eu não aqui Miles McBain promovê-lo repetidamente. drake é um pacote revolucionário, na minha opinião, e precisa de mais pessoas como Miles, que ajudem a promovê-lo e convencer as pessoas a assumir o primeiro obstáculo.

Leia Também  Ajudando os eventos da comunidade R a se tornarem virtuais



Se você chegou até aqui, por que não inscreva-se para atualizações do site? Escolha o seu sabor: e-mail, twitter, RSS ou facebook …



cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br