ক্লাস্টারিংয়ে বাইনারি এবং অবিচ্ছিন্ন দুটি পরিবর্তনশীল একসাথে কীভাবে ব্যবহার করবেন?


27

আমাকে বাইনারি ভেরিয়েবল (মান 0 এবং 1) ব্যবহার করতে হবে) তবে কে-মানে কেবল অবিচ্ছিন্ন ভেরিয়েবলগুলির সাথে কাজ করে। আমি জানি কিছু লোক এখনও বাইনারি ভেরিয়েবলগুলি কে-মানে ব্যবহার করে যে-কে কেবলমাত্র অবিচ্ছিন্ন ভেরিয়েবলের জন্য ডিজাইন করা হয়েছে তা উপেক্ষা করে। এটি আমার কাছে অগ্রহণযোগ্য।

প্রশ্নাবলী:

  1. তাহলে কে-মানে / হায়ারারিকাল ক্লাস্টারিংয়ে বাইনারি ভেরিয়েবলগুলি ব্যবহার করার পরিসংখ্যানগত / গাণিতিকভাবে সঠিক উপায় কী?
  2. কীভাবে সমাধানটি এসএএস / আর এ বাস্তবায়ন করবেন?

1
আপনার তথ্যের উত্স সম্পর্কে আমি কৌতূহলী যে "কে মানে কেবল অবিচ্ছিন্ন পরিবর্তনশীলগুলির জন্যই তৈরি করা হয়েছে।" আপনি একটি রেফারেন্স উদ্ধৃত করতে সক্ষম হবে?
whuber

2
jmp.com/support/help/K-Means_Clustering.shtml "কে-ক্লাস্টারিং কেবল সংখ্যার কলামগুলিকে সমর্থন করে- আমি কেবল গুগল করেছিলাম এবং এটি পেয়েছি। বিন্দুটির গড় অর্থ বাইনারি নয়, ধারাবাহিক চলকগুলির জন্য সংজ্ঞায়িত, সুতরাং কে মানে বাইনারি ভেরিয়েবলগুলি ব্যবহার করা যাবে না।
জর্জেফএফআরএফ

1
এটি তাদের অবিরত হিসাবে গণ্য করে তাদের ব্যবহার করতে পারে; তবে ফলাফলটি ব্যাখ্যা করা শক্ত হবে, কারণ ক্লাস্টার কেন্দ্রগুলির আর একটি বাইনারি মান থাকবে না; এবং আইএমএইচএও ফলাফলগুলি সার্থক হলে এটি সমস্তই স্পষ্ট - বাইনারি পরিবর্তনশীলের বৈকল্পিকতা কেন হ্রাস করে? পরিবর্তে, উদাহরণস্বরূপ বাইনারি ভেরিয়েবলগুলিতে freuqent আইটেমসেট খনন বিবেচনা করুন যদি তারা আপনার ডেটাতে নিদর্শনগুলি আবিষ্কার করতে উপস্থিত / অনুপস্থিতের সাথে মিল থাকে।
অ্যানি-মৌসে

নীচের উত্তরগুলি বাদে আপনার আরও কি কিছু দরকার আছে? এটি প্রায় দীর্ঘকাল ধরে ছিল এবং উচ্চ পর্যবেক্ষণ ও পর্যবেক্ষণ করা হয়, তবে এটি পরিষ্কার নয় যে আপনার প্রশ্নটি আপনার সন্তুষ্টির জন্য সমাধান হয়েছে এবং আপনি কী অনুপস্থিত হতে পারেন তারও কোনও ইঙ্গিত নেই।
গুং - মনিকা পুনরায়

উত্তর:


31

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

যখন আপনার ডেটাগুলিতে মিশ্র প্রকারের ভেরিয়েবল থাকে তখন আপনাকে গওয়ারের দূরত্ব ব্যবহার করা উচিত। সিভি ব্যবহারকারী @ttnphns এখানে গওয়ারের দূরত্বের দুর্দান্ত ধারণা রয়েছে । সংক্ষেপে, আপনি প্রতিটি ভেরিয়েবলের জন্য আপনার সারিগুলির জন্য একটি দূরত্বের ম্যাট্রিক্সটি ঘুরে দেখেন, এক ধরণের দূরত্ব ব্যবহার করে যা সেই ধরণের চলকের জন্য উপযুক্ত (যেমন, অবিচ্ছিন্ন ডেটার জন্য ইউক্যালিডিয়ান ইত্যাদি); সারি থেকে i এর চূড়ান্ত দূরত্ব হ'ল প্রতিটি ভেরিয়েবলের জন্য দূরত্বের গড় (সম্ভবত ওজনযুক্ত) গড়। একটি বিষয় সচেতন হতে হবে তা হ'ল গওয়ারের দূরত্ব আসলে কোনও মেট্রিক নয় । তবুও, মিশ্র ডেটা সহ, গওয়ারের দূরত্বটি শহরের একমাত্র গেম। ii

