Nota: Este artículo es una traducción del original que aparece en IBM DeveloperWorks: The Most Popular Language For Machine Learning Is ...
Muchas gracias al autor Jean-Francois Puget por permitir su publicación en español.
Muchas gracias al autor Jean-Francois Puget por permitir su publicación en español.
El lenguaje de programación que
más se emplea en aprendizaje automático y en ciencia de datos es ...
S
Cuando se trata de elegir el lenguaje de programación adecuado,
bien sea para proyectos de análisis de datos o incluso para encontrar empleo,
las personas tienen diferentes opiniones en función de su formación académica y
de los sectores en los que han trabajado. En esta entrada se analizan los datos
de indeed.com cuando se elige el lenguaje de programación a utilizar en
aprendizaje automático y en ciencia de datos.
¿Qué lenguaje de programación se debe aprender para obtener
un trabajo en aprendizaje automático o como científico de datos? La
respuesta a esta pregunta es la del millón de dólares, y se debate en
muchos foros. Podría contestar ahora y explicar el motivo de mi
respuesta, pero prefiero ver algunos datos primero. Después de todo, esto
es lo que deben hacer los estudiantes de aprendizaje automático y los
científicos de datos: estudiar los datos y no tener en cuenta las opiniones.
Así que, veamos algunos datos. Utilizaré las
tendencias de búsqueda disponibles en indeed.com. Éstas detectan las
veces que aparecen los términos seleccionados en ofertas de trabajo a lo largo
del tiempo. Proporcionan una indicación de las aptitudes que buscan los
empleadores en los candidatos. Tenga en cuenta, sin embargo, que no se
trata de una encuesta sobre aplicaciones que se manejan de forma eficaz.
Es más bien un indicador avanzado de cómo evoluciona la popularidad de las
aplicaciones (para expresarlo en lenguaje formal, sería aproximadamente la
derivada de primer orden de la popularidad de las aplicaciones, siendo esta
última la diferencia entre las aplicaciones que se contratan junto con las de
reciclaje a las que se restan las aplicaciones que pierden vigencia y las que
se dejan de utilizar).
Ya está bien de charla. Vamos a
obtener datos. Busqué habilidades que se utilizan en relación con
'aprendizaje automático' y 'ciencia de datos', como son los lenguajes de
programación: Java, C, C ++ y Javascript. También incluí Python y R, que
sabemos que son populares en aprendizaje automático y en ciencia de datos, así
como Scala dado su enlace con Spark, y Julia, del que algunos piensan que es la
siguiente innovación. La respuesta a esta consulta nos proporciona los datos que estamos buscando:
Cuando nos centramos en aprendizaje automático,
obtenemos datos similares:
¿Qué consecuencias podemos extraer de estos datos?
En primer lugar, vemos que no se puede medir a todos
con el mismo rasero. Determinados lenguajes son bastante populares en
este contexto.
En segundo lugar, hay un fuerte aumento de la
popularidad de todos ellos, lo que refleja el creciente interés en aprendizaje automático y en ciencia de datos
en los últimos años.
En tercer lugar, Python es el líder indiscutible,
seguido por Java, después R y finalmente C ++. Está aumentando la ventaja
de Python sobre Java, mientras que el liderazgo de Java sobre R está
disminuyendo. Debo admitir que me he sorprendido ver Java en segundo
lugar, esperaba que esa posición la ocupara R.
En cuarto lugar, el crecimiento
de Scala es impresionante. Casi no existía hace 3 años, y ahora está en
el mismo estadio que los lenguajes más consolidados. Esto es más fácil de
detectar cuando cambiamos a vista relativa
los datos de indeed.com:
En quinto lugar, la popularidad de Julia no está
cerca, pero definitivamente hay un repunte en los últimos meses. ¿Se
convertirá Julia en una de las herramientas más utilizadas en aprendizaje
automático y en ciencia de datos? El futuro lo dirá.
Si ignoramos a Scala y Julia para poder ver ampliado
el crecimiento de otros lenguajes, confirmamos que Python y R crecen más rápido
que los lenguajes de uso general.
Tal vez la popularidad de R superará a la de Java
relativamente pronto dada la diferencia en la tasa de crecimiento.
Cuando nos centramos en
aprendizaje profundo con esta consulta, los datos son completamente diferentes:
Allí, Python sigue siendo el líder, pero C ++ ahora
ocupa el segundo lugar, le sigue Java, y C está en cuarto lugar. R está
en el quinto puesto. Se observa claramente una ventaja en los lenguajes de
computación de alto rendimiento. Sin embargo, Java está creciendo
rápidamente. Podría alcanzar pronto el segundo lugar así como para el caso
de aprendizaje automático en general. Sin embargo R no va a ocupar los
primeros puestos en un corto plazo de tiempo. Lo que me sorprende es la
ausencia de Lua, aunque se utiliza en uno de los principales marcos de
aprendizaje profundo (Torch). Julia tampoco está presente.
La respuesta a la pregunta original ya debería estar
clara. Python, Java y R son las habilidades más populares cuando se trata
de aprendizaje automático y de trabajos de ciencia de datos. Si desea
centrarse en el aprendizaje profundo en lugar de aprendizaje automático en
general, entonces se utiliza C + +, y en menor medida C, que también vale la
pena considerar. Recuerde sin embargo, que esto es sólo una forma de ver
el problema. Puede obtener una respuesta diferente si está buscando un
trabajo en el mundo académico, o si sólo quiere divertirse aprendiendo sobre
aprendizaje automático y la ciencia de datos durante su tiempo libre.
¿Y mi respuesta personal?
La formulé a principios de año en este blog. Además de contar con el apoyo de muchos de las mejores
plataformas de aprendizaje automático, Python es una buena opción en mi caso,
porque tengo formación en informática. También me sentiría cómodo con C
++ para desarrollar nuevos algoritmos, dado que he programado en ese lenguaje
durante la mayor parte de mi vida profesional. Pero solo se trata de mi
caso, y personas con una formación diferente pueden sentirse mejor utilizando
otros lenguajes. Un estadístico con habilidades de programación limitadas
sin duda preferirá R. Un desarrollador experimentado en Java puede seguir
utilizando su lenguaje, ya que hay muchas fuentes abiertas con el API
Java. Y seguramente cualquiera de los lenguajes que figuran en estos
gráficos constituiría un caso.
Por lo tanto, mi consejo sería leer otros blogs en
los que se plantee la misma pregunta antes de invertir una cantidad de tiempo
importante en el aprendizaje de un determinado lenguaje de programación.
Biografía: Jean-François Puget (@JFPuget), PhD, is
Ingeniero director de IBM, trabaja en aprendizaje automático y en optimización.
Trabaja en Saint Raphael, Francia.
Relacionados: