Kmeans ক্লাস্টারিংয়ের জন্য আর-তে স্ট্যাটাস প্যাকেজ ব্যবহার করা


10

গুচ্ছ প্যাকেজের এক বা দুটি দিক বুঝতে আমার অসুবিধা হচ্ছে। আমি কুইক-আর এর কাছ থেকে উদাহরণ অনুসরণ করছি , কিন্তু বিশ্লেষণের এক বা দুটি দিক বুঝতে পারছি না। আমি এই বিশেষ উদাহরণটির জন্য কোডটি ব্যবহার করছি included

## Libraries
library(stats)
library(fpc) 

## Data
mydata = structure(list(a = c(461.4210925, 1549.524107, 936.42856, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 131.4349206, 0, 762.6110846, 
3837.850406), b = c(19578.64174, 2233.308842, 4714.514274, 0, 
2760.510002, 1225.392118, 3706.428246, 2693.353714, 2674.126613, 
592.7384164, 1820.976961, 1318.654162, 1075.854792, 1211.248996, 
1851.363623, 3245.540062, 1711.817955, 2127.285272, 2186.671242
), c = c(1101.899095, 3.166506463, 0, 0, 0, 1130.890295, 0, 654.5054857, 
100.9491289, 0, 0, 0, 0, 0, 789.091922, 0, 0, 0, 0), d = c(33184.53871, 
11777.47447, 15961.71874, 10951.32402, 12840.14983, 13305.26424, 
12193.16597, 14873.26461, 11129.10269, 11642.93146, 9684.238583, 
15946.48195, 11025.08607, 11686.32213, 10608.82649, 8635.844964, 
10837.96219, 10772.53223, 14844.76478), e = c(13252.50358, 2509.5037, 
1418.364947, 2217.952853, 166.92007, 3585.488983, 1776.410835, 
3445.14319, 1675.722506, 1902.396338, 945.5376228, 1205.456943, 
2048.880329, 2883.497101, 1253.020175, 1507.442736, 0, 1686.548559, 
5662.704559), f = c(44.24828759, 0, 485.9617601, 372.108855, 
0, 509.4916263, 0, 0, 0, 212.9541122, 80.62920455, 0, 0, 30.16525587, 
135.0501384, 68.38023073, 0, 21.9317122, 65.09052886), g = c(415.8909649, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 637.2629479, 0, 0, 
0), h = c(583.2213618, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0), i = c(68206.47387, 18072.97762, 23516.98828, 
13541.38572, 15767.5799, 19756.52726, 17676.00505, 21666.267, 
15579.90094, 14351.02033, 12531.38237, 18470.59306, 14149.82119, 
15811.23348, 14637.35235, 13588.64291, 12549.78014, 15370.90886, 
26597.08152)), .Names = c("a", "b", "c", "d", "e", "f", "g", 
"h", "i"), row.names = c(NA, -19L), class = "data.frame")

তারপরে আমি ভেরিয়েবলগুলি মানীকৃত করব:

# standardize variables
mydata <- scale(mydata) 

## K-means Clustering 

# Determine number of clusters
wss <- (nrow(mydata)-1)*sum(apply(mydata,2,var))
for (i in 2:15) wss[i] <- sum(kmeans(mydata, centers=i)$withinss)
# Q1
plot(1:15, wss, type="b", xlab="Number of Clusters",  ylab="Within groups sum of squares") 

# K-Means Cluster Analysis
fit <- kmeans(mydata, 3) # number of values in cluster solution

# get cluster means 
aggregate(mydata,by=list(fit$cluster),FUN=mean)

# append cluster assignment
mydata <- data.frame(mydata, cluster = fit$cluster)

# Cluster Plot against 1st 2 principal components - vary parameters for most readable graph
clusplot(mydata, fit$cluster, color=TRUE, shade=TRUE, labels=0, lines=0) # Q2

# Centroid Plot against 1st 2 discriminant functions
plotcluster(mydata, fit$cluster)

আমার প্রশ্ন হ'ল যে প্লটটি ক্লাস্টারের সংখ্যা দেখায় ( Q1আমার কোডে চিহ্নিত ) কীভাবে প্রকৃত মানগুলির সাথে (ক্লাস্টার নম্বর এবং ভেরিয়েবল নাম) সম্পর্কিত হতে পারে?

