Nube de Etiquetas
(Ah?)
Mostrando las entradas con la etiqueta Careers. Mostrar todas las entradas
Mostrando las entradas con la etiqueta Careers. Mostrar todas las entradas

lunes, enero 29, 2018

Una especie de Pensum para aprender Machine Learning por tu cuenta

Digamos que deseas entrar en el campo de Data Science/Data Mining/Machine Learning, sin estudiar una Maestría o PhD. ¿Cómo hacer? Yo acá comparto una suerte de "pensum" autodidacta, basado en cursos y recursos online, que pudiera servir como camino para entrar en esta área.
Como video inspiracional, está este video en donde una chica cuenta cómo se inició como Data Scientist de forma autodidacta: 

Ahora, yendo al grano, la ruta que yo pensaría que podría ayudarles a entrar al tema es esta:
  1. Básico de Python para análisis y visualización de datos: https://www.coursera.org/specializations/introduction-scripting-in-python?siteID=.GqSdLGGurk-kvC_Sa81XIfCLUjkljxQYA&utm_content=10&utm_medium=partners&utm_source=linkshare&utm_campaign=*GqSdLGGurk... porque primero hay que saber examinar datos y tener una idea preliminar de qué está pasando. Saber hacer esto en Python y en excel les pone a poder aplicar como Data Analyst en cualquier país del mundo, en especial si aparte de esto aprenden SQL y Hadoop/Spark.
  2. Básico de Machine Learning (por el prof. Ng, usando Octave o Matlab):https://www.coursera.org/learn/machine-learning ...Este curso es para ya adentrarse en Machine Learning. Recomendaría instalar Octave.. simplemente porque es gratis!
  3. Luego sugeriría replicar los resultados obtenidos en el curso del prof. Ng, usando Python y las librerías de machine learning (en especial Sci Kit Learn).
  4. Si les anima, pueden ver el curso de Deep Learning para poner la guinda a la torta: https://www.youtube.com/playlist?list=PLlJy-eBtNFt6EuMxFYRiNRS07MCWN5UIA  Acá está el material del curso: http://cs231n.github.io/ ...Sin embargo, a menos que vayan a trabajar con datos que son video, imágenes, o audio, o series de tiempo, no me apuraría demasiado a aprender Deep Learning. En todo caso la recomendación base es.. NO aprender Deep Learning sin haber dominado en general análisis de datos, estadística, y los métodos clásicos de Machine Learning.
Esto es una ruta sugerida, basada en aprender Octave y Python. Hay gente que recomienda R. Yo, sin embargo, a menos que ya supiese que en donde estaré trabajando, se usará R exclusivamente, preferiría Python, por ser un lenguaje de uso general, que se convertirá en una destreza transferible para otro tipo de problemas y trabajos. No es que R sea malo, es sólo que saber Python es una herramienta que es transferible a muchas otras cosas fuera del cómputo científico.

Estoy seguro de que habrá quienes tengan propuestas y recomendaciones alternativas, y me honraría que compartieran su opinión en la sección de comentarios.

martes, marzo 31, 2015

Las herramientas que manejas no definen lo que eres

Con frecuencia, las personas que han incursionado en el área de minería de datos, análisis de sistemas, e investigación de operaciones, vienen de áreas muy distintas a las que los empleadores (y el público en general) creen que los expertos en estas áreas deben venir.

Los cursos de optimización en la Universidad Simón Bolívar, durante algún tiempo fueron dictadas por profesores, cuya carrera base era reflejo de esto que acabo de mencionar:

  • Una profesora egresada de Licenciatura en computación.
  • Un profesor egresado de Matemáticas Aplicadas.
  • Un profesor egresado de Ingeniería Civil.
  • Un profesor egresado de Ingeniería Eléctrica.
  • Un profesor egresado de Ingeniería de Producción.
A pesar de la diversidad de orígenes, ha habido una convergencia (en estos profesores, al menos) hacia el área de investigación de operaciones, a un nivel suficiente como para ser docentes, y en la mayoría de los casos, realizar aportes al estado del arte mediante publicaciones en revistas y conferencias científicas arbitradas.

Sin embargo, las personas que interactuan con quienes hemos hecho "vida" en el área de investigación de operaciones, minería de datos, análisis de sistemas, y máquinas de aprendizaje, suelen suponer que la carrera base es Ingeniería de Computación, o Matemáticas.

El trasfondo que implica la formación de un egresado de Computación, está lleno de una serie de herramientas y lenguajes que raras veces son dominados por especialistas de investigación de operaciones / machine learning / análisis de sistemas. Por ejemplo:
  • Lenguajes de bajo nivel (C++, por ejemplo).
  • Bases de datos (SQL, por ejemplo).
  • Arquitectura de Redes.
  • Programación de páginas web.
  • ...etc.
Sin embargo, estas no son destrezas necesariamente requeridas para que una persona sea un especialista en las áreas de las que he venido hablando.

Quienes asumen que quienes son especialistas en optimización y patrones, son necesariamente matemáticos, pues están dejando de considerar que la optimización utiliza las matemáticas como fundamento base, pero constituye más bien un uso práctico de los aspectos teóricos de las matemáticas. En muchos casos de la vida real, la investigación de operaciones está fundamentada en heurísticas, que pueden estar más fundamentadas en el sentido común, y emulación de ciertos aspectos de la naturaleza (como las colonias de hormigas, las neuronas, o los enjambres de abejas) que en teoremas fuertes matemáticos asociados a la optimalidad.

Es importante para quienes desean encontrar un profesional que resuelva un problema, con un enfoque de investigación de operaciones / análisis de sistemas / machine learning (aprendizaje artificial), deben entender que para este tipo de proyectos y problemas, es muchísimo más importante la manera de pensar (capacidad de abstracción, capacidad de análisis y síntesis, capacidad de comunicar ideas complejas, capacidad de volver cuantitativas variables subjetivas), que el manejar un lenguaje o herramienta particular.

Las herramientas y tecnologías que una persona utiliza, y la forma en que se enmarca el pensamiento, son un subproducto de los intentos que se han realizado para resolver problemas. Hay que tomar en cuenta, que para resolver un problema particular, por lo general, son válidas muchas alternativas de herramientas y tecnologías.

Ejemplo: Se necesita hacer "agrupamiento" (clustering). Esto puede hacerse en Matlab, R, Python, Lenguaje C++, Fortran, SPSS, SAS,... e incluso en Excel, programando con Visual Basic para Aplicaciones. Más importante que la herramienta a usar, es que el profesional que consigamos tenga la capacidad de analizar el problema, identificar los aspectos relevantes a considerar, e implemente la solución de forma eficiente, cumpliendo con los requerimientos exigidos. Quien sepa programar en cualquiera de estos lenguajes y herramientas, podría fácilmente aprender otro. En estos casos, lo más difícil de la programación, no es saber cómo se escribe una instrucción, sino tener claro en la cabeza qué es lo que se quiere hacer.

Es importante entonces buscar las personas con el cerebro entrenado para el tipo de problema, y no personas que sepan usar un conjunto de herramientas. El que tiene la capacidad de analizar y resolver el problema, aprenderá fácilmente la herramienta que necesite utilizar.