سؤال

لقد بدأت للتو في قراءة المزيد عن مولدات سلسلة Markov اليوم ، وأنا مفتون حقًا بعملية بناء واحدة كاملة. من فهمي ، تعتمد الدولة المستقبلية على الدول الماضية الإحصائية إلى الوقت الحاضر.

مثال:

مرحبا بالعالم. مرحبا دوللي. مرحبا بالعالم.

"العالم" يتبع "مرحبا" ~ 66 ٪ من الوقت في هذا المصدر.

إذا كان هذا هو الحال دائمًا ، فكيف تتجنب التخلص من النتائج نفسها في كل مرة؟ لن تتغير المشاركات الإحصائية بسلسلة ثابتة ، لذلك هل أنا محق في افتراض أنه لن يتم إنشاء أي متغيرات ، ما لم يتم تعديل بيانات المصدر بطريقة ما؟

كيف يمكنني الحصول على اختلافات من مصدر ثابت ، بالنظر إلى القيم الإحصائية ، مع السماح ببعض المرونة؟ باستخدام مثالي أعلاه ، كيف أسمح لمولدتي باتباع "Hello" مع "Dolly" ، عندما يتبع "Dolly" فقط "Hello" 33 ٪ من الوقت؟

أظن أن ما أطلبه هو ، كيف يمكنني بناء احتمال اختياري التالي على الوجود الإحصائي للكلمات التي تتبع اختياري الحالي؟ وبهذه الطريقة ، تظهر "دوللي" 33 ٪ من الوقت ، ويظهر "العالم" 66 ٪ من الوقت - أم أنني فقدت تمامًا هنا؟

هل كانت مفيدة؟

المحلول

يمكنك استخدام مولد الأرقام العشوائية لاختيار المسار الذي تسير فيه. يجب عليك حفظ كل ولاية (وهو حقًا تاريخ للعناصر السابقة) واحتمالات تلك الحالة. ثم تختار رقمًا عشوائيًا وتقرر بناءً على ما هي الحالة التالية التي تنتقل إليها.

في مثالك ، لديك سلسلة Markov مع N من 1 سيكون لديك بنية سلسلة تبدو مثل هذا:

<start> -> Hello : 1.0

Hello -> World. : 0.66666
Hello -> Dolly. : 0.33333

Dolly. -> Hello : 1.0

World. -> <end> : 0.5
World. -> Hello : 0.5

إذا كانت حالتك الحالية مرحبًا ، فإن حالاتك القادمة الممكنة هي العالم. و Dolly .. قم بإنشاء رقم عشوائي بين 0 و 1 واختر العالم. إذا كان أقل من 0.666666 ، فاختر Dolly.

مع سلسلة N = 2 Markov ، تحصل على سلوك حتمي تقريبًا مع هذا الإدخال:

<start> <start> -> <start> Hello : 1.0

<start> Hello -> Hello World. : 1.0

Hello World. -> World. Hello : 0.5
Hello World. -> World. <end> : 0.5

World. Hello -> Hello Dolly. : 1.0

Hello Dolly. -> Dolly. Hello : 1.0

Dolly. Hello -> Hello World. : 1.0

نصائح أخرى

تعليقان:

1) لإنشاء عينات من عملية عشوائية ، سواء كان خيارًا معينًا أو لم يكن محتملًا (> 50 ٪) ، والبعض الآخر أقل ، يتطلب فقط "نقرة عملة": قم بإنشاء رقم حقيقي عشوائي بشكل موحد على [0،1 ) ، والنظر في الاحتمالات بنفس الترتيب الثابت ، مع الحفاظ على مجموع الاحتمالات حتى الآن. بمجرد أن يتجاوز هذا المبلغ رقمك الذي تم اختياره عشوائيًا ، حدد هذا الاختيار. إذا كانت اختياراتك غير طبيعية (لا تلخص إلى 1) الاحتمالات ، فأنت تحتاج أولاً إلى حساب مجموع الاحتمالات ، وإما أن تقسمها جميعًا على S ، أو اختر رقمك العشوائي على [0 ، S)

2) لمنع الزائد عند تقدير النموذج الخاص بك من كمية صغيرة من بيانات تدريب العينة (مقارنة بعدد المعلمات) ، استخدم priesian priors على معلمات النموذج. للحصول على مثال رائع حقًا على ذلك ، حيث لا يتم إصلاح عدد معلمات النموذج (حجم السجل) على أي رقم محدود مقدمًا ، انظر اللانهائي هم. إذا كنت لا تستخدم أساليب Bayesian ، فستحتاج إلى اختيار طول السجل بشكل مناسب لكمية بيانات التدريب التي لديك ، و/أو تنفيذ بعض التجسس المخصص (مثل الاستيفاء الخطي بين Order-2 و Order- 1 نموذج).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top