আপডেট: আমি এখন বুঝতে পারি যে clusplot()ফাংশনটি পিসিএ 1 এবং পিসিএ 2 সহ একটি বিভাজন প্লট। তবে, আমি পিসিএ উপাদান এবং ক্লাস্টার গ্রুপগুলির মধ্যে লিঙ্কটি বুঝতে পারি না। পিসিএ মান এবং ক্লাস্টারিং গ্রুপগুলির মধ্যে সম্পর্ক কী? আমি কোমেন এবং পিসিএর সংযোগ সম্পর্কে অন্য কোথাও পড়েছি, তবে কীভাবে একই বিভাজন গ্রাফে প্রদর্শিত হবে তা আমি এখনও বুঝতে পারি না।


আমি গত কয়েক দিন ধরে গুচ্ছবদ্ধ হওয়া সম্পর্কে অনেক প্রশ্ন জিজ্ঞাসা করেছি যদি দুঃখিত। আমি তাড়াতাড়ি এই ক্ষেত্রে সঙ্গে আরো পরিচিত হয়ে চেষ্টা করছি (এছাড়াও আমি তাই প্রশ্ন পোস্ট করেছিলেন stackoverflow.com/questions/4997870/... কিন্তু এটা তা এখানে সরাতে প্রস্তাব ছিল)
celenius

ঠিক আছে, এটি টিসিএস.এসই নয় (-;

# ক্লাস্টারের সংখ্যা নির্ধারণ করুন আপনি কী ব্যাখ্যা করতে পারবেন যে আমরা কেন এই সূত্রটি ব্যবহার করছি (মাইডাটা, 2, ভ্যার) এবং কেন 2:15?

উত্তর:


8

আমি প্রশ্ন 1 পুরোপুরি বুঝতে পারি নি, তবে আমি একটি উত্তর চেষ্টা করব। কিউ 1 এর প্লটটি দেখায় যে ক্লাস্টারের সংখ্যা পরিবর্তনের সাথে স্কোয়ারের (ডাব্লুএসএস) যোগফলগুলি কীভাবে পরিবর্তিত হয়। এই ধরণের প্লটগুলিতে আপনাকে অবশ্যই গ্রাফের কিংসগুলি সন্ধান করতে হবে, 5-এ একটি গিঁক নির্দেশ করে যে 5 টি ক্লাস্টার ব্যবহার করা ভাল ধারণা।

নীচের অর্থে আপনার ভেরিয়েবলের সাথে ডাব্লুএসএসের একটি সম্পর্ক রয়েছে, ডাব্লুএসএসের সূত্রটি

jxiCj||xiμj||2

যেখানে হ'ল ক্লাস্টার জন্য বিন্দু এবং হল -th পর্যবেক্ষণ। আমরা ক্লাস্টার জে হিসাবে । ডাব্লুএসএসকে মাঝে মাঝে "প্রতিটি ক্লাস্টারের অভ্যন্তরের পয়েন্টগুলি কতটা সমান" বলে ব্যাখ্যা করা হয়। এই সাদৃশ্যটি ভেরিয়েবলগুলিকে বোঝায়।μjjxiiCj

প্রশ্ন 2 এর উত্তর এটি। আপনি আসলে যা দেখছেন তা clusplot()হ'ল মূল বিমানটিতে আপনার পর্যবেক্ষণের চক্রান্ত। এই ফাংশনটি যা করছে তা হ'ল আপনার প্রতিটি পর্যবেক্ষণের জন্য মূল উপাদান স্কোর গণনা করা, সেই স্কোরগুলি প্লট করা এবং গুচ্ছ দ্বারা রঙ করা।

প্রধান উপাদান বিশ্লেষণ (পিসিএ) একটি মাত্রা হ্রাস কৌশল; এটি সমস্ত ভেরিয়েবলের তথ্যকে সংক্ষেপে "নতুন" ভেরিয়েবলগুলির একটি অংশ হিসাবে সংযুক্ত করে যা উপাদানগুলি বলে। প্রতিটি উপাদান মোট পরিবর্তনশীলতার নির্দিষ্ট শতাংশ ব্যাখ্যা করার জন্য দায়বদ্ধ। উদাহরণে আপনি পড়েন "এই দুটি উপাদান মোট চলকের 73.95% ব্যাখ্যা করে"।

clusplot()ক্লাস্টারিংয়ের কার্যকারিতা সনাক্ত করতে ফাংশনটি ব্যবহৃত হয়। আপনার যদি একটি সফল ক্লাস্টারিং থাকে তবে আপনি দেখতে পাবেন যে ক্লাস্টারগুলি মূল বিমানটিতে স্পষ্টভাবে পৃথক করা হয়েছে। অন্যদিকে, ক্লাস্টারিং ব্যর্থ হলে আপনি ক্লাস্টারগুলি মূল বিমানটিতে মার্জ করতে দেখবেন।

প্রধান উপাদান বিশ্লেষণের উপর আরও রেফারেন্সের জন্য আপনি উইকি পড়তে পারেন। আপনি যদি একটি বই চান তবে আমি ইজেনম্যান দ্বারা আধুনিক মাল্টিভারিয়েট কৌশলগুলি প্রস্তাব করি, সেখানে আপনি পিসিএ এবং কে-উপায় পাবেন।

আশাকরি এটা সাহায্য করবে :)


