‫En esta conferencia, vamos a discutir un asunto práctico, vamos a cubrir una pregunta que recibo muy
‫a menudo de los principiantes, ¿por qué tenemos que hacer toda esta programación y matemáticas?
‫¿Por qué no podemos simplemente usar una biblioteca?
‫A menudo escucho que para ser supuestamente práctico, uno debe usar bibliotecas.
‫Ahora, primero, comencemos por ser prácticos, es una gran cosa.
‫Poner en práctica toda esta teoría es, obviamente, el objetivo final.
‫Hay dos problemas con esta pregunta para principiantes.
‫Número uno, las personas a menudo usan esto como una excusa para el hecho de que no tienen la capacidad para hacer los
‫cálculos o escribir el código.
‫Entonces eso es muy importante.
‫Una biblioteca puede reemplazar la falta de habilidad y habilidad.
‫Número dos, no hay bibliotecas que se ajusten a su caso de uso.
‫Entonces, lo que estás pidiendo ni siquiera existe.
‫Una verdadera cuestión de practicidad es que si va a pedir algo, debe saber lo que
‫está pidiendo en primer lugar.
‫Y muchas personas que hacen esta pregunta simplemente no lo hacen.
‫El resto de esta conferencia explicará por qué.
‫Bien, entonces, ¿por qué no hay bibliotecas que nos ayuden a implementar estos algoritmos de una manera supuestamente
‫práctica?
‫Bueno, pensemos en el código que acabamos de escribir.
‫¿Cuánto se dedicó al algoritmo real en sí?
‫Contemos.
‫Tenemos una línea de código para muestrear de nuestra distribución posterior.
‫Tenemos dos líneas de código para actualizar la distribución posterior.
‫Y finalmente, tenemos una línea más de código para seleccionar un bandido eligiendo Amax sobre las muestras.
‫En total, son cuatro líneas de código.
‫Preguntémonos, ¿necesitamos una biblioteca para cuatro líneas de código?
‫En realidad, no necesitamos una biblioteca para unas pocas líneas de código.
‫La mayor parte del trabajo que necesita hacer al implementar este algoritmo en el mundo real está
‫realmente fuera de esta llamada biblioteca y tiene más que ver con la ingeniería de backend para completar
‫esta lección.
‫Voy a explicar qué implica esta ingeniería de backend.
‫Aunque es posible que algunos de ustedes no hayan vuelto a ser ingenieros, espero que al menos les ayude a comprender
‫por qué la idea de buscar una biblioteca para hacer este trabajo no tiene ningún sentido.
‫Primero, consideremos que muchos que están en servicio no usan Python, Python es un lenguaje lento.
‫Algunas empresas usan Python como back-end, pero no es tan ubicuo como lo es, por ejemplo, para la ciencia de datos y
‫el aprendizaje automático.
‫Muchas empresas utilizan otros lenguajes y frameworks como Ruby on Rails, Java, Scala, Erlang, Go y
‫C ++.
‫Y en muchos de estos lenguajes, hacer ciencia de datos no es algo popular.
‫Por lo tanto, es poco probable que encuentre algo como una biblioteca de estadísticas bayesianas.
‫Simplemente no existe.
‫Pero, de nuevo, no necesitas una biblioteca para unas pocas líneas de código de todos modos.
‫Entonces, ¿cuáles son las tareas que realmente deben realizarse?
‫En primer lugar, necesitará un almacén de datos centralizado, ya sea una base de datos real o un almacén de valor
‫clave, que mantenga toda su banda en los parámetros del brazo.
‫A diferencia de nuestros ejemplos de juguetes, eso no va a existir en la memoria en el mundo real, es posible que tenga
‫10 o 20 servidores en todo el mundo.
‫Obviamente, no puede mantener sincronizados y replicados los datos de cada máquina.
‫Exactamente en todos estos servidores.
‫Necesita tener una base de datos de algún tipo.
‫Además, sus datos pueden almacenarse en archivos de registro si no desea tratarlos en tiempo real debido
‫a problemas de rendimiento.
‫Por lo tanto, es posible que deba realizar un trabajo fallido que ingiera estos archivos de registro periódicamente y luego use
‫esos datos para actualizar los parámetros de su modelo en una configuración fuera de línea.
‫Ese sería un programa de computadora completamente separado que vive en máquinas separadas.
‫Entonces, claramente, una sola biblioteca en una sola máquina no va a hacer el trabajo, tendrá sus
‫trabajadores de trabajo fallidos y sus servidores web, y ambos son responsables de dos cosas totalmente
‫diferentes.
‫De hecho, es posible que sus mejores trabajos y sus servicios web ni siquiera estén escritos en el mismo lenguaje de
‫programación en primer lugar.
‫Entonces, ¿dónde encaja una biblioteca en esta arquitectura?
‫En realidad, un código como este no es adecuado para una biblioteca.
‫Las bibliotecas de las que debe preocuparse pueden ser las siguientes.
‫Primero, desea tener un marco de servidor web.
‫Obviamente, esto recae más en las responsabilidades del equipo de ingeniería de backend que en el equipo de
‫científicos de datos.
‫Tal vez sea Jango o Ruby on Rails o el marco activo de C ++.
‫Luego, debe averiguar qué base de datos va a usar que podrían ser preparaciones para MySQL de postgrados
‫o memcache.
‫También necesitará una biblioteca en su lenguaje de programación que se conecte a esa base de datos, y si está
‫procesando grandes cantidades de datos en sus trabajos por lotes, es posible que deba realizar estos trabajos en un
‫grupo de máquinas.
‫En ese caso, puede usar una biblioteca como Apache Spark.
‫Entonces, este es el tipo de cosas de las que debe preocuparse en términos de bibliotecas, en comparación,
‫las líneas reales de código que implementan su algoritmo Bendit son minúsculas en general.
‫Espero que quede claro que una biblioteca para realizar tal tarea en este contexto no tendría sentido.