Todas tus dudas generales sobre data science y machine learning están respondidas acá.
Desde que inicié este lindo recorrido llamado Ciencia de datos, me he dado cuenta de que las personas tienen las mismas dudas. Ya sea cuando apenas están arrancando con esta disciplina o incluso si llevan algún tiempo. Lo que intento con esto es resumir algunas de las respuestas a preguntas frecuentes. Aquí también podrás encontrar recursos para cada una de ellas.
Mi recomendación es usar esto como una guía de estudio y un checklist de skills por desarrollar.
Si este repositorio es de valor para tí, no olvides darle fork y estrellita.
Sin más retraso, acá hay algunas de las preguntas más frecuentes entre las personas que están estudiando Data Science y Machine Learning.
La ciencia de datos son básicamente tres cosas:
Para ser un científico de datos hay que desarrollar estas tres áreas. También hay que tener en cuenta que Data Science tiene varias subramas:
Para cada una de estas subramas, las habilidades específicas que necesitas son las siguientes:
Fig 1. Data Science Skills
Python y/o R, dependiendo de los objetivos que tengas. Los conceptos clave que son importantes entender antes de brincar a data science es la programación orientada a objetos y las estruturas de datos. El uso de librerías también es importante ya que tienen cargados todos los módulos para facilitar tu trabajo.
Python es un lenguaje multipropósito, el cual funciona bien si tu trabajo estará vinculado al equipo de desarrollo. Las librerías más importantes que deberías dominar si optas por Python son:
R es un lenguaje para uso estadístico y es recomendable aprender cuando no estarás trabajando directamente con un equipo de desarrollo. Las librerías más importantes para data science son:
Existen otros lenguajes con los que se puede trabajar en Data Science, como Java, JavaScript, Ruby, Scala o Julia. Pero lo más recomendable es iniciar con Python y/o R.
Toma en consideración aprender a usar otras herramientas fuera de la programación para el análisis y visualización de datos. Algunas de las más importantes son Excel, Power BI, Tableau o Google Data Studio.
El mayor valor de SQL para un data scientist es la posibilidad de hacer consultas a las bases de datos. Con SQL puedes crear, modificar, administrar y eliminar bases de datos y columnas. Sin embargo, esta no es tradicionalmente la tarea de un científico de datos.
Aunque NoSQL (es decir bases de datos basadas en documentos, key-values, optimizadas para búsqueda, para memoria o basadas en grafos) no son parte común del trabajo de un científico de datos, conviene saber algo de ellas, algunas populares son MongoDB o Firebase para poder tener un acceso aún mayor a datos.
Machine learning es la parte de data science que se encarga de crear modelos que generen predicciones a partir de datos históricos. La idea central de de machine learning es encontrar patrones poco obvios entre nuestros data points.
Una forma fácil de imaginar esto es que nuestro modelo es un niño que está aprendiendo hablar. Lo que el niño dice depende del vocabulario que le enseñenos. Si al niño le enseñamos groserías, dirá groserías. Si al niño le enseñamos jerga, hablará en jerga. Por ende, una parte importante de entrenar un modelo es obtener datos verídicos y representativos del fenómeno que queremos analizar.
Dentro de un algoritmo de machine learning encontramos redes neuronales artificiales. Estas redes procuran emular el proceso en el que un cerebro humano aprende. Es decir, a partir de la sinapsis (unión) de neuronas (nodos). Los nodos de las redes neuronales están divididos en nodos de entrada, nodos en capas escondidas y nodos de salida.
Fig 2. Red Neuronal, machine learning
Una gran ventaja del uso de librerías como Scikit Learn es que los modelos ya estan preconstruidos. Por ende, nosotros debemos de preocuparnos sólo de los datos que usaremos para entrenar el modelo y los hiperparámetros que optimizaran el aprendizaje.
Para poder realizar machine learning adecuadamente es recomendable analizar bien el problema que atendemos para saber que algoritmo es el más recomendable.
Fig 3. Cheat sheet para seleccion de modelo con Scikit learn
Al mismo tiempo, hay que conocer la teoría detrás de estos algoritmos (en gran medida basada en estadística bayesiana). Aunque puedes empezar haciendo machine leaning sin conocimientos matemáticos, es importante que eventualmente también seas consciente de eso para poder optimizar mejor tus modelos.
Principalmente la Inteligencia artificial es un super set del Machine Learning y éste a su vez del Deep learning. La inteligencia artificial en ciencias de la computación, es darle a una maquina una capacidad "cognitiva" de resolver una tarea.
La diferencia entre Deep learning o aprendizaje profundo y machine learning es que el Deep learning puede aprovechar su arquitectura para llevar a cabo transformaciones lineales, con las cuales es posible hacer que la máquina aprenda features no necesariamente explicitas, que pueden estar presentes en cualquier tipo de dato que se utilice para entrenar el modelo.
Fig 4. Deep Learning / Deep Artificial Neural Network
A nivel práctico, los modelos de deep learning se realizan con librerías de diferenciación automática como TensorFlow y Pytorch. Además de que los problemas que resolvemos en machine learning tienden a ser enfocados a predecir unidimensionalidades. Es decir: cifras numéricas o textos. En deep learning, las predicciones están más orientadas a identificar multidimensionalidades. Es decir: imágenes, video, audio, etc.
Otra consideración a la hora de trabajar con Deep Learning es que las librerías con las que trabajamos son de bajo nivel. Lo anterior quiere decir que en TensforFlow y Pytorch debemos de tener más cuidado al diseñar las capas, nodos, tasas de aprendizaje y funciones de activación a diferencia de librerías de alto nivel como Scikit Learn.
En cuanto Inteligencia Artificial, tanto machine como deep learning son insumos para diseñar inteligencias artificiales. Cuando realizamos una predicción con Machine o Deep Learning ya estamos creando una inteligencia artificial. Por ende, debemos de tener cuidado de los datos que utilizamos para entrenarla.
No necesitas matemáticas para arrancar con data science, pero es una habilidad que necesitarás para dominar esta disciplina. Lo más importante es que entiendas e internalices los conceptos matemáticos clave. La computadora es la encargada de realizar los cálculos necesarios, por lo que debes concentrarte en conocer cuáles son las herramientas matemáticas que pueden explicar el fenómeno que estas analizando.
Específicamente, necesitas saber lo siguiente:
Estadística básica
Durante el Análisis Exploratorio de Datos, tendrás que aplicar los conceptos elementales de estadística. En un principio tienes un número de data points, los cuales necesitan ser comprendidos antes de ser procesados en un modelo de machine o deep learning. Cuando queremos entender los datos, estamos hablando de estadística descriptiva. Los conceptos clave a entender son:
Estadística avanzada
En el caso de estadística avanzada, nos enfocamos a usar la estadística para explicar los algoritmos de machine learnig. En este caso, queremos usar datos históricos para predecir eventos o datos futuros. A esto lo llamamos estadística inferencial. Lo importante a entender es:
Álgebra lineal
La álgebra lineal nos permite tener un entendimiento más a fondo de los algoritmos de machine learning y cómo sacarles mayor provecho. En particular, vale la pena tener en cuenta lo siguiente:
Cálculo
Con cálculo podemos analizar las tasas de cambio de las cantidades. Esto genera curvas las cuales podemos medir según su longitud o área, que nos permite optimizar nuestros algoritmos de machine learning. En especial, necesitamos cálculo para:
Las matemáticas suelen ser un tema que asusta y detiene a muchas personas para entrar a data science y machine learning. Mi consejo es: no te preocupes por hacer cálculos (para eso tienes la computadora). Más bien enfócate en desarrollar un pensamiento probabilístico y matemático que te lleve a a saber seleccionar la mejor solución para el problema al que te estas enfrentando.
Finalmente, es estadísticamente probable que estes enfrentando un problema que alguien más ya solucionó. La clave del éxito es montarte en hombros de gigantes y aprovechar los recursos ya existentes.
Al hablar de conocimiento de negocio nos referimos a responder preguntas como:
Es importante a tomar en cuenta que los científicos de datos son aquellos que conocen mejor que nadie los datos más importantes de una organización. Por un lado, un analista de datos o business intelligence se encarga de obtener todos los datos para presentarlos y facilitar la toma de decisiones. La gran diferencia que tienen con un científico de datos es que este último puede hacer uso de machine learning y estadística inferencial para hacer proyecciones sobre lo que podría suceder con el negocio.
Comúnmente se dice que el data scientist es un story teller. Esto es cierto en el sentido que debe de reconstruir hechos para explicar un fenómeno. Debes de considerar también que como científico de datos, debes presentar la información a personas que tienen menos conocimientos matemáticos que tú. La forma más adecuada de hacerlo es a través de gráficos.
Lo más recomendable es estudiar para qué sirven cada uno de los diferentes gráficos. Así mismo, toma en cuenta sus caracaterísticas únicas para sacarle mayor jugo.
Matplotlib, Seaborn y Ploty son las librerías principales si programas en Python, mientras ggplot es ideal para R. Fuera del código, vale la pena familiarizarse con Google Data Studio y Tableau para la creación de tableros.
Por último, recuerda que la visualización de gráficas y la estadística se pueden usar para confundir o engañar. Hacer uso responsable de estas herramientas es parte importante del trabajo de un científico de datos.
Un Jupyter Notebook es un entorno informático, interactivo, basado en la web. Un documento o notebook de Jupyter es en realidad un archivo JSON (con terminación ".ipynb") con una lista ordenada de celdas que pueden contener código, texto, gráficos, etc.
Forma parte también de la colección Anaconda que tiene casi todas las librerías para trabajar en Machine Learning y Data Science. La ventaja que tiene es que puedes probar pedazos de código sin tener la necesidad de saltar entre un IDE y la terminal.
Por su lado, Google Colab tiene casi todas las librerías precargadas y no hay necesidad de instalarlas usando pip.
Es cuestión de gusto personal cuál utilizar. La ventaja de Jupyter Notebook es que corre en localhost, por lo que no dependes de tu conexión de internet para trabajar una vez instaladas las librerías.
Puedes utilizar la versión incluida con Anaconda pero es cargar muchas librerías en tu equipo cuando puedes usar un Jupyter Notebook en tu propio ambiente virtual y sin instalar Anaconda, sólo con algún manejador de paquetes (por ejemplo usando: pip install jupyter). Por ello conviene en ese caso trabajar en un Colab, ya que además ofrece memoria RAM suficiente para trabajar.
Idealmente, como científico de datos deberías tener una idea clara de como es el desarrollo de software.
Uno de los grandes problemas del gremio es que son muchos data scientists que solo saben trabajar en Jupyter Notebooks. Es por ello que vale la pena construir ventajas competitivas. Entre las más importantes incluyen:
Entre 6 meses y 2 años es un periodo sensato para adquirir las habiliades para data science, dependiendo de los conocimientos previos que se tengan y el tiempo invertido para aprender.
Aunque nada está escrito sobre piedra, esta es una estimación vaga de tiempo para aprender cada una de los skills para data science:
(Nota: estamos hablando de obtener los conocimientos para usar estas herramientas para data science, más no en su completitud. Por ejemplo, en SQL nos referimos a hacer queries complejos, más no crear, administrar u optimizar una base de datos)
Skill | 1 hora diaria | 1 - 2 horas diarias | 2 - 4 horas diarias |
---|---|---|---|
Python o R | 16-20 semanas | 10-16 semanas | 8-10 semanas |
SQL | 6-8 semanas | 4-6 semanas | 2-4 semanas |
Estadística | 12-16 semanas | 4-12 semanas | 4-5 semanas |
Álgebra lineal | 12-16 semanas | 6-12 semanas | 4-8 semanas |
Cálculo | 12-16 semanas | 6-12 semanas | 4-8 semanas |
Cloud | 6-10 semanas | 3-6 semanas | 2-3 semanas |
Machine Learning | 8-12 semanas | 6-8 semanas | 4-6 semanas |
Django | 8-16 semanas | 6-10 semanas | 4-8 semanas |
Cada país tiene sus propias leyes respecto al uso de datos. Por lo general, dentro de las empresas los data scientists no son los responsables directos de hacer cumplir estos reglamentos. Sin embargo, conviene saber sobre lo siguiente:
Algunas regularidades que podemos encontrar son la HIPAA, PCI-compliance y GDPR-compliance.
Dentro de la industria tech, data science es de las disciplinas de mayor demanda laboral. Debido a que son muchos los puestos que quedan vacantes para esta posición y pocos los solicitantes, los sueldos en esta área son bastante más elevados en comparación a otros roles en la industria.
Finalmente, es fundamental siempre consultar la documentación de las tecnologías que usamos y mantener bien documentados nuestros propios proyectos para futura referencia.
(Nota: he utilizado todos estos recursos y no recibo ninguna comisión por promoverlos)
Este apunte fue hecho en conjunto por Xavier Carrera y Gerson Perdomo con una pequeña colaboración de Fer Torres.
Si quieres contactar con Xavier, puedes visitar su sitio web, escribirle en twitter o mandarle un correo a [email protected]. :nerd_face:
Para contactar con Gerson, puedes enviar un correo a [email protected] o encontrarlo en twitter como @gersonrpq. :robot:
Si quieres contactar con Fer Torres, puedes enviarle un correo a [email protected], invitarle un café, visitar fertorresmx.dev o enviarle un saludo en Twitter.