Aprender ciencia de datos por tu cuenta

Aprender ciencia de datos por tu cuenta

8 abril 2019 0 Por Alvaro

Hola a todos de nuevo! Varias personas me han preguntado últimamente “¿cómo puedo aprender ciencia de datos y aprendizaje automático?”, “¿recomiendas algún libro o máster?”, “si no sé programar, ¿qué debería hacer para aprender ciencia de datos?”… en este post intentaré dar mi visión de cómo aprender ciencia de datos por tu cuenta, ya que considero que de manera autodidacta se puede aprender bastante sin ser necesario gastarse mucho dinero.

¿Qué características debería tener un científico de datos?


En primer lugar, viene bien definir qué es un científico de datos y las características que, idealmente, debería tener. No voy a explayarme mucho en esta parte ya que hay muchas webs que tratan este tema y no es el objetivo de este post.

Podemos definir a los científicos de datos como los profesionales que, usando grandes volúmenes de información y de distintos tipos, resuelven problemas de negocio y obtienen respuestas a partir de datos.

Aunque no existen proyectos de ciencia de datos “típicos”, ya que cada proyecto es un mundo, generalmente las empresas empiezan con una estructura similar a esta:

  • Se requiere resolver un problema de negocio o dar respuesta a una pregunta.
  • El científico de datos debería obtener datos del origen que fuese de cara a resolver esa pregunta. Aquí entran en juego datos estructurados (ej: bases de datos como SQL), no estructurados (ej: imágenes, audios) y semi-estructurados (ej: textos con cierta estructura). En empresas que están empezando generalmente sólo se usan datos estructurados y se accede por un lenguaje típico de consultas como SQL.
  • Sobre esos datos se aplican una serie de técnicas, algoritmos, etc. que intentan resolver el caso. Aquí se usan herramientas como Python, R, SAS, etc.
  • El resultado final que se obtiene puede ser un análisis, una productivización de algún modelo estadístico, resultados para negocio, etc.

Las características principales que debería tener un científico de datos vienen representadas en el siguiente diagrama publicado por Drew Conway en 2010:

Diagrama de Venn de un científico de datos

Diagrama de Venn de la ciencia de datos

  • En primer lugar, están las que se denominan “Hacking Skills”, que involucran habilidades de informática, manipular datos, línea de comandos, programación, etc.
  • En segundo lugar, se encuentra el conocimiento de matemáticas y estadística. No es necesario ser doctorado en matemáticas o estadística para ser un buen científico de datos sin embargo, sí que lo es tener cierto dominio de conceptos básicos de estadística y saber interpretar los algoritmos que uno usa.
  • Por último, y algo a lo que no se le suele dar la importancia que tiene, se encuentra el conocimiento de negocio. Tan importante como saber qué algoritmo utilizar o cómo programarlo es saber qué preguntas de negocio se quieren resolver, qué aporta valor y qué no, o en qué medida puede ser viable el problema que queremos tratar. En este post tratamos distintos tipos de problemas que pueden resolverse con técnicas de aprendizaje automático.

Estos tres tipos de habilidades son las que debería tener un buen científico de datos. Lo primero que debería saber un científico de datos es cómo programar, así como tener cierto manejo de SQL.

Los pasos que yo recomiendo para adentrarse en la ciencia de datos son los siguientes:

  1. Aprender la programar en R o Python. Yo prefiero Python ya que es de propósito más general y para aprender los conceptos de la programación es relativamente sencillo. También es de mucha utilidad cierto conocimiento de cómo utilizar la terminal de comandos.
  2. Aprender lo básico de SQL y estadística. Generalmente no hace falta ser Don Chamberlin pero sí que es imprescindible saber hacer consultas para unir tablas, hacer agrupamientos, filtros, etc. Del mismo modo, no es necesario tener amplios conocimientos para empezar de científico de datos, pero conceptos como medidas de dispersión, centralidad o tests de hipótesis son de gran utilidad.
  3. Conocer algoritmos de aprendizaje automático y empezar a programarlos, usando datos abiertos públicos, competiciones, etc.

