Ланцюги Маркова

Пояснено наочно

Ланцюги Маркова, названі на честь Андрія Маркова, - це математичні системи, які переходять від одного «стану» (ситуації чи сукупності значень) до іншого. Наприклад, якщо ви створили модель ланцюжка Маркова поведінки дитини, ви можете включити "ігри", "їсти", "спати" та "плакати" як стани, які разом з іншими способами поведінки можуть утворювати "простір станів": список усіх можливих станів. Крім того, на вершині простору станів ланцюжок Маркова повідомляє вам про ймовірність стрибка або "переходу" з одного стану в будь-який інший стан - наприклад, шанс, що дитина, яка зараз грає, засне в наступному п’ять хвилин без першого плачу.

будь-який інший стан

Простий ланцюг Маркова з двох держав показаний нижче.

З двома станами (A і B) у нашому просторі станів можливі 4 переходи (а не 2, оскільки стан може перейти назад у себе). Якщо ми знаходимось на "A", ми можемо перейти на "B" або залишитися на "A". Якщо ми знаходимось на "B", ми можемо перейти на "A" або залишитися на "B". На цій діаграмі двох станів ймовірність переходу з будь-якого стану в будь-який інший стан дорівнює 0,5.

Звичайно, справжні модельєри не завжди складають ланцюгові схеми Маркова. Натомість вони використовують "матрицю переходів" для підрахунку ймовірностей переходу. Кожен стан у просторі станів включається один раз як рядок і знову як стовпець, і кожна клітинка матриці повідомляє вам про ймовірність переходу із стану свого рядка в стан свого стовпця. Отже, у матриці комірки виконують ту саму роботу, яку виконують стрілки на схемі.

Якщо простір стану додає один стан, ми додаємо один рядок і один стовпець, додаючи по одній комірці до кожного існуючого стовпця та рядка. Це означає, що кількість клітин зростає квадратично, коли ми додаємо стани до нашого ланцюжка Маркова. Таким чином, матриця переходу стає в нагоді досить швидко, якщо ви не хочете намалювати ланцюгову схему Маркова в тренажерному залі.

Одним із застосувань ланцюгів Маркова є включення явищ реального світу в комп'ютерне моделювання. Наприклад, ми можемо захотіти перевірити, як часто нова дамба буде розливатися, що залежить від кількості дощових днів поспіль. Щоб побудувати цю модель, ми починаємо з наступної моделі дощових (R) та сонячних (S) днів:

Одним із способів імітувати цю погоду було б просто сказати: "Половина днів дощова. Тому кожен день у нашому моделюванні матиме п’ятдесят відсотків шансів на дощ". Це правило генерує таку послідовність при моделюванні:

Ви помітили, як наведена послідовність не схожа на оригінал? Друга послідовність, здається, стрибає, тоді як перша (реальні дані), здається, має "липкість". У реальних даних, якщо один день сонячно (S), то наступний день також набагато частіше буде сонячним.

Ми можемо видобути цю "липкість" за допомогою двома державними ланцюгами Маркова. Коли ланцюг Маркова знаходиться у стані "R", він має 0,9 ймовірності залишатися на місці і 0,1 шансу виїхати в стан "S". Аналогічно, стан "S" має 0,9 ймовірності залишатися на місці і 0,1 шансу перейти в стан "R".

В руках метереологів, екологів, інформатиків, фінансових інженерів та інших людей, яким потрібно моделювати великі явища, ланцюги Маркова можуть стати досить великими та потужними. Наприклад, алгоритм, який Google використовує для визначення порядку результатів пошуку, званий PageRank, є типом ланцюга Маркова.

Вище ми включили "дитячий майданчик" мережі Маркова, де ви можете створити власні ланцюжки Маркова, возившись з матрицею переходу. Ось декілька, з яких можна попрацювати як приклад: ex1, ex2, ex3 або генерувати їх випадковим чином. Текст матриці переходів стане червоним, якщо надана матриця не є допустимою матрицею переходу. Рядки матриці переходів повинні складати до 1. Також має бути така ж кількість рядків, як і стовпці.

Ви також можете отримати доступ до повноекранної версії за адресою setosa.io/markov

Щоб отримати докладніші пояснення, відвідайте домашню сторінку проекту „Пояснення візуально”.