- Julij 7, 2014
- Vasilis Vryniotis
- . 1 komentar
V prejšnjih člankih smo podrobno razpravljali o Dirichletovi modeli mešanic in kako jih je mogoče uporabiti pri analizi grozdov. V tem članku bomo predstavili izvajanje Java dva različna modela DPMM: Dirkletov večvazijski model običajne mešanice, ki ga je mogoče uporabiti za združevanje Gaussovih podatkov, in Dirichletov multinomial model mešanice, ki se uporablja za združevanje dokumentov. Koda Java je z licenco GPL v3 odprta in jo lahko brezplačno prenesete z nje GitHub.
Posodobitev: Okvir za strojno učenje Datebox je zdaj odprtokoden in brez njega prenesi. Oglejte si paket com.datumbox.framework.machinelearning.clustering in si oglejte izvedbo modelov mešanic Dirichlet Process Mešanice na Javi.
Izvedba modela Dirichlet Process Mešanica na Javi
Koda implementira Dirichletov model mešanice procesa z Gibbsovim vzorčevalnikom in uporablja Apache Commons Math 3.3 kot knjižnico matric. Licenciran je pod GPLv3, zato ga lahko uporabljate, spreminjate in prosto distribuirate, izvajanje Java pa lahko prenesete iz GitHub. Upoštevajte, da lahko vse teoretične dele metode združevanja najdete v prejšnjih 5 člankih in podrobne Javadoc-ove komentarje za izvajanje v izvorni kodi.
Spodaj navajamo opis na visoki ravni za kodo:
1. razred DPMM
DPMM je abstrakten razred in deluje kot osnova za različne modele, ki izvajajo Kitajski restavracijski postopek in vsebuje Vzorčni vzorček Gibbsa. Ima javno metodo cluster (), ki nabor podatkov prejme kot seznam točk in je odgovorna za izvajanje analize gruče. Druge uporabne metode razreda so getPointAssignments (), ki se uporablja za pridobivanje dodeljevanja gruč po končanem združevanju v gruče in getClusterList (), ki se uporablja za pridobivanje seznama identificiranih gruč. DPMM vsebuje statični ugnezdeni abstraktni razred Cluster; vsebuje več abstraktnih metod v zvezi z upravljanjem točk in oceno posteriornega pdf-ja, ki se uporabljajo za oceno dodeljevanja grozdov.
2. razred GaussianDPMM
GaussianDPMM je implementacija Dirichletovega multivariatnega modela običajnih mešanic in razširja razred DPMM. Vsebuje vse metode, ki so potrebne za oceno verjetnosti po Gaussovi predpostavki. Poleg tega vsebuje statični ugnezdeni razred Cluster, ki izvaja vse abstraktne metode razreda DPMM.Cluster.
3. MultinomialDPMM razred
MultinomialDPMM izvaja model Dirichlet-Multinomial Mešanica in razširi razred DPMM. Podobno kot razred GaussianDPMM vsebuje vse metode, ki so potrebne za oceno verjetnosti po predpostavki Multinomial-Dirichlet, in vsebuje statični ugnezdeni razred grozda, ki izvaja abstraktne metode DPMM.Cluster.
4. razred SRS
Razred SRS se uporablja za izvajanje preprostega naključnega vzorčenja iz frekvenčne tabele. Gibbsov vzorčevalnik uporablja za oceno novih dodelitev grozdov v vsakem koraku iterativnega postopka.
5. Točkovni razred
Razred Point služi kot nabor, ki shranjuje podatke zapisa skupaj s svojim id-jem.
6. Apache Commons Math Lib
Lipa Apache Commons Math 3.3 se uporablja za množenje matric in je edina odvisnost našega izvajanja.
7. razred DPMMExample
Ta razred vsebuje primere uporabe Java aplikacije.
Uporaba izvedbe Java
Uporabnik kode lahko konfigurira vse parametre modelov mešanic, vključno z vrstami modelov in hiperparametri. V naslednjem delčku kode lahko vidimo, kako se algoritem inicializira in izvede:
List<Point> pointList = new ArrayList<>(); //add records in pointList //Dirichlet Process parameter Integer dimensionality = 2; double alpha = 1.0; //Hyper parameters of Base Function int kappa0 = 0; int nu0 = 1; RealVector mu0 = new ArrayRealVector(new double[]{0.0, 0.0}); RealMatrix psi0 = new BlockRealMatrix(new double[][]{{1.0,0.0},{0.0,1.0}}); //Create a DPMM object DPMM dpmm = new GaussianDPMM(dimensionality, alpha, kappa0, nu0, mu0, psi0); int maxIterations = 100; int performedIterations = dpmm.cluster(pointList, maxIterations); //get a list with the point ids and their assignments Map<Integer, Integer> zi = dpmm.getPointAssignments();
Spodaj lahko vidimo rezultate izvajanja algoritma na sintetičnem naboru podatkov, ki je sestavljen iz 300 podatkovnih točk. Točke so prvotno ustvarile 3 različne porazdelitve: N ([10,50], I), N ([50,10], I) in N ([150,100], I).
Slika 1: Scatter Plot predstavitvenih podatkov
Po zagonu 10 iteracij je algoritem določil naslednja 3 centra grozdov: [10.17, 50.11], [49.99, 10.13] in [149.97, 99.81]. Nazadnje, ker vse obravnavamo na Bayesov način, ne moremo zagotoviti le enotočkovnih ocen centrov grozdov, temveč tudi njihovo verjetnostno porazdelitev z uporabo Formula .
Slika 2: Razpršenost verjetnosti središč grozdov
Na zgornji sliki prikazujemo te verjetnosti; rdeča območja označujejo veliko verjetnost, da so središče gruče, črna območja pa majhno.
Če želite uporabljati izvajanje Java v aplikacijah v resničnem svetu, morate napisati zunanjo kodo, ki pretvori vaš prvotni nabor podatkov v želeno obliko. Poleg tega bo morda potrebna dodatna koda, če želite vizualizirati izhod, kot vidimo zgoraj. Nazadnje upoštevajte, da je knjižnica Apache Commons Math vključena v projekt, zato za zagon predstavitev ni potrebna dodatna konfiguracija.
Če uporabite izvedbo v zanimivem projektu, nam pusti vrstico in vaš projekt bomo predstavili na našem blogu. Če vam je članek všeč, si vzemite trenutek in ga delite na Twitterju ali Facebooku.
- AI
- ai art
- ai art generator
- imajo robota
- Umetna inteligenca
- certificiranje umetne inteligence
- robot z umetno inteligenco
- roboti z umetno inteligenco
- programska oprema za umetno inteligenco
- blockchain
- blockchain konferenca ai
- coingenius
- pogovorna umetna inteligenca
- kripto konferenca ai
- dall's
- Datumbox
- globoko učenje
- strojno učenje
- Strojno učenje in statistika
- platon
- platon ai
- Platonova podatkovna inteligenca
- Igra Platon
- PlatoData
- platogaming
- Programiranje
- lestvica ai
- sintaksa
- zefirnet