1
আপনার উত্তর করার জন্য আপনাকে ধন্যবাদ। clusplot()ফাংশন সম্পর্কে আমার আরও একটি প্রশ্ন ছিল । পিসিএ মান এবং ক্লাস্টারিং গ্রুপগুলির মধ্যে সম্পর্ক কী? আমি কোমেন এবং পিসিএর সংযোগ সম্পর্কে অন্য কোথাও পড়েছি, তবে কীভাবে একই বিভাজন গ্রাফে প্রদর্শিত হবে তা আমি এখনও বুঝতে পারি না। (সম্ভবত এটি নিজের মধ্যে একটি নতুন প্রশ্ন হওয়া উচিত)।
সেলেনিয়াস

2
আসলে, পিসিএ মান এবং ক্লাস্টারিং গ্রুপগুলি স্বাধীন। পিসিএ প্রতিটি পর্যবেক্ষণের জন্য "নতুন" স্থানাঙ্ক তৈরি করে mydata, এটি আপনি বাস্তবে প্লটটিতে দেখেন। পয়েন্টগুলির আকারটি fit$clusterদ্বিতীয় পরামিতি ব্যবহার করে প্লট করা হয় clusplot()। হয়তো আপনার পিসিএতে আরও গভীর দৃষ্টি দেওয়া উচিত। এটি আপনাকে সহায়তা করে কিনা, বা আপনি যদি আরও উল্লেখ করেন তবে আমাকে জানান।
deps_stats

1
এটি সহায়তা করে (এই অর্থে যে আমি আমার সমস্যার বিষয়ে সম্মতি দিচ্ছি!)। fit$clusterপিসিএ "স্থানাঙ্ক" এর সাথে কীভাবে সম্পর্কিত? আমি মনে করি যে আমি পিসিএ কীভাবে কাজ করে তা বুঝতে পারি, তবে আমি এটি বুঝতে পারি যে প্রতিটি উপাদানকে মূল তথ্য থেকে পরিবর্তনশীল ব্যবহার করে ব্যাখ্যা করা যায় না (বরং এটি কাঁচা ডেটার একটি রৈখিক সংমিশ্রণ), তাই কেন আমি বুঝতে পারি না এটি কীভাবে হতে পারে গুচ্ছ সম্পর্কিত।
সেলেনিয়াস

2
আপনি এটি প্রায় পেয়েছেন :) fit$clusterপিসিএ সম্পর্কিত নয়। কি clusplot()করে "নতুন" কোঅর্ডিনেটগুলি দিয়ে পয়েন্ট প্লটে বিভক্ত এবং ব্যবহার করে সেগুলি লেবেল হয় fit$cluster। আমি ক্লাস্টার 3 এর জন্য '+', ক্লাস্টার 1 এর জন্য 'ও' এবং ক্লাস্টার 2 এর জন্য একটি ত্রিভুজ পেয়েছি ক্লাস্টারটি clusplot()কল্পনা করতে ফাংশনটি দরকারী।
Deps_stats

1
"নতুন" স্থানাঙ্কগুলি বলতে পিসিএ 1 এবং পিসিএ 2 বোঝায়। আপনি ঠিক বলেছেন, এগুলি সম্পূর্ণরূপে সম্পর্কিত নয় fit$cluster:)
deps_stats
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.