دانشگاه صنعتی امیرکبیر (پلی تکنیک تهران)
دانشکذهی مهنذسی کامپیوتر و فنآوری اطالعات
گزارش تحقیقی-عملی درس یادگیری ماشین
آموزش گامبهگام تحلیل ضبکهاجتماعی در زبان R
نسخه 0.1
نگارش
محسن رئیسی
)(
[email protected], ceit.aut.ac.ir/~raeesi
استاد درس
جناب آقای دکتر شیری
تابستان 0101
http://ceit.aut.ac.ir/~shiry/lecture/machine-learning/ml.html
پیصگفتار
(تْفیَ هیؽْد زتوب قجل اص هغبلعَ هتي هغتٌذ ،ایي قغوت سا هغبلعَ ًوبییذ).
هغتٌذ پیؼ سّ ،ققذ داسد ثَ داًؼپژُّبى سا ثب تسلیل ؽجکَاختوبعی دس Rآؽٌب کٌذ .دس ایي گضاسػ فرشك
ؽذٍ ،خْاًٌذٍ هستشم تب زذی ثب صثبى ً ّ Rسٍْ کذ ًْیغی دس آى آؽٌب هیثبؽذ .اص ایي سّ ثَ هقذهبتی چرْى اًرْا
هتغیشُب ،عبختبس دادٍای ،ؽشط ،زلقَ ّ ً ...پشداختَاعت .ثشای آؽٌبیی ثیؾتش ثب ایي هجبزث ثرَ "آؽرٌبیی ثرب صثربى
هسبعجبت آهبسی ًْ ،"Rؽتَ عیذ ععیذ هْعْیًذّؽٌی هشاخعَ ًوبییذ .1
فقل اّل ایي گضاسػ دس هْسد ،Rتبسیخچَ ّ اهکبًبت آى هیثبؽذ .هسیظ هْسد اعتفبدٍ دس تِیَ ایي گرضاسػ،
هسیظ ًشمافضاس دادٍکبّی Rapidminerهیثبؽذ .ایري ًرشمافرضاس اص ًغرخَ 5ثرَ ثعرذ ،افضًّرَای سا ثرشای اخرشای
دعتْسات ّ Rاعتفبدٍ آى دس هسیظ خرْد اساهرَ داد .اص ایريسّ فقرل دّم گرضاسػ ،ثرَ ًسرٍْ ًقرت افضًّرَ Rدس
ّ Rapidminerچگًْگی اعتفبدٍ اص آى اختقبؿ داسد.
تبکٌْى چٌذیي کتبثخبًَ ثشای تسلیل ؽجکَاختوبعی دس ،Rاساهَ ؽذٍاعت .یکی اص قْیتشیي ایي کتبثخبًرَُرب
igraphهی ثبؽذ .دس ایي هغتٌذ ،هب اص ایي کتبثخبًَ ثشای تعشیف گشاف ّ تسلیل ؽجکَاختوبعی اعتفبدٍ هیًوربیین.
اص ایي سّ اعکشیپُب ّ کذ ُبی اساهَ ؽذٍ دس فقل عْم ّ چِبسم ثش اعبط ایي کتبثخبًَ اساهَ ؽذٍاًرذ .هٌجرا افرلی
اعتفبدٍ ؽذٍ ثشای ایي فقْل ًیض ،هغتٌذات ّ آهْصػُبی اساهَ ؽذٍ ثشای ]3,2,1[ igraphهریثبؽرٌذ کرَ عرعی
ؽذٍ ثب تْضیسبت هٌبعت دس ایي هغتٌذ اساهَ ؽْد.
ثَ هٌظْس تغِیل پیوبیؼ هتي گضاسػ ،ثخؼُربی هختلرف دس فبیرل ،PDFثرَ فرْست Bookmarkedدس
آهذٍاًذُ .وچٌیي ثشخی هٌبثا کوکی –هثل کذُبی فقل عْم ّ چِبسم -ثَ فبیرل القربش ؽرذٍاعرت .خْاًٌرذگبى
هستشم تْخَ داؽتَثبؽٌذ کَ اعتفبدٍ اص هغتٌذ پیؼ سّ ثشای هقبسف تدبسی هدبص ًویثبؽذ.
آسصّهٌذ دعبی خیش خْاًٌذگبى عضیض
هسغي سهیغی
http://cran.r-project.org/doc/contrib/Mousavi-R-lang_in_Farsi.pdf
1
فِرضت هطالب
1
هقذهَ ای بر 1........................................................................................................................................................... R
3-3تبسیخچَ پشّژٍ3 ..........................................................................................................................................................................R
2-3هشّسی ثش اهکبًبت 2 .................................................................................................................................................................. R
1-3تسلیل ؽجکَاختوبعی دس 2 ..................................................................................................................................................... R
2
ًصب ّ Rتؼبیَ آى در ًرمافسار 3.................................................................................................RapidMiner
3-2هشازل ًقت ُغتَ افلی 1 .................................................................................................................................................... R
ً 2-2قت افضًَّ Rدس 4 ............................................................................................................................................. Rapidminer
1-2هسیظ اعکشیپتًْیظ افضًَّ 7 .............................................................................................................................................. R
4-2اعتفبدٍ اص Rدس 8 ................................................................................................................................................ Rapidminer
3
هذلطازی گراف12 ........................................................................................................................................................
3-1عبخت گشاف 34 .............................................................................................................................................................................
2-1ایدبد گشاف اص سّی فبیل ثیشًّی 36...........................................................................................................................................
1-1دعتکبسی دس عبختبس گشاف 37 ...................................................................................................................................................
4-1اعتخشاج ُوغبیگی یبلُب 37 .....................................................................................................................................................
5-1سعن گشاف 38 .................................................................................................................................................................................
6-1دعتشعی ّ تغییش ففبت گشاف ،گشٍُب ّ یبلُب23 .................................................................................................................
4
تحلیل شبکَاجتواػی24 ............................................................................................................................................
3-4هسبعجَ اًْا تعبسیف هشکضیت گشٍ24 ......................................................................................................................................
2-4تسلیل یک گشاف ًغجتب ثضسگ 27 ..............................................................................................................................................
1-4عبختبسیبثی اختوب 13 .................................................................................................................................................................
4-4ثلْکُبی چغجٌذٍ 11 ..................................................................................................................................................................
5
هراجغ35 ......................................................................................................................................................................
فِرضت اشکال ّ جذاّل
ؽکل .3لْگْی پشّژٍ 2............................................................................................................................................................R
ؽکل ً . 2وبیی اص یکی اص هشازل ًقت ًشمافضاس 1...............................................................................................................R
ؽکل .1هسیظ کٌغْل ًشمافضاس 4.......................................................................................................................................... R
ؽکل .4سّؽي کشدى افضًَّ Rدس 5............................................................................................................... Rapidminer
ؽکل .5اضبفَ کشدى هتغیشُبی هسیغی هشتجظ ثَ تٌظیوبت افضًَّ 6 ........................................................................... R
ؽکل .6اضبفَ ؽذى آیکي Rدس ًْاساثضاس فْقبًی7...................................................................................................................
ؽکل ً .7وبی کلی افضًَّ Rدس 8....................................................................................................................Rapidminer
ؽکل .8عولگشُبی Rدس ًْاساثضاس8............................................................................................................................................
ؽکل .9آیکي فضبی کبسیُبی هستلف دس 9............................................................................................... Rapidminer
ؽکل .33هشازل رخیشٍ دادٍُبی Rدس9....................................................................................................... Repository
ؽکل ً .33سٍْ تعشثف خشّخی عولگش )33 ...................................................................................... Execute Script (R
ؽکل .32هذل فشآیٌذ کلی هشازل تسلیل گشاف کلْپ کبساتَ33 ........................................................................................
ؽکل ً .31تیدَ عبختبسیبثی اًدبمؽذٍ دس فشآیٌذ فْش 33 ....................................................................................................
ؽکل .34گشاف ثذّى خِت32 ...................................................................................................................................................
ؽکل .35گشاف خِت داس32 .......................................................................................................................................................
ؽکل ً .36وًَْای اص یک ؽجکَ ثیهقیبط .قغتُب ثَ فْست سًگی ًؾبى دادٍ ؽذٍاًذ39 ............................................
ؽکل .37گشاف سعن ؽذٍ دس هسیظ 23 .....................................................................................................................tkplot
ؽکل .38گشاف عَ ثعذی سعن ؽذٍ ثب 23 ............................................................................................................... rglplot
ؽکل .39هیبًگیي دسخَ ًقبط دس گشاف قضبیی22 .................................................................................................................
ؽکل .23یک گشاف تقبدفی کَ سًگ یبلُبی آى ثش اعبط سًگ گشٍُب هتوبیض گؾتَاعت21 .................................... .
ؽکل .23گشافی کَ Degree centralityگشٍُبی آى دس کٌبس ُش گشٍ ًْؽتَ ؽذٍاعت25 ........................................
ؽکل .22هشکضیت Betweennessگشٍُبی گشاف 26 ..........................................................................................................
ؽکل .21هشکضیت Closenessگشٍُبی گشاف 26 .................................................................................................................
ؽکل .24هشکضیت Eigenvectorگشٍُبی گشاف26 .............................................................................................................
ؽکل .25تْصیا دسخَُبی ّسّدی گشاف قضبیی28 ................................................................................................................
ؽکل " .26عبختبس اختوب " دس گشاف یک ؽجکَاختوبعی13 .................................................................................................
ؽکل .27اختوبعبت ثَ دعت آهذٍ ثب الگْسیتن fastgreedyسّی هدوْعَ دادٍ کلْپ کبساتَ 12 ................................
ؽکل .28اختوبعبت ثَ دعت آهذٍ ثب الگْسیتن Spinglassسّی هدوْعَ دادٍ کلْپ کبساتَ12 .................................
ؽکل .29عبختبس ثلْکثٌذی چغجٌذگی ثَ دعتآهذٍ14 ....................................................................................................
هقذهَ ای ثشR
3
1مقدمه ای بر R
صثبى ،Rیک صثبى ثشًبهًَْیغی ّ هسیظ ًشمافضاسی ثشای هسبعجبت آهبسی ّ تسلیل دادٍ اعت .اهشّصٍ ایي صثبى ثرَ
عٌْاى یک اعتبًذاسد غیش سعوی ثشای کبسُبی آهبسی ّ دادٍکبّی هغشذ هریثبؽرذ[ .]4ایري صثربى دس زقیقرت ًغرخَ
هتيثبص ًشمافضاس Sهیثبؽذ [ .]5صثبى Rتْعظ ًشمافضاسی ثَ ُویي ًبم کَ ؽبهل هفغش صثبى ّ هسیظ اعکشیپتًْیغری
اعت پؾتیجبًی هیگشدد .ایي ًشمافضاس ،ثبصهتي ثْدٍ ّ تست اخبصًٍبهَ عوْهی ُوگبًی گٌْ عشضَ هیؽْدً .غخَُبی R
ثقْست سایگبى ّ ثشای اًْا عیغتنُبی عبهل (ّیٌذّص ،هک ّ اًْا تْصیاُبی لیٌْکظ) اساهَ ؽذٍاعرتُ .غرتَ افرلی
ًشمافضاس Rثرَ ُورشاٍ ثریؼ اص 4133کتبثخبًرَ هرشتجظ ثرب آى ،دس ؽرجهَ (comprehensive R archive CRAN
) networkدس دعتشط کبسثشاى هیثبؽذ .ایي ؽجکَ کَ هخضى هٌبثا هشتجظ ثب Rهیثبؽذ ،اص عرشّسُبی داًؾرگبٍُربی
هختلف عشاعش خِبى ثشای ًگِذاسی ّ گشفتي ًغخَ پؾتیجبى اص ایي دادٍُب اعتفبدٍ هیکٌذ .1دس هیِي عضیرض اعرالهی
هب ًیض ،داًؾگبٍ فشدّعی هؾِذ یکی اص هشاکض ًگِذاسی ًغخَُبی Rهیثبؽذ.2
دس زبل زبضش اگش چَ ُیچ ؽشکت تدبسی پؾتیجبى سعوی Rسا ثش عِذٍ ًذاسد ،اهب ؽجهَ پؾرتیجبًی غیشسعروی
آى اص عشیق پیبمُبی ایٌتشًتی r-helpقبثل دعتشط اعت .دس زبل زبضش ً Rشم افضاسی كبهل ّ ثریًقرـ ًیغرت ّ اص
آًدب كَ آصاد ّ سایگبى ُن هی ثبؽذ ،اص پیؾٌِبدات كبسثشاى ثشای افالذ ّ تْععَ آى اعتقجبل هیكٌذ.
1-1تاریخچَ پرّژٍ R
پشّژٍ Rدس عبل 3993دس گشٍّ آهبس داًؾگبٍ Aucklandکؾْس ًیْصیلٌذ کلیذ خْسد .ثٌیربىگرزاساى ایري پرشّژٍ
آقبیبى Robert Gentelman ّ Ross Ihakaثْدًذّ .خَ تغویَ ایي صثبى ًیض اثتذای ًربم ایري دس ًفرش هریثبؽرذ (دس
دپبستوبى آهبس ایي داًؾگبٍ ایي پشّژٍ ثَ "ً "R&Rیض هعشّف هیثبؽذ .).دس زبل زبضش تیوی هتؾهل اص ً39فش دس زربل
تْععَ ایي عشذ هیثبؽٌذ.
Rثشای اّلیي ثبس دس عبل 3991ثَ عْس عوْهی هعشفی گشدیذ .دس 3995هبستیي هبچلش ،ساط ّ ساثشت سا هتقبعرذ
ًوْد تب تست هدْص گٌْ R ،سا ثَ یک ًشمافضاس سایگبى تجذیل ًوبیٌذ .یک عبل ثعذ لیغرت سایبًبهرَ عورْهی ایري پرشّژٍ
ایدبد گشدیذ ( )R-devel ّ R-helpکَ ثَ کوک آى تْععَدٌُذگبى ّ کبسثشاى دس عشاعرش خِربى ثرب یکرذیگش هرشتجظ
هیؽذًذ .دس ُ 3997غتَ افلی تْععَدٌُذٍ Rکَ ؽبهل ثشخی اص اعضبی پشّژٍ ً S-Plusیض ثْدًذ ایدربد ؽرذ .ایري
http://cran.r-project.org/mirrors.html
http://cran.um.ac.ir/
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
1
2
هقذهَ ای ثشR
2
گشٍّّ ،ظیفَ کٌتشل ّ ًظبست ثش کذ ثشًبهَ سا ثَ عِذٍ داؽت .ثب ترالػُربی تْعرعَدٌُرذگبى ،دس عربل 2333اّلریي
ًغخَ Rاساهَ گشدیذ .آخشیي ًغخَ اساهَ ؽذٍ ایي ًشمافضاس 2.13.1هیثبؽذ کَ دس 2333/7/8هٌتؾش ؽذٍاعت.
شکل .1لْگْی پرّژٍ R
2-1هرّری بر اهکاًات R
Rیك هدوْعَ كبهل اص اههبًبت ًشم افضاسی ثشای كبسكشدى ثب دادٍ ُب ّ هسبعجَ ّ سعن ًوْداس هی ثبؽذ .اص خولرَ
اههبًبت ایي هدوْعَ هیتْاى ثَ هْاسد صیش اؽبسٍ کشد:
صثبى ثشًبهًَْیغی عبدٍ ّ پیؾشفتَ ؽبهل عجبستُبی ؽشعی ،زلقَ ّ تْاثا ثبصگؾتی ّ . ...
اههبًبت رخیشٍ ،ثبصیبثی ّ دعتکبسی دادٍُب
هدوْعَای قْی اص عولگشُبی هسبعجبتی آسایَُب ّ هبتشیظُب
ثغتَُبی ًشمافضاسی قذستوٌذ ثشای تدضیَ ّ تسلیل آهبسی
کتبثخبًَُبی اًدبم عولیبت دادٍکربّی ّ یربدگیشی هبؽریي هبًٌرذ دعرتَثٌرذی ،خْؽرَثٌرذی ،تسلیرل
ؽجکَاختوبعی ،یبدگیشی تقْیتی ّ ...
اههبًبت گشافیهی ثشای تدضیَ ّ تسلیل دادٍُب ّ سعن ًوْداس
کتبثخبًَُبی خبؿ هٌظْسٍ ثشای اًدبم عولیبت تسلیلی دس صهیٌَُبی هختلف علوی
داسای هغتٌذات فشهتثٌذی ؽذٍ ّ هٌظن ثشای اعتفبدٍ اص صثبى ّ کتبثخبًَُبی هشتجظ
3-1تحلیل شبکَاجتواػی در R
یکی اص هِوتشیي اثضاسُبی تسلیرل ّ هقْسعربصی ؽرجکَاختوربعی دس زرْصٍ آکبدهیرک ّ تدربسی R ،هریثبؽرذ.
ثغتَُبی ... ّ snort ،egonet ،sna ،statnet ،igraphاص خولَ آىُب هیثبؽذ .دس ایي گضاسػ هب اص igraphثَ عٌْاى
اثضاس اعتفبدٍ هیکٌین .عبختبس دادٍای ُ igraphوبٌُگ ثب sna ّ statnetهیثبؽذ.
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
ًقت ّ Rتعجیَ آى دس ًشمافضاسRapidMiner
1
2نصب Rو تعبیه آن در نرمافسار RapidMiner
ثشای اعتفبدٍ اص Rدس ًشمافضاس قذستوٌذ Rapidminerثبیذ اثتذا ُغتَ افلی Rسا ًقرت کٌرین ّ عرپظ افضًّرَ
هشثْعَ دس Rapidminerسا فعبل ّ تٌظین ًوبیین .دس اداهَ ثب هشازل ایي عولیبت آؽٌب خْاُین ؽذ.
1-2هراحل ًصب ُطتَ اصلی R
ثشای ًقت ُغتَ افلی ًشمافضاس Rکبفی اعت کَ ثَ عربیت www.r-project.orgهشاخعرَ کرشدٍ ّ ثرَ ثخرؼ
داًلْد CRANثشّیذ .دس ایي ففسَ ،آدسطُبی تعذادی اص عبیتُبیی کَ پشّژٍ Rدس آى رخیشٍ هریؽرْد قرشاس داسد.
هستْای توبهی ایي عبیتُب یکغبى اعت ،ثٌبثشایي ثب اًتخبة یکی اص آىُب ثَ ففسَ داًلْد ثشّیذ .دس ایي هشزلَ پظ اص
اًتخبة عیغتن عبهل خْد ،دّ لیٌک ثشای ؽوب ًوبیؼ دادٍ هیؽْد:
ُ :base .3غتَ افلی Rکَ ثشای ًقت اّلیَ ثَ آى ًیبص داسیذ.
:contrib .2ثغتَُبی ًشمافضاسی کَ تْعظ کبسثشاى عشاعش خِبى ایدبد ؽذٍ ّ تْعظ تین تْععَدٌُرذگبى
هذیشیت هیؽْد.
شکل ً . 2وایی از یکی از هراحل ًصب ًرمافسار R
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
ًقت ّ Rتعجیَ آى دس ًشمافضاسRapidMiner
4
اص آىخب کَ هب ققذ داسین Rسا ثشای اّلیي ثبس ًقت کٌین ،سّی گضیٌرَ baseکلیرک کرشدٍ ّ خذیرذتشیي ًغرخَ
هشثْعَ سا داًلْد هیًوبیین .اص آىخب کَ ًغخَ ًقت ؽذٍ تْعظ ًگبسًذٍ سّی عیغتنعبهرل ّیٌرذّص هریثبؽرذ ،ؽربیذ
ثشخی اص تْضیسبت اداهَ هْسد اعتفبدٍ کبسثشاى دیگش عیغتنعبهلُب ًجبؽذ.
ًقت Rاص سّی فبیل اخشایی ثغیبس عبدٍ هیثبؽذ ّ تٌِب کبفی اعت ثب کلیک ثش سّی فبیل اخشایی هشازل ًقت سا
اص سّی Wizardاًدبم دُیذ .دس هشازل ًقت یبیذ اعالعبتی اص قجیل پْؽَ ًقت ،کبهپًٌْتُبیی کَ ثبیذ ًقرت ؽرْد
(ؽکل ... ّ )2سا ّاسد ًوبییذ .پظ اص ًقت ؽوب هیتْاًیذ ثب اعتفبدٍ اص یک کٌغْل (ؽکل ًْ ّ )1ؽتي اعرکشیپتُربی
هشثْعَ ثَ صثبى Rاص اهکبًبت ایي ًشمافضاس اعتفبدٍ ًوبییذ.
شکل .3هحیظ کٌطْل ًرمافسار R
ً 2-2صب افسًَّ Rدر Rapidminer
ًشمافضاس Rapidminerاص ًغخَ 5ثَ ثعذ ،افضًَّ Rسا ثَ اهکبًبت خْد افضّد .ثَ کوک ایي افضًَّ ؽوب هریتْاًیرذ
اص هسیظ Rapidminerثشای ًْؽتي اعکشیپتُبی ّ Rایدبد هبژّلُبی قبثل اعرتفبدٍ دس دیگرش ثخرؼُرب ،اعرتفبدٍ
کٌیذ .ثشای ًقت افضًَّ Rهشزلَ اثتذایی ثذیي فْست اعرت کرَ اص هٌرْی ،helpگضیٌرَ Update Rapidminerسا
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
ًقت ّ Rتعجیَ آى دس ًشمافضاسRapidMiner
5
اًتخبة هیکٌیذ ّ عپظ ثش سّی گضیٌَ installکلیک ًوبییذ (ؽکل .)4ثعذ اص اًدبم ایري کربس ،افضًّرَ هرْسد ًظرش اص
ایٌتشًت داًلْد ؽذٍ ّ ًقت هی گشدد .ثشای اًدبم ثقیَ هشازل ثبیذ پظ اًدبم تٌظیوبتی کَ دس اداهرَ ثیربى هریگرشدد،
Rapidminerسا هدذدا ساٍاًذاصی کٌیذ.
شکل .4رّشي کردى افسًَّ Rدر Rapidminer
ثقیَ هشازل ًقت ،Rثَ تٌظین ثخؼُبی هختلف هشثْط هیؽْد کَ ثَ فْست صیش اًدبم هیپزیشد:
.3ثعذ اص ساٍاًذاصی ًغخَ هٌبعت ،Rؽوب ثبیذ ثغتَ ًشمافضاسی rJavaسا اص CRANداًلْد ّ ًقت ًوبییذ.
ثرررذیي هٌظرررْس ثرررَ هسررریظ کٌغرررْل Rثشّیرررذ ّ دس هسرررل اعرررکشیپت ًْیغررری آى عجررربست
)" install.packages("rJavaسا تبیپ ًوبییذ .دس فْستی کَ ثَ ایٌتشًت هتقل ثبؽریذ ایري ثغرتَ ثرَ
فْست خْدکبس داًلْد ّ ًقت هیگشدد.
.2عجبست )( .libPathsسا دس کٌغْل تبیپ کٌیذ .دس یکی اص پْؽرَُربی ًوربیؼ دادٍ ؽرذٍ ،ثغرتَ rJava
ًقت ؽذٍاعت .ایي آدسط سا ثشای ٌُگبم ثبص کشدى Rapidminerثَ خبعش ثغپبسیذ.
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
ًقت ّ Rتعجیَ آى دس ًشمافضاسRapidMiner
6
.1ثشای ایي کَ هغوئي ؽْیذ Rapidminerهریتْاًرذ کتبثخبًرَُربی Rسا پیرذا کٌرذ ،ثبیرذ هتغیشُربی
هسیغی 1عیغتنعبهل خْد سا تٌظین ًوبییذ .دقت کٌیذ کَ اعن ایي هتغیش زغبط ثَ زشّف کْچرک ّ
ثضسگ هیثبؽذ
هتغیش PATHسا ثب هقذاس ّ <R installation directory>\binاسد ًوبییذ .ثرَ عٌرْاى ًوًْرَ
ایي هقذاس ثبیرذ هؾربثَ C:\Program Files\Rapid-I\RapidMiner5\jre\binثبؽرذ .ایري
پْؽَ ثبیذ ؽبهل فبیلُبی ً 2dllشمافضاس ّ Rکتبثخبًَ ُبی هشتجظ ثبؽذ .دقرت کٌیرذ کرَ ایري
پْؽَ ثبیذ ؽبهل فبیل R.dllثبؽذ.
چٌبًچَ دس هتغیشُبی هسیغی عیغتن عبهل ؽوب JAVA_HOMEی کَ ثَ پْؽَ ًقت خبّا
اؽبسٍ کٌذّ ،خْد ًذاسد؛ ثبیذ ایي هتغیش سا ًیض اضبفَ ًوبییذ .دس فْستی کَ خبّا ًیض سّی سایبًرَ
ؽوب ًقت ًوریثبؽرذ ،هقرذاس <RapidMiner installation directory>/jreسا ثرشای ایري
هتغیش ّاسد ًوبییذ .دقت کٌیذ کَ خبّای ًقت ؽذٍ سّی سایبًَ ؽروب ثبیرذ اص لسربػ 12یرب 64
ثیت ثْدى ،هغبثق Rapidminer ّ Rثبؽذ.
شکل .5اضافَ کردى هتغیرُای هحیطی هرتبظ بَ تٌظیوات افسًَّ R
Environment Variable
dynamic link library
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
1
2
ًقت ّ Rتعجیَ آى دس ًشمافضاسRapidMiner
7
هتغیش ً R_HOMEیض ثبیذ ثَ هتغیشُبی هسیغی اضبفَ گشدد .هقرذاس ایري ثرَ پْؽرَ ًغرخَ
ًقت ؽرذٍ Rاؽربسٍ کٌرذ( .ثرَ عٌرْاى هثربل )D:\Program Files\R\R-2.13.0ؽرکل 5
چگًْگی تٌظین ایي هتغیش سا ًؾبى هیدُذ.
.4دس ایي هشزلَ ؽوب هیتْاًیذ ًشمافضاس Rapidminerسا ثبص کٌیذ .قجل اص ؽشّ ثَ کبس ثشًبهرَ ،فرفسَای
ثَ ؽوب ًوبیؼ دادٍ هیؽْد کَ هشازل ًقت سّی آى ًْؽرتَؽرذٍ اعرت .سّی دکورَ Nextکٌیرذ .دس
ففسَ ثعذی اص ؽوب خْاعتَ هیؽْد آدسط کتبثخبًَ jriی ثب ً rJavaقت کشدٍایذ سا هؾخـ ًوبییرذ.
ثذیي هٌظْس آدسط libPathsسا اص هشزلَ 2ثَ خبعش ثیبّسیذ ّ ثرَ <libpath directory>/rJava/jri/
ثشّیذ .دس ایي پْؽَ فبیل jri.dllسا اًتخبة ًوبییذ.
.5اگش فبیل هؾخـ ؽذٍ سا اًتخبة کشدٍ ثبؽیذ ،ثشًبهَ ثغتَ هیؽرْد .دّثربسٍ ًرشمافرضاس Rapidminerسا
اخشا ًوبییذ .چٌبًچَ افضًَّ ثب هْفقیت ًقت ؽذٍثبؽذ ،ثب ُیچ دعتْس خغربیی دس ٌُگربم اخرشا ثشخرْسد
ًخْاُیذ کشد .دس غیش ایي فْست زتوب یکی اص هشازل فْش سا ثَ دسعتی اًدبم ًذادٍایذ.
دس فْست ًقت فسیر افضًَّ ،ثبیذ پظ اص ثبال آهذى ثشًبهَ ثبیذ عالهت Rدس ًْاس اثضاس فْقربًی (هغربثق ؽرکل )6
اضبفَ ؽذٍثبؽذ.
شکل .6اضافَ شذى آیکي Rدر ًْارابسار فْقاًی
3-2هحیظ اضکریپتًْیص افسًَّ R
هسیظ Rدس ًشمافضاس Rapidminerثَ ُوبى فْست اعکشیپت ًْیغی تعجیَ ؽذٍاعت [ .]6ؽکل ً 7وربی کلری
آى ًؾبى دادٍؽذٍاعت .دس قغوت ّعظ پبییي ،ؽوب اهکبى ًْؽتي اعکشیپتُبی هرْسد ًظرش سا داسیرذ .ثرب صدى Enter
ایي اعکشیپتُب اخشا هیؽًْذ ّ ًتبیح آى دس کٌغْل ثبالی آى (ًوبیؼدادٍ ؽذٍ ثب سًرگ عرجض) ًؾربى دادٍهریؽرًْذ.
هتغیشُبیی کَ دس زیي کبس ثب ثشًبهَ ایدبد هیکٌیذ دس پٌل عوت چپ ًوبیؼ دادٍ هیؽًْذ .چٌبچَ ؽروب ًورْداسی سا
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
ًقت ّ Rتعجیَ آى دس ًشمافضاسRapidMiner
8
سعن کٌیذ ،دس پٌل ًؾبىدادٍ ؽذٍ ثب سًگ آثی ًوبیؼ دادٍ هیؽْد .ؽکل سعن ؽذٍ سا هیتْاًیذ ثب دکوَ گْؽرَ پٌرل
دس اًْا فشهت ُبی تقْیش رخیشٍ ًوبییذ .ثب دّثبس کلیک سّی عٌْاى ُش کذام اص ایي پٌلُب ،آىُب ثَ زبلت توبم فرفسَ
ّ ثشعکظ دس خْاٌُذ آهذ .آخشیي پٌلی کَ دس ایي ففسَ ّخْد داسد ،پٌل ساٌُوبعت .دس فْستی کَ ؽوب هریخْاُیرذ
ثَ ساٌُوبی دعتْس xدعتشعی پیذا کٌیذ ،هیتْاًیذ ثَ کوک اعکشیپت
x
? ایي کبس سا اًدبم دُیذ.
شکل ً .7وای کلی افسًَّ Rدر Rapidminer
4-2اضتفادٍ از Rدر Rapidminer
ثشای اعتفبدٍ اص Rدس هسیظ عشازی) ، )Designهدوْعَ عولگشُبی هخقْفی دس هسیظ Rapidminerتعجیَ
ؽذٍاعت .ؽکل 8ایي عولگشُب سا ًؾبى هیدُیذ .ثشخی اص ایي عولگشُب خبؿ هٌظْسٍ ّ ثشخی عبم هٌظْسٍ هیثبؽٌذ.
شکل .8ػولگرُای Rدر ًْارابسار
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
ًقت ّ Rتعجیَ آى دس ًشمافضاسRapidMiner
9
دس Rapidminerچٌذ هسیظ کبسی (ّ )Perspectiveخْد داسد .هِنتشیي آىُب عجبستٌذ اص:
.3هسیظ عشازی :فضبیکبس ایدبد خشیبى کبس دادٍکبّی.
.2هسیظ ًتبیح :فضبیکبس هؾبُذٍ ًتبیح ثذعت آهذٍ.
.1هسیظ :Rفضبیکبس اعکشیپتًْیغی ثَ صثبى .R
شکل .9آیکي فضای کاریُای هحتلف در Rapidminer
ثشای ایي کَ ثتْاًین دادٍُبی Rسا دس هسیظ عشازی ّاسد ًوبیین ،اثتذا ثبیذ دس هسیظ Rآىُب سا دس عٌرْاى یرک
Repositoryرخیشٍ ًوبیین .ثَ عٌْاى ًوًَْ ،دس ؽکل 33رخیشٍ هدوْعَدادٍ کبساتَ ًؾبى دادٍ ؽذٍاعت.
شکل .11هراحل رخیرٍ دادٍُای RدرRepository
زبل ثَ هسیظ عشازی هیسّین ّ ،ثب کؾیذى ( Dragکشدى) هٌجادادٍ کبساتَ ثَ ًوبی ،Processآى سا دس فشآیٌرذ
دادٍکبّی ّاسد هیًوبیین .ثَ عْس پیؼفشك عولگش ثبصیبثی ( )Retriveثشای ثبسگزاسی هدوْعَدادٍ ،ثرَ فشآیٌرذ افرلی
اضبفَ هیگشدد ّ تٌِب پبساهتش آى -کَ Repository Entryاعت -،ثَ فْست خْدکبس پش هیؽْد.
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
ًقت ّ Rتعجیَ آى دس ًشمافضاسRapidMiner
33
خشّخی عولگش قجلی سا ثَ ّسّدی یرک عولگرش )ّ Execute Script (Rفرل کٌیرذ .ایري عولگرش ،یرک عولگرش
عبمهٌظْسٍ اعت ّ اعکشیپتُبی دلخْاٍ سا اخشا هیًوبیذ .ثشای تٌظین ایري عولگرش ثبیرذ عرَ پربساهتش اعرکشیپتً ،ربم
ّسّدیُب ّ خشّخی ُب سا ّاسد ًوبییذ .هب ققذ داسین سّی گشاف کبساتَ ،عبختبسیبثی اختوب اًدربم دُرین .ثٌربثشایي کرذ
عولیبت ثَ فْست صیش اعتُ ،karate .وبى هدوْعَدادٍ ّسّدی اعت.
)'library('igraph
graph <- karate
)graph <- simplify(graph
)spc <- spinglass.community(graph, spins=20
)result <- as.data.frame(spc$membership
هتغیشُبی هؾخـؽذٍ ثب سًگ قشهض ،خشّخیُبی ایي اعکشیپتُغتٌذ .کال دّ ًْ خشّخری ثرشای عولگرش فرْش
ّخْد داسد:
:Generic R Result .3کَ ؽبهل اًْا هتغیشُبّ ،کتْسُب ،آسایَُب ّ R ...هیؽْد .ایري خشّخریُرب تٌِرب
قبثل پشداصػ ثشای عولگشُبی افضًَّ ُ Rغتٌذ.
:Data Table .2ایي خشّخی هعبدل data frameدس Rاعت .زتوب ثبیرذ خرٌظ ایري ًرْ خشّخری دس
اعکشیپت ،ثَ data frameتجذیل ؽرذٍثبؽرذ .چٌبًچرَ ثخْاُیرذ ًتربیح اعرکشیپت ثرشای عولگرشُربی
Rapidminerقبثل فِن ثبؽذ ّ ثَ فْست خذّل ًوبیؼ دادٍؽْد ،ثبیذ اص ایي ًْ اعتفبدٍ کٌیذ.
تْخَ داؽتَ ثبؽیذ کَ تشتیت تعشیف خشّخیُب دس ایي عولگش هِناعت .ثَ عْسی کَ پشتُبی خشّخی ثَ ُوربى
تشتیت تعشیف ؽذٍ دس پبساهتش ،Resultپش هیؽًْذ.
شکل ً .11حٍْ تؼربف خرّجی ػولگر )Execute Script (R
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
ًقت ّ Rتعجیَ آى دس ًشمافضاسRapidMiner
33
اص آًدب کَ ققذ داسین ًتبیح عبختبسیبثی پیؾیي سا سعن ّ دس Clipboardثَ فْست تقرْیش ضرجظ ًوربیین ،یرک
عولگش دیگش ایدبد هیکٌین کَ ایي عولیبت سا اًدبم دُذ.
)'library('igraph
)res <- as.data.frame(spc$csize
)(x11
plot(graph, layout=layout.kamada.kawai(graph), vertex.size=5,
)vertex.label=NA, vertex.color=spc$membership+1, asp=FALSE
)"savePlot(filename = "clipboard", type = "png
هذل فشآیٌذ کلی ،هشازل ثبال دس ؽکل ً ّ 32تیدَ اخشای عبختبسیبثی دس ؽکل ً 31وبیؼ دادٍؽذٍاعرت .الجترَ
ثبیذ تْخَ داؽت ،افضًَّ فعلی ٌُْ ،Rص داسای هؾکالت ثغیبسی اعت ّ اخشای ثشخی اص دعتْسات ثرب هؾرکالتی هْاخرَ
اعت .اص خولَ آى هیتْاى ثَ ثغتَؽذى پٌدشٍ ًتبیح سعنؽذٍ ثب اتوبم اخشای فشآیٌذ ،اؽبسٍ ًوْد.
شکل .12هذل فرآیٌذ کلی هراحل تحلیل گراف کلْپ کاراتَ
شکل ً .13تیجَ ضاختاریابی اًجامشذٍ در فرآیٌذ فْق
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
هذلغبصی گشاف
32
3مدلسازی گراف
اص آى خب کَ اعبط کبس هب ثش کتبثخبًَ igraphاعتْاس اعت ،دس اداهَ ًسرٍْ هذلغربصی گرشاف دس ایري کتبثخبًرَ سا
ثشسعی هیًوبیین .گشاف یک استجبط ثبیٌشی (یبلُب) ثیي اعضبی یک هدوْعَ (گشٍُب) اعت .اگش دّ عضْی کرَ ثرب ُرن
ساثغَ داسًذ ثذّى تشتیت ثبؽٌذ ،آىگبٍ گشاف ثذّى خِت اعت (ؽکل ّ )34گشًَ گشاف خِت داس هیثبؽذ (ؽکل .)35
شکل .14گراف بذّى جِت
شکل .15گراف جِت دار
ُوْاسٍ گشٍُب اص ففش ؽوبسٍگزاسی هیؽْد ّ ثَ فْست هتٌبّة تب n-1اداهَ هییبثذ .ثرَ عٌرْاى ًوًْرَ دس گرشاف
ؽکل .... ّ C=2 ،B=1 ،A=0 ،34هیثبؽذ .تعشیف گشافُبی ؽکل ّ 34ؽکل 35دس Rثَ فرْست صیرش هریثبؽرذ:
تْخَ داؽتَ ثبؽیذ کَ ثشای اعتفبدٍ اص کتبثخبًَُبی igraphاثتذا ثبیذ آى سا ثب ) library(igraphثبسگرزاسی
کٌیذ.
## Load the igraph package
)library(igraph
## Create a small graph, A->B, A->C, B->C, C->E, D
## A=0, B=1, C=2, D=3, E=4
) g <- graph( c(0,1, 0,2, 1,2, 2,4), n=5
## Print a graph to the screen
g
## Create an undirected graph as well
## A--B, A--C, B--C, C--E, D
) g2 <- graph( c(0,1, 0,2, 1,2, 2,4), n=5, dir=FALSE
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
هذلغبصی گشاف
31
g2
ثشای ایي کَ خٌظ ُش یک اص هتغیشُب سا هؾخـ کٌیذ ،هیتْاى اص دعتْس classاعتفبدٍ ًوْد.
## How to decide what kind of object a variable refers to
)class(g2
)class(1
)"class("foobar
ًتیدَ اخشای دعتْسات ثبال ثَ فْست صیش خْاُذ ثْد:
"[1] "igraph
"[1] "numeric
"[1] "character
ثَ کوک تبثا)( is.igraphهیتْاًیذ اص گشاف ثْدى یک ؽی اعویٌبى زبفل ًوبییذ:
?## Is this object an igraph graph
)is.igraph(g
)is.igraph(1:10
چٌبًچَ یک ؽی گشاف ثبؽذ ،دعتْسات صیش اعالعبت ثیؾتشی اص عبختبس گشاف ّ تعذاد گشٍ ّ یبلُب اساهَ هیکٌٌذ:
## Summary, number of vertices, edges
)summary(g
)vcount(g
)ecount(g
دعتْس خِتداس ثْدى گشاف سا هؾخـ هی کٌذ .ایي تبثا تٌِب ثشای گشاف تعشیف ؽرذٍ ّ ثرشای دیگرش اؽریب خغرب
هیدُذ .ؽوب هیتْاًیذ ُش یک اص گشافُبی خِتداس ّ ثذّى خِت سا ثَ یکذیگش تجرذیل ًوبییرذ .چٌبًچرَ یرک گرشاف
خِتداس ،ثذّى خِت ؽْد توبهی یبلُب فقظ ثَ یبل ثذّى خِت تجذیل هیگشدد .چٌبًچرَ استجربط یرک یربل دّعشفرَ
ثبؽذ ًیض دّ یبل ثَ یک یبل تجذیل هی ؽْد .ایي دسزبلی اعت کَ دس تجذیل ثذّى خِت ثَ خِتداس ُش یبل ثَ دّ یربل
سفت ّ ثشگؾت هجذل هیگشدد.
?## Is the graph directed
)is.directed(g
)is.directed(g2
)is.directed(1:10
## Convert from directed to undirected
)as.undirected(g
## And back
))as.directed(as.undirected(g
دس یک گشاف هیتْاى چٌذیبل ثیي دّ گشٍ تعشیف کشد .هثال دس گشاف )): E = ((AB); (AB); (AC); (BC
## Multiple edges
) g <- graph( c(0,1, 0,1, 0,2, 1,2 ), n=5
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
هذلغبصی گشاف
34
تؾخیـ عبدٍ ثرْدى یرب چٌرذ یربلی ثرْدى گرشاف ثرب تْاثرا )is.multiple(g) ّ is.simple(g
اهکبى پزیش اعتُ .وچٌیي اگش ثخْاُین یک گشاف چٌذیبلَ سا ثَ گشاف عبدٍ تجرذیل ًوربیین ،هریترْاى اص دعرتْس صیرش
اعتفبدٍ ًوْد.
## Remove multiple edges
)g <- simplify(g
)is.simple(g
یکی دیگش اص قبثلیت ُبیی کَ اهکبى تعشیف آى ثشای گشاف ّخْد داسد ،افضّدى عْقَ هریثبؽرذ .ثرب simplify
کشدى یک گشاف عْقَُب ًیض اص ثیي خْاُذ سفت.
## Loop edges
) g <- graph( c(0,0,0,1, 0,2, 1,2, 3,4), n=5
)is.simple(g
)is.loop(g
## Remove loop edges
)g <- simplify(g
)is.simple(g
یکی اص قبثلیتُبی igraphثشای ؽی گشاف ،اهکبى ًبهگزاسی گشٍُب هیثبؽذ .دس اعکشیپت صیرش اثترذا یرک گرشاف
33گشٍ ای ثَ فْست زلقْی (ُش گشٍ تٌِب ثب یبل قجلی ّ ثعذی ساثغَ داسدُ .وچٌیي یبل اثترذا ّ اًتِربیی ًیرض ثرَ ُرن
هتقل هیگشدًذ ).ایدبد هیؽْد .اعبهی گشٍُب ثَ تشتیت 33زشف اثتذایی الفجبی اًگلیغی تعییي هیگشدد.
## Naming vertices
)g <- graph.ring(10
]V(g)$name <- letters[1:10
V(g)$name
g
)print(g, v=T
دّ ًکتَ خبًجی دس کذ ثبال ّخْد داسد .اّل ایي کَ ثب افضّدى $nameیک ففت ثَ ) V(gاضبفَ کرشدین کرَ دس
اداهَ قبثل دعتشعی اعت .افضّدى ففبت دیگش ُن هؾبثَ ُویي فشآیٌذ اعتً .کتَ دّم تبثا printاعت کَ ثرَ هرب
اخبصٍ هی دُذ تب اعالعبتی کَ اص گشاف دس کٌغْل چبپ هیؽْد سا هذیشیت ًوبیین .هثال دس کذ ثربال گرشٍُرب سا ًیرض ثرَ
هْاسدی کَ ًؾبى دادٍ هیؽْد اضبفَ ًوْدین.
1-3ضاخت گراف
یکی اص اثضاسُبی igraphثشای ایدبد گشاف اص سّی ًبم یبلُب graph.formulaهیثبؽذ .ثَ کوک ایي تربثا
تٌِب ؽوب کبفی اعت هغیشُبی هختلف ثیي یبلُب سا دس گشاف هؾخـ ًوبییذ .کذ صیش ایدبد یک گشاف غیشخِرتداس سا
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
هذلغبصی گشاف
35
ًؾبى هیدُذ .عولگش "( "-عولگش یبل) ًؾبىدٌُذٍ ّخْد استجبط ثیي دّ گشٍ هیثبؽذ .ثَ کورک ایري تربثا ًیربصی ثرَ
تعشیف هدوْعَ گشٍُب ثَ فْست خذاگبًَ ّخْد ًذاسد.
## A simple undirected graph
g <- graph.formula(Alice-Bob-Cecil-Alice,
) Daniel-Cecil-Eugene, Cecil-Gordon
عولگش " ":ثشای تعشیف یک هدوْعَ گشٍ اعتفبدٍ هیؽْد .اگش دّ هدوْعَ ثب عولگش یبل ثرَ ُرن هتقرل ثبؽرٌذ،
توبهی گشٍُبی دّ هدوْعَ ثب ُن استجبط داسًذ .ثٌبثشایي ایري عولگرش ًغرجت ثرَ " "-تقرذم داسد .ثرَ عٌرْاى ًوًْرَ دس
اعررکشیپت صیررش Cecil:Daniel-Eugene:Gordon ،هؾررخـکٌٌررذٍ یرربلُرربی ،Cecil-Eugene
Daniel-Gordon ّ Cecil-Gordon ،Cecil-Eugeneسا هؾخـ هیدُذ.
## Another undirected graph, ":" notation
g2 <- graph.formula(Alice-Bob:Cecil:Daniel,
) Cecil:Daniel-Eugene:Gordon
ثشای تعشیف گشاف خِتداس دس " "+اعتفبدٍ هیًوبیین .ایي عولگش ًؾبىدٌُذٍ خِت هریثبؽرذ .تْخرَ کٌیرذ کرَ
" "+-+یک یبل دّ عشفَ اعت ًَ ،دّ یبل یک عشفَ .صیبد ثْدى تعذاد "ُ"-ب ثشای ًوبیؼ یک یبل ثذّى هعٌی اعت.
## A directed graph
g3 <- graph.formula(Alice +-+ Bob --+ Cecil
) +-- Daniel, Eugene --+ Gordon:Helen
## "Arrows" can be arbitrarily long
) g5 <- graph.formula( Alice +---------+ Bob
ُوچٌیي ثشخی اص گشٍُب هیتْاًٌذ ثَ فْست ایضّلَ تعشیف ؽًْذ.
## A graph with isolate vertices
g4 <- graph.formula(Alice -- Bob -- Daniel,
) Cecil:Gordon, Helen
اص دیگش ساٍُبی ایدبد گشاف خِتداس ،اعتفبدٍ اص تبثا cbindاعت .ثَ کوک ایي تبثا هیترْاى ثرب القربش دّ اص
هدوْعَ گشٍُب کَ ثَ تعذاد هغبّی گشٍ داسًذ ،هدوْعَای اص صّج هشتتُب ثَ ّخْد آّسد .صّج هشتتُبیی کَ اص تشکیت
اعضبی ًظیش ثَ ّخْد آهذٍ اًذ .ثعذ اص ایدبد ایي هدوْعَ هشکت ثرَ کورک تربثا graph.edgelistهریترْاى
گشافی هْسد ًظش سا ایدبد ًوْد.
## From edge lists
el <- cbind( c(0, 0, 1, 2),
) )c(1, 2, 2, 4
)g <- graph.edgelist(el
g
فشآیٌذ فْش سا ثَ خبی ؽوبسٍ گشٍ ،هیتْاى ثب ًبمُبی عوجلیک گشٍُب ًیض اًدبم داد.
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
هذلغبصی گشاف
36
## Symbolic edge lists
el <- cbind( c("Alice", "Alice", "Bob",
"Cecil"),
c("Bob",
"Cecil", "Cecil", "Ed") )
g <- graph.edgelist(el)
g
summary(g)
ثرب33 دس33 دس صیرش یرک گرشاف. اعرتفبدٍ هربتشیظ هدربّست اعرت،یک سّػ هتذاّل دیگش ثشای ایدبد گشاف
.یبلُبی تقبدفی ایدبد ؽذٍاعت
## Adjacency matrices
A <- matrix(sample(0:1, 100, rep=TRUE), 10, 10)
g <- graph.adjacency(A)
ایجاد گراف از رّی فایل بیرًّی2-3
یکری اص. دس فبیلُربی هتٌری رخیرشٍ هریؽرًْذ،توبم گشافُبیی کَ اص سّی دادٍُبی دًیبی ّاقا ایدبد هیؽًْذ
ُربdata frame دس اداهَ فشآیٌذ ایدربد گرشاف اص سّی. اعتR کشدى ایي دادٍُب دسimport ،ًیبصُبی افلی کبسثشاى
ٍ تعجیرَ ًؾرذٍ اعرتفبدigraph ثشای خْاًذى ایي اعالعبت اثتذا ًیبص داسین اص کذی کرَ ٌُرْص دس.ًؾبى دادٍ ؽذٍ اعت
.کٌین
## We need some extra code, not in the current version yet
source("http://cneurocvs.rmki.kfki.hu/igraph/plus.R")
.عپظ ثَ تشتیت گشٍُب ّ یبلُبی هْسد ًظش سا ثبسگزاسی ًوبیین
## Read the comma-separated value file
vertices <- read.csv("
http://cneurocvs.rmki.kfki.hu/igraph/judicial.csv")
## Read the edges, just a table, space separated
edges <- read.table(
"http://cneurocvs.rmki.kfki.hu/igraph/allcites.txt")
. هیتْاى گشاف سا ایدبد ًوْدgraph.data.frame ثب تشکیت یبلُب ّ گشٍُب ثَ کوک
## And create the graph
jg <- graph.data.frame(edges, vertices=vertices, dir=TRUE)
summary(jg)
ثرب سّؽري کرشدى.چٌبًچَ ثخْاُیذ هی تْاًیذ ایي گشاف سا ثشای اعتفبدٍ ُبی ثعذی دس یک فبیرل رخیرشٍ ًوبییرذ
. زدن ایي فبیل ًیض کبُؼ هییبثذ،قبثلیت فؾشدٍعبصی
## Save it for future use
save(jg, file="judicial.Rdata.gz", compress=TRUE)
داًؾگبٍ فٌعتی اهیشکجیش
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
هذلغبصی گشاف
37
3-3دضتکاری در ضاختار گراف
اص عولیبت ؽبیا سّی گشاف اضبفَ ّ کن کشدى گشٍ ّ یبلُبی آى هیثبؽذ .دس ایي قغوت گشاف g2کرَ قرجال آى
سا ایدبد ًوْدین دعتکبسی هیًوبیین .دس اثتذا گشٍ اّل آى سا ززف هیکٌین.
## Remove alice
)g3 <- delete.vertices(g2, 0
اضبفَ کشدى گشٍ ثَ کوک تبثا add.verticesاًدبم هیؽْدّ .سّدیُبی ایي تبثا گرشاف ّ تعرذاد گشُری
کَ ثبیذ اضبفَ ؽْد اعت .کذ خذیذی کَ دس اعکشیپت صیش اضبفَ ؽذٍاعت igraph.par ،هیثبؽذ .ثَ کوک ایري
تبثا هیتْاى پبساهتشُبی igraphسا تٌظین ًوْد .هثال هب چبپ ففبت گشٍُب سا فعبل کشدین تب اعبهی ًوبیؼ دادٍ ؽْد.
## Add three new vertices
)g4 <- add.vertices(g3, 3
)igraph.par("print.vertex.attributes", TRUE
g4
add.verticesایي اهکبى سا ًیض ثَ هب هیدُذ کَ ٌُگبم اضبفَ کشدى گشٍ اعبهی گرشٍُرب سا ًیرض هؾرخـ
ًوبیینّ .سّدی اعبهی زتوب ثبیذ ثَ فْست لیغت ثبؽذ ،دس هثبل صیش هب ففت nameسا ثَ گشٍُب اضبفَ هیًوبیین.
## Add three new vertices, with names this time
)))"g4 <- add.vertices(g3, 3, attr=list(name=c("Ha", "Ik", "Ja
g4
هؾبثَ گشٍ ،اضبفَ کشدى یبل ًیض ثَ سازتی ثب تبثا add.edgesاهکبىپزیش اعت.
## Add some edges as well
))g4 <- add.edges(g4, c(6,7, 5,7
g4
4-3اضتخراج ُوطایگی یالُا
آهْصػ ایي ثخؼ سّی گشاف g2اًدبم هیؽْد کَ ثب اعکشیپت صیش آى سا ایدبد هیًوبیین .اگش ثخرْاُین ؽٌبعرَ
یک یبل سا ثیبثین ،دعتْس as.vectorایي قبثلیت سا ثشای هب فشاُن هیکٌذ.
## Create directed example graph
g2 <- graph.formula(Alice -+ Bob:Cecil:Daniel,
) Cecil:Daniel +-+ Eugene:Gordon
)print(g2, v=T
## Get the id of the edge
)))as.vector(E(g2, P=c(0,1
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
هذلغبصی گشاف
38
دس ثغیبسی اص الگْسیتنُب هب ًیبص داسین ثَ یبلُبی هدبّس یک گشٍ دعتشعی پیذا کٌین .تبثا )( adjایي قبثلیرت
سا دس اختیبس هب قشاس هیدُذّ .سّدی ایي تبثا یک یب چٌذ گشٍ هیثبؽذ.
## All adjacent edges of a vertex
] )E(g2)[ adj(2
## Or multiple vertices
] ))E(g2)[ adj(c(2,0
چٌبًچَ گشافی خِتداس ثبؽذ ،هیتْاى ثیي یبلُبی ّسّدی ّ خشّخی اص یک گشٍ توربیض قبهرل ؽرذ ّ ثرَ فرْست
خذاگبًَ ثَ ُش یک دعتشعی داؽت.
## Outgoing edges
] )E(g2)[ from(2
## Incoming edges
] )E(g2)[ to(2
یکی اص قبثلیتُبی خْة igraphایي اعت کَ هب هیتْاًین یبلُبیی کَ ثیي یک هغیش اص گرشٍُرب قرشاس داسًرذ سا
اعتخشاج ًوبیین .الجتَ ا یي قبثلیت تٌِب ٌُگبهی قبثل اعتفبدٍ اعت کَ یک هغیش کبهل سا دس ّسّدی تربثا قرشاس دُرین.
چٌبًچَ یکی اص گشٍُبی هغیش رکش ًؾْد ،ثب خغب هْاخَ هیؽْین.
## Edges along a path
))E(g2, path=c(0,3,4
ًتیدَ دعتْس ثبال ثَ فْست صیش خْاُذ ثْد:
Edge sequence:
[2] Alice -> Daniel
[8] Daniel -> Eugene
5-3رضن گراف
ثشای سعن گشاف اص عَ تبثا صیش هیتْاى اعتفبدٍ ًوْد:
،plot .3سعن عبدٍ ،دّثعذی ّ غیش تعبهلی گشاف اعت .ایي تبثا پیبدٍعبصی تبثا عوْهی plotهیثبؽذ.
،tkplot .2تبثعی ثشای سعن دّثعذی ّ تعبهلی گشاف هیثبؽذ کَ اص کتبثخبًَ tcltkاعتفبدٍ هریکٌرذ .ایري
تبثا ثشای سعن گشافُبیی تب اًذاصٍ هتْعظ –زذاکثش چٌذ ُضاس گشٍ -اعتفبدٍ هیؽْد ،صیشا هقشف هٌبثا
آى صیبد اعت .ثَ کوک tkplotهیتْاى ثشخی اص ّیژگیُبی گشاف سا دس صهبى اخشا تغییش داد.
:rglplot .1یک تبثا آصهبیؾی ثشای سعن عَثعذی تْاثرا اعرت کرَ اص OpenGLاعرتفبدٍ هریًوبیرذ .دس
گشاف سعنؽذٍ هیتْاى عولیبت ثضسگٌوبیی ،چشخؼ ّ اًتقبل سا اًدبم داد ،اهب خبی گشٍُب ثبثت اعت.
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
هذلغبصی گشاف
39
دس اداهَ ثشای سعن ،اثتذا یک ؽجکَ ثیهقیبط ( )scale-freeهیعبصین .ؽجکَُبی ثیهقیبط کَ تْعظ آلجرشت ّ
ثبساثبعی گغتشػ یبفتٌذ [ ،]7ثب فشآیٌذ اتقبل تشخیسی سؽذ هیکٌٌذ .ؽکل 36یک ؽجکَ ثی هقیبط اتقبلُبی تربصٍ
ثَ عْس تشخیسی ثَ عوت گشٍُبی «قغت» (هشکضی )hub-خِتگیشی هیکٌٌذ.
شکل ً .16وًَْای از یک شبکَ بیهقیاش .قطبُا بَ صْرت رًگی ًشاى دادٍ شذٍاًذ.
ؽجکَ ُبی ثی هقیبط عذد «خِؼ» ( )hopsهتْعظ کْچکی ثشای سفتي اص یک گرشٍ دس ؽرجکَ ثرَ گرشٍ دیگرش
داسًذ .ایي هغلت ثب صهبى فشف ؽذٍ ثشای اسعبل یک پیبم اص عشك ؽجکَ دس استجبط اعت .ؽجکَ ُبی ثری هقیربط ثرَ
دلیل ایٌکَ دس عی یک زولَ عوذی ثَ گشٍ ُبی هشکضی هتالؽی هیؾًْذ ،عشازی خْثی ثشای ؽجکَُبی هخبثشاتی ثَ
ؽوبس ًویسًّذ .ثَ ُش زبل ،آىُب کبهال ثَ ًقـُبی تقبدفی هقبّهٌذ .دس عغر ( TCP/IPاهب ًرَ دس عرغر فیضیکری)
ایٌتشًت ًیض یک ؽجکَ ثی هقیبط اعت .ثشای ًوًَْ google.com ،ثَ عٌْاى «گشٍ قغت» افلی عورل هریکٌرذ .ایري
عبختبس هٌغقی ثیهقیبط ایٌتشًت ،گغتشػ ّیشّطُبی کبهپیْتشی سا تقْیت هیکٌذ.
دس اعکشیپت صیش تبثا barabasi.gameیک ؽجکَ ثیهقیبط یرک اتقربلَ ثرب 333گرشٍ ایدربد هریکٌرذ.
یکاتقبلَ گشاف ثْدى ثَ ایي هعٌبعت کَ ُش گشٍ خذیذ ثَ یک گشٍ هْخْد هتقل هیؽْد.
## Create a scale-free network
)g <- barabasi.game(100, m=1
)g <- simplify(g
دس ایي قغوت اثتذا آسایؼ قشاس گیشی گشٍُب ّ یربلُرب سا دس سعرن هؾرخـ هریکٌرین .آسایؾری کرَ ثرَ عٌرْاى
پیؼ فشك دس ایي کذ تٌظین ؽذٍ ،آسایؼ هعشّف Fruchterman-Reingoldهیثبؽذ [ .]8ثشای سعرن اص تربثا plot
اعتفبدٍ ؽذٍاعت.
## simple plot
)igraph.par("plot.layout", layout.fruchterman.reingold
)plot(g, vertex.size=3, vertex.label=NA, edge.arrow.size=0.6
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
هذلغبصی گشاف
23
دس ایي ثخؼ اص tkplotثشای عبخت یک ؽوبی تعبهلی اص گشاف ثِشٍ گشفتَ ؽذٍاعت.
## interactive
id <- tkplot(g, vertex.size=3, vertex.label=NA,
)edge.arrow.size=0.6
)coords <- tkplot.getcoords(id
ؽکل صیشً ،تیدَ اعکشیپت فْش سا ًوبیؼ هیدُذ.
شکل .17گراف رضن شذٍ در هحیظ tkplot
دس ایي ثخؼ ؽوبی 1ثعذی گشاف فْش سا ثَ کوک rglplotسعن ؽذٍاعت.
## 3D
)(open3d
rglplot(g, vertex.size=3, vertex.label=NA,
)edge.arrow.size=0.6
دس کذ صیش سعن گشاف ثبال ثب آسایؼ کبهبدا-کبّای اًدبم ؽذٍاعت [ .]9تْخَ کٌیذ کَ dim=3عرَثعرذی ثرْدى
آسایؼ گشاف سا ًؾبى هیدُذ.
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
هذلغبصی گشاف
23
## A bit better 3D
coords <- layout.kamada.kawai(g, dim=3)
open3d()
rglplot(g, vertex.size=3, vertex.label=NA,
edge.arrow.size=0.6, layout=coords)
rglplot گراف ضَ بؼذی رضن شذٍ با.18 شکل
گرٍُا ّ یالُا، دضترضی ّ تغییر صفات گراف6-3
. گشٍُب ّ یبلُب ُش کذام هیتْاًٌذ ففبت خذاگبًَای داؽتَثبؽٌذ کَ ّیژگیُبی آىُرب سا هؾرخـ ًوبیٌرذ،گشاف
. ثبصیبثی ًوْدین اعتفبدٍ هیکٌین2-1 دس ایي قغوت اص هدوْعَدادٍ قضبیی کَ آى سا دس ثخؼ
## Load the jurisdiction network
load("judicial.Rdata.gz")
## If we don't have it then create it again
if (!exists("jg")) {
source("http://cneurocvs.rmki.kfki.hu/igraph/plus.R")
vertices <- read.csv("
http://cneurocvs.rmki.kfki.hu/igraph/judicial.csv")
edges <- read.table("
http://cneurocvs.rmki.kfki.hu/igraph/allcites.txt")
jg <- graph.data.frame(edges, vertices=vertices, dir=TRUE)
}
:هعوْال تْاثا صیش ثشای هقذاسدُی ّ پشطّخْ اص ایي ففبت اعتفبدٍ هیگشدد
set.graph.attribute, get.graph.attribute, list.graph.attributes,
set.vertex.attribute, get.vertex.attribute, list.vertex.attributes,
set.edge.attribute, get.edge.attribute, list.edge.attributes
داًؾگبٍ فٌعتی اهیشکجیش
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
هذلغبصی گشاف
22
تْاثا فْش ،عولیبت هقذاسدُی ،ثبصیبثی ّ اساهَ لیغت ففبت سا اًدبم هیدٌُذ .الجتَ ساٍ عبدٍتش دعتشعری اعرتفبدٍ
اص $دس خلْی هتغیشُبعت .دس کذ صیش چگًْگی دعتشعی ثخؾی اص ففبت پؾت عش ُن ًؾبى دادٍؽذٍ اعت.
?## What do we have
)summary(jg
]V(jg)$year[1:100
]V(jg)$parties[1:10
پشط ّخْ سّی ففبت ًیض هؾبثَ دعتْس فْش ّ ثذّى ًیبص ثَ زلقَ اًدبمپزیش اعت .ثب تْخَ ثرَ Indexؽرذى ایري
ففبت ًتبیح ثَ عشعت هسبعجَ هیگشدد.
## Select vertices based on attributes
] V(jg) [ year >= 1990
] V(jg) [ overruled!=0
اعکشیپت صیش یک عولیبت پیچیذٍ سا سّی ففت عبل دس گشٍُب اًدبم هریدُرذ .ایري کرذ هؾربثَ Group byدس
SQLعول هیکٌذ ّ هیبًگیي دسخَ گشٍُب سا دس گشٍُبی ُش عبل هسبعجَ هیًوبیذ.
## Group network measures based on attributes
deg.per.year <- tapply(degree(jg, mode="out"), V(jg)$year,
)mean
## Plot it
) plot( names(deg.per.year), deg.per.year
ُوبىگًَْ کَ ًوْداس صیش ًؾبى هیدُذ سًّذ هیبًگیي دسخَ ًقبط ثَ هشّس صهبى دس زبل صیبد ؽذى اعت .ایي ثذاى
هعٌبعت کَ اعتٌبد ثَ پشًّذٍُبی قضبیی دس زبل صیبد ؽذى هیثبؽذ.
شکل .19هیاًگیي درجَ ًقاط در گراف قضایی
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
هذلغبصی گشاف
21
یک هثبل پیؾشفتَ تش اص ًسٍْ دعتشعی ثَ ففبت دس صیش آهذٍ اعت .ثشای ایي هثبل اص یک گشاف تقبدفی Erdos-
Renyiاعتفبدٍ هیکٌین [ .]33سًگ گشٍُب ثَ فْست تقبدفی قشهض یب عیبٍ دس ًظش گشفتَ هیؽْد.
## A more advanced example
)g <- erdos.renyi.game(100, 1/100
V(g)$color <- sample( c("red", "black"),
)vcount(g), rep=TRUE
"E(g)$color <- "grey
دس ایي هشزلَ گشٍُبی قشهض ّ عیبٍ سا اص یکذیگش خذا هیًوبیین.
] "red <- V(g)[ color == "red
] "bl <- V(g)[ color == "black
زبل ثَ کوک یک پشطّخْی پیچیذٍ ثیي سًگ یبلُبیی کَ دّ عشف قشهض ّ دّ عشف آثی ُغرتٌذ ،توربیض قبهرل
هیؽْین .کذ صیش ًؾبى هیدُذ کَ دس ٌُگبم سیختي یک هقذاس دس هتغیش ،پشطّخْ هیتْاًذ دس عجبست عوت چپ ًیرض
اعوبل گشدد.
"E(g)[ red %--% red ]$color <- "red
"E(g)[ bl %--% bl ]$color <- "black
=plot(g, vertex.size=5, layout
)layout.fruchterman.reingold
ؽکل سعنؽذٍ گشاف ثبال ثَ فْست صیش خْاُذ ثْد.
شکل .21یک گراف تصادفی کَ رًگ یالُای آى بر اضاش رًگ گرٍُا هتوایس گشتَاضت.
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
تسلیل ؽجکَاختوبعی
24
4تحلیل ضبکهاجتماعی
ثشای ثیبى هدوْعَی سّاثظ پیچیذٍی هیبى افشاد دسعیغتنُبی اختوبعی ّ غیش آى اص ؽرجکَ اعرتفبدٍ هریؽرْد.
هغبلعبتی ًظیش یبفتي افشاد تبثیشگزاس ،عبختبسیبثی اختوبعبت دسّى ؽجکَ ،پیؼ ثیٌی استجبط ثریي افرشاد ّ ...ثرَ کورک
تسلیل ُویي ؽجکَُب فْست هیپزیشد .دس اداهَ ثرَ ثشخری تکٌیرکُربی تسلیرل ؽرجکَاختوربعی دس igraphاؽربسٍ
هیًوبیین.
1-4هحاضبَ اًْاع تؼاریف هرکسیت گرٍ
تبکٌْى هعیبسُبی هتفبّتی ثشای هسغبثَ هشکضیت یک گشٍ اساهَ ؽذٍاعت .هشکضیت ،اُویرت ًغرجی یرک گرشٍ دس
گشاف سا ًؾبى هیدُذ [ .]33ثَ عٌْاى ًوًَْ هیضاى اُویت یک فشد دس ؽجکَاختوبعی یب هیضاى اُویت یک اتبش دس ثٌب
ّ ...اص خولَ کبسثشدُبی ایي هعیبس هیثبؽذ 4 .تب اص هؾِْستشیي تعبسیف هشکضیت ثَ ؽشذ صیش اعت:
:Degree centrality .3تعذاد گشٍُبی هدبّس ُش گشٍ (تعذاد ُوغبیَُب).
:Betweenness centrality .2تعذاد کْتبٍتشیي هغیشُبیی کَ اص یک گشٍ عجْس هیًوبیذ.
:Closeness centrality .1هیبًگیي کْتبُتشیي هغیشُب ثیي ُش فشد ّ دیگش افشاد دس ؽجکَ.
:Eigenvector centrality .4ایي هعیبس یک اهتیبص ًغجی ثَ توبم گشٍُب ًغجت هیدُذ ،هسبعرجَ ایري
هعیبس ثش اعبط ایي افل اًدبم هیؽْد کَ استجبط ثب گشٍُبی ثب اهتیبص ثبالً ،قرؼ ثیؾرتشی اص استجربط ثرب
گشٍُبی ثب اهتیبص پبییي داسد .الگْسیتن Google PageRankاص خولَ ایي سّػُب ثَ زغبة هیآیذ.
الجتَ هعیبسُبی هشکضیتی کَ دس igraphپیبدٍعبصی ؽذٍاعت ثَ ایري 4سّػ خرتن ًؾرذٍ ّ سّػُربی دیگرشی
چْى Transitivity ّ Burt's constraintسا ُن ؽبهل هیؽْد.
ثشای ثشسعی 4هعیبس هشکضیت ثبال اثتذا یک گشاف هیعبصین ّ عپظ آى ثَ گشاف عبدٍ تجذیل هیًوبیین.
g <- graph.formula(Andre----Beverly:Diane:Fernando:Carol,
Beverly--Andre:Diane:Garth:Ed,
Carol----Andre:Diane:Fernando,
Diane----Andre:Carol:Fernando:Garth:Ed,
Ed-------Beverly:Diane:Garth,
Fernando-Carol:Andre:Diane:Garth:Heather,
Garth----Ed:Beverly:Diane:Fernando:Heather,
Heather--Fernando:Garth:Ike,
)Ike------Heather:Jane
)g <- simplify(g
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
تسلیل ؽجکَاختوبعی
25
دس اداهَ هْقعیت گشٍُب سا دس ٌُگبم سعن هؾخـ هیکٌین ّ ًبم گشٍُب سا ثشچغت آىُب دس ٌُگربم سعرن هجرذل
. زبل ؽکل اّلیَ گشاف آهبدٍ اعت ّ هیتْاًین آى سا سعن کٌین.هیعبصین
## Hand-tuned coordinates
coords <- c(5,5,119,256,119,256,120,340,478,
622,116,330,231,116,5,330,451,231,231,231)
coords <- matrix(coords, nc=2)
## Labels the same as names
V(g)$label <- V(g)$name
g$layout <- coords # $
## Take a look at it
plot(g, asp=FALSE, vertex.label.color="blue",
vertex.label.cex=1.5, vertex.label.font=2,
vertex.size=20, vertex.color="white",
vertex.frame.color="white", edge.color="black")
دس صیش اثترذا ایري.دس اداهَ ُش کذام اص هعیبسُبی هشکضیت سا هسبعجَ هیکٌین ّ دس کٌبس ُش گشٍ ًوبیؼ هیدُین
.عولیبت ثب هعیبس دسخَ اًدبم ؽذٍاعت
## Add degree centrality to labels
V(g)$label <- paste(sep="\n", V(g)$name, degree(g))
. ًوبیؼ دادٍ هیؽْد23 ؽکل،ثب سعن ایي گشاف ثب کذ صیش
## And plot again
plot(g, asp=FALSE, vertex.label.color="blue",
vertex.label.cex=1.5, vertex.label.font=2,
vertex.size=20, vertex.color="white",
vertex.frame.color="white", edge.color="black")
. گرٍُای آى در کٌار ُر گرٍ ًْشتَ شذٍاضتDegree centrality َ گرافی ک.21 شکل
داًؾگبٍ فٌعتی اهیشکجیش
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
تسلیل ؽجکَاختوبعی
26
عَ هعیبس دیگش هشکضیت ثَ کوک تْاثا evcent ّ closeness ،betweennessقبثل هسبعجَ اعرت .فقرظ کربفی
اعت دس کذ ثبال ثرَ خربی ) ، degree(gعجربستی چرْى )format(evcent(g)$vector, digits=1
ّاسد کٌیذً .تبیح ثَ دعت آهذٍ ثشای ایي عَ هعیبس دس ؽکلُبی صیش ًوبیؼ دادٍ ؽذٍاعت.
شکل .22هرکسیت Betweennessگرٍُای گراف
شکل .23هرکسیت Closenessگرٍُای گراف
شکل .24هرکسیت Eigenvectorگرٍُای گراف
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
تسلیل ؽجکَاختوبعی
27
2-4تحلیل یک گراف ًطبتا بسرگ
دس ایي ثخؼ ثب ًسٍْ دسیبفت اعالعبت یک گشاف ًغجتب ثضسگ آؽٌبیی هریؽرْین .ثرَ علرت ثرضسگ ثرْدى گرشاف
اعتفبدٍ اص ثشخی اص دعتْسات (هثل سعن گشاف) ثغیبس صهبىثش اعت ّ ثعضب ثَ ثغتَ ؽذى ًشمافرضاس هریاًدبهرذ .اص ایري
گزؽتَ ثب سعن ایي گشاف ًیض دس صهبى صیبد- ،ثَ علت ثضسگیً -ویتْاى ثَ خْثی اعالعبت آى سا اعتخشاج ًورْد .اص ایري
سّ ثبیذ اص ثَ کبس ثشدى ایي دعتْسات -ثَ خض دس هْاسد ضشّسی -پشُیض ًوْد .خذّل 3عشعت اخشای ُش یک اص تْاثرا سا
ًؾبى هیدُذ ّ ثیبى هیکٌذ ُش کذام اص تْاثا -دس زبلت هعوْل -ثشای گشافی ثب چٌذ گرشٍ قبثلیرت هسبعرجَ دس صهربى
هٌغقی سا داسا هیثبؽذ .اغلت تْاثعی کَ دس خذّل ثب عٌرْاى "ثغریبس کٌرذ" سدٍثٌرذی ؽرذٍاًرذ ،ثرَ خربعش پیچیرذگی
هسبعجبتی الگْسیتن آىُب دس ایي سدٍ زضْس داسًذ.
جذّل .1ضرػت تْابغ igraph
تْابععغ ضععریغ creating graphs (most of the time)- structural
modification(add/delete edges/vertices)- subgraphsimplifygraph.decomposedegree(هیلیْىُا گرٍ) clusters-
graph.density- is.simple, is.loop, is.multiplearticulation points and biconnected componentsARPACK
stuff:
page.rank,
hub.score,
authority.score,
evcenttransitivityBurts
constraint- dyad & triad census, graph motifs- kcores- MST- reciprocity- modularity- closeness
and(edge) betweenness estimation- shortest paths
from one source- generating Gn,p and Gn,m graphsgenerating PA graphs with various PA exponentstopological sort
closenessdiameterbetweennessall
تْابعععغ کٌعععذ pairs
shortest paths, average path length- most layout
generators
(دٍُسار گرٍ)
تْابغ بطیار کٌذ cliques- cohesive blocks- edge/vertex connectivity-
maximum ows and minimum cuts- bonpow- alpha
centrality- (sub)graphisomorphism
(صذ گرٍ)
گشافی کَ ققذ داسین ثَ تسلیل آى ثپشداصینُ ،وبى گشاف اعالعبت قضبیی اعت .اثتذا ایري گرشاف سا اص سّی فبیرل
رخیشٍؽذٍ load ،هیکٌین .ایي گشاف کَ 13288گرشٍ ّ ثریؼ اص ُ236رضاس یربل داسد ،یرک گرشاف خِرتداس ،عربدٍ
(غیشچٌذگبًَ) ّ ًبُوجٌذ هیثبؽذ.
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
تسلیل ؽجکَاختوبعی
28
## Load the jurisdiction network
)"load("judicial.Rdata.gz
## Basic data
)summary(jg
?## Is it a simple graph
)is.simple(jg
?## Is it connected
)is.connected(jg
ثب دعتْس no.clustersتعذاد هْلفَُبی ُوجٌذ گشاف ثَ دعت هیآیذ .ایري گرشاف 4883هْلفرَ ُوجٌرذ
خذاگبًَ داسد .اص ایي هیبى 4873گشٍ هٌفشد (ثذّى یبل) 8 ،هْلفَ ثب اًذاصٍ ّ 1یک هْلفَ ثب اًذاصٍ 4داسین .هْلفَ هِرن
گشاف کَ ثضسگتشیي هْلفَ ُوجٌذ آى ًیض اعت ،داسای 25189گشٍ هیثبؽذ.
?## How many components
)no.clusters(jg
?## How big are these
)table(clusters(jg)$csize
یکی اص هِوتشیي تسلیلُب ،تسلیل دسخَ گشٍُب دس گشاف هیثبؽذ .تسلیل دسخَ ّسّدی ّ خشّخی گشٍُب ثب هسرْس
yلگبسیتوی ثَ فْست صیش هیثبؽذ .ؽکل 25تْصیا دسخبت ّسّدی سا ًؾبى هیدُذ.
## In-degree distribution
)"plot(degree.distribution(jg, mode="in"), log="xy
## Out-degree distribution
)"plot(degree.distribution(jg, mode="out"), log="xy
5e-02
5e-03
5e-04
)"degree.distribution(jg, mode = "in
5e-05
200
100
50
20
10
5
2
1
Index
شکل .25تْزیغ درجَُای ّرّدی گراف قضایی
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
تسلیل ؽجکَاختوبعی
29
ثیؾتشیي دسخَ یک گشٍ (هدوْ ّسّدی ّ خشّخی) دس ایي گشاف 131اعت.
## Largest inmax(degree(jg,
max(degree(jg,
max(degree(jg,
and out-degree, total degree
))"mode="in
))"mode="out
))"mode="all
چگبلی گشافً ،غجت تعذاد یبلُبی هْخْد ثَ تعذاد یبلُبی هوکي هیثبؽذ .ایي هعیبس ثشای گشاف فرْش ثشاثرش ثرب
3.333216اعت .ایي ثذاى هعٌبعت کَ گشاف فْش ثغیبس پشاکٌذٍ هیثبؽذ.
## Density
)graph.density(jg
تشاگزسی یک گشاف ،ازتوبل ایي کَ ُوغبیَ ُبی یک گشٍ ثب یکذیگش هشتجظ ثبؽرٌذ سا هؾرخـ هریکٌرذ .هقرذاس
تشاگزسی سا یک ثبس ثشای گشاف اهْس قضبیی ّ یکثبس ثشای یک گشاف تقبدفی هسبعجَ هیکٌینً .تبیح ثَ دعتآهرذٍ ثرَ
تشتیت 3.333514 ّ 3.326هیؽْد .تفبّت فبزؼ ایي هقبدیش ،هعٌبداسی استجبعبت عجیعی سا ًؾبى هیدُذ.
## Transitivity
)transitivity(jg
## Transitivity of a random graph of the same size
)"g <- erdos.renyi.game(vcount(jg), ecount(jg), type="gnm
)transitivity(g
دعتْس ،dyad.censusاًْا استجبعبت ثیي خفت گشٍُب سا عشؽوبسی ّ دس عَ گشٍّ دعتَثٌذی هیکٌذ:
:mut .3تعذاد گشٍُبی ثب استجبط دّعشفَ.
:asym .2تعذاد گشٍُبی ثب استجبط یکغشفَ.
:null .1تعذاد گشٍُبیی کَ ُیچ استجبعی ثب ُن ًذاسًذ.
تبثا دیگش عشؽوبسی کٌٌذٍ triad.census ،هیثبؽذ .کَ تعذاد صیشگشافُبی ثرب عرَ یربل سا هریؽروبسد.
ُوبًگًَْ کَ اًتظبس هیسّد ،ثب تْخَ ثَ ّضعیت ثْدى یب ًیْدى یبلُبی خِتداس ،ؽبًضدٍ تشکیت هختلف خْاُینداؽت.
(ثَ ایي صیشگشافُب ُ motifsن اعالش هیؽْد ).ؽوبسػ دس ایي 36دعتَ اًدبم هیؽْد.
## Dyad census & Triad census
)dyad.census(jg
)## triad.census(jg
هسبعجَ اهتیبص Authorities ّ Hubsکَ Kleinbergدس الگْسیتن HITSاساهَ داد ،ثَ فْست صیرش اعرت .ثرشای
هسبعجَ ایي دّ اهتیبص اص ضشة ثشداسی ّ ثشداسُبی ّیژٍی هبتشیظ هدبّست اعتفبدٍ هیؽْد
## Authority and Hub scores
authority.score(jg)$vector
)cor(authority.score(jg)$vector, V(jg)$auth
hub.score(jg)$vector
)cor(hub.score(jg)$vector, V(jg)$hub
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
تسلیل ؽجکَاختوبعی
13
3-4ضاختاریابی اجتواع
یکی اص هْضْعبت هغشذ دس تسلیل ؽجکَُبی اختوبعی ،یبفتي عبختبس اختوبعبت هْخْد دس ؽجکَی اختوبعی ،ثش
اعبط ؽجبُتُبی افشاد دسّى ؽرجکَ هریثبؽرذ .یرک ؽرجکَاختوربعی ٌُگربهی "عربختبس اختورب " ( Community
)Structureداسد کَ ثَ فْست عجیعی ثَ گشٍُّبیی اص گشٍُب تقغین ؽذٍ ثبؽذ کَ دس دسّى گشٍُّب استجربط هترشاکن ّ
هبثیي گشٍُّب استجبط ُتٌُک داؽتَ ثبؽذ .ؽکل صیش یک ؽجکَاختوبعی ّ عبختبس اختوب دسّى آى سا ًوبیؼ دادٍاعت.
شکل " .26ضاختار اجتواع" در گراف یک شبکَاجتواػی
یک عْال هِن دس عبختبسیبثی ایي اعت کَ عبختبس یبفتَؽذٍ تب چَ زذ ثِیٌرَ اعرت ًیرْهي-گیرشّاى دس عربل
2334هعیبس هبژّالسیتی Qسا ثَ عٌْاى ؽشط اًتِبیی الگْسیتن اساهَ داد [ .]32اهرب ایري هعیربس ثرَ عرشعت ثرَ یکری اص
اخضای افلی دعتَی خذیذی اص سّػُبی عبختبسیبثی هجذل گؾت .تبکٌْى هعیبسُبی هختلفی ثشای هربژّالسیتی اساهرَ
ؽذٍاعت .هب دس ایي آهْصػ اص هعیبس پبیَ هبژّالسیتی کَ تْعظ ًیْهي اساهَ ؽذ اعتفبدٍ هیًوبیین (عجبست سیبضی .)3
()3
∑
دس آصهبیؼ اّل ققذ داسین اًذاصٍ هبژّالسیتی سا دس چٌذ گشاف ثشسعی ًوبیین .ثشای ایي هٌظْس اثترذا گشافری ثرب دّ
قغوت خذاگبًَ ایدبد هیًوبیین.
## The concept of modularity
)g <- graph.full(5) %du% graph.full(5
g$layout <- layout.fruchterman.reingold
)plot(g
V(g)$color <- 2
V(g)[0:4]$color <- 1
)plot(g
گشاف ایدبد ؽذٍ یک گشاف هبژّالس اعت .هقذاس هبژّالسیتی آى ثشاثش ثب 3.5هیثبؽذ.
## This graph is modular
)modularity(g, membership=V(g)$color-1
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
تسلیل ؽجکَاختوبعی
13
ایي دسزبلی اعت کَ اگش کل گشاف سا یک اختوب دس ًظش ثگیشین ،هقذاس هبژّالسیتی ثشاثش ثب ففش هیؽْد.
## If we have everyone in the same group,
## that is not modular
V(g)$color <- 1
)modularity(g, membership=V(g)$color-1
چٌبچَ اختوب ُب سا ثَ فْست تقبدفی اختقبؿ دُین ،ایي هقذاس هٌفی هیؽْد.
## If we assign the vertices randomly to two
## groups, that is not very modular, either
)V(g)$color <- sample(1:2, vcount(g), rep=TRUE
)plot(g
)modularity(g, membership=V(g)$color-1
ثشای آصهبیؼ ثعذی ،گشاف کلْپ کبساتَ صاکبسی سا داًلْد هیکٌین .اص آىخب کَ ایي گرشاف دس فشهرت pajekقرشاس
داسد ،ثبیذ آى سا ثَ فشهت igraphتجذیل ًوبیین .اًدبم ایي کبس ثَ سازتی ثب اضبفَکرشدى یرک آسگْهربى ثرَ تربثا ّسّد
گشاف اهکبىپزیش اعت.
## Fast & greedy community detection
(karate <- read.graph
)""cneurocvs.rmki.kfki.hu/igraph/karate.net",format="pajek
)karate <- simplify(karate
الگْسیتن fastgreedyکَ یک الگْسیتن ثش هجٌبی هبژّالسیتی اعت [ ،]31سّی ایي گشاف اعوبل هریکٌرین .ؽریٍْ
کبس ایي الگْسیتن ثذیي فْست اعت کَ ُش گشٍ سا یک اختوب دس ًظش هیگیشد ّ عجق یرک سّػ زشیقربًَ ؽرشّ ثرَ
ادغبم ایي اختوبعبت هیکٌذ .دس ُش هشزلَ هبژّالسیتی گشاف اًذاصٍگیشی ّ رخیشٍ هیؽْد ،تب ایي کَ توربم گرشٍُرب ثرَ
یک اختوب اختقبؿ یبثٌذ .پظ اص پبیبى ایي هشزلَ خبیی کَ الگْسیتن ثَ ثیؾتشیي هبژّالسیتی سعیذٍثرْد ،ثرَ عٌرْاى
عبختبساختوب دس ًظش هیگیشین .ثب اخشای ایي الگْسیتن ،ثیؾتشیي هبژّالسیتی هشازل ثَ 3.18هیسعذ.
) )system.time( fc <- fastgreedy.community(karate
fc$modularity
)max(fc$modularity
)which.max(fc$modularity
آسایَ عضْیت ثیؾتشیي هبژّالسیتی ثَ فْست صیش اعتخشاج هیگشدد.
memb <- community.to.membership(karate, fc$merges,
))which.max(fc$modularity
memb
ایي گشاف سا سعن هیکٌین .ؽکل ً 27تبیح ثَ دعتآهذٍ سا ًؾبى هیدُذ.
)lay <- layout.kamada.kawai(karate
plot(karate, layout=lay, vertex.size=5, vertex.label=NA,
)vertex.color=memb$membership+1, asp=FALSE
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
تسلیل ؽجکَاختوبعی
12
شکل .27اجتواػات بَ دضت آهذٍ با الگْریتن fastgreedyرّی هجوْػَ دادٍ کلْپ کاراتَ
هشازل ثبال سا سّی الگْسیتن Spinglassاًدبم هیدُین [ً ّ ]34تبیح سا ثرب ُرن هقبیغرَ هریکٌرین .هربژّالسیتی
ًتیدَ ًِبیی 3.42هیثبؽذ کَ ثَ عْس قبثل هالزظَای افضایؼ یبفتَاعت .الجتَ صهبى اخرشای الگرْسیتن پیؾریي کوترش
ثْد.
## Spinglass community detection
))system.time(spc <- spinglass.community(karate, spins=20
spc
)(x11
plot(karate, layout=lay, vertex.size=5, vertex.label=NA,
)vertex.color=spc$membership+1, asp=FALSE
عبختبس ثَ دعتآهذٍ ایي الگْسیتن ،داسای چِبس اختوب اعت .اعکشیپ فْش ًتبیح سا سعن ًیرض هریًوبیرذ (ؽرکل
.)28دعتْس )( x11ثبعث هیؽْد سعن ایي گشاف دس پٌدشٍای خذاگبًَ فْست ثگیشد.
شکل .28اجتواػات بَ دضت آهذٍ با الگْریتن Spinglassرّی هجوْػَ دادٍ کلْپ کاراتَ
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
تسلیل ؽجکَاختوبعی
11
4-4بلْکُای چطبٌذٍ
چغجٌذگیعبختبسی ( ،)Structural cohesionکوتشیي تعذاد گشٍُبیی اص ؽجکَاختوبعی اعت کَ ثبیرذ آىُرب سا
ززف کٌین تب زذاقل دّگشٍ کَ تبکٌْى ثَ ُن هتقرل ثْدًرذ ،اص یکرذیگش خرذا ؽرًْذ [ .]35دس ایري آصهربیؼ عرعی
هیکٌین ،ثلْکُبیی اص گشٍ ُب کَ چغجٌذگی صیبدی داسًذ ّ زبهل ثیي ثلْکُب ُغتٌذ سا ثیبثین .اثتذا گشافری کرَ ثبیرذ
سّی آى آصهبیؼ اًدبم دُین سا هیعبصین ّ ثشچغت ُش گشٍ سا ثَ تشتیت ثَ فْست عذدی ؽوبسٍگزاسی هیًوبیین.
## Load the graph
cb <- graph( c(1,2,1,3,1,4,1,5,1,6,
2,3,2,4,2,5,2,7,
3,4,3,6,3,7,
4,5,4,6,4,7,
5,6,5,7,5,21,
6,7,
7,8,7,11,7,14,7,19,
8,9,8,11,8,14,
9,10,
10,12,10,13,
11,12,11,14,
12,16, 13,16, 14,15, 15,16,
17,18,17,19,17,20,
18,20,18,21,
19,20,19,22,19,23,
20,21, 21,22,21,23,
)22,23)-1, dir=FALSE
))V(cb)$label <- seq(vcount(cb
ثلْکثٌذی چغجٌذگی ( ،)Cohesive blockingیک سّػ ثشای هؾخـکشدى صیشهدوْعَُربی علغرلَهشاتجری
گشٍُبی گشاف ،ثش اعبط چغجٌذگیعبختبسی (یب اتقبل گشُی) اعت .قجل اص تعشیف خْد ثلْکثٌرذی چغرجٌذگی الصم
اعت ،هفِْم دیگشی سا تعشیف ًوبین .ثشای گرشاف ،Gصیشهدوْعرَ Sاص گرشٍُربی گرشافmaximally k-cohesive ،
اعرت ،اگرش هدوْعرَای ثضسگترش اص ّ Sخرْد ًذاؽرتَ ثبؽرذ کرَ Sصیشهدوْعرَ آى ثرْدٍ ّ اتقربل گشُری ( vertex
)connectivityآى ثیؾتش یب هغبّی ثب kثبؽذ (ثَ عجبست دیگش Sثضسگتشیي ّ چغجٌذٍتشیي خض ثبؽرذ .).ثرب تْخرَ ثرَ
تعشیف فْش ،ثلْکثٌذی چغجٌذگی ،فشآیٌذی ثبصگؾتی اعت کَ عی آى ،صیشهدوْعَُربی maximally l-cohesive
یررک هدوْعررَ k-cohesiveثضسگتررش سا هررییرربثین ( .)l > kعرربختبس علغررلَ هشاتجرری ُررن اص سّی ُورریي فشآیٌررذ
(صیشهدوْعَُبی چغجٌذٍ تش) ثَ دعت هیآیذ.
)blocks <- cohesive.blocks(cb
blocks
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
تسلیل ؽجکَاختوبعی
14
ًتبیح ثلْک ثٌذی ثب اعکشیپ صیش ًوبیؼ دادٍ هیؽْد .ؽکل 29عبختبس علغلَ هشاتجری ّ ثلرْکُربی هْخرْد سا
ًؾبى هیدُذ.
)summary(blocks
blocks$blocks
)lapply(blocks$blocks, "+", 1
blocks$block.cohesion
plot(blocks, layout=layout.kamada.kawai, vertex.label.cex=2,
)"vertex.size=15, vertex.label.color="black
18
20
22
23
1
2
2
3
5
17
21
19
5
7
4
1
8
6
9
11
2
10
12
14
3
13
15
16
شکل .29ضاختار بلْکبٌذی چطبٌذگی بَ دضتآهذٍ
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت
داًؾگبٍ فٌعتی اهیشکجیش
هشاخا
15
مراجع5
[1] G. Csárdi and T. Nepusz, “igraph Reference Manual,” URL: http://igraph.
sourceforge. net/documentation. html (accessed April 20, 2010).
[2] G. Csardi, “Large-scale network analysis,” 2008.
[3] G. Csardi, “Package „igraph‟,” Aug. 2010.
[4] Wikipedia contributors, “R_(programming_language),”
Encyclopedia. Wikimedia Foundation, 23-Jul-2011.
Wikipedia,
The
Free
[5] L. Lam, An introduction to R. 2010.
[6] RapidIVideos, An Introduction to the Rapidminer R Extension. YouTube.com , 2010.
[7] A. L. Barabási and R. Albert, “Emergence of scaling in random networks,” Science,
vol. 286, no. 5439, p. 509, 1999.
[8] T. M. J. Fruchterman and E. M. Reingold, “Graph drawing by force-directed
placement,” Software- Practice and Experience, vol. 21, no. 11, p. 1129–1164, 1991.
[9] T. Kamada and S. Kawai, “An algorithm for drawing general undirected graphs,”
Information processing letters, vol. 31, no. 1, p. 7–15, 1989.
[10] P. Erdos and A. Renyi, “On random graphs,” Publicationes mathematicae, vol. 6, no.
290-297, p. 53–54, 1959.
[11] Wikipedia contributors, “Centrality,” Wikipedia, The Free Encyclopedia. Wikimedia
Foundation, 27-Jul-2011.
[12] M. E. J. Newman and M. Girvan, “Finding and evaluating community structure in
networks,” Physical review E, vol. 69, no. 2, p. 026113, 2004.
[13] A. Clauset, M. E. J. Newman, and C. Moore, “Finding community structure in very
large networks,” Physical review E, vol. 70, no. 6, p. 066111, 2004.
[14] J. Reichardt and S. Bornholdt, “Statistical mechanics of community detection,”
Physical Review E, vol. 74, no. 1, p. 016110, 2006.
[15] J. Moody and D. R. White, “Structural Cohesion and Embeddedness: A Hierarchical
Concept of Social Groups,” American Sociological Review, vol. 68, no. 1, pp. 103-127, Feb.
2003.
داًؾگبٍ فٌعتی اهیشکجیش
هسغي سهیغی | داًؾکذٍ کبهپیْتش ّ فٌبّسیاعالعبت