خوشه بندی با مدل مخلوط فرآیند دیریکله در هوش داده پلاتو بلاک چین جاوا. جستجوی عمودی Ai.

خوشه بندی با مدل مخلوط فرآیند دیریکله در جاوا

در مقالات قبلی به تفصیل در مورد آن بحث کردیم مدل های مخلوط فرآیند دیریکله و چگونه می توان از آنها در تحلیل خوشه ای استفاده کرد. در این مقاله پیاده سازی جاوا از دو مدل DPMM مختلف: مدل مخلوط معمولی چند متغیره دیریکله که می تواند برای خوشه بندی داده های گاوسی استفاده شود و مدل مخلوط چند جمله ای دیریکله که برای خوشه بندی اسناد استفاده می شود. کد جاوا تحت مجوز GPL v3 منبع باز است و می توان آن را به صورت رایگان از اینجا دانلود کرد گیتهاب.

به روز رسانی: چارچوب یادگیری ماشین Datumbox اکنون منبع باز و رایگان است دانلود. برای مشاهده اجرای مدل‌های مخلوط فرآیند دیریکله در جاوا، بسته com.datumbox.framework.machinelearning.clustering را بررسی کنید.

پیاده سازی مدل مخلوط فرآیند دیریکله در جاوا

این کد مدل مخلوط فرآیند دیریکله را با نمونه‌گیر گیبس پیاده‌سازی می‌کند و از Apache Commons Math 3.3 به عنوان یک کتابخانه ماتریسی استفاده می‌کند. تحت مجوز GPLv3 است، بنابراین می توانید از آن استفاده کنید، آن را تغییر دهید و آزادانه آن را دوباره توزیع کنید و می توانید پیاده سازی جاوا را از اینجا دانلود کنید. گیتهاب. توجه داشته باشید که می توانید تمام قسمت های نظری روش خوشه بندی را در 5 مقاله قبلی و نظرات جزئی جاوادوک برای پیاده سازی در کد منبع پیدا کنید.

در زیر توضیح سطح بالا در مورد کد را لیست می کنیم:

1. کلاس DPMM

DPMM یک کلاس انتزاعی است و مانند پایه ای برای مدل های مختلف عمل می کند و آن ها را پیاده سازی می کند فرآیند رستوران چینی و حاوی گیبس سمپلر فرو ریخت. دارای متد عمومی ()cluster است که مجموعه داده را به عنوان لیستی از نقاط دریافت می کند و مسئول انجام تجزیه و تحلیل خوشه است. سایر متدهای مفید کلاس عبارتند از getPointAssignments() که برای بازیابی انتساب های خوشه پس از تکمیل خوشه بندی و getClusterList() که برای دریافت لیست خوشه های شناسایی شده استفاده می شود. DPMM شامل کلاس انتزاعی تودرتو ایستا است. این شامل چندین روش انتزاعی در مورد مدیریت امتیازات و تخمین pdf پسین است که برای تخمین انتساب های خوشه ای استفاده می شود.

2. کلاس GaussianDPMM

GaussianDPMM اجرای مدل مخلوط نرمال چند متغیره دیریکله است و کلاس DPMM را گسترش می دهد. این شامل تمام روش هایی است که برای برآورد احتمالات تحت فرض گاوسی مورد نیاز است. علاوه بر این شامل کلاس تودرتو ایستا Cluster است که تمام متدهای انتزاعی کلاس DPMM.Cluster را پیاده سازی می کند.

3. کلاس چند جمله ای DPMM

چند جمله ای DPMM مدل مخلوط دیریکله-چند جمله ای را پیاده سازی می کند و کلاس DPMM را گسترش می دهد. به طور مشابه کلاس GaussianDPMM، شامل تمام روش‌هایی است که برای تخمین احتمالات تحت فرض چندجمله‌ای-دیریکله لازم است و شامل کلاس تودرتو ایستا است که روش‌های انتزاعی DPMM.Cluster را پیاده‌سازی می‌کند.

4. کلاس SRS

کلاس SRS برای انجام نمونه گیری تصادفی ساده از جدول فرکانس استفاده می شود. توسط Gibbs Sampler برای تخمین تخصیص خوشه های جدید در هر مرحله از فرآیند تکراری استفاده می شود.

5. کلاس امتیاز

کلاس Point به عنوان یک تاپل عمل می کند که داده های رکورد را به همراه شناسه آن ذخیره می کند.

6. Apache Commons Math Lib

Apache Commons Math 3.3 lib برای ضرب ماتریس استفاده می شود و تنها وابستگی پیاده سازی ما است.

7. کلاس DPMMExample

این کلاس شامل نمونه هایی از نحوه استفاده از پیاده سازی جاوا می باشد.

با استفاده از پیاده سازی جاوا

کاربر کد می تواند تمام پارامترهای مدل های مخلوط، از جمله انواع مدل و هایپرپارامترها را پیکربندی کند. در قطعه کد زیر می بینیم که چگونه الگوریتم مقداردهی اولیه و اجرا می شود:

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] و [149.97، 99.81]. در نهایت از آنجایی که ما همه چیز را به شیوه بیزی رفتار می کنیم، می توانیم نه تنها تخمین های تک نقطه ای از مراکز خوشه را ارائه دهیم، بلکه توزیع احتمال آنها را نیز با استفاده از فرمول معادله.

scatterplot2-heatmap
شکل 2: نمودار پراکندگی احتمالات مراکز خوشه ها

در شکل بالا این احتمالات را رسم می کنیم. نواحی قرمز نشان دهنده احتمال زیاد بودن در مرکز یک خوشه و نواحی سیاه نشان دهنده احتمال کم است.

برای استفاده از پیاده سازی جاوا در برنامه های کاربردی دنیای واقعی، باید کد خارجی بنویسید که مجموعه داده اصلی شما را به فرمت مورد نیاز تبدیل کند. علاوه بر این، اگر می‌خواهید خروجی را همانطور که در بالا می‌بینیم تجسم کنید، ممکن است کد اضافی لازم باشد. در نهایت توجه داشته باشید که کتابخانه ریاضی Apache Commons در پروژه گنجانده شده است و بنابراین برای اجرای دموها نیازی به پیکربندی اضافی نیست.

اگر از پیاده‌سازی در پروژه‌ای جالب استفاده می‌کنید، به ما خط بزنید تا پروژه شما را در وبلاگ خود به نمایش بگذاریم. همچنین اگر مقاله را دوست دارید، لطفاً کمی وقت بگذارید و آن را در توییتر یا فیس بوک به اشتراک بگذارید.

تمبر زمان:

بیشتر از Datumbox