संभव डुप्लिकेट:
K-means algorithm variation with equal cluster sizeबराबर आकार के समूह n k में अंक समूहों
संपादित करें: इस सवाल casperOne यह मेरे लिए बिंदु बाहर की तरह डुप्लिकेट है। https://stats.stackexchange.com/questions/8744/clustering-procedure-where-each-cluster-has-an-equal-number-of-points
मेरे आवश्यकताओं
एक परियोजना मैं समूह n अंक (एक्स, वाई) बराबर आकार के कश्मीर समूहों में की जरूरत में (एन/ट): वैसे भी यहाँ एक अधिक सामान्य सवाल है कि कवर यह एक है । जहां एक्स और वाई डबल फ्लोटिंग नंबर हैं, एन 100 से 10000 तक हो सकते हैं और के 2 से 100 तक हो सकते हैं। इसके अलावा ए को एल्गोरिदम रन से पहले जाना जाता है।
मेरे प्रयोगों
मैं http://en.wikipedia.org/wiki/K-means_clustering एल्गोरिथ्म, जो काम महान और तेजी से मोटे तौर पर एक ही आकार के बिल्कुल कश्मीर समूहों का निर्माण करने के का उपयोग करके समस्या को हल करने शुरू कर दिया।
लेकिन मेरी समस्या यह है, के-मतलब का मतलब लगभग उसी आकार के क्लस्टर का उत्पादन होता है, जहां मुझे क्लस्टर को एक ही आकार के होने की आवश्यकता होती है (या अधिक सटीक होने के लिए: मुझे उन्हें फर्श के बीच आकार (एन/के) और छत (एन/के))।
इससे पहले कि आप इसे इंगित करें, हाँ मैंने पहले उत्तर K-means algorithm variation with equal cluster size पर आजमाया, जो एक अच्छा विचार की तरह लगता है।
मुख्य विचार क्लस्टर उत्पादन की सरणी को के-माध्यमों द्वारा प्रोसेस करना है। सबसे छोटे क्लस्टर से सबसे छोटे तक। हम उन समूहों के आकार को कम करते हैं जिनके पास अन्य बिंदुओं को अतिरिक्त बिंदुओं को स्थानांतरित करके एन/के सदस्यों से अधिक होता है। केवल क्लस्टर को छोड़कर जो पहले ही कम हो चुके हैं।
यहाँ छद्म कोड मैं लागू किया है:
n is the number of point
k is the number of cluster
m = n/k (the ideal cluster size)
c is the array of cluster after K-means
c' = c sorted by size in descending order
for each cluster i in c' where i = 1 to k - 1
n = size of cluster i - m (the number of point to move)
loop n times
find a point p in cluster i with minimal distance to a cluster j in c' where j > i
move point p from cluster i to cluster j
end loop
recalculate centroids
end for each
इस एल्गोरिथ्म के साथ समस्या यह है कि इस प्रक्रिया के अंत (जब मैं करीब आ k करने के लिए), हम ग में एक क्लस्टर जे चुनना है पास '(जहां जे> मैं क्योंकि हमें पहले ही संसाधित क्लस्टर को छोड़ने की ज़रूरत है), लेकिन यह क्लस्टर जे जो हमने पाया है क्लस्टर I से दूर हो सकता है, इस प्रकार क्लस्टर की अवधारणा को तोड़ सकता है।
मेरा प्रश्न
वहाँ है एक पोस्ट कश्मीर का मतलब एल्गोरिथ्म या एक K-मतलब है संस्करण है कि मेरे आवश्यकताओं को पूरा कर सकते हैं, या मैं शुरू से ही गलत हूँ और मैं एक दूसरे एल्गोरिथ्म क्लस्टरिंग खोजने की जरूरत है?
पीएस: मुझे अपने आप को समाधान लागू करने की कोई बात नहीं है, लेकिन अगर मैं लाइब्रेरी का उपयोग कर सकता हूं, और आदर्श रूप से जावा में यह अच्छा होगा।
आप अपने प्रारंभिक क्लस्टर कैसे चुनते हैं? – mvds
क्लस्टर और उनके प्रारंभिक सेंट्रॉइड की संख्या उपयोगकर्ता (मानव) द्वारा चुनी जाती है। –
आपका ** इष्टतमता मानदंड ** क्या है? मुझे नहीं लगता कि इसका उपयोग करके और फिर "फिक्सिंग" के-मतलब परिणाम जाने का तरीका है। आप अपने बाधाओं के भीतर आकार सुनिश्चित करने के लिए के-साधनों को संशोधित कर सकते हैं। –