এই মুহুর্তে, আপনি যে কোনও ক্লাস্টারিং পদ্ধতি ব্যবহার করতে পারেন যা মূল ডেটা ম্যাট্রিক্সের পরিবর্তে দূরত্বের ম্যাট্রিক্সের উপরে কাজ করতে পারে। (নোট করুন যে কে- মানেগুলির পরবর্তীটির প্রয়োজন)) সর্বাধিক জনপ্রিয় পছন্দগুলি মেডোইডগুলি (পিএএম, যা মূলত কে-মানে হিসাবে একই, তবে সেন্ট্রয়েডের পরিবর্তে সর্বাধিক কেন্দ্রীয় পর্যবেক্ষণ ব্যবহার করে ) এর চারপাশে বিভাজন করছে , বিভিন্ন শ্রেণিবিন্যাসের ক্লাস্টারিং পদ্ধতির (উদাঃ) , মিডিয়ান, সিঙ্গল লিঙ্কেজ এবং সম্পূর্ণ লিঙ্কেজ; শ্রেণিবদ্ধ ক্লাস্টারিংয়ের সাথে আপনাকে সিদ্ধান্ত নিতে হবে চূড়ান্ত ক্লাস্টারের অ্যাসাইনমেন্টগুলি পেতে কোথায় ' গাছ কাটা উচিত ', এবং ডিবিএসসিএন যা আরও অনেক নমনীয় ক্লাস্টার আকারের অনুমতি দেয়।

এখানে একটি সাধারণ Rডেমো (এনবি, আসলে 3 টি ক্লাস্টার রয়েছে তবে তথ্যগুলি বেশিরভাগ 2 টি ক্লাস্টারের মতো দেখতে উপযুক্ত):

library(cluster)  # we'll use these packages
library(fpc)

  # here we're generating 45 data in 3 clusters:
set.seed(3296)    # this makes the example exactly reproducible
n      = 15
cont   = c(rnorm(n, mean=0, sd=1),
           rnorm(n, mean=1, sd=1),
           rnorm(n, mean=2, sd=1) )
bin    = c(rbinom(n, size=1, prob=.2),
           rbinom(n, size=1, prob=.5),
           rbinom(n, size=1, prob=.8) )
ord    = c(rbinom(n, size=5, prob=.2),
           rbinom(n, size=5, prob=.5),
           rbinom(n, size=5, prob=.8) )
data   = data.frame(cont=cont, bin=bin, ord=factor(ord, ordered=TRUE))
  # this returns the distance matrix with Gower's distance:  
g.dist = daisy(data, metric="gower", type=list(symm=2))

আমরা পিএএম দিয়ে বিভিন্ন সংখ্যক ক্লাস্টার অনুসন্ধান করে শুরু করতে পারি:

  # we can start by searching over different numbers of clusters with PAM:
pc = pamk(g.dist, krange=1:5, criterion="asw")
pc[2:3]
# $nc
# [1] 2                 # 2 clusters maximize the average silhouette width
# 
# $crit
# [1] 0.0000000 0.6227580 0.5593053 0.5011497 0.4294626
pc = pc$pamobject;  pc  # this is the optimal PAM clustering
# Medoids:
#      ID       
# [1,] "29" "29"
# [2,] "33" "33"
# Clustering vector:
#  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 
#  1  1  1  1  1  2  1  1  1  1  1  2  1  2  1  2  2  1  1  1  2  1  2  1  2  2 
# 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 
#  1  2  1  2  2  1  2  2  2  2  1  2  1  2  2  2  2  2  2 
# Objective function:
#     build      swap 
# 0.1500934 0.1461762 
# 
# Available components:
# [1] "medoids"    "id.med"     "clustering" "objective"  "isolation" 
# [6] "clusinfo"   "silinfo"    "diss"       "call" 

এই ফলাফলগুলি শ্রেণিবিন্যাসের ক্লাস্টারিংয়ের ফলাফলগুলির সাথে তুলনা করা যেতে পারে:

hc.m = hclust(g.dist, method="median")
hc.s = hclust(g.dist, method="single")
hc.c = hclust(g.dist, method="complete")
windows(height=3.5, width=9)
  layout(matrix(1:3, nrow=1))
  plot(hc.m)
  plot(hc.s)
  plot(hc.c)

