এটি তুলনামূলকভাবে পুরানো থ্রেড তবে আমি সম্প্রতি আমার কাজে এই সমস্যাটির মুখোমুখি হয়েছি এবং এই আলোচনায় হোঁচট খেয়েছি। প্রশ্নের উত্তর দেওয়া হয়েছে তবে আমি মনে করি যে সারিগুলি যখন বিশ্লেষণের একক না হয় (উপরের @ ডি জোনসনের উত্তর দেখুন) এটি সীমাবদ্ধ করার ঝুঁকি সমাধান করা হয়নি।
মূল বিষয়টি হ'ল সারিগুলি স্বাভাবিক করা পরবর্তী যে কোনও বিশ্লেষণের জন্য ক্ষতিকারক হতে পারে যেমন নিকটতম-প্রতিবেশী বা কে-মাধ্যমের মতো। সরলতার জন্য, আমি উত্তরটি নির্দিষ্ট করে রাখব সারিগুলিকে বোঝাতে।
এটি চিত্রিত করার জন্য, আমি একটি হাইপারকিউবের কোণে সিমুলেটেড গাউসিয়ান ডেটা ব্যবহার করব। ভাগ্যক্রমে এর R
জন্য একটি সুবিধাজনক ফাংশন রয়েছে (কোডটির উত্তর শেষে রয়েছে)। 2 ডি ক্ষেত্রে এটি সোজা যে সারি-মধ্য-কেন্দ্রিক ডেটা 135 ডিগ্রীতে উত্সের মধ্য দিয়ে যাওয়ার একটি লাইনে পড়বে। সিমুলেটেড ডেটা তখন ক্লাস্টারগুলির সঠিক সংখ্যার সাথে কে-মানে ব্যবহার করে ক্লাস্টার করা হয়। ডেটা এবং ক্লাস্টারিং ফলাফল (মূল ডেটাতে পিসিএ ব্যবহার করে 2D তে দৃশ্যমান) এর মতো দেখতে (বাম দিকের প্লটটির অক্ষগুলি পৃথক পৃথক)। ক্লাস্টারিং প্লটের পয়েন্টগুলির বিভিন্ন আকার গ্রাউন্ড-ট্রুথ ক্লাস্টার অ্যাসাইনমেন্টকে নির্দেশ করে এবং রঙগুলি কে-মানে ক্লাস্টারিংয়ের ফলস্বরূপ।
উপরের-বাম এবং নীচে-ডান ক্লাস্টারগুলি অর্ধেক কেটে যায় যখন ডেটা সারি-কেন্দ্রিক হয়। সুতরাং সারি-গড়-কেন্দ্রিককরণের পরে দূরত্বগুলি বিকৃত হয়ে যায় এবং খুব অর্থবহ হয় না (অন্তত ডেটাটির জ্ঞানের ভিত্তিতে)।
2 ডি তে এত অবাক হওয়ার কিছু নেই, যদি আমরা আরও মাত্রা ব্যবহার করি? 3 ডি ডেটা দিয়ে যা ঘটে তা এখানে। সারি-গড়-কেন্দ্রিককরণের পরে ক্লাস্টারিং সমাধানটি "খারাপ"।
এবং 4 ডি ডেটার সাথে সমান (এখন ব্রেভিটির জন্য দেখানো হয়েছে)।
ইহা কি জন্য ঘটিতেছে? সারি-গড়-কেন্দ্রিক তথ্যগুলিকে এমন কিছু জায়গায় ঠেলে দেয় যেখানে কিছু বৈশিষ্ট্য অন্যথায় যেমন আসে তার চেয়ে কাছে আসে। বৈশিষ্ট্যগুলির মধ্যে পারস্পরিক সম্পর্কের ক্ষেত্রে এটি প্রতিফলিত হওয়া উচিত। আসুন এটি দেখতে দিন (প্রথমে মূল ডেটাতে এবং তারপরে 2D এবং 3 ডি ক্ষেত্রে সারি-কেন্দ্রিক ডেটা-তে)।
[,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 )