Estos son mis datos de entrenamiento: 200,000 Ejemplos x 10,000 Características. Entonces mi matriz de datos de entrenamiento es - 200,000 x 10,000.
Logré guardar esto en un archivo plano sin tener problemas de memoria guardando cada conjunto de datos uno por uno (un ejemplo tras otro) a medida que genero las características para cada ejemplo.
Pero ahora, cuando uso Milk , SVM light o cualquier otro algoritmo de Machine Learning, todo trata de cargar todos los datos de entrenamiento en la memoria en lugar de entrenarlos uno por uno. Sin embargo, solo tengo 8 GB de RAM, así que no puedo proceder de esta manera.
¿Sabes de todos modos que podría entrenar el algoritmo un conjunto de datos por un conjunto de datos? Es decir, en cualquier momento solo tengo un conjunto de datos cargado en la memoria, mientras entreno.
fuente
Respuestas:
Creo que el término para este tipo de aprendizaje es aprendizaje fuera del núcleo . Una sugerencia es votepal wabbit , que tiene una biblioteca R conveniente , así como bibliotecas para muchos otros idiomas.
fuente
Apoyo de todo corazón la sugerencia de Zach. El Wrangpal Wabbit es una excelente opción, y su velocidad lo sorprendería. Un conjunto de datos de 200k por 10k no se considera grande por las normas de vocales wabbit.
votepal_wabbit (disponible en forma de fuente a través de https://github.com/JohnLangford/vowpal_wabbit , una versión anterior está disponible como un paquete estándar en el universo de Ubuntu) es un aprendizaje en línea lineal + bilineal rápido, con una entrada muy flexible. Puede mezclar características binarias y numéricas. No es necesario numerar las características, ya que los nombres de las variables funcionarán "tal cual". Tiene un montón de opciones, algoritmos, reducciones, funciones de pérdida y una gran flexibilidad en general. Puede unirse a la lista de correo (encuéntrela a través de github) y hacer cualquier pregunta. La comunidad es muy eficiente y solidaria.
fuente
Respondí una pregunta similar aquí . El punto es que la mayoría de los algoritmos de aprendizaje automático / minería de datos son aprendices por lotes, es decir, cargan todos los datos en la memoria. Por lo tanto, necesita herramientas diferentes para conjuntos de datos muy grandes como los que tiene. Vea las herramientas de esas preguntas también.
El aprendizaje en línea es una forma de reducir la huella de memoria de los algoritmos.
fuente