Datumbox Machine Learning Framework versión 0.8.0 lanzó PlatoBlockchain Data Intelligence. Búsqueda vertical. Ai.

Lanzamiento de Datumbox Machine Learning Framework versión 0.8.0

¡Datumbox Framework v0.8.0 ya está disponible y contiene varias funciones poderosas! Esta versión trae nuevos algoritmos de preprocesamiento, selección de características y selección de modelos, nuevos motores de almacenamiento potentes que brindan un mejor control sobre cómo se guardan / cargan los modelos y los marcos de datos, varios modelos de aprendizaje automático pre-entrenados y muchas mejoras de memoria y velocidad. Descárgalo ahora desde Github or Repositorio central de Maven.

Uno de los principales objetivos de la versión 0.8.0 era mejorar los mecanismos de almacenamiento del marco y hacer que el entrenamiento basado en disco estuviera disponible para todos los algoritmos compatibles. Los nuevos motores de almacenamiento brindan un mejor control sobre cómo y cuándo se conservan los modelos. Un cambio importante es que los modelos no se almacenan automáticamente una vez finalizado el método fit (), sino que es necesario llamar explícitamente al método save () proporcionando el nombre del modelo. Esto nos permite no solo descartar algoritmos temporales más fáciles sin pasar por una fase de serialización, sino también guardar / cargar los Dataframes:

Configuration configuration = Configuration.getConfiguration();
Dataframe data = ...; //load a dataframe here

MaximumEntropy.TrainingParameters params = new MaximumEntropy.TrainingParameters();
MaximumEntropy model = MLBuilder.create(params, getConfiguration());
model.fit(data);
model.save("MyModel"); //save the model using the specific name
model.close();

data.save("MyData"); //save the data using a specific name
data.close();

data = Dataframe.Builder.load("MyData", configuration); //load the data
model = MLBuilder.load(MaximumEntropy.class, "MyModel", configuration); //load the model
model.predict(data);
model.delete(); //delete the model

Actualmente apoyamos dos motores de almacenamiento: el motor InMemory que es muy rápido ya que carga todo en la memoria y el motor MapDB que es más lento pero permite entrenamiento basado en disco. Puede controlar qué motor utiliza cambiando su datumbox.configuration.properties o puede modificar programáticamente los objetos de configuración. Cada motor tiene su propio archivo de configuración, pero nuevamente puede modificar todo mediante programación:

Configuration configuration = Configuration.getConfiguration(); //conf from properties file

configuration.setStorageConfiguration(new InMemoryConfiguration()); //use In-Memory engine
//configuration.setStorageConfiguration(new MapDBConfiguration()); //use MapDB engine

Tenga en cuenta que en ambos motores, hay una configuración de directorio que controla dónde se almacenan los modelos (enMemoryConfiguration.directory y mapDBConfiguration.directorio propiedades en archivos de configuración). Asegúrese de cambiarlos o, de lo contrario, los modelos se escribirán en la carpeta temporal de su sistema. Para obtener más información sobre cómo estructura los archivos de configuración, consulte la Ejemplo de código proyecto.

Con el nuevo mecanismo de almacenamiento implementado, ahora es factible compartir públicamente modelos pre-entrenados que cubren las áreas de Análisis de opinión, Detección de spam, Detección de idioma, Clasificación de temas y todos los demás modelos que están disponibles a través de la API de Datumbox. Tu puedes ahora descargar y use todos los modelos previamente entrenados en su proyecto sin requerir llamar a la API y sin estar limitado por la cantidad de llamadas diarias. Actualmente, los modelos publicados se entrenan con el motor de almacenamiento InMemory y solo admiten inglés. En versiones futuras, planeo brindar soporte para más idiomas.

En el nuevo marco, hay varios cambios en los métodos públicos de muchas de las clases (por lo tanto, no es compatible con versiones anteriores). La diferencia más notable está en la forma en que se inicializan los modelos. Como vimos en el ejemplo de código anterior, los modelos no se instancian directamente, sino que la clase MLBuilder se usa para crear o cargar un modelo. Los parámetros de entrenamiento se proporcionan directamente al constructor y no se pueden cambiar con un colocador.

