"আর" গ্রাফ ক্লাস্টারিং এর পদ্ধতির এবং উদাহরণ


10

আমি 'আর' তে গ্রাফ ক্লাস্টারিং ব্যবহার করে একটি গ্রাফে নোডগুলিকে গ্রুপ / মার্জ করতে চাইছি।

এখানে আমার সমস্যার একটি অত্যাশ্চর্য খেলনা তারতম্য।

  • দুটি "গুচ্ছ" আছে
  • গুচ্ছ সংযোগকারী একটি "ব্রিজ" রয়েছে

এখানে একটি প্রার্থী নেটওয়ার্ক:
এখানে চিত্র বর্ণনা লিখুন

আমি যখন সংযোগের দূরত্বটি দেখি, "হপকাউন্ট", আপনি যদি চান তবে আমি নীচের ম্যাট্রিক্সটি পেতে পারি:

 mymatrix <- rbind(
     c(1,1,2,3,3,3,2,1,1,1),
     c(1,1,1,2,2,2,1,1,1,1),
     c(2,1,1,1,1,1,1,1,2,2),
     c(3,2,1,1,1,1,1,2,3,3),
     c(3,2,1,1,1,1,1,2,3,3),
     c(3,2,1,1,1,1,1,2,2,2),
     c(2,1,1,1,1,1,1,1,2,2),
     c(1,1,1,2,2,2,1,1,1,1),
     c(1,1,2,3,3,2,2,1,1,1),
     c(1,1,2,3,3,2,2,1,1,1))

এখানে চিন্তাভাবনা:

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

সুতরাং এই ম্যাট্রিক্সে আরও বড় দূরত্বের (হপস) একটি উচ্চতর সংখ্যা রয়েছে। যদি আমি দূরত্বের পরিবর্তে "সংযোগ" দেখানো একটি ম্যাট্রিক্স চাইতাম, তবে আমি একটি ডট-ইনভার্স করতে পারতাম, যেখানে ম্যাট্রিক্সের প্রতিটি ঘরটি এর গুণক বিপরীত দ্বারা প্রতিস্থাপিত হয়।

প্রশ্নাবলী:

আমাকে আমার নিজস্ব উপায় খুঁজে পেতে সহায়তা করতে:

  • কোনও গ্রাফের সাথে নোডের সংমিশ্রণের সংখ্যা হ্রাস করার শর্তাবলী কী? এটি কি ক্লাস্টারিং, মার্জিং, মুগিং - আমার ব্যবহৃত শব্দগুলি কী?
  • প্রমাণিত কৌশলগুলি কি কি? বিষয়টিতে কোন পাঠ্যপুস্তক রয়েছে? আপনি কি কাগজপত্র বা ওয়েবসাইটগুলিতে ইঙ্গিত করতে পারবেন?
  • এখন আমি এখানে প্রথমে দেখার চেষ্টা করেছি - এটি একটি দুর্দান্ত "প্রথম চেক" স্পট। আমি যা খুঁজছিলাম তা খুঁজে পেলাম না। যদি আমি এটি মিস করি (অসম্ভব না) আপনি কি এখানে সিভিতে এই বিষয়ে দুটি বা উত্তর সম্পর্কে আমাকে উত্তর দিতে পারেন?

আমি যেখানে যাচ্ছি আমাকে পেতে:

  • এমন কোনও 'আর' প্যাকেজ রয়েছে যা নেটওয়ার্কে নোডগুলি সঠিকভাবে ক্লাস্টার করবে?
  • আপনি কি আমাকে উদাহরণস্বরূপ কোডটি করতে এটি করতে পারেন?
  • এমন কোনও 'আর' প্যাকেজ রয়েছে যা ফলাফল হ্রাস হওয়া নেটওয়ার্কটি গ্রাফিকালি উপস্থাপন করবে?
  • আপনি কি আমাকে উদাহরণস্বরূপ কোডটি করতে এটি করতে পারেন?

আগাম ধন্যবাদ.


2
দয়া করে সচেতন হন যে (আর) প্যাকেজ বা কোডের জন্য জিজ্ঞাসা করা এখানে অফ-টপিক। আপনি "সন্ধান করুন" অংশটিকে আরও বিশিষ্ট করতে এবং "পান" অংশটি আরও কম করে তৈরি করতে চাইতে পারেন।
গুং - মনিকা পুনরায়

3
@ গং-এর সুযোগ পেলে আমি কোনও সময় পুরো উত্তর দেওয়ার চেষ্টা করব। তবে দ্রুত উত্তরের জন্য এখানে আর igraphপ্যাকেজটি ব্যবহার করে এনগ্রারস্টুডেন্টের উদাহরণ গ্রাফটিতে সম্প্রদায় সনাক্তকরণ প্রয়োগ করা হয়েছে ।
অ্যান্ডি ডব্লিউ

