Como Jeremy Miles ha enumerado sucintamente todos los principales puntos de diferencia, daré una opinión más subjetiva.
C ++ : en general, los proyectos de C ++ tienen un costo de iniciación más alto en términos de código de base que debe implementarse antes de poder construir las partes interesantes de su proyecto. A menos que tenga la suerte de encontrar una biblioteca C ++ que brinde la funcionalidad que está buscando, se encontrará implementando cosas bastante básicas que están fácilmente disponibles a través de bibliotecas en otros lenguajes de “nivel superior” como R, Python, etc.
Pero hay una recompensa significativa en términos de eficiencia, mayor control sobre la gestión de la memoria, etc. en el C / C ++ de “nivel inferior” (Esto es cierto en general, no solo para proyectos relacionados con ML). Si planea escribir código que (i) se ejecutará en muchos datos y la eficiencia es crítica, o (ii) se implementará en muchas máquinas (por ejemplo, un clúster distribuido), entonces es mejor apagado con el uso de C ++. Diría que Java es más preferible que C ++ aquí debido a un ecosistema de biblioteca más rico (Weka, Mahout, Hadoop, etc.) pero bueno, quién quiere comenzar una guerra de llamas.
- Cómo crear rápidamente un prototipo de una aplicación de reconocimiento de imágenes utilizando el aprendizaje automático y la red neuronal
- ¿Cuántas personas en el mundo son expertos en aprendizaje profundo para visión por computadora?
- ¿Existe una definición matemática para una máquina de vectores de soporte?
- Cómo garantizar que la función SIFT sea invariante en perspectiva
- ¿Por qué las tasas de aceptación de las conferencias de minería de datos son tan bajas y qué tipo de documentos se rechazan?
R, Python, etc .: estos lenguajes tienen muchas bibliotecas de soporte que hacen que los algoritmos ML populares como SVM, K-means, etc. se sientan como operaciones integradas, es decir, bloques de construcción que puede usar para hacer cosas más interesantes. Esto es extremadamente útil para la creación rápida de prototipos, trazar gráficos y obtener un código útil .
La conclusión es que si eres un pirata informático individual en algún conjunto de datos o estás probando el algoritmo que acabas de aprender en clase, R (o Python) es tu amigo. (En una nota relacionada, esta publicación de blog muestra las preferencias de los competidores en los concursos de minería de datos de Kaggle (compañía): cómo los competidores de Kaggle usan R).
Si tiene un equipo de desarrollo de programadores experimentados que trabajan en la próxima gran idea de red neuronal distribuida para identificar gatos en videos de YouTube (En una gran red de computadoras, evidencia de aprendizaje automático), probablemente esté mejor con C ++ / Java.
Por supuesto, no hay límite duro entre los dos.