Datumbox Machine Learning Framework versjon 0.8.0 utgitt PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Datumbox Machine Learning Framework versjon 0.8.0 utgitt

Datumbox Framework v0.8.0 er ute og har flere kraftige funksjoner! Denne versjonen gir nye forhåndsbehandlings-, funksjonsvalg- og modellvalgalgoritmer, nye kraftige lagringsmotorer som gir bedre kontroll over hvordan modellene og datarammene lagres / lastes, flere forhåndstrente maskinlæringsmodeller og mye forbedring av minne og hastighet. Last ned den nå fra Github or Maven sentrale depot.

Et av hovedmålene for versjon 0.8.0 var å forbedre lagringsmekanismene i rammeverket og gjøre diskbasert opplæring tilgjengelig for alle støttede algoritmer. De nye lagringsmotorene gir bedre kontroll over hvordan og når modellene vedvares. En viktig endring er at modellene ikke lagres automatisk etter at fit () -metoden er ferdig, men i stedet må man eksplisitt ringe lagringsmetoden () og gi navnet på modellen. Dette gjør at vi ikke bare kan forkaste enklere midlertidige algoritmer uten å gå gjennom en serialiseringsfase, men også å lagre / laste inn 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

Foreløpig støtter vi to lagringsmotorer: InMemory-motoren som er veldig rask da den laster alt i minnet og MapDB-motoren som er tregere, men som tillater diskbasert opplæring. Du kan kontrollere hvilken motor du bruker ved å endre datumbox.configuration.properties eller du kan programmatisk endre konfigurasjonsobjektene. Hver motor har sin egen konfigurasjonsfil, men igjen kan du endre 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

Vær oppmerksom på at i begge motorene er det en kataloginnstilling som styrer hvor modellene lagres (inMemoryConfiguration.directory og mapDBConfiguration.directory egenskaper i konfigurasjonsfiler). Forsikre deg om at du endrer dem, ellers vil modellene bli skrevet i den midlertidige mappen på systemet ditt. For mer informasjon om hvordan du strukturerer konfigurasjonsfilene, se på Kodeeksempel prosjekt.

Med den nye lagringsmekanismen på plass, er det nå mulig å dele offentlig ferdig trente modeller som dekker områdene Sentimentanalyse, Spam Detection, Language Detection, Topic Classification og alle de andre modellene som er tilgjengelige via Datumbox API. Du kan nå nedlasting og bruk alle de forhåndsopplærte modellene på prosjektet ditt uten at du trenger å ringe API og uten å være begrenset av antall daglige samtaler. Foreløpig er de publiserte modellene trent med InMemory-lagringsmotoren, og de støtter bare engelsk. På fremtidige utgivelser planlegger jeg å gi støtte til flere språk.

I det nye rammeverket er det flere endringer i de offentlige metodene til mange av klassene (derfor er det ikke bakoverkompatibelt). Den mest bemerkelsesverdige forskjellen er på måten modellene initialiseres. Som vi så i det tidligere kodeeksemplet, blir ikke modellene direkte instantiert, men i stedet brukes MLBuilder-klassen til å enten lage eller laste en modell. Treningsparametrene blir gitt direkte til byggherren, og de kan ikke endres med en setter.

En annen forbedring er på måten vi utfører modellvalg på. V0.8.0 introduserer den nye modellvalgspakken som tilbyr alle nødvendige verktøy for å validere og måle ytelsen til modellene våre. I underpakken til beregninger gir vi de viktigste valideringsmålingene for klassifisering, klynging, regresjon og anbefaling. Merk at ValidationMetrics fjernes fra hver enkelt algoritme, og de lagres ikke lenger sammen med modellen. Rammeverket tilbyr delpakken for nye splittere som gjør det mulig å dele det originale datasettet ved hjelp av forskjellige ordninger. For tiden utføres K-fold-splittelser ved bruk av KFoldSplitter-klassen mens partisjonering av datasettet i et trenings- og testsett kan oppnås med ShuffleSplitter. Endelig for å raskt validere en modell, tilbyr rammeverket Validator-klassen. Slik kan du utføre K-fold kryssvalidering innen et par kodelinjer:

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

Den nye Preprocessing-pakken erstatter de gamle Data Transformers og gir bedre kontroll over hvordan vi skalerer og koder dataene før maskinlæringsalgoritmene. Følgende algoritmer støttes for skalering av numeriske variabler: MinMaxScaler, StandardScaler, MaxAbsScaler og BinaryScaler. For koding av kategoriske variabler i booleanere kan du bruke følgende metoder: OneHotEncoder og CornerConstraintsEncoder. Slik kan du bruke de nye algoritmene:

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 annen viktig oppdatering er det faktum at Feature Selection-pakken ble omskrevet. Foreløpig fokuserer alle funksjonsvalgalgoritmer på spesifikke datatyper, noe som gjør det mulig å koble forskjellige metoder sammen. Som et resultat får TextClassifier og Modeler-klassene en liste over funksjonsvelgerparametere i stedet for bare en.

Som nevnt tidligere støtter alle algoritmer nå diskbasert opplæring, inkludert de som bruker matriser (eneste unntak er Support Vector Machines). Den nye lagringsmotormekanismen gjør det til og med mulig å konfigurere noen algoritmer eller datarammer som skal lagres i minnet mens andre er på disken. Flere hastighetsforbedringer ble introdusert primært på grunn av den nye lagringsmotormekanismen, men også på grunn av innstillingen av individuelle algoritmer som de i DPMM-familien.

Sist men ikke minst oppdaterer den nye versjonen alle avhengighetene til de nyeste versjonene og fjerner noen av dem, for eksempel commons-lang og lp_solve. Commons-lang, som ble brukt til HTML-parsing, erstattes med en raskere tilpasset HTMLParser-implementering. Lp_solve erstattes med en ren Java simplex-løsning, som betyr at Datumbox ikke lenger krever spesifikke systembiblioteker installert på operativsystemet. Videre måtte lp_solve gå fordi den bruker LGPLv2 som ikke er kompatibel med Apache 2.0-lisensen.

Versjonen 0.8.0 gir flere nye funksjoner og forbedringer på rammeverket. For en detaljert oversikt over endringene, vennligst sjekk endrings~~POS=TRUNC.

Ikke glem å klone koden for Datumbox Framework v0.8.0 fra Github, sjekk ut Kodeeksempler og laste ned de forhåndstrente maskinlæringsmodellene fra Datumbox Zoo. Jeg gleder meg til dine kommentarer og forslag.

Tidstempel:

Mer fra Datoboks