यह एक अपेक्षाकृत पुराना धागा है लेकिन मैंने हाल ही में अपने काम में इस मुद्दे का सामना किया और इस चर्चा पर ठोकर खाई। इस सवाल का जवाब दिया गया है, लेकिन मुझे लगता है कि जब यह विश्लेषण की इकाई नहीं है तो पंक्तियों को सामान्य करने का खतरा है (ऊपर देखें @ डीजेहॉसन का जवाब) संबोधित नहीं किया गया है।
मुख्य बिंदु यह है कि पंक्तियों को सामान्य करना किसी भी बाद के विश्लेषण के लिए हानिकारक हो सकता है, जैसे निकटतम-पड़ोसी या के-साधन। सादगी के लिए, मैं पंक्तियों को मध्य-केंद्रित करने के लिए उत्तर को विशिष्ट रखूंगा।
इसका वर्णन करने के लिए, मैं एक हाइपरक्यूब के कोनों पर नकली गाऊसी डेटा का उपयोग करूंगा। सौभाग्य से R
वहाँ के लिए एक सुविधाजनक कार्य है (कोड जवाब के अंत में है)। 2 डी मामले में यह सीधा है कि पंक्ति-मध्य-केंद्रित डेटा 135 डिग्री पर मूल से गुजरने वाली रेखा पर गिर जाएगा। सिम्युलेटेड डेटा को क्लस्टर की सही संख्या के साथ k- साधनों का उपयोग करके क्लस्टर किया जाता है। डेटा और क्लस्टरिंग परिणाम (मूल डेटा पर पीसीए का उपयोग करके 2D में विज़ुअलाइज़ किए गए) इस तरह दिखते हैं (सबसे बाएं प्लॉट के लिए अक्ष अलग-अलग हैं)। क्लस्टरिंग प्लॉट में बिंदुओं के विभिन्न आकार जमीनी सच्चाई क्लस्टर असाइनमेंट को संदर्भित करते हैं और रंग k- साधन क्लस्टरिंग के परिणाम हैं।
डेटा पंक्ति-मध्य केंद्रित होने पर शीर्ष-बाएँ और नीचे-दाएँ क्लस्टर आधे में कट जाते हैं। इसलिए पंक्ति-मध्य-केंद्रित होने के बाद की दूरी विकृत हो जाती है और बहुत सार्थक नहीं होती है (कम से कम डेटा के ज्ञान के आधार पर)।
2 डी में आश्चर्य की बात नहीं है, अगर हम अधिक आयामों का उपयोग करते हैं तो क्या होगा? यहाँ 3 डी डेटा के साथ क्या होता है। पंक्ति-मीन-सेंटिंग के बाद क्लस्टरिंग समाधान "खराब" है।
और 4 डी डेटा के साथ समान (अब संक्षिप्तता के लिए दिखाया गया है)।
ये क्यों हो रहा है? पंक्ति-माध्य केंद्र डेटा को किसी ऐसे स्थान पर धकेलता है जहां कुछ सुविधाएँ अन्यथा होने के बजाय करीब आती हैं। यह सुविधाओं के बीच सहसंबंध में परिलक्षित होना चाहिए। आइए देखें कि (पहले मूल डेटा पर और फिर 2D और 3D मामलों के लिए पंक्ति-मध्य-केंद्रित डेटा पर)।
[,1] [,2]
[1,] 1.000 -0.001
[2,] -0.001 1.000
[,1] [,2]
[1,] 1 -1
[2,] -1 1
[,1] [,2] [,3]
[1,] 1.000 -0.001 0.002
[2,] -0.001 1.000 0.003
[3,] 0.002 0.003 1.000
[,1] [,2] [,3]
[1,] 1.000 -0.504 -0.501
[2,] -0.504 1.000 -0.495
[3,] -0.501 -0.495 1.000
तो ऐसा लगता है कि पंक्ति-मीनिंग-सेंटरिंग सुविधाओं के बीच सहसंबंध शुरू कर रहा है। यह सुविधाओं की संख्या से कैसे प्रभावित होता है? हम यह पता लगाने के लिए एक सरल सिमुलेशन कर सकते हैं। सिमुलेशन का परिणाम नीचे दिखाया गया है (फिर अंत में कोड)।
इसलिए जैसे-जैसे सुविधाओं की संख्या बढ़ती जाती है पंक्ति-मीन-सेंटरिंग का प्रभाव कम होता जाता है, कम-से-कम संबंधित विवादों के संदर्भ में। लेकिन हमने इस सिमुलेशन के लिए समान रूप से वितरित यादृच्छिक डेटा का उपयोग किया (जैसा कि शाप-आयामीता का अध्ययन करते समय सामान्य है )।
तो क्या होता है जब हम वास्तविक डेटा का उपयोग करते हैं? डेटा के आंतरिक आयाम कम होने के कारण कई बार अभिशाप लागू नहीं होता है । ऐसे मामले में मुझे लगता है कि पंक्ति-मध्य-केंद्रित एक "बुरा" विकल्प हो सकता है जैसा कि ऊपर दिखाया गया है। बेशक, किसी भी निश्चित दावे को करने के लिए अधिक कठोर विश्लेषण की आवश्यकता है।
क्लस्टरिंग सिमुलेशन के लिए कोड
palette(rainbow(10))
set.seed(1024)
require(mlbench)
N <- 5000
for(D in 2:4) {
X <- mlbench.hypercube(N, d=D)
sh <- as.numeric(X$classes)
K <- length(unique(sh))
X <- X$x
Xc <- sweep(X,2,apply(X,2,mean),"-")
Xr <- sweep(X,1,apply(X,1,mean),"-")
show(round(cor(X),3))
show(round(cor(Xr),3))
par(mfrow=c(1,1))
k <- kmeans(X,K,iter.max = 1000, nstart = 10)
kc <- kmeans(Xc,K,iter.max = 1000, nstart = 10)
kr <- kmeans(Xr,K,iter.max = 1000, nstart = 10)
pc <- prcomp(X)
par(mfrow=c(1,4))
lim <- c(min(min(X),min(Xr),min(Xc)), max(max(X),max(Xr),max(Xc)))
plot(X[,1], X[,2], xlim=lim, ylim=lim, xlab="Feature 1", ylab="Feature 2",main="Data",col=1,pch=1)
points(Xc[,1], Xc[,2], col=2,pch=2)
points(Xr[,1], Xr[,2], col=3,pch=3)
legend("topleft",legend=c("Original","Center-cols","Center-rows"),col=c(1,2,3),pch=c(1,2,3))
abline(h=0,v=0,lty=3)
plot(pc$x[,1], pc$x[,2], col=rainbow(K)[k$cluster], xlab="PC 1", ylab="PC 2", main="Cluster original", pch=sh)
plot(pc$x[,1], pc$x[,2], col=rainbow(K)[kc$cluster], xlab="PC 1", ylab="PC 2", main="Cluster center-col", pch=sh)
plot(pc$x[,1], pc$x[,2], col=rainbow(K)[kr$cluster], xlab="PC 1", ylab="PC 2", main="Cluster center-row", pch=sh)
}
सुविधाओं के सिमुलेशन में वृद्धि के लिए कोड
set.seed(2048)
N <- 1000
Cmax <- c()
Crmax <- c()
for(D in 2:100) {
X <- matrix(runif(N*D), nrow=N)
C <- abs(cor(X))
diag(C) <- NA
Cmax <- c(Cmax, max(C, na.rm=TRUE))
Xr <- sweep(X,1,apply(X,1,mean),"-")
Cr <- abs(cor(Xr))
diag(Cr) <- NA
Crmax <- c(Crmax, max(Cr, na.rm=TRUE))
}
par(mfrow=c(1,1))
plot(Cmax, ylim=c(0,1), ylab="Max. cor.", xlab="#Features",col=1,pch=1)
points(Crmax, ylim=c(0,1), col=2, pch=2)
legend("topright", legend=c("Original","Center-row"),pch=1:2,col=1:2)
संपादित करें
कुछ गुग्लिंग के बाद इस पृष्ठ पर समाप्त हो गया, जहां सिमुलेशन समान व्यवहार दिखाते हैं और प्रस्ताव करते हैं कि पंक्ति-मीन-सेंटरिंग द्वारा प्रस्तुत सहसंबंध ।- 1 / ( पी - 1 )