¿Cuál es un buen consejo para una implementación eficiente de un algoritmo de aprendizaje automático en C / C ++?

Este semestre, me enfrenté al mismo dilema que tú. Este fue un proyecto de clase para nosotros: competencia biométrica del acelerómetro [en Kaggle] y teníamos aproximadamente un mes para trabajar en ello. Era un problema de clasificación de varias clases y los conjuntos de datos de entrenamiento y prueba eran de 1,4 GB cada uno.

Aquí hay una lista de las bibliotecas de C ++ que probé durante el trabajo del proyecto:

  • Waffles: Gran biblioteca casi completa con muchas características, excelente soporte para archivos de entrada ARFF, pero los métodos ML no son multiproceso.
  • DLib: Carece de algunas características (Naive Bayes, Decision Trees, Ensemble Learning), pero es excelente para SVM y regresión. Realmente fácil de usar y admite subprocesos.
  • Shark: Otra gran biblioteca con muchas características, requiere Boost.

La presentación final que hice fue usar DLib. Aunque la biblioteca en ese momento no tenía una implementación paralela del clasificador uno contra todos, modifiqué la fuente.