এখানে চিত্র বর্ণনা লিখুন

মিডিয়ান পদ্ধতিটি 2 (সম্ভবত 3) ক্লাস্টারগুলির পরামর্শ দেয়, এককটি কেবল 2 টি সমর্থন করে, তবে সম্পূর্ণ পদ্ধতিটি আমার চোখে 2, 3 বা 4 পরামর্শ দিতে পারে।

শেষ পর্যন্ত, আমরা ডিবিএসসান চেষ্টা করতে পারি। এটির জন্য দুটি প্যারামিটার উল্লেখ করতে হবে: এপিএস, 'পুনঃব্যবহারযোগ্যতা দূরত্ব' (দুইটি পর্যবেক্ষণকে কীভাবে একত্রে সংযুক্ত করতে হবে) এবং মিনিপটস (আপনি সর্বনিম্ন পয়েন্টগুলির একে অপরের সাথে সংযুক্ত হওয়া প্রয়োজন যেগুলি তাদের কল করতে ইচ্ছুক হওয়ার আগে? 'ক্লাস্টারের')। মিনিপটসের জন্য থাম্বের নিয়মটি মাত্রা সংখ্যার চেয়ে আরও বেশি ব্যবহার করা হয় (আমাদের ক্ষেত্রে 3 + 1 = 4) তবে খুব কম সংখ্যক থাকার প্রস্তাব দেওয়া হয় না। এর জন্য ডিফল্ট মান dbscan5; আমরা এটি সঙ্গে থাকব। পুনঃব্যবহারযোগ্যতা দূরত্ব সম্পর্কে ভাবার একটি উপায় হ'ল দূরত্বের কত শতাংশ কোনও প্রদত্ত মানের তুলনায় কম তা দেখা। আমরা দূরত্বগুলির বন্টন পরীক্ষা করে এটি করতে পারি:

windows()
  layout(matrix(1:2, nrow=1))
  plot(density(na.omit(g.dist[upper.tri(g.dist)])), main="kernel density")
  plot(ecdf(g.dist[upper.tri(g.dist)]), main="ECDF")

এখানে চিত্র বর্ণনা লিখুন

দূরত্বগুলি তাদের কাছে 'আরও কাছাকাছি' এবং 'আরও দূরে' এর দৃষ্টিভঙ্গি বোধগম্য গোষ্ঠীতে গুচ্ছবদ্ধ বলে মনে হয়। .3 এর মান মনে হয় দূরত্বের দুটি গ্রুপের মধ্যে সবচেয়ে পরিষ্কারভাবে পার্থক্য করে। ইপিএসের বিভিন্ন পছন্দগুলিতে আউটপুটটির সংবেদনশীলতা অন্বেষণ করতে, আমরা .2 এবং .4ও চেষ্টা করতে পারি:

dbc3 = dbscan(g.dist, eps=.3, MinPts=5, method="dist");  dbc3
# dbscan Pts=45 MinPts=5 eps=0.3
#        1  2
# seed  22 23
# total 22 23
dbc2 = dbscan(g.dist, eps=.2, MinPts=5, method="dist");  dbc2
# dbscan Pts=45 MinPts=5 eps=0.2
#         1  2
# border  2  1
# seed   20 22
# total  22 23
dbc4 = dbscan(g.dist, eps=.4, MinPts=5, method="dist");  dbc4
# dbscan Pts=45 MinPts=5 eps=0.4
#        1
# seed  45
# total 45

ব্যবহারের ফলে eps=.3খুব পরিষ্কার সমাধান পাওয়া যায়, যা উপরের অন্যান্য পদ্ধতি থেকে আমরা যা দেখেছি তার সাথে (গুণগতভাবে কমপক্ষে) একমত হয়।

যেহেতু কোনও অর্থপূর্ণ ক্লাস্টার 1-নেস নেই , তাই আমাদের মিলিয়ে দেখার চেষ্টা করা উচিত যা বিভিন্ন ক্লাস্টারিংগুলি থেকে 'ক্লাস্টার 1' বলে। পরিবর্তে, আমরা টেবিল গঠন করতে পারি এবং যদি এক ফিটের মধ্যে 'ক্লাস্টার 1' নামে পরিচিত বেশিরভাগ পর্যবেক্ষণগুলিকে অন্য ক্লাস্টার 2 বলে, তবে আমরা দেখতে পাব যে ফলাফলগুলি এখনও যথেষ্ট পরিমাণে সমান। আমাদের ক্ষেত্রে, বিভিন্ন ক্লাস্টারিংগুলি বেশিরভাগ স্থিতিশীল এবং একই ক্লাস্টারে প্রতিবার একই পর্যবেক্ষণগুলি রাখে; শুধুমাত্র সম্পূর্ণ লিঙ্কেজ হায়ারারিকিকাল ক্লাস্টারিং পৃথক:

  # comparing the clusterings
