التجميع باستخدام نموذج خليط عملية Dirichlet في ذكاء بيانات Java PlatoBlockchain. البحث العمودي. منظمة العفو الدولية.

التكتل مع Dirichlet Process Mixture Model في Java

في المقالات السابقة ناقشنا بالتفصيل نماذج خليط عملية ديريتشليت وكيف يمكن استخدامها في التحليل العنقودي. في هذه المقالة سوف نقدم تطبيق Java لـ اثنين من نماذج DPMM مختلفة: نموذج Dirichlet Multivariate Normal Mixture الذي يمكن استخدامه لتجميع بيانات Gaussian ونموذج Dirichlet-Multinomial Mixture الذي يُستخدم لتجميع المستندات. كود Java مفتوح المصدر بموجب ترخيص GPL v3 ويمكن تنزيله مجانًا من جيثب.

تحديث: أصبح Datumbox Machine Learning Framework مفتوح المصدر ومجانيًا الآن بإمكانك تحميله. تحقق من الحزمة com.datumbox.framework.machinelearning.clustering لرؤية تنفيذ نماذج Dirichlet Process Mixture Models في Java.

تنفيذ Dirichlet Process Mixture Model في Java

تقوم الكود بتنفيذ نموذج Dirichlet Process Mixture مع Gibbs Sampler ويستخدم Apache Commons Math 3.3 كمكتبة مصفوفة. تم ترخيصه بموجب GPLv3 لذلك لا تتردد في استخدامه وتعديله وإعادة توزيعه بحرية ويمكنك تنزيل تطبيق Java من جيثب. لاحظ أنه يمكنك العثور على جميع الأجزاء النظرية لطريقة التجميع في المقالات الخمس السابقة وتعليقات جافادوك التفصيلية للتنفيذ في الكود المصدري.

أدناه نقوم بإدراج وصف عالي المستوى في الكود:

1. فئة DPMM

DPMM هي فئة مجردة وتعمل كقاعدة لمختلف النماذج المختلفة ، وتنفذ عملية المطعم الصيني ويحتوي على منهار جيبس ​​سامبلر. يحتوي على مجموعة الطريقة العامة () التي تتلقى مجموعة البيانات كقائمة من النقاط وتكون مسؤولة عن إجراء تحليل الكتلة. من الطرق المفيدة الأخرى للفصل هي getPointAssignments () والتي تُستخدم لاسترداد تعيينات المجموعة بعد اكتمال التجميع و getClusterList () التي تُستخدم للحصول على قائمة المجموعات المحددة. يحتوي DPMM على الكتلة فئة مجردة متداخلة ثابتة؛ يحتوي على العديد من الطرق المجردة المتعلقة بإدارة النقاط وتقدير ملف pdf اللاحق المستخدم لتقدير تخصيصات المجموعة.

2. فئة GaussianDPMM

إن GaussianDPMM هو تطبيق Dirichlet Multivariate Normal Mixture Model ويوسع فئة DPMM. يحتوي على جميع الطرق المطلوبة لتقدير الاحتمالات في ظل افتراض غاوسي. علاوة على ذلك ، فإنه يحتوي على فئة Cluster ثابتة ثابتة والتي تنفذ جميع الطرق المجردة لفئة DPMM.Cluster.

3. فئة DPMM متعددة الحدود

يقوم MultinomialDPMM بتنفيذ نموذج Dirichlet-Multinomial Mixture ويوسع فئة DPMM. على غرار فئة GaussianDPMM ، فإنه يحتوي على جميع الطرق المطلوبة لتقدير الاحتمالات ضمن افتراض Multinomial-Dirichlet ويحتوي على فئة الفئة المتداخلة الثابتة التي تنفذ الأساليب المجردة لـ DPMM.Cluster.

4. فئة SRS

تُستخدم فئة SRS لإجراء أخذ عينات عشوائية بسيطة من جدول تردد. يتم استخدامه بواسطة Gibbs Sampler لتقدير تعيينات المجموعة الجديدة في كل خطوة من خطوات العملية التكرارية.

5. فئة النقطة

تُعد فئة Point بمثابة مجموعة تخزن بيانات السجل جنبًا إلى جنب مع المعرف الخاص به.

6. مكتبة أباتشي كومنز للرياضيات

يتم استخدام Apache Commons Math 3.3 lib لمضاعفات المصفوفة وهي التبعية الوحيدة لتطبيقنا.

7. فئة DPMMExample

تحتوي هذه الفئة على أمثلة حول كيفية استخدام تطبيق Java.

باستخدام تطبيق Java

مستخدم الكود قادر على تكوين جميع معلمات نماذج الخليط ، بما في ذلك أنواع النماذج والمعلمات الفائقة. في مقتطف الكود التالي يمكننا أن نرى كيف يتم تهيئة الخوارزمية وتنفيذها:

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();

أدناه يمكننا رؤية نتائج تشغيل الخوارزمية على مجموعة بيانات تركيبية تتكون من 300 نقطة بيانات. تم إنشاء النقاط في الأصل بواسطة 3 توزيعات مختلفة: N ([10,50،50,10] ، I) ، N ([150,100،XNUMX] ، I) و N ([XNUMX،XNUMX] ، I).

مخطط التشتت1
الشكل 1: مخطط مبعثر لمجموعة البيانات التجريبية

بعد تشغيل الخوارزمية لعشر تكرارات ، حددت المراكز العنقودية الثلاثة التالية: [10 ، 3] ، [10.17 ، 50.11] و [49.99 ، 10.13]. أخيرًا ، نظرًا لأننا نتعامل مع كل شيء بطريقة بايزي ، فنحن لا نستطيع فقط تقديم تقديرات ذات نقطة واحدة لمراكز الكتلة ولكن أيضًا توزيع احتمالية لها باستخدام معادلة معادلة.

scatterplot2-خريطة الحرارة
الشكل 2: مخطط مبعثر لاحتمالات مراكز المجموعات

في الشكل أعلاه نرسم تلك الاحتمالات ؛ تشير المناطق الحمراء إلى احتمال كبير لكونها مركزًا للعنقود بينما تشير المناطق السوداء إلى احتمال ضعيف.

لاستخدام تطبيق Java في تطبيقات العالم الحقيقي ، يجب عليك كتابة رمز خارجي يحول مجموعة البيانات الأصلية إلى التنسيق المطلوب. علاوة على ذلك ، قد يكون من الضروري وجود رمز إضافي إذا كنت ترغب في تصور الإخراج كما نرى أعلاه. أخيرًا ، لاحظ أن مكتبة Apache Commons Math مضمنة في المشروع ، وبالتالي لا يلزم تكوين إضافي لتشغيل العروض التوضيحية.

إذا كنت تستخدم التنفيذ في مشروع مثير للاهتمام ، أرسل لنا سطرًا وسنعرض مشروعك على مدونتنا. أيضًا إذا أعجبك المقال ، فيرجى التوقف لحظة ومشاركته على Twitter أو Facebook.

الطابع الزمني:

اكثر من داتومبوكس