1
আইএমএইচও এই গ্রাফটিতে কেবল একটি ক্লাস্টার রয়েছে। তবে তিনটি ওভারল্যাপিং চক্র রয়েছে । আমি জানি না কেন আপনার পরিকল্পনাটি মধ্যম চক্রটিকে ধ্বংস করতে পারে - আপনি যদি এটিকে আনুষ্ঠানিকভাবে না করতে পারেন তবে আপনার একটি অ্যালগোরিদম খুঁজে পেতে খুব কষ্ট হবে।
কিট আছে - অ্যানি-মৌসে

2
এটির মূল্যের জন্য, এমসিএল ( micans.org/mcl ) দুটি ক্লাস্টার খুঁজে পেয়েছে (আমি সত্যিই অ্যানি- মৌসির মূল্যায়নের সাথে একমত নই, এবং গ্রাফ ক্লাস্টারিংয়ের জন্য চক্র-মডেলিংয়ের পদ্ধতিকে বিশেষভাবে ফলপ্রসূ মনে করি না)। এটি এর একক প্যারামিটারের সাথে রয়েছে (গ্রানুলারিটি নিয়ন্ত্রণ করে) ডিফল্ট সেট করা আছে। এই অ্যালগরিদম (এমসিএল - আমি এটি প্রকাশ করেছি) বায়োইনফর্ম্যাটিকগুলিতে বেশ বিস্তৃতভাবে ব্যবহৃত হয় এবং (অত্যন্ত স্কেলযোগ্য) উত্স কোড পাওয়া যায়। আর এর সাথে ইন্টারফেসিং সহজেই টেক্সট ইন্টারফেস ব্যবহার করে সম্পন্ন করা হয়।
micans

2
কোড এবং প্যাকেজগুলির জন্য জিজ্ঞাসা করা মূলত এখানে সর্বদা অফ-টপিক ছিল। সাহায্যের জন্য জিজ্ঞাসা W / বিদ্যমান কোড (ie আপনি একটি আছে গঠনকর উদাহরণ ) অন-বিষয়ে হয় স্ট্যাক ওভারফ্লো । আপনি যদি এটি না জানতেন তবে এটি শিখার সময় এসেছে। SO- তে আর কিউর উত্তর দেওয়া ব্যবহারকারীদের কাছে পরিসংখ্যানগত দক্ষতা নেই এমন ধারণাটি আমার কাছে অদ্ভুত, তবে অনেক লোক মনে করে যে; যে কোনও হারে এটি সত্য নয়। আপনার প্রশ্নটির উত্তরের কোনও এসও পোস্ট দ্বারা এখানে কিছু বলা উচিত। ওটিওএইচ, 'এটি কী ধরণের বিশ্লেষণ, এটি কি আমাকে সংস্থানগুলির দিকে নির্দেশ করতে পারে "বলার বিষয়টি অবশ্যই এখানে অনন্য বিষয়।
গুং - মনিকা পুনরায়

উত্তর:


9

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

এখানে igraphপ্যাকেজটি ব্যবহার করে এবং ক্লাউসেট এট আল-তে বর্ণিত একটি অ্যালগরিদম ব্যবহার করে সম্প্রদায় সনাক্তকরণের একটি উদাহরণ (2004) । এই অ্যালগরিদমটি ব্যবহার করার জন্য আমি আপনার "হপ কাউন্ট" কে বাইনারি সংলগ্ন ম্যাট্রিক্সে কোনও স্ব-লুপ ছাড়াই পরিণত করি। অ্যালগরিদমের জন্য একটি অপ্রচলিত ম্যাট্রিক্স প্রয়োজন যা আপনার হাতের লিখিত চিত্র এবং আপনার সরবরাহ করা ডেটার সাথে সামঞ্জস্যপূর্ণ (প্রান্তগুলি প্রতিসাম্যপূর্ণ)।

library(igraph)
mymatrix <- rbind(
     c(1,1,2,3,3,3,2,1,1,1),
     c(1,1,1,2,2,2,1,1,1,1),
     c(2,1,1,1,1,1,1,1,2,2),
     c(3,2,1,1,1,1,1,2,3,3),
     c(3,2,1,1,1,1,1,2,3,3),
     c(3,2,1,1,1,1,1,2,2,2),
     c(2,1,1,1,1,1,1,1,2,2),
     c(1,1,1,2,2,2,1,1,1,1),
     c(1,1,2,3,3,2,2,1,1,1),
     c(1,1,2,3,3,2,2,1,1,1))

#turn this into an adjacency matrix
adjMat <- mymatrix == 1
diag(adjMat) <- 0 #no self loops

g  <- graph.adjacency(adjMat)
plot(g)

#only works for undirected graphs, which this example is fine since symetric
fc <- fastgreedy.community(as.undirected(g))

#make colors for different communities
V(g)$color <- ifelse(membership(fc)==1,"red","blue")
plot(g)

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

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


1
গ্রাফ ডাটাবেস ব্যবহার সম্পর্কে পূর্ববর্তী মন্তব্যগুলি দেওয়া হলেও, আপনার গ্রাফটি সংলগ্ন ম্যাট্রিক্স হিসাবে উপস্থাপন করার প্রয়োজন হবে না । নোডগুলির জন্য একটি টেবিল এবং প্রতিটি প্রান্তের জন্য একটি সারি আরও সাধারণ / দক্ষ বিন্যাস এবং আপনি এটি একটি igraphনেটওয়ার্কে রূপান্তর করতে পারেন ।
অ্যান্ডি W

