Aprender ciencia de datos por tu cuenta
8 abril 2019Hola 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:
- 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:
- 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.
- 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.
- 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:
- Introduction to Python de DataCamp: DataCamp es una plataforma que recomiendo mucho para hacer cursos de ciencia de datos. Hay de cursos de todos los niveles y temáticas (programación, teoría de algoritmos, etc.). Hay cursos tanto gratuitos como de pago.
- Cursos de programación de Python de CursosData.com: este curso lo he hecho yo personalmente. Lo he hecho para principiantes y nivel intermedio. El precio es de menos de 7 € y el 20 % de lo que recaude lo donaré a ONGs.
- Curso de Python Básico Gratis: este curso es básico, en español y cubre lo principal del lenguaje.
- Intro to SQL for Data Science de DataCamp: otro curso de DataCamp, en este caso de SQL.
- SQLBolt: curso interactivo que cubre con ejemplos lo básico de SQL.
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:
- An Introduction to Statistical Learning: este libro es básico y explica los conceptos de una forma clara y sencilla. Trata los distintos tipos de aprendizaje y los algoritmos propios a bajo nivel.
- The Elements of Statistical Learning: parecido al anterior pero más riguroso matemáticamente hablando y más amplio.
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 😉
Si te ha sido de utilidad este post, te agradecería que me apoyases en Patreon (donando una cantidad aunque sea poca ya sea una vez, o apoyándome mensualmente). Tener una web, dominio, hosting, no es gratis y me apoyas a seguir ayudando con la difusión de educación libre. Apóyame en Patreon! Mil gracias!!
¿Te ha parecido útil este artículo?
Hola Álvaro, gracias por este resumen, pero ahora dónde puedo conseguir experiencia con casos reales para poder empezar a trabajar como científico de datos
Lo mismo que comenté al anterior compañero, haciendo proyectos por tu cuenta y mostrando lo que sabes hacer, no lo que tu CV pone 🙂
Buenas noches, ya aprendí eso pero cuando busco trabajo casi todos piden experiencia y no la tengo, que puedo hacer para conseguir trabajo en data science?? Hay cosas que solo se puede perfeccionar en la practica.
Proyectos por tu cuenta y mostrando lo que sabes hacer!!
Señor Alvaro
Mil gracias, plantea una ruta muy concisa y resumida.. Me ha orientado bastante en mi proceso de formación.
Gracias a ti por visitar el blog y me alegro que te sea útil!!
Interesante aporte para iniciarme en la ciencia de datos, soy ingeniero en informática y magister en tecnología educativa, con conocimientos en electrónica, telecomunicaciones, tecnologías de la información y comunicación y agronomía, con muchas ganas de potenciarme en áreas de computación en la nube, inteligencia artificial y máquinas de aprendizaje automático
gracias señor alvaro por su aporte a los «curiosos» como yo, interesante tus consejos y rutas de crecimiento y aprendizaje
Gracias José!! Un placer
Gracias Álvaro perfecta explicación soy ingeniero eléctrico y recién estoy terminando de aprender python para adentrarme en el data scientist de lleno. Encuentro tu ruta muy clara y voy a seguirla
Me alegro de que te sirva Julio!!
muy bueno el articulo, soy ingeniero termomecanico y no me decido entre R o Python, no se programar y el articulo es muy esclarecedor
Gracias por tu comentario Nestor!!
Muchas gracias Álvaro, hace tiempo ando recolectando información para comenzar a adentrarme en este nuevo mundo y tu blog si que me motivo y dirección bastante!
Gracias a ti por seguirme y me alegro que te haya sido útil!!
Buenas Alvaro, soy programador y también ingeniero civil, como programador estoy con pl SQL y me gustaría adentrarme en este mundillo, estoy mirando algún máster pero no se muy bien cual elegir o cual puede adaptarse mejor a mi.. Estado mirando uno de IMF,UAH y CICE pero no me acabo de decidir, me gustaría que me recomendaras alguno de esos 3, me ha venido bien el blog como hoja de ruta a seguir antes de elegir un máster u otro.
Hola Alberto,
Te recomendaría mirarte este post.
Saludos 🙂
Alvaro, soy Ingeniero Electrónico y siempre he trabajado en empresas de TELECOMUNICACIONES (37 Años), gracias a esto he tenido la oportunidad de ver y vivir de cerca los cambios tecnológicos (Electromecánico, Electrónico, Digital, INTERNET) ahora con lo datos se abre la cuarta revolución industrial. Por lo cual quise sumergirme en esta nueva era y he encontrado esta guía para avanzar en este tema. Gracias por la claridad en el contenido.
Gracias a ti por leer el blog!! Otro por aquí del sector de las telecomunicaciones, cualquier cosa que te pueda ayudar coméntame!
Álvaro 🙂
Tremendísimo tu aporte Álvaro!
Soy programador y estudié ingeniería pero llevo más de 10 años dedicándome al área comercial.
Utilizo el análisis para mis estrategias y decisiones de negocio. Ahora creo estar listo para profundizar más con la Ciencia de Datos.
Muchas gracias Félix!! Me alegra que te sea de utilidad
Quería comenzar en el mundo de la ciencia de datos y me sentía un poco desorientado y encontré esto, gracias porque encontré «la guía » que estaba buscando.
De nada Anthony! Gracias a ti por visitar mi blog!
Excelente Álvaro, de gran ayuda, no sólo para los que empiezan, también para los que requieren bibliografía de calidad y mantenerse actualizados.
Muchas gracias! Me alegra que te haya sido de utilidad 🙂