ডেটা পয়েন্ট: (7,1), (3,4), (1,5), (5,8), (1,3), (7,8), (8,2), (5,9) (8,0)
l = 2 // ওভার স্যাম্পলিং ফ্যাক্টর
k = 3 // নং। কাঙ্ক্ষিত গুচ্ছের
ধাপ 1:
ধরুন প্রথম centroid হয় হল { গ 1 } = { ( 8 , 0 ) } । এক্স = { x 1 , এক্স 2 , এক্স 3 , এক্স 4 , এক্স 5 , এক্স 6 , এক্স 7 , এক্স 8 } = { ( 7 , 1 ) , ( 3 , 4 ) , ( 1সি{ গ1} = { ( 8 , 0 ) }এক্স= { x1, এক্স2, এক্স3, এক্স4, এক্স5, এক্স6, এক্স7, এক্স8} = { ( 7 , 1 ) , ( 3 , 4 ) , ( 1 , 5 ) , ( 5 , 8 ) , ( 1 , 3 ) , ( 7 , 8 ) ,( 8 , 2 ) , ( 5 , 9 ) }
ধাপ ২:
সেট থেকে সব পয়েন্ট থেকে সব ক্ষুদ্রতম 2-আদর্শ দূরত্বের (ইউক্লিডিয় দূরত্ব) এর সমষ্টি এক্স থেকে সব পয়েন্ট সি । অন্য কথায়, এক্স এর প্রতিটি পয়েন্টের জন্য সি এর নিকটতম বিন্দুটির দূরত্বসন্ধান করুন, শেষে এই সমস্ত ন্যূনতম দূরত্বের যোগফল গণনা করুন, এক্স এর প্রতিটি পয়েন্টের জন্য একটি করে।φএক্স( গ)এক্সসিএক্সসিএক্স
বোঝাতে সঙ্গে থেকে দূরত্ব হিসাবে এক্স আমি নিকটতম বিন্দু সি । আমাদের তখন ψ = ∑ n i = 1 d 2 C ( x i ) আছে ।ঘ2সি( এক্সআমি)এক্সআমিসিψ = ∑এনi = 1ঘ2সি( এক্সআমি)
দ্বিতীয় ধাপে, একটি একক উপাদান থাকে (পদক্ষেপ 1 দেখুন) এবং এক্স সমস্ত উপাদানগুলির সেট। এই ধাপে d 2 C ( x i ) কেবল C এবং x i এর বিন্দুর মধ্যবর্তী দূরত্ব । এইভাবে ϕ = ∑ n i = 1 | | x i - c | | ঘ ।সিএক্সঘ2সি( এক্সআমি)সিএক্সআমিϕ = ∑এনi = 1| | এক্সআমি- গ | |2
এল ও জি ( ψ ) = ল ও জি ( 52.128 ) = 3.95 = 4 ( আর ও ইউ এন ডি ই ডি)ψ = ∑এনi = 1ঘ2( এক্সআমি, গ1) = 1.41 + 6.4 + 8.6 + 8.54 + 7.61 + 8.06 + 2 + 9.4 = 52.128
l ও জি( ψ ) = l ও জি( 52.128 ) = 3.95 = 4 ( আর ও ও এন ডিই ডি)
তবে খেয়াল করুন যে ৩ য় ধাপে, সাধারণ সূত্র প্রয়োগ করা হয় কারণ একাধিক পয়েন্ট থাকবে।সি
ধাপ 3:
পূর্বে গণনা করা l o g ( ψ ) এর জন্য লুপটি কার্যকর করা হয়।l ও জি( ψ )
এক্সএক্সএক্সআমিপিএক্স= l ডি2( এক্স , সি) / ϕএক্স( গ)ঠঘ2( এক্স , সি)φএক্স( গ) ধাপ 2 এ ব্যাখ্যা করা হয়েছে।
অ্যালগরিদম সহজভাবে:
- এক্সএক্সআমি
- এক্সআমিpxi
- [0,1]pxiC′
- C′C
lX
for(int i=0; i<4; i++) {
// compute d2 for each x_i
int[] psi = new int[X.size()];
for(int i=0; i<X.size(); i++) {
double min = Double.POSITIVE_INFINITY;
for(int j=0; j<C.size(); j++) {
if(min>d2(x[i],c[j])) min = norm2(x[i],c[j]);
}
psi[i]=min;
}
// compute psi
double phi_c = 0;
for(int i=0; i<X.size(); i++) phi_c += psi[i];
// do the drawings
for(int i=0; i<X.size(); i++) {
double p_x = l*psi[i]/phi;
if(p_x >= Random.nextDouble()) {
C.add(x[i]);
X.remove(x[i]);
}
}
}
// in the end we have C with all centroid candidates
return C;
পদক্ষেপ 4:
wC0Xxi∈XjCw[j]1w
double[] w = new double[C.size()]; // by default all are zero
for(int i=0; i<X.size(); i++) {
double min = norm2(X[i], C[0]);
double index = 0;
for(int j=1; j<C.size(); j++) {
if(min>norm2(X[i],C[j])) {
min = norm2(X[i],C[j]);
index = j;
}
}
// we found the minimum index, so we increment corresp. weight
w[index]++;
}
পদক্ষেপ 5:
wkkp(i)=w(i)/∑mj=1wj
for(int k=0; k<K; k++) {
// select one centroid from candidates, randomly,
// weighted by w
// see kmeans++ and you first idea (which is wrong for step 3)
...
}
পূর্ববর্তী সমস্ত পদক্ষেপগুলি ক্লাস্টারিং অ্যালগরিদমের স্বাভাবিক প্রবাহের সাথে, কামেন ++ এর ক্ষেত্রে যেমন চলতে থাকে
আমি আশা করি এখন আরও পরিষ্কার হয়ে গেছে।
[পরে, পরে সম্পাদনা করুন]
আমি লেখকদের তৈরি একটি উপস্থাপনাও পেয়েছি, যেখানে আপনি পরিষ্কারভাবে বলতে পারবেন না যে প্রতিটি পুনরাবৃত্তিতে একাধিক পয়েন্ট নির্বাচন করা যেতে পারে। উপস্থাপনা এখানে ।
[পরে @ পেরার ইস্যুটি সম্পাদনা করুন]
log(ψ)
Clog(ψ)
আরেকটি বিষয় লক্ষ্যণীয় হ'ল একই পৃষ্ঠায় নিম্নলিখিত নোটটি উল্লেখ করেছে:
অনুশীলনে, বিভাগ 5 এ আমাদের পরীক্ষামূলক ফলাফলগুলি দেখায় যে ভাল সমাধানে পৌঁছানোর জন্য কেবল কয়েকটি রাউন্ডই যথেষ্ট।
log(ψ)