‫Nesta palestra, vamos discutir um assunto prático, vamos abordar uma questão que recebo muito
‫frequentemente de iniciantes, por que temos que fazer toda essa programação e matemática?
‫Por que não podemos simplesmente usar uma biblioteca?
‫Costumo ouvir que, para ser considerado prático, é preciso usar bibliotecas.
‫Agora, primeiro, vamos começar sendo prático, é uma coisa ótima.
‫Colocar toda essa teoria em prática é obviamente o objetivo final.
‫Existem dois problemas com esta pergunta para iniciantes.
‫Em primeiro lugar, as pessoas costumam usar isso como uma desculpa para o fato de não terem a capacidade de fazer contas
‫ou escrever o código.
‫Então isso é muito importante.
‫Uma biblioteca pode ser um substituto para a falta de habilidade e habilidade.
‫Número dois, não há bibliotecas adequadas ao seu caso de uso.
‫Então, o que você está pedindo nem existe.
‫Uma verdadeira questão de praticidade é que, se você vai pedir algo, você tem que saber o que
‫está pedindo em primeiro lugar.
‫E muitas pessoas que fazem essa pergunta simplesmente não o fazem.
‫O restante desta palestra explicará por quê.
‫OK, então por que não há bibliotecas que nos ajudem a implementar esses algoritmos de uma maneira chamada
‫prática?
‫Bem, vamos pensar sobre o código que acabamos de escrever.
‫Quanto dele foi dedicado ao próprio algoritmo?
‫Vamos contar.
‫Temos uma linha de código para amostra de nossa distribuição posterior.
‫Temos duas linhas de código para atualizar a distribuição posterior.
‫E, finalmente, temos mais uma linha de código para selecionar um bandido escolhendo o Amax em vez das amostras.
‫No total, são quatro linhas de código.
‫Vamos nos perguntar: precisamos de uma biblioteca para quatro linhas de código?
‫Na verdade, não precisamos de uma biblioteca para apenas algumas linhas de código.
‫A maior parte do trabalho que você precisa fazer ao implementar este algoritmo no mundo real
‫está, na verdade, fora desta chamada biblioteca e tem mais a ver com engenharia de back-end para completar
‫esta aula.
‫Vou explicar o que envolve essa engenharia de back-end.
‫Mesmo que alguns de vocês não tenham voltado aos engenheiros, espero que isso ao menos ajude a entender por
‫que a ideia de procurar uma biblioteca para fazer este trabalho não faz sentido.
‫Primeiro, vamos considerar que muitos dos que voltaram ao serviço não usam Python, Python é uma linguagem lenta.
‫Algumas empresas usam Python como back end, mas não é tão onipresente quanto, digamos, para ciência de dados e aprendizado
‫de máquina.
‫Muitas empresas usam outras linguagens e frameworks como Ruby on Rails, Java, Scala, Erlang, Go e
‫C ++.
‫E em muitas dessas linguagens, fazer ciência de dados não é uma coisa popular.
‫Portanto, é improvável que você encontre algo como uma biblioteca de estatísticas bayesianas.
‫Simplesmente não existe.
‫Mas, novamente, você não precisa de uma biblioteca para algumas linhas de código de qualquer maneira.
‫Então, quais são as tarefas que realmente precisam ser realizadas?
‫Primeiro, você vai precisar de um armazenamento de dados centralizado, seja um banco de dados real ou um armazenamento de
‫valor-chave, que mantenha toda a sua banda nos parâmetros da arm.
‫Ao contrário de nossos exemplos de brinquedos, isso não vai existir na memória no mundo real, você pode ter 10
‫ou 20 servidores em todo o mundo.
‫Obviamente, você não pode manter os dados de cada máquina sincronizados e replicados.
‫Exatamente em todos esses servidores.
‫Você precisa ter um banco de dados de algum tipo.
‫Além disso, seus dados podem ser armazenados em arquivos de log se você não quiser lidar com eles em tempo real
‫devido a problemas de desempenho.
‫Portanto, você pode precisar de algum trabalho mal feito que ingira esses arquivos de log periodicamente e, em seguida,
‫use esses dados para atualizar os parâmetros do seu modelo em uma configuração offline.
‫Isso seria um programa de computador totalmente separado, vivendo em máquinas separadas.
‫Então, claramente, uma única biblioteca em uma única máquina não vai fazer o trabalho, você terá
‫seus funcionários mal-sucedidos e seus servidores Web, e ambos são responsáveis por duas coisas totalmente
‫diferentes.
‫Na verdade, seus melhores trabalhos e seus serviços da Web podem nem mesmo ter sido escritos na mesma
‫linguagem de programação.
‫Então, onde uma biblioteca se encaixa nessa arquitetura?
‫Na realidade, um código como esse não é adequado para uma biblioteca.
‫As bibliotecas com as quais você precisa se preocupar podem ser as seguintes.
‫Primeiro, você deseja ter uma estrutura de servidor da web.
‫Obviamente, isso cai mais nas responsabilidades da equipe de engenharia de back-end do que na equipe do
‫cientista de dados.
‫Talvez seja Jango ou Ruby on Rails ou o framework ativo C ++.
‫Em seguida, você precisa descobrir qual banco de dados usará, que pode ser readies MySQL postgrads
‫ou memcache.
‫Você também precisará de uma biblioteca em sua linguagem de programação que se conecte a esse banco de dados e,
‫se estiver processando grandes quantidades de dados em seus trabalhos em lote, pode ser necessário executar esses trabalhos em um
‫cluster de máquinas.
‫Nesse caso, você pode usar uma biblioteca como o Apache Spark.
‫Portanto, esse é o tipo de coisa com a qual você precisa se preocupar em termos de bibliotecas; em
‫comparação, as linhas reais de código que implementam seu algoritmo Bendit são minúsculas em geral.
‫Espero que esteja claro que uma biblioteca para fazer tal tarefa neste contexto não faria sentido.