1

আপনি যদি ইতিমধ্যে আপনার নোড এবং সংযোগ ডেটার জন্য কোনও ভাণ্ডারটিতে বিবাহ না করেন তবে আপনি Rneo4j প্যাকেজটি দেখতে পারেন। তবে এটি আপনার ডেটা সংরক্ষণ করার জন্য নিও 4 জে (একটি গ্রাফ ডাটাবেস, কোনও আরডিবিএমএস) ব্যবহার করে না। আমি এখানে কোনও বিশেষজ্ঞ নই, তবে আমি মনে করি এই পদ্ধতিটি বিশেষত কার্যকর হতে পারে যদি ক) অ্যানি-মুউসের পরামর্শ অনুসারে, আপনি এটিকে আনুষ্ঠানিকতা দিতে পারবেন না, বা খ) নোড এবং সংযোগগুলির সংখ্যা বিশেষত বৃহত, বা গ) আপনি বয়ে যাচ্ছেন আপনার নেটওয়ার্ক সংক্রান্ত অতিরিক্ত প্রশ্ন রয়েছে।


আমি জানতাম না যে এরকম একটি অস্তিত্ব আছে। ঝরঝরে! এটি কি উপাদানের একটি শালীন উদাহরণ? nicolewhite.github.io/RNeo4j/examples
EngrStudent

কীভাবে একজন নিও 4 জে ডেটা থেকে গ্রাফ-ক্লাস্টারিংয়ে যাবে? এমসিএল বা ইগ্রাফ কি এটির সাথে কাজ করবে?
এংগ স্টুডেন্ট

2
একবার আপনি নিও 4j থেকে আর-তে আপনার ডেটা টানলে, আপনি ডেটার বিপরীতে অন্য কোনও আর প্যাকেজ (উদাহরণস্বরূপ, অ্যান্ডি ডাব্লু ইগ্রাফের পরামর্শ দিয়ে) ব্যবহার করতে পারেন। বিকল্পভাবে - Rneo4j প্যাকেজটিতে ডেটা পুনরুদ্ধারের জন্য কমান্ড অন্তর্ভুক্ত রয়েছে এবং আপনাকে সাইফার কোয়েরি ভাষা চালানোর অনুমতি দেয় (এসকিউএল এর সাথে সাদৃশ্যযুক্ত, তবে নিও 4 জি গ্রাফ ডিবি-র জন্য কাস্টম-বিল্ট)। সাইফারে আপনি পরিশীলিত ক্যোয়ারীগুলি করতে পারেন এবং কিছু পূর্বনির্ধারিত অ্যালগরিদম (সংক্ষিপ্ত পথ, সমস্ত পাথ, সমস্ত সাধারণ পাথ, ডিজকস্ট্রা ইত্যাদি) চালাতে পারেন। আমি এখানে অক্ষর এবং সামগ্রী উভয়ই আমার সীমাবদ্ধ - আপনি যদি এই পথে যেতে চান (দুঃখিত!), নিও 4 জ সাইটটি আপনার পরবর্তী স্টপ হতে পারে।
ব্যবহারকারী3123116

1

ভবিষ্যতের পাঠকদের জন্য,

এখানে ইগ্রাফ প্যাকেজগুলি থেকে ফাংশনগুলির একটি সেট রয়েছে এবং শেষটি এমসিএল থেকে রয়েছে:

print("LABEL PROPAGATION")
w<-cluster_label_prop(g)

print("Leading Eigen")
w<-cluster_leading_eigen(g)

print("SpinGlass")
w<-cluster_spinglass(g, stop.temp = 0.05)

print("walktrap")
w<-cluster_walktrap(g, steps=4)

print("MCL")
adj<-get.adjacency(g)
w<-mcl(adj,addLoops=TRUE)

আপনি এখানে নথিপত্র পেতে পারেন http://igraph.org/r/doc/ এবং এখানে https://cran.r-project.org/web/packages/MCL/MCL.pdf

আমি ওয়াকট্র্যাপটি বিশেষভাবে দরকারী বলে মনে করি


যদিও এটি প্রশ্নের সাথে সম্পর্কিত হতে পারে তবে এটি একটি উত্তর বলে মনে হচ্ছে না।
মাইকেল আর চেরনিক

2
আমি দুটি প্রশ্নের উত্তর দিয়েছি: এমন কোনও 'আর' প্যাকেজ রয়েছে যা নেটওয়ার্কের নোডগুলি সঠিকভাবে ক্লাস্টার করবে? আপনি কি আমাকে উদাহরণস্বরূপ কোডটি করতে এটি করতে পারেন? তবে হ্যাঁ, এটি পুরো প্রশ্নের উত্তর দেয় না।
ওমর জাফফর
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.