table(cutree(hc.m, k=2), cutree(hc.s, k=2))
#    1  2
# 1 22  0
# 2  0 23
table(cutree(hc.m, k=2), pc$clustering)
#    1  2
# 1 22  0
# 2  0 23
table(pc$clustering, dbc3$cluster)
#    1  2
# 1 22  0
# 2  0 23
table(cutree(hc.m, k=2), cutree(hc.c, k=2))
#    1  2
# 1 14  8
# 2  7 16

অবশ্যই, কোনও ক্লাস্টার বিশ্লেষণ আপনার ডেটার সত্যিকারের সুপ্ত ক্লাস্টারগুলিকে পুনরুদ্ধার করবে এমন কোনও গ্যারান্টি নেই। সত্যিকারের ক্লাস্টার লেবেলের অনুপস্থিতি (যা উপলব্ধ হতে পারে, বলুন, একটি লজিস্টিক রিগ্রেশন পরিস্থিতি) এর অর্থ প্রচুর পরিমাণে তথ্য অনুপলব্ধ। এমনকি খুব বড় ডেটাসেটের সাথেও, ক্লাস্টারগুলি পুরোপুরি পুনরুদ্ধারযোগ্য হওয়ার জন্য যথেষ্ট ভাল আলাদা নাও হতে পারে। আমাদের ক্ষেত্রে, যেহেতু আমরা প্রকৃত ক্লাস্টার সদস্যতা জানি, আমরা এটি আউটপুটটির সাথে এটি কতটা ভালভাবে দেখেছে তা তুলনা করতে পারি। আমি উপরে উল্লিখিত হিসাবে, আসলে 3 সুপ্ত ক্লাস্টার আছে, কিন্তু তথ্য পরিবর্তে 2 টি ক্লাস্টারের উপস্থিতি দেয়:

pc$clustering[1:15]    # these were actually cluster 1 in the data generating process
# 1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 
# 1  1  1  1  1  2  1  1  1  1  1  2  1  2  1 
pc$clustering[16:30]   # these were actually cluster 2 in the data generating process
# 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 
#  2  2  1  1  1  2  1  2  1  2  2  1  2  1  2 
pc$clustering[31:45]   # these were actually cluster 3 in the data generating process
# 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 
#  2  1  2  2  2  2  1  2  1  2  2  2  2  2  2 

হায়ারারিকিকাল ক্লাস্টারিংয়ের পরিকল্পনার সময় আপনি উল্লেখ করেছেন median method suggests 2 (possibly 3) clusters, the single only supports 2, but the complete method could suggest 2, 3 or 4.. আপনি কীভাবে এ পৌঁছবেন? 0.3 এর উচ্চতা ব্যবহার করছেন?
lukeg

1
@ ব্লুক, ডেনড্রগ্রামে যোগদানের উচ্চতাগুলি আপনাকে উপস্থাপন করে যে আপনি কতগুলি ক্লাস্টারকে একত্রে যেতে হবে। আগ্রাসন চালিয়ে যাওয়ার জন্য আপনি কোথায় খুঁজছেন যে দূরত্ব আরও বাড়বে। এটি এখানে এবং / অথবা এখানে আলোচিত থ্রেডগুলি পড়তে সহায়তা করতে পারে ।
গুং - মনিকা পুনরায়

2

এই কাগজটি ফিনচ, http://www.jds-online.com/files/JDS-192.pdf দ্বারা দেখুন । এটি উভয় বাইনারি ডেটাতে অবিচ্ছিন্ন পদ্ধতি প্রয়োগ করা হলে সঠিকভাবে তথ্যকে ক্লাস্টার করতে পারে এবং আরও গুরুত্বপূর্ণভাবে যথাযথ দূরত্ব ফাংশনে কিছু পছন্দ কী তা উভয়েরই বর্ণনা রয়েছে describes এটি কী-কী দিয়ে ক্লাস্টার করবেন তার জবাব দেয় না, বরং ইউক্লিডিয়ান অ মেট্রিকগুলি এবং ওয়ার্ডের মতো একটি শ্রেণিবদ্ধ পদ্ধতি ব্যবহার করে কীভাবে সঠিকভাবে ক্লাস্টার বাইনারি ডেটা করা যায়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.