Datumbox Machine Learning Framework versão 0.8.0 lançou PlatoBlockchain Data Intelligence. Pesquisa vertical. Ai.

Lançamento do Datumbox Machine Learning Framework versão 0.8.0

O Datumbox Framework v0.8.0 foi lançado e inclui vários recursos poderosos! Esta versão traz novos algoritmos de Pré-processamento, Seleção de Recursos e Seleção de Modelos, novos e poderosos Storage Engines que fornecem melhor controle sobre como os Modelos e os Dataframes são salvos / carregados, vários modelos de Aprendizado de Máquina pré-treinados e muitas melhorias de memória e velocidade. Baixe agora de Github or Repositório Central Maven.

Um dos principais objetivos da versão 0.8.0 era melhorar os mecanismos de armazenamento do framework e disponibilizar o treinamento baseado em disco para todos os algoritmos suportados. Os novos mecanismos de armazenamento oferecem melhor controle sobre como e quando os modelos estão sendo persistidos. Uma mudança importante é que os modelos não estão sendo armazenados automaticamente após o método fit () ser concluído, mas em vez disso, é necessário chamar explicitamente o método save () fornecendo o nome do modelo. Isso nos permite não apenas descartar algoritmos temporários mais fáceis sem passar por uma fase de serialização, mas também salvar / carregar os 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

Atualmente, oferecemos suporte a dois mecanismos de armazenamento: O mecanismo InMemory, que é muito rápido, pois carrega tudo na memória, e o mecanismo MapDB, que é mais lento, mas permite o treinamento baseado em disco. Você pode controlar qual mecanismo usar alterando datumbox.configuration.properties ou pode modificar programaticamente os objetos de configuração. Cada mecanismo tem seu próprio arquivo de configuração, mas, novamente, você pode modificar tudo programaticamente:

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

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

Observe que em ambos os motores, há uma configuração de diretório que controla onde os modelos estão sendo armazenados (inMemoryConfiguration.diretório e mapDBConfiguration.diretório propriedades em arquivos de configuração). Certifique-se de alterá-los ou então os modelos serão gravados na pasta temporária do seu sistema. Para obter mais informações sobre como você estrutura os arquivos de configuração, dê uma olhada no Exemplo de Código projeto.

Com o novo mecanismo de armazenamento em vigor, agora é possível compartilhar publicamente modelos pré-treinados que cobrem as áreas de análise de sentimento, detecção de spam, detecção de linguagem, classificação de tópicos e todos os outros modelos que estão disponíveis por meio da API Datumbox. Agora você pode download e use todos os modelos pré-treinados em seu projeto sem exigir a chamada da API e sem ser limitado pelo número de chamadas diárias. Atualmente, os modelos publicados são treinados usando o mecanismo de armazenamento InMemory e suportam apenas o inglês. Em versões futuras, pretendo fornecer suporte para mais idiomas.

Na nova estrutura, há várias mudanças nos métodos públicos de muitas das classes (portanto, não é compatível com versões anteriores). A diferença mais notável está na maneira como os modelos são inicializados. Como vimos no exemplo de código anterior, os modelos não são instanciados diretamente, mas, em vez disso, a classe MLBuilder é usada para criar ou carregar um modelo. Os parâmetros de treinamento são fornecidos diretamente ao construtor e não podem ser alterados com um configurador.

Outra melhoria está na maneira como executamos a Seleção de Modelos. A v0.8.0 apresenta o novo pacote de seleção de modelos que oferece todas as ferramentas necessárias para validar e medir o desempenho de nossos modelos. No subpacote de métricas, fornecemos as métricas de validação mais importantes para classificação, agrupamento, regressão e recomendação. Observe que os ValidationMetrics são removidos de cada algoritmo individual e não são mais armazenados junto com o modelo. A estrutura oferece o novo subpacote divisores que permite dividir o conjunto de dados original usando diferentes esquemas. Atualmente, as divisões K-fold são realizadas usando a classe KFoldSplitter, enquanto o particionamento do conjunto de dados em um conjunto de treinamento e teste pode ser obtido com o ShuffleSplitter. Finalmente, para validar rapidamente um modelo, o framework oferece a classe Validator. Aqui está como se pode realizar a validação cruzada K-fold dentro de algumas linhas de código:

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

O novo pacote de pré-processamento substitui os antigos transformadores de dados e oferece melhor controle sobre como escalar e codificar os dados antes dos algoritmos de aprendizado de máquina. Os algoritmos a seguir são suportados para dimensionar variáveis ​​numéricas: MinMaxScaler, StandardScaler, MaxAbsScaler e BinaryScaler. Para codificar variáveis ​​categóricas em booleanos, você pode usar os seguintes métodos: OneHotEncoder e CornerConstraintsEncoder. Veja como você pode usar os novos 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);

Outra atualização importante é o fato de que o pacote de Seleção de Recursos foi reescrito. Atualmente, todos os algoritmos de seleção de recursos se concentram em tipos de dados específicos, tornando possível encadear diferentes métodos. Como resultado, as classes TextClassifier e Modeler recebem uma lista de parâmetros do seletor de recursos, em vez de apenas um.

Conforme mencionado anteriormente, todos os algoritmos agora suportam treinamento baseado em disco, incluindo aqueles que usam Matrices (a única exceção é o Support Vector Machines). O novo mecanismo de mecanismo de armazenamento ainda torna possível configurar alguns algoritmos ou dataframes para serem armazenados na memória enquanto outros no disco. Várias melhorias de velocidade foram introduzidas principalmente devido ao novo mecanismo de mecanismo de armazenamento, mas também devido ao ajuste de algoritmos individuais, como os da família DPMM.

Por último, mas não menos importante, a nova versão atualiza todas as dependências para suas versões mais recentes e remove algumas delas, como o commons-lang e o lp_solve. O commons-lang, que era usado para análise de HTML, foi substituído por uma implementação HTMLParser customizada mais rápida. O lp_solve foi substituído por um solver Java simplex puro, o que significa que o Datumbox não requer mais bibliotecas de sistema específicas instaladas no sistema operacional. Além disso, lp_solve teve que ir porque usa LGPLv2, que não é compatível com a licença Apache 2.0.

A versão 0.8.0 traz vários outros novos recursos e melhorias no framework. Para uma visão detalhada das mudanças, verifique o Changelog.

Não se esqueça de clonar o código de Estrutura Datumbox v0.8.0 do Github, verifique o Exemplos de código e baixe os modelos de aprendizado de máquina pré-treinados em Zoológico Datumbox. Estou ansioso para seus comentários e sugestões.

Carimbo de hora:

Mais de Caixa de dados