No sé programar, ¿por dónde empiezo?


A las personas que no saben programar y quieran adentrarse en la ciencia de datos les recomiendo que empiecen con algún lenguaje de programación, a ser posible uno de propósito general como Python. R y Python son los dos lenguajes más usados en ciencia de datos. R es ampliamente utilizado por matemáticos y estadistas, mientras que Python es más usado por perfiles que provienen de ingenierías.

Entre los dos lenguajes yo me quedo con Python al ser mucho más versátil que R y los conceptos aprendidos son más extrapolables a otro tipo de lenguajes de programación. Es cierto que quizás al principio puede resultar algo más difícil que R, pero a la larga vale la pena.

Os dejo una recopilación de material bastante interesante para el que necesite aprender Python y SQL desde cero por su cuenta.

Material para aprender Python y SQL por tu cuenta:

Cursos online:

Libros:

  • Para aprender Python recomiendo dos libros: Python Crash Course y Python 3. Los fundamentos del lenguaje.
  • Además están los libros “Aprende Python en un fin de semana” y “Aprende SQL en un fin de semana” que, aunque no los he leído personalmente, tienen buenas referencias como libros introductorios.

Para aprender a programar en Python recomiendo instalar Anaconda junto con Python y utilizar Jupyter Notebook como entorno de desarrollo.

Ya sé programar, ¿ahora qué?


Una vez que ya se tienen conocimientos de programación y de SQL, antes de ponerse a aprender algoritmos sería útil repasar conceptos básicos de estadística.

Para conocer los conceptos básicos de estadística pueden ser útiles libros como Introduction to Probability and Statistics o cursos como Probability and Statistics de Stanford.

Llega la hora de los algoritmos


En este momento ya tendríamos conocimientos básicos de programación y SQL para empezar a programar los primeros algoritmos de aprendizaje automático. Antes de empezar a programar sugiero aprender los conceptos de los modelos de aprendizaje automático. Para ello existen numerosos cursos y libros que nos enseñan para qué sirven, en qué se basan y cómo usarlos.

Como material teórico de iniciación recomiendo estos dos libros:

Sobre todo recomiendo dos cursos online para iniciarse:

  • Statistical Learning de Stanford : este curso sigue los dos libros anteriores, por lo que es un muy buen curso introductorio.
  • Machine Learning: curso por antonomasia, explicado por Andrew Ng. que es algo así como un Nobel de la inteligencia artificial. Explica los conceptos fundamentales de manera muy clara y sencilla. Un imprescindible.

Mientras se hacen esos cursos puede ser interesante ir programando los algoritmos utilizando Scikit-Learn, que es una librería de Python destinada mayormente al aprendizaje de algoritmos estadísticos. Su documentación viene muy bien explicada y cargada de ejemplos.

¿Cómo sigo aprendiendo?


En este momento ya seríamos capaces de programar nuestros propios algoritmos básicos. A partir de aquí queda ampliar conocimiento con libros y cursos de nivel más avanzado.

Además, también se puede usar la web de competiciones de ciencia de datos Kaggle para aprender de otros científicos de datos. Esta web la recomiendo muchísimo, se puede aprender bastante con las competiciones, los kernels (códigos subidos por otros usuarios) e incluso con la sección de aprendizaje.

Por último, me gustaría señalar tres webs que yo uso mucho para mantenerme al día con los últimos avances: una es Analytics Vidhya, otra Towards Data Science y por último KDnuggets. En ellas se puede encontrar material de amplísimo valor.

En artículos posteriores hablaré sobre cursos de formación presenciales que, aunque no considero la mejor opción desde el punto de vista del aprendizaje, sí que pueden ser interesantes en algunos casos.

Espero que este post os sea de utilidad.
¿Tienes alguna pregunta o sugerencia de algún material? Déjala en un comentario!

Hasta pronto 😉

¡Comparte!