- Juuli 7, 2014
- Vasilis Vryniotis
- . 1 kommentaar
Eelmistes artiklites käsitlesime üksikasjalikult Dirichleti protsessisegude mudelid ja kuidas neid saab kasutada klasteranalüüsis. Selles artiklis tutvustame Java rakendust kaks erinevat DPMM mudelit: Dirichleti mitme muutujaga normaalsegu mudel, mida saab kasutada Gaussi andmete rühmitamiseks, ja Dirichlet-Multinomial Mixture Model, mida kasutatakse dokumentide rühmitamiseks. Java kood on avatud lähtekoodiga GPL v3 litsentsi alusel ja seda saab tasuta alla laadida aadressilt Github.
Värskendus: Datumboxi masinõppe raamistik on nüüd avatud lähtekoodiga ja tasuta lae alla. Tutvuge paketiga com.datumbox.framework.machinelearning.clustering, et näha Dirichleti protsessisegude mudelite rakendamist Javas.
Dirichleti protsessisegude mudeli juurutamine Javas
Kood rakendab Dirichleti protsessisegude mudelit koos Gibbs Sampleriga ja kasutab maatriksteegina Apache Commons Math 3.3. See on litsentsitud GPLv3 alusel, seega võite seda vabalt kasutada, muuta ja vabalt edasi levitada ning Java-rakenduse saate alla laadida aadressilt Github. Pange tähele, et kõik klastrimeetodi teoreetilised osad leiate eelmisest 5 artiklist ja üksikasjalikud Javadoci kommentaarid juurutamiseks lähtekoodis.
Allpool loetleme koodi kõrgetasemelise kirjelduse:
1. DPMM klass
DPMM on abstraktne klass ja toimib alusena erinevatele erinevatele mudelitele ja rakendustele Hiina restorani protsess ja sisaldab Gibbsi proovivõttur ahenes. Sellel on avalik meetod cluster(), mis võtab andmestiku vastu punktide loendina ja vastutab klastri analüüsi läbiviimise eest. Teised klassi kasulikud meetodid on getPointAssignments(), mida kasutatakse klastri määrangute toomiseks pärast rühmitamise lõpetamist, ja getClusterList(), mida kasutatakse tuvastatud klastrite loendi hankimiseks. DPMM sisaldab staatilist pesastatud abstraktset klassi Cluster; see sisaldab mitmeid abstraktseid meetodeid punktide haldamise ja tagumise pdf-i hindamise kohta, mida kasutatakse klastri ülesannete hindamiseks.
2. GaussianDPMM klass
GaussianDPMM on Dirichleti mitme muutujaga normaalse segu mudeli rakendamine ja laiendab DPMM-klassi. See sisaldab kõiki meetodeid, mis on vajalikud tõenäosuste hindamiseks Gaussi eeldusel. Lisaks sisaldab see staatilist pesastatud klassi Cluster, mis rakendab kõiki klassi DPMM.Cluster abstraktseid meetodeid.
3. MultinomialDPMM klass
MultinomialDPMM rakendab Dirichlet-Multinomial Mixture Model ja laiendab DPMM klassi. Sarnaselt GaussianDPMM klassiga sisaldab see kõiki meetodeid, mis on vajalikud tõenäosuste hindamiseks Multinomial-Dirichleti eeldusel, ja sisaldab staatilist pesastatud klassi Cluster, mis rakendab DPMM.Clusteri abstraktseid meetodeid.
4. SRS klass
SRS-klassi kasutatakse lihtsa juhusliku proovivõtu tegemiseks sagedustabelist. Gibbsi proovivõttur kasutab seda uute klastri määrangute hindamiseks iteratiivse protsessi igas etapis.
5. Punktiklass
Klass Point toimib korteegina, mis salvestab kirje andmed koos selle ID-ga.
6. Apache Commons Math Lib
Apache Commons Math 3.3 lib-i kasutatakse maatriksi korrutamiseks ja see on meie rakenduse ainus sõltuvus.
7. DPMMNäidisklass
See klass sisaldab näiteid Java-rakenduse kasutamise kohta.
Java juurutamise kasutamine
Koodi kasutaja saab seadistada kõiki segumudelite parameetreid, sealhulgas mudelitüüpe ja hüperparameetreid. Järgmises koodilõigul näeme, kuidas algoritm initsialiseeritakse ja käivitatakse:
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();
Allpool näeme algoritmi käitamise tulemusi sünteetilisel andmekogumil, mis koosneb 300 andmepunktist. Punktid genereeriti algselt 3 erineva jaotusega: N([10,50], I), N([50,10], I) ja N([150,100], I).
Joonis 1: Demoandmestiku hajuvusdiagramm
Algoritm tuvastas pärast 10 iteratsiooni käitamist järgmised 3 klastri keskust: [10.17, 50.11], [49.99, 10.13] ja [149.97, 99.81]. Lõpuks, kuna käsitleme kõike Bayesi viisil, ei saa me anda mitte ainult klastri keskuste ühepunktilisi hinnanguid, vaid ka nende tõenäosusjaotust, kasutades valem .
Joonis 2: Klastrite tsentrite tõenäosuste hajuvusdiagramm
Ülaltoodud joonisel kujutame need tõenäosused; punased alad näitavad suurt tõenäosust olla klastri keskpunktis ja mustad alad näitavad väikest tõenäosust.
Java-rakenduse kasutamiseks reaalmaailma rakendustes peate kirjutama välise koodi, mis teisendab teie algse andmestiku nõutavasse vormingusse. Lisaks võib olla vajalik täiendav kood, kui soovite väljundit visualiseerida, nagu eespool näeme. Lõpuks pange tähele, et Apache Commons Math teek on projekti kaasatud ja seega pole demode käivitamiseks vaja täiendavat konfiguratsiooni.
Kui kasutate juurutamist mõnes huvitavas projektis, kirjutage meile ja me avaldame teie projekti oma ajaveebis. Kui teile artikkel meeldib, võtke hetk ja jagage seda Twitteris või Facebookis.
- AI
- ai kunst
- ai kunsti generaator
- on robot
- tehisintellekti
- tehisintellekti sertifikaat
- tehisintellekti robot
- tehisintellekti robotid
- tehisintellekti tarkvara
- blockchain
- plokiahela konverents ai
- coingenius
- vestluslik tehisintellekt
- krüptokonverents ai
- dall's
- Datumbox
- sügav õpe
- google ai
- masinõpe
- Masinõpe ja statistika
- Platon
- plato ai
- Platoni andmete intelligentsus
- Platoni mäng
- PlatoData
- platogaming
- Programming
- skaala ai
- süntaks
- sephyrnet