Datumbox Machine Learning Framework različica 0.8.0 je izdala PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Izdano je datumbox Framework Machine Learning Framework različice 0.8.0

Datumbox Framework v0.8.0 je izšel in vsebuje več zmogljivih funkcij! Ta različica prinaša nove algoritme predprocesiranja, izbire funkcij in izbire modela, nove zmogljive mehanizme za shranjevanje, ki omogočajo boljši nadzor nad tem, kako se modeli in podatkovni okviri shranjujejo/nalagajo, več vnaprej pripravljenih modelov strojnega učenja ter veliko izboljšav pomnilnika in hitrosti. Prenesite ga zdaj iz GitHub or Centralno skladišče Maven.

Eden od glavnih ciljev različice 0.8.0 je bil izboljšati mehanizme shranjevanja ogrodja in dati na voljo usposabljanje na disku za vse podprte algoritme. Novi mehanizmi za shranjevanje omogočajo boljši nadzor nad tem, kako in kdaj se modeli ohranjajo. Ena pomembna sprememba je, da se modeli ne shranijo samodejno, ko je metoda fit() končana, temveč je treba namesto tega izrecno poklicati metodo save(), ki zagotovi ime modela. To nam omogoča ne samo, da zavržemo lažje začasne algoritme, ne da bi šli skozi fazo serializacije, temveč tudi shranimo/naložimo podatkovne okvire:

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

Trenutno podpiramo dva mehanizma za shranjevanje: motor InMemory, ki je zelo hiter, saj naloži vse v pomnilnik, in motor MapDB, ki je počasnejši, vendar omogoča usposabljanje na disku. Lahko nadzorujete, kateri mehanizem uporabljate, tako da spremenite svoje datumbox.configuration.properties ali pa lahko programsko spremenite konfiguracijske objekte. Vsak motor ima svojo konfiguracijsko datoteko, vendar lahko spet vse spremenite programsko:

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

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

Upoštevajte, da je v obeh motorjih nastavitev imenika, ki nadzoruje, kje so shranjeni modeli (inMemoryConfiguration.directory in mapDBConfiguration.directory lastnosti v konfiguracijskih datotekah). Ne pozabite jih spremeniti, sicer bodo modeli zapisani v začasni mapi vašega sistema. Za več informacij o tem, kako strukturirate konfiguracijske datoteke, si oglejte Primer kode projekt.

Z vzpostavljenim novim mehanizmom za shranjevanje je zdaj mogoče javno deliti predhodno usposobljeni modeli ki pokrivajo področja analize razpoloženja, zaznavanja neželene pošte, zaznavanja jezika, klasifikacije tem in vseh drugih modelov, ki so na voljo prek API-ja Datumbox. Zdaj lahko prenesi in uporabite vse vnaprej usposobljene modele v svojem projektu, ne da bi zahtevali klic API-ja in ne da bi bili omejeni s številom dnevnih klicev. Trenutno objavljeni modeli so usposobljeni z uporabo mehanizma za shranjevanje InMemory in podpirajo samo angleščino. V prihodnjih izdajah nameravam zagotoviti podporo za več jezikov.

V novem okviru je več sprememb v javnih metodah številnih razredov (zato ni združljiv za nazaj). Najbolj opazna razlika je v načinu inicializacije modelov. Kot smo videli v prejšnjem primeru kode, modeli niso neposredno instancirani, temveč se razred MLBuilder uporablja za ustvarjanje ali nalaganje modela. Parametri treninga so posredovani neposredno graditelju in jih ni mogoče spremeniti z nastavljalcem.

Druga izboljšava je na poti izvajanja izbire modela. V0.8.0 predstavlja nov paket modelselection, ki ponuja vsa potrebna orodja za preverjanje in merjenje zmogljivosti naših modelov. V podpaketu metrik nudimo najpomembnejše validacijske metrike za klasifikacijo, združevanje v gruče, regresijo in priporočila. Upoštevajte, da so ValidationMetrics odstranjene iz vsakega posameznega algoritma in niso več shranjene skupaj z modelom. Ogrodje ponuja nov podpaket razdelilnikov, ki omogoča razdelitev izvirnega nabora podatkov z uporabo različnih shem. Trenutno se K-kratne delitve izvajajo z uporabo razreda KFoldSplitter, medtem ko je razdelitev nabora podatkov v nabor za usposabljanje in testiranje mogoče doseči s ShuffleSplitterjem. Za hitro preverjanje modela ogrodje ponuja razred Validator. Tukaj je opisano, kako lahko izvedete K-kratno navzkrižno preverjanje v nekaj vrsticah kode:

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

Novi paket Preprocessing nadomešča stare podatkovne transformatorje in omogoča boljši nadzor nad tem, kako merimo in kodiramo podatke pred algoritmi strojnega učenja. Za skaliranje numeričnih spremenljivk so podprti naslednji algoritmi: MinMaxScaler, StandardScaler, MaxAbsScaler in BinaryScaler. Za kodiranje kategoričnih spremenljivk v logične vrednosti lahko uporabite naslednje metode: OneHotEncoder in CornerConstraintsEncoder. Evo, kako lahko uporabite nove algoritme:

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

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

Druga pomembna posodobitev je dejstvo, da je bil paket Feature Selection prepisan. Trenutno se vsi algoritmi za izbiro funkcij osredotočajo na specifične vrste podatkov, kar omogoča povezovanje različnih metod skupaj. Posledično razreda TextClassifier in Modeler prejmeta seznam parametrov izbirnika funkcij in ne samo enega.

Kot smo že omenili, zdaj vsi algoritmi podpirajo usposabljanje na podlagi diska, vključno s tistimi, ki uporabljajo matrike (edina izjema so podporni vektorski stroji). Nov mehanizem shranjevalnega stroja omogoča celo konfiguracijo nekaterih algoritmov ali podatkovnih okvirov za shranjevanje v pomnilniku, medtem ko so drugi na disku. Več izboljšav hitrosti je bilo uvedenih predvsem zaradi novega mehanizma pomnilnika, pa tudi zaradi prilagajanja posameznih algoritmov, kot so tisti v družini DPMM.

Nenazadnje nova različica posodobi vse odvisnosti na njihove najnovejše različice in odstrani nekatere od njih, kot sta commons-lang in lp_solve. Commons-lang, ki je bil uporabljen za razčlenjevanje HTML, je nadomeščen s hitrejšo implementacijo HTMLParser po meri. lp_solve je nadomeščen s čistim rešilcem Java simplex, kar pomeni, da Datumbox ne potrebuje več posebnih sistemskih knjižnic, nameščenih v operacijskem sistemu. Še več, lp_solve je moral zapustiti, ker uporablja LGPLv2, ki ni združljiv z licenco Apache 2.0.

Različica 0.8.0 prinaša več novih funkcij in izboljšav ogrodja. Za podroben pregled sprememb preverite Changelog.

Ne pozabite klonirati kode Ogrodje Datumbox v0.8.0 iz Githuba si oglejte Primeri kode in prenesite predhodno usposobljene modele strojnega učenja iz Datumbox Zoo. Veselim se vaših komentarjev in predlogov.

Časovni žig:

Več od Datumbox