این چند خط یکی از Draft های من از زمان خیلی قدیمه که حیفم اومد به زباله دان منتقلش کنم. کمی در خصوص مارکوف نوشته که شاید راهی هر چند کوتاه باشه برای جستجو.
زنجیره های مارکف که پس ازمارکف، نظریه پرداز روسی در زمینه علم احتمال، بدین نام خوانده می شوند، طبقه خاصی از مدل های احتمالی هستند که اغلب در مسائل تصمیم گیری بازرگانی، کشاورزی، هواشناسی، …کاربرد دارند. زنجیره های مارکف حالت خاصی از مدل های کلی تر احتمالی هستند که این مدل ها به فرآیندهای تصادفی معروف بود. و در آنها حالت فعلی یک سیستم به تمام حالت های قبلی بستگی دارد.
در فرآیند تشکیل یک سیستم با مدل مارکف دو عنصر وجود دارد که باید مشخص شوند. این دو عنصر عبارتند از:
- حالت های سیستم
- احتمال حرکات بین حالت ها که اصطلاحاً احتمالات گذار نامیده می شوند.
حالت یک سیستم، موقعیتی از سیستم در یک لحظه زمانی است،مانند فردا باران ببارد یا نبارد، یا اینکه ماشین کار می کند یا نمی کند.
احتمالات گذار، معرف احتمال حرکت سیستم از یک حالت به حالت دیگر در طول یک دوره مشخص است.
این عناصر و برخی از خواص مدل های مارکف در مثال زیر تشریح می شود.
هوای بندر انزلی را در دو حالت بارانی و بدون باران در نظر می گیریم. و حرکت از یک حالت به حالت دیگر در روز بعد (دوره زمانی) فرآیندی تصادفی بوده که با احتمالات زیر تعریف می شود.
۴/۰= (بدون باران | بارانی ) P ۶/۰=(بارانی | بارانی)P
2/0=(بدون باران | بدون باران)P ۸/۰=(بارانی | بدون باران )P
برای مثال، ۶/۰=(بارانی | بارانی)P نشان می دهد، احتمال حرکت به حالت بارانی در روز بعد به شرط اینکه امروز هوا بارانی باشد ۶/۰ است. یا احتمال اینکه هوا روز بعد بدون باران باشد به شرط اینکه امروز بارانی باشد برابر ۴/۰ است. توجه کنید اگر هوا بارانی باشد، در روز بعد می تواند در یکی از دو حالت بارانی یا بدون باران باشد، بنابر این جمع احتمال وقوع این دو حالت بایستی یک باشد.
احتمالات تغییر از یک حالت به حالت دیگر در دوره زمانی بعد (مثلاً یک روز) احتمال گذار مدل مارکف هستند. چون تعداد حالاتی که یک سیستم در یک دوره زمانی می تواند داشته باشد محدود است (در این مثال بارانی یا بدون باران) احتمالات گذار را می توانیم به شکل جدول یا ماتریس به گونه زیر تنظیم کنیم:
بدون باران بارانی
۴/۰ ۶/۰ بارانی
۲/۰ ۸/۰ بدون بارانی
این جدول در حقیقت، یک ماتریس مربعی است که بیانگر حرکت به حالات ممکن و گذار است، برای مثال، احتمال گذار از هوای در حال بارانی امروز به هوای بدون باران فردا ۴/۰ است
خواص مارکوف خیلی خواص جالبیه، مثلا خاصیت ارگودیک بودن، خاصیت پریودیک داشتن و غیره و از هر کدومش می تونید کلی چیز جالب و رابطه استخراج کنید
خود مارکوف رو هم گسترش دادن و بهش شاخ و برگ دادن. مثلا می شه به فرایند های تصمیم گیر مارکوف یا Markov decision process اشاره کرد. همچنین مدل مخفی مارکوف یا HMM هم یکی از موارد دیگری هست که برای پیش بینی بکار می رود.
خواص مارکوف
قبل از اینکه مسأله ای بتواند در فرآیند مارکوف طبقه بندی شود همچون مثال فوق ، باید واجد خواصی باشد. این خواص بطور کلی به صورت زیر خلاصه می شوند:
- خاصیت اول
احتمالات گذار تنها به حالت فعلی سیستم وابسته اند، به عبارت دیگر، اگر حالت فعلی مشخص باشد احتمال شرطی حالت بعد، از حالت های مقدم بر حالت فعلی مستقل است، بطور مثال در مسأله هوای بارانی و بدون باران، احتمالات گذار حرکت به حالات بارانی یا بدون باران در دوره زمانی بعد تنها به حالت فعلی وابسته است و به حالت های هوا در دوره های قبل وابسته نیست.
- خاصیت دوم
احتمالات گذار همواره ثابت هستند، برای مثال، در مسئله هوای بارانی یا بدون باران، احتمال حرکت از حالت بارانی به بدون بارانی در هر دوره زمانی آتی ۴/۰ باقی می ماند.
- خاصیت سوم
جمع احتمالات گذار حرکت به حالت های دیگر در دوره زمانی بعد، به فرض اینکه سیستم در دوره زمانی فعلی در یکی از حالات باشد، بایستی برابر یک باشد. برای مثال، در مسأله قبلی، احتمالات گذار حرکت به حالات هوای بارانی یا بدون باران در دوره زمانی بعد بفرض اینکه حالت فعلی، باران باشد ۶/۰ و۴/۰ هستند که جمع آنها یک می شود.این خواص کاملاً انحصاری بوده و قابلیت کاربرد تجزیه و تحلیل مارکوف را برای مسائل واقعی جهان محدود می کند.
اگر مجموعه حالات ممکن در یک زنجیره مارکوف محدود باشد، می توان یک ماتریس مربعP ، را تشکیل داد که عناصر آنpij این جدول عموماً معرف ماتریس احتمال گذار است.
حالت هایی که سیستم از آنها حرکت می کند در عرض سمت چپ، و حالت هایی که سیستم بطرف آنها حرکت می کند در طول بالای ماتریس قرار می گیرند. احتمالات گذار Pij حرکت سیستم از یکی از حالات سمت چپ i ،به یکی از حالات بالای ماتریس،j ، توصیف فرآیند مارکوف را کامل می کند.
با عرض سلام
وقتتون بخير
من مطالب سايت رو كه در مورد ماركوف بود رو بررسي كردم همگي فاز پياده سازي هستند و من نتونستم چيزي در اين مورد كه ماركوف رو چه جوري بفهمم پيدا كنم میشه لطف کنید در مورد اینکه خوشه بندی مارکوف را چه جوری درک کنم راهنمایی کنید
من تا يه حدي تئوري ميدونم
مثلا اين كه ماركوف بايد از١- گراف استفاده كنه
٢-بعد بصورت ماتريس پياده سازي بشه ٣- دو تا عملگر تورم و گسترش داره
اينا درسته ؟
با سلام
ببینید زنجیره های مارکوف اسمش روشه - ما زنجیره ای از استپ ها رو داریم که اینها رو مجبوریم به صورت گراف نشون بدیم. وقتی از مارکوف حرف می زنیم از مجموعه ای از احتمالات ماتریسی صحبت می کنیم که یکسری خواص به همراه خودش داره. این خواص هست که باعث شده که اون ماتریس قابلیت استفاده از مارکوف رو داشته باشه .
ولی برای پیاده سازی اون نیازی به گراف نداریم. بلکه باید ماترس اون رو داشته باشید تا از روی اون روابط بین هر استپ رو داشته باشید. به این ماتریس یک ماتریس همبستگی یا Association matrix می گن. به طور کلی MCL یا markov clustering یک روش مبتنی بر گراف هست. در حالت کلی باید به کمک الگوریتم Random Walk که اینجا وقت برای توضیح در موردش نیست شروع به حرکت از یک نقطه تصادفی از گراف کنید و به کمک دو عملگر تورم یا inflation و گسترش که هر کدوم با یکسری از فرمول ها روی گراف ایجاد تغییر می کنن ادامه پیدا می کنه.
دقت کنید که تورم به کمک یکسری از فرمول ها کل ماتریس شما رو به صورتی نرمال می کنه که اون نود های ماتریسی که در مجاورت هم هستن طوری نرمال بشن که برای الگوریتم رندم والک ما به راحتی بهترین و دقیقترین خروجی رو حاصل کنن. به همین صورت عملگر Expansion یا گسترش هست که این عملگر باعث می شه ماتریس ما به اصطلاح عامیانه پف کنه یا به اصطلاح علمی رشد کنه و این هم باز کار ما رو برای راه رفتن روی ماتریس ساده می کنه
در حالت کلی شیوه کار الگوریتم مارکوف به این صورت هست که در ابتدا از روی آبجکت هایی که بر روی صفحه داریم شروع به ساخت ماتریس همبستگی می کنیم و از روی اون ماتریس وزن دار رو می سازیم و از روی ماتریس وزن دار باید ماتریس مارکوفی رو بسازیم که اون خواصی که گفتم داره مثلا ارگودیکه و طولانی ترین مسیر را که این هم البته یکسری فرمول داره برای استخراجش می کنیم. سپس باید روی این ماتریس اون عملگر ها رو اعمال کنیم و هی راه بریم و اعمال کنیم تا به حالتی برسیم که دیگه تغییری توی ماتریس نبینیم. توی این مرحله ممکنه برخی از نود های ماتریس خالی بشن
در انتها باید بگم خوشه بندی با مارکوف توسط خیلیها بهینه شده ولی همشون در کل یک مفهوم یکسان رو با درجه سرعت و بهینگی متفاوت ارائه می کنن
به منظور دریافت پیاده سازی و آموزش کامل خوشه بندی با مارکوف به من از طریق آی دی تلگرامم Research_moghimi@ پیام بدید یا به ایمیلم resrearch.moghimi@gmail.com ایمیل کنید
سپاس فراوان از پاسخگوییتون
منظور شما اینه که برای ساخت ماتریس نمیخواد اول گراف را رسم کنیم حتی اگر این گراف مربوط به تعامل پروتئین ها باشه ؟
شما برای کارتون باید گرافش رو رسم کنید تا روی کاغذ بیارید ولی برای پیاده سازی توی سیستم نیازی به این کار نیست
و در کل آیا به نظرتون این الگوریتم میتونه روی پیش بینی تعامل پروتئین _ پروتئین جواب داشته باشه و با این الگوریتم به نتیجه رسید ؟
ببینید ما یکسری روش های پیش بینی داریم. ابتدا باید به من بگید ورودی کارتون چیه و خروجی کارتون چیه تا بتونم کمکتون کنم
سلام
ورودی کار من یک شبکه ای از پروتئین ها هستش ودر برنامه باید پروتئین هایی که ممکن است در آینده با هم تعامل داشته باشند شناسایی شود و به عنوان خروج نمایش داده شود .
به نظر شما با خوشه بندی مارکوف به همچین نتیجه ای میرسم ؟
اونطور که من متوجه شدم می خواید برای افزایش سرعت کارتون این کار رو خوشه بندی کنید. اگر واقعا همینطوره این رو بهتون می گم که بعد از خوشه بندی شما هنوز هیچ خروجی نخواهید داشت و باید تازه با روش های پیش بینی مثل ARM یا Regression یا Naive base یا SVM یا مارکوف یا درخت های مختلف این کار رو بکنید. پس بنظرم اول روی پروتئین هایی که دارید شروع به انجام شناسایی برای خروجی بکنید بعد به فکر افزایش سرعت بیافتید
نه من نمیخوام برا افزایش سرعت خوشه بندی رو انجام بدم من میخوام ار همان ابتدا با استفاده از مارکوف پیش بینی تعاملات را انجام بدم .
مارکوف با خوشه بندی مارکوف فرق دارن؟
بله مارکوف یک شیوه و راه و روش هست. شما یک ماتریس می سازید که خواص مارکوف رو داره و به کمک اون می تونید خوشه بندی کنید، دسته بندی کنید، پیش بینی کنید. پیش پردازش کنید، هر نوع پردازشی می تونید روی اون انجام بدید. شما می خواید خوشه بندی کنید در صورتی که خوشه بندی فقط جداسازی یکسری اطلاعات از هم هست و هیچ کمکی برای پیش بینی شما بجز افزایش صحت کار نداره. برای اینکه بتونید درست پیش بینی کنید از الگوریتم ژنتیک استفاده کنید که ظاهرا به کار شما هم می خوره
یعنی با مارکوف نمیتونم به نتیجه برسم ؟ چون من پروپوزالم رو مارکوف دادم
منظور شما اینه که کار بامارکوف مستلزم اینه که حتما ابتدا خوشه بندی بشه و بدون خوشه بندی نمیشه این الگوریتم رو اجرا کرددر صورتیکه در مورد کار من هیچ نیازی نیست ایتدا خوشه بندی بشه و یک کار اضافی هست ولی جواب هم میگیرم ؟
آیا منظورتون رو درست فهمیدم ؟
کاملا منظور من رو اشتباه فهمیدید. به حرف هایی که قبلتر زده بودم دقت کنید و با دقت بیشتری مطالعه کنید
سلام. من یک گراف دارم که نودهای آن گراف، دادههای من هستند. یال هر گراف نشاندهنده ارتباط نودها با یکدیگر است. می خواهیم تمام نودهایی که با هم ارتباط دارند در یک دسته خوشه بندی کنم. مثلا اگر نود 1 با نود 2 ارتباط داشته باشند و نود با نودهای 5 و 6و 7 ارتباط داشته باشند. آنگاه نودهای 1و2و5و6و7 در یک دسته قرار میگیرند. میخاستم بدانم از نظر علمی و الگوریتمی این روش دسته بندی بنده چه نام دارد و آیا الگوریتمی برای این نوع دسته بندی وجود دارد؟
سلام
تا دلتون بخواد در خصوص خوشه بندی گراف و روش های خوشه بندی گراف ها در اینترنت مطلب هست. چه فارسی و چه انگلیسی
فکر میکنم با چند جستجوی ساده به نتیجه برسید
سلام، خسته نباشید
من سه نمونه دارم با حجم های نامساوی که مربوط به تغییر وضعیت شغلی افراد در طی چند سال است. گروه اول از 87 تا 96، گروه دوم از 89 تا 96 و گروه سوم از 91 تا 96
با استفاده از مارکف می خوام 1- فرض کنم اطلاعات 95 و 96 رو ندارم و با بقیه اطلاعات پیش بینی کنم وضعیت افراد در سال 95 و 96 چگونه است و با وضع موجود مقایسه کنم.2- پیش بینی کنم در سال آینده و سالهای بعد در چه وضعیتی خواهند بود.
تصمیم دارم از نرم افزار r استفاده کنم، بنظرتون مناسبه؟
ممنون میشم کمکم کنید.متشکرم
سلام
من در مقاله خودم که به نوزدهمین کنفرانس فرستاده بودم یه چارچوب ساده برای پیش بینی ارائه کردم
شما به سادگی می تونید اون رو برای کار خودتون کاستومایز کنید
سلام .
میانگین اولین زمان عبور زنجیره مارکف را با چه نرم افزاری میتوان محاسبه کرد؟
سلام منظورتون دقیقا از زمان عبور چی هست؟ آیا منظورتون Transition Time هست؟
خیر
the mean first passage time
چقدر طول می کشد تا از حالت i به حالت j منتقل شویم
یا میانگین زمان لازم برای حرکت از طبقه iبه طبقه j
اگه اشتباه نکنم در اصطلاح مارکوفیان متوسط زمان اصابت هم نامیده میشه
بنظرم با متلب می شه راحت حسابش کرد