Otra mejora está en la forma en que realizamos la selección de modelos. La v0.8.0 introduce el nuevo paquete de selección de modelos que ofrece todas las herramientas necesarias para validar y medir el rendimiento de nuestros modelos. En el subpaquete de métricas, proporcionamos las métricas de validación más importantes para clasificación, agrupamiento, regresión y recomendación. Tenga en cuenta que las ValidationMetrics se eliminan de cada algoritmo individual y ya no se almacenan junto con el modelo. El marco ofrece el nuevo subpaquete de divisores que permite dividir el conjunto de datos original utilizando diferentes esquemas. Actualmente, las divisiones de K-fold se realizan usando la clase KFoldSplitter mientras que la partición del conjunto de datos en un conjunto de entrenamiento y prueba se puede lograr con ShuffleSplitter. Finalmente, para validar rápidamente un modelo, el marco ofrece la clase Validator. Así es como se puede realizar la validación cruzada de K-fold dentro de un par de líneas de código:

ClassificationMetrics vm = new Validator<>(ClassificationMetrics.class, configuration)
    .validate(new KFoldSplitter(k).split(data), new MaximumEntropy.TrainingParameters());

El nuevo paquete de preprocesamiento reemplaza a los antiguos transformadores de datos y brinda un mejor control sobre cómo escalamos y codificamos los datos antes que los algoritmos de aprendizaje automático. Los siguientes algoritmos son compatibles para escalar variables numéricas: MinMaxScaler, StandardScaler, MaxAbsScaler y BinaryScaler. Para codificar variables categóricas en valores booleanos, puede utilizar los siguientes métodos: OneHotEncoder y CornerConstraintsEncoder. Así es como puede utilizar los nuevos algoritmos:

StandardScaler numericalScaler = MLBuilder.create(
    new StandardScaler.TrainingParameters(), 
    configuration
);
numericalScaler.fit_transform(trainingData);

CornerConstraintsEncoder categoricalEncoder = MLBuilder.create(
    new CornerConstraintsEncoder.TrainingParameters(), 
    configuration
);
categoricalEncoder.fit_transform(trainingData);

Otra actualización importante es el hecho de que se reescribió el paquete de selección de funciones. Actualmente, todos los algoritmos de selección de características se centran en tipos de datos específicos, lo que hace posible encadenar diferentes métodos. Como resultado, las clases TextClassifier y Modeler reciben una lista de parámetros de selector de características en lugar de solo uno.

Como se mencionó anteriormente, todos los algoritmos ahora admiten entrenamiento basado en disco, incluidos aquellos que usan Matrices (la única excepción son las Máquinas de vectores de soporte). El nuevo mecanismo del motor de almacenamiento incluso permite configurar algunos algoritmos o marcos de datos para que se almacenen en la memoria y otros en el disco. Se introdujeron varias mejoras de velocidad principalmente debido al nuevo mecanismo del motor de almacenamiento, pero también debido al ajuste de algoritmos individuales como los de la familia DPMM.

Por último, pero no menos importante, la nueva versión actualiza todas las dependencias a sus últimas versiones y elimina algunas de ellas, como commons-lang y lp_solve. Commons-lang, que se utilizó para el análisis de HTML, se reemplaza con una implementación HTMLParser personalizada más rápida. El lp_solve se reemplaza con un solucionador simple de Java puro, lo que significa que Datumbox ya no requiere bibliotecas de sistema específicas instaladas en el sistema operativo. Además, lp_solve tuvo que irse porque usa LGPLv2 que no es compatible con la licencia de Apache 2.0.

La versión 0.8.0 trae varias características nuevas y mejoras en el marco. Para obtener una vista detallada de los cambios, consulte la Changelog.

No olvide clonar el código de Marco Datumbox v0.8.0 de Github, echa un vistazo a Ejemplos de código y descargue los modelos de aprendizaje automático previamente entrenados de Zoológico de Datumbox. Espero sus comentarios y sugerencias.

Sello de tiempo:

Mas de Caja de datos