Datumbox Machine Learning Framework version 0.8.0 udgav PlatoBlockchain Data Intelligence. Lodret søgning. Ai.

Datumbox Machine Learning Framework version 0.8.0 udgivet

Datumbox Framework v0.8.0 er ude og indeholder flere kraftfulde funktioner! Denne version bringer nye Preprocessing, Feature Selection og Model Selection algoritmer, nye kraftfulde Storage Engines, der giver bedre kontrol over, hvordan modellerne og datarammerne gemmes/indlæses, adskillige forudtrænede Machine Learning-modeller og masser af hukommelses- og hastighedsforbedringer. Download det nu fra Github or Maven Central Repository.

Et af hovedmålene med version 0.8.0 var at forbedre lagringsmekanismerne i frameworket og gøre diskbaseret træning tilgængelig for alle de understøttede algoritmer. De nye lagringsmotorer giver bedre kontrol over, hvordan og hvornår modellerne bliver vedligeholdt. En vigtig ændring er, at modellerne ikke gemmes automatisk efter at fit()-metoden er færdig, men i stedet skal man udtrykkeligt kalde save()-metoden med navnet på modellen. Dette gør os i stand til ikke kun at kassere lettere midlertidige algoritmer uden at gå gennem en serialiseringsfase, men også at gemme/indlæse 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

I øjeblikket understøtter vi to lagermotorer: InMemory-motoren, som er meget hurtig, da den indlæser alt i hukommelsen, og MapDB-motoren, som er langsommere, men tillader diskbaseret træning. Du kan styre, hvilken motor du bruger, ved at ændre dine datumbox.configuration.properties, eller du kan programmere ændre konfigurationsobjekterne. Hver motor har sin egen konfigurationsfil, men igen kan du ændre alt programmatisk:

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

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

Bemærk venligst, at der i begge motorer er en mappeindstilling, som styrer, hvor modellerne gemmes (inMemoryConfiguration.directory , mapDBConfiguration.directory egenskaber i konfigurationsfiler). Sørg for at ændre dem, ellers vil modellerne blive skrevet på den midlertidige mappe på dit system. For mere information om, hvordan du strukturerer konfigurationsfilerne, se på Kodeeksempel projekt.

Med den nye lagermekanisme på plads er det nu muligt at dele offentligt fortrænede modeller der dækker områderne Sentiment Analysis, Spam Detection, Language Detection, Topic Classification og alle de andre modeller, der er tilgængelige via Datumbox API. Det kan du nu downloade og brug alle de fortrænede modeller på dit projekt uden at kræve opkald til API'en og uden at være begrænset af antallet af daglige opkald. I øjeblikket er de offentliggjorte modeller trænet ved hjælp af InMemory-lagringsmotoren, og de understøtter kun engelsk. På fremtidige udgivelser planlægger jeg at yde support til flere sprog.

I den nye ramme er der flere ændringer på de offentlige metoder for mange af klasserne (derfor er den ikke bagudkompatibel). Den mest bemærkelsesværdige forskel er den måde, modellerne initialiseres på. Som vi så i det tidligere kodeeksempel, er modellerne ikke direkte instansieret, men i stedet bruges MLBuilder-klassen til enten at oprette eller indlæse en model. Træningsparametrene leveres direkte til bygherren, og de kan ikke ændres med en sætter.

En anden forbedring er den måde, vi udfører modelvalg på. v0.8.0 introducerer den nye modelvalgspakke, som tilbyder alle de nødvendige værktøjer til at validere og måle ydeevnen af ​​vores modeller. I metrik-underpakken giver vi de vigtigste valideringsmetrikker for klassificering, klyngedannelse, regression og anbefaling. Bemærk, at ValidationMetrics fjernes fra hver enkelt algoritme, og de gemmes ikke længere sammen med modellen. Rammen tilbyder den nye splitter-underpakke, som gør det muligt at opdele det originale datasæt ved hjælp af forskellige skemaer. I øjeblikket udføres K-fold-opdelinger ved hjælp af KFoldSplitter-klassen, mens opdeling af datasættet i et trænings- og testsæt kan opnås med ShuffleSplitter. Endelig for hurtigt at validere en model tilbyder rammen Validator-klassen. Her er hvordan man kan udføre K-fold krydsvalidering inden for et par linjer kode:

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

Den nye Preprocessing-pakke erstatter de gamle Data Transformers og giver bedre kontrol med, hvordan vi skalerer og koder dataene før maskinlæringsalgoritmerne. Følgende algoritmer understøttes til skalering af numeriske variabler: MinMaxScaler, StandardScaler, MaxAbsScaler og BinaryScaler. Til indkodning af kategoriske variabler til booleaner kan du bruge følgende metoder: OneHotEncoder og CornerConstraintsEncoder. Sådan kan du bruge de nye algoritmer:

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

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

En anden vigtig opdatering er det faktum, at Feature Selection-pakken blev omskrevet. I øjeblikket fokuserer alle funktionsvalgalgoritmer på specifikke datatyper, hvilket gør det muligt at kæde forskellige metoder sammen. Som et resultat modtager TextClassifier- og Modeler-klasserne en liste over funktionsvælgerparametre i stedet for kun én.

Som tidligere nævnt understøtter alle algoritmerne nu disk-baseret træning, inklusive dem, der bruger matricer (eneste undtagelse er Support Vector Machines). Den nye lagringsmotormekanisme gør det endda muligt at konfigurere nogle algoritmer eller datarammer til at blive lagret i hukommelsen, mens andre på disken. Adskillige hastighedsforbedringer blev introduceret primært på grund af den nye lagringsmotormekanisme, men også på grund af tuning af individuelle algoritmer, såsom dem i DPMM-familien.

Sidst, men ikke mindst, opdaterer den nye version alle afhængigheder til deres seneste versioner og fjerner nogle af dem, såsom commons-lang og lp_solve. Commons-lang, som blev brugt til HTML-parsing, er erstattet med en hurtigere tilpasset HTMLParser-implementering. lp_solve er erstattet med en ren Java simplex solver, hvilket betyder, at Datumbox ikke længere kræver specifikke systembiblioteker installeret på operativsystemet. Desuden måtte lp_solve gå, fordi den bruger LGPLv2, som ikke er kompatibel med Apache 2.0-licensen.

Version 0.8.0 bringer flere nye funktioner og forbedringer på rammen. For en detaljeret oversigt over ændringerne, se venligst Changelog.

Glem ikke at klone koden til Datumbox Framework v0.8.0 fra Github, se Kodeeksempler og download de fortrænede Machine Learning-modeller fra Datumbox Zoo. Jeg ser frem til dine kommentarer og forslag.

Tidsstempel:

Mere fra Datumboks