Можливо, концепція, чому вона використовується, і приклад.
Можливо, концепція, чому вона використовується, і приклад.
Відповіді:
Спочатку нам потрібно зрозуміти, що таке ланцюг Маркова. Розглянемо наступний приклад погоди з Вікіпедії. Припустимо, що погоду в будь-який день можна класифікувати лише на два стани: сонячне та дощове. На основі минулого досвіду ми знаємо наступне:
Оскільки погода на наступний день або сонячна, або дощова, випливає, що:
Аналогічно:
Отже, випливає, що:
Наведені вище чотири числа можна компактно представити у вигляді перехідної матриці, яка представляє ймовірність переходу погоди з одного стану в інший наступним чином:
Ми можемо задати кілька питань, відповіді на які випливають:
Q1: Якщо погода сьогодні сонячна, то яка погода може бути завтра?
А1: Оскільки ми не знаємо, що буде напевно, найкраще, що ми можемо сказати, це те, що існує шансів на те, що, ймовірно, буде сонячно і що буде дощово.10 %
Q2: А як сьогодні два дні?
A2: Прогноз на один день: сонячно, дощовий. Тому через два дні:10 %
Перший день може бути сонячним, а наступного дня також сонячним. Шанси цього трапляються: .
Або
Перший день може бути дощовим, а другий день - сонячним. Шанси цього трапляються: .
Тому ймовірність того, що погода буде сонячною через два дні, така:
Так само ймовірність того, що буде дощово, така:
У лінійній алгебрі (матриці переходу) ці обчислення відповідають усім перестановкам при переходах від одного кроку до другого (сонячно-сонячно ( ), сонячно-до- ( ), -сонячно ( ) або дощовий до дощовий ( ) із розрахунковими ймовірностями:
У нижній частині зображення ми бачимо, як обчислити ймовірність майбутнього стану ( або ) з урахуванням ймовірностей (функція маси ймовірностей, ) для кожного стану (сонячного чи дощового) у нульовий час (зараз або ) як просте множення матриць.
Якщо ви продовжуєте прогнозування погоди , як це можна помітити , що в кінці кінців його прогноз день, де дуже велике (скажімо ), осідає на наступні ймовірності «рівноваг»:
і
Іншими словами, ваш прогноз на -й день та -й день залишаються однаковими. Крім того, ви також можете перевірити, що ймовірність "рівноваги" не залежить від погоди сьогодні. Ви б отримали такий самий прогноз погоди, якби почати з того, якщо припустити, що сьогодні погода сонячна чи дощова.
Наведений вище приклад спрацює лише в тому випадку, якщо ймовірності переходу стану відповідають декільком умовам, про які я тут не буду говорити. Але зауважте наступні особливості цього «приємного» ланцюга Маркова (nice = ймовірність переходу задовольняє умовам):
Незалежно від початкового початкового стану, ми врешті-решт досягнемо рівноважного розподілу ймовірностей станів.
Ланцюжок Маркова Монте-Карло використовує наведену вище функцію так:
Ми хочемо генерувати випадкові малюнки з цільового розподілу. Тоді ми визначаємо спосіб побудови «приємного» ланцюга Маркова таким чином, щоб його рівноважний розподіл ймовірностей був нашим цільовим розподілом.
Якщо ми можемо побудувати такий ланцюг, то ми довільно починаємо з якоїсь точки і багато разів повторюємо ланцюг Маркова (як, як ми прогнозуємо погоду разів). Врешті-решт малюнки, які ми генеруємо, виглядатимуть так, ніби вони надходять із нашого цільового розподілу.
Потім ми наближаємо величину, що представляє інтерес (наприклад, середню), беручи середню вибірку розіграшів після відкидання кількох початкових розіграшів, що є компонентом Монте-Карло.
Існує кілька способів побудови «приємних» ланцюгів Маркова (наприклад, пробовідбірник Гіббса, алгоритм Metropolis-Hastings).
Я думаю, що з алгоритму «Метрополіс-Гастінгс» («ланцюжок незалежності») можна отримати добру та просту інтуїцію.
По-перше, яка мета? Мета MCMC полягає в тому, щоб взяти зразки з деякого розподілу ймовірностей, не знаючи його точної висоти в будь-якій точці. Те, як MCMC досягає цього, полягає в тому, щоб "блукати" над цим розподілом таким чином, щоб кількість часу, проведеного в кожному місці, було пропорційним висоті розподілу. Якщо процес "блукання" встановлений правильно, ви можете переконатися, що ця пропорційність (між витраченим часом та висотою розподілу) досягається.
Інтуїтивно, що ми хочемо зробити - це прогулятися по якійсь (грудкої) поверхні таким чином, щоб кількість часу, яке ми проводимо (або # проби, намальовані) в кожному місці, пропорційне висоті поверхні в цьому місці. Так, наприклад, ми хотіли б провести вдвічі більше часу на вершині пагорба, що знаходиться на висоті 100 м, ніж ми на сусідньому пагорбі, який знаходиться на висоті 50м. Приємно, що ми можемо це зробити, навіть якщо не знаємо абсолютних висот точок на поверхні: все, що нам потрібно знати, - це відносні висоти. наприклад, якщо одна вершина A у два рази більше, ніж вершина B, ми хотіли б витратити в A вдвічі більше часу, ніж ми витрачаємо на B.
Найпростіший варіант алгоритму «Метрополіс-Гастінгс» (вибірки ланцюга незалежності) досягає цього наступного: припустимо, що на кожному (дискретному) кроці часу ми вибираємо нове випадкове «запропоноване» місцеположення (вибране рівномірно по всій поверхні). Якщо запропоноване місце розташування вище, ніж зараз, ми переходимо до нього. Якщо запропоноване місце розташування нижче, то перейдіть до нового місця розташування з вірогідністю p, де p - відношення висоти цієї точки до висоти поточного місця розташування. (тобто, переверніть монету з ймовірністю p отримати голови; якщо вона підійде до голови, перейдіть на нове місце; якщо вона з’явиться хвостиками, залишайтеся там, де ми є). Зберігайте список місць, де ви були на кожному етапі часу, і цей список (асиптотично) матиме правильну частку часу, проведеного у кожній частині поверхні.
Існують складніші схеми пропонування нових місць та правила їх прийняття, але основна ідея все-таки: (1) вибрати нове "запропоноване" місце розташування; (2) з'ясувати, наскільки вище або нижче це місце порівняно з поточним місцеположенням; (3) ймовірнісно зупинитися на місці або переїхати до цього місця таким чином, щоб дотримуватися загальної мети витрачати час, пропорційний висоті місця.
Для чого це корисне? Припустимо, у нас є ймовірнісна модель погоди, яка дозволяє оцінити A * P (погода), де A - невідома константа. (Це часто трапляється - багатьом моделям зручно формулювати таким чином, що ви не можете визначити, що таке A). Тому ми не можемо точно оцінити P ("завтра дощ"). Однак ми можемо запустити пробовідбірник MCMC деякий час, а потім запитати: яка частка зразків (або "локацій") опинилася в стані "дощ завтра". Ця частка буде (на основі моделі) ймовірнісного прогнозу погоди.
Я, мабуть, сказав щось подібне:
"Коли ми хочемо поговорити про ймовірності, ми реально інтегруємо щільність. У байєсівському аналізі багато щільності, яку ми придумали, не є аналітично простежуваною: ви можете їх інтегрувати лише, якщо ви взагалі можете їх інтегрувати. - з великим стражданням. Отже, що ми робимо замість цього, сильно моделюємо випадкову величину, а потім з'ясовуємо ймовірності з наших модельованих випадкових чисел. Якщо ми хочемо знати ймовірність того, що X менше 10, підраховуємо число частка модельованих випадкових змінних результатів менше 10, і використовуйте це як нашу оцінку. Це частина "Монте-Карло", це оцінка ймовірності, заснованої на випадкових числах. При достатній кількості симульованих випадкових чисел оцінка є дуже хорошою, але все одно по своїй суті випадкові.
"То чому" ланцюг Маркова "? Тому що за певних технічних умов ви можете генерувати безпам'ятний процес (він же марківський), який має такий же обмежуючий розподіл, що і випадкова змінна, яку ви намагаєтеся імітувати. Ви можете ітератувати будь-яку з кількість різних процесів моделювання, які генерують корельовані випадкові числа (виходячи лише з поточного значення цих чисел), і ви гарантуєтесь, що як тільки ви об'єднаєте достатньо результатів, ви отримаєте купу чисел, яка виглядає " ніби "вам якось вдалося взяти незалежні зразки зі складного розподілу, про який ви хотіли знати.
"Так, наприклад, якщо я хочу оцінити ймовірність того, що стандартна нормальна випадкова величина була меншою за 0,5, я можу генерувати десять тисяч незалежних реалізацій від стандартного нормального розподілу і порахувати число менше 0,5; скажіть, я отримав 6905, які були менше 100 з 10000 загальних проб; моя оцінка для P (Z <0,5) буде 0,6905, що не так далеко від фактичного значення. Це була б оцінка Монте-Карло.
список номерів, які я отримую від процедури, буде розподілений як велика кількість малюнків із чогось, що генерує нормальні випадкові змінні. Це дало б мені моделювання ланцюга Маркова Монте-Карло для стандартної нормальної випадкової величини. Якби я використав це для оцінки ймовірностей, це була б оцінка MCMC ".
Уявіть, що ви хочете знайти кращу стратегію, щоб перемогти своїх друзів у настільній грі Monopoly. Спростіть речі, які мають значення в грі, до питання: на яких властивостях у людей найбільше? Відповідь залежить від структури дошки, правил гри та кидків двох кубиків.
Один із способів відповісти на питання - це. Просто дотримуйтесь одного шматка навколо дошки, коли ви кидаєте кістки і дотримуйтесь правил. Порахуйте, скільки разів ви приземляєтесь на кожну власність (або програмуєте комп’ютер, щоб виконати роботу за вас). Врешті-решт, якщо у вас вистачить терпіння або ви досить добре запрограмували правила на вашому комп’ютері, ви складете гарну картину, які властивості отримають найбільший бізнес. Це має допомогти вам частіше перемагати.
Те, що ви зробили, - це аналіз Марковського ланцюга Монте-Карло (MCMC). Дошка визначає правила. Де ви приземлитесь далі, залежить лише від того, де ви зараз перебуваєте, а не де ви були раніше, а конкретні ймовірності визначаються розподілом кидків двох кісток. MCMC - це застосування цієї ідеї до математичних чи фізичних систем, наприклад, якою буде завтрашня погода, або де опиниться пилок з випадковим попитом молекул газу.
Гаразд, ось моя найкраща спроба неофіційного та грубого пояснення.
Ланцюг Маркова - це випадковий процес, який має властивість того, що майбутнє залежить лише від поточного стану процесу, а не минулого, тобто він не запам'ятовується. Прикладом випадкового процесу може бути біржа. Прикладом ланцюга Маркова може бути настільна гра на кшталт «Монополія» чи «Змії та сходи», де ваше майбутнє становище (після прокатки штампу) буде залежати лише від того, з чого ви почали до початку рулону, а не будь-якої попередньої позиції. Приклад підручника ланцюга Маркова - це «прогулянка п’яниці». Уявіть, що хтось п’яний і може рухатись лише вліво або вправо одним темпом. П’яний рухається вліво або вправо з однаковою ймовірністю. Це ланцюг Маркова, де майбутнє / наступне становище п'яного залежить лише від того, де він зараз знаходиться.
Методи Монте-Карло - це обчислювальні алгоритми (просто набори інструкцій), які випадковим чином вибирають з якогось досліджуваного процесу. Вони є способом оцінити щось, що занадто складно або забирає багато часу, щоб знайти його детерміновано. Вони в основному є формою комп'ютерного моделювання математичного чи фізичного процесу. Монітор Монте-Карло походить від аналогії між казино та генерацією випадкових чисел. Повернувшись до нашого прикладу настільних ігор раніше, можливо, ми хочемо знати, чи відвідують деякі властивості на дошці Monopoly частіше, ніж інші. Експеримент у Монте-Карло передбачав би перекочування кісток кілька разів та підрахунок кількості разів, коли ви приземлитесь на кожну власність. Він також може бути використаний для обчислення числових інтегралів. (Дуже неофіційно ми можемо вважати інтеграл як область під графіком деякої функції. ) Інтеграція Монте-Карло чудово працює на високомірних функціях, беручи випадкову вибірку точок функції та обчислюючи деякий тип середнього значення в цих різних точках. Збільшуючи розмір вибірки, закон великих чисел говорить нам, що ми можемо підвищити точність нашого наближення, охоплюючи все більше і більше функції.
Ці дві концепції можуть бути об'єднані для вирішення деяких складних проблем у таких сферах, як байєсівський умовивід, обчислювальна біологія тощо, де для розв'язання загальних проблем необхідно обчислити багатовимірні інтеграли. Ідея полягає в тому, щоб побудувати ланцюг Маркова, який сходиться до бажаного розподілу ймовірностей після кількох кроків. Стан ланцюга після великої кількості етапів потім використовується як зразок із потрібного розподілу і процес повторюється. Існує багато різних алгоритмів MCMC, які використовують різні методи для створення ланцюга Маркова. До поширених відносяться Метрополіс-Гастінгс і Гімпс-пробовідбірник.
Уривок байєсівських методів для хакерів
Наведена нижче візуалізація демонструє це. Чим більше темно-червоний колір, тим більше попередня ймовірність того, що невідомі знаходяться в цьому місці. І навпаки, області з темнішим синім кольором означають, що наші пріори призначають дуже низьку ймовірність того, що там знаються невідомі.
Це прості приклади в двовимірному просторі, де наші мізки добре розуміють поверхні. На практиці простори та поверхні, що генеруються нашими пріорами, можуть бути набагато вищими.
підштовхує до первісної поверхні, щоб зробити високі гори . Кількість виштовхувань протистоїть попередній ймовірності, так що менша попередня ймовірність означає більший опір. Таким чином, у випадку подвійного експоненціально-попереднього випадку гора (або кілька гір), яка могла б вивернутися поблизу (0,0) кута, була б набагато вище, ніж гори, що вивергаються ближче до (5,5), оскільки є більший опір поблизу (5,5). Гора або, можливо, загалом, гірські хребти, відображають задню ймовірність того, де вірогідні параметри можуть бути знайдені.
Чорна крапка представляє справжні параметри. Навіть з 1 точкою вибірки, як те, що було змодельовано вище, гори намагаються містити справжній параметр. Звичайно, висновок з розміром вибірки 1 неймовірно наївний, і вибір такого невеликого розміру вибірки був лише ілюстративним.
від заднього розподілу, а не самого розподілу. Розтягуючи нашу гірську аналогію до своєї межі, MCMC виконує завдання, подібні до багаторазового запитання "Наскільки ймовірним є цей камінчик з гори, яку я шукаю?", І виконує своє завдання, повертаючи тисячі прийнятих камінчиків у надії на реконструкцію. первісна гора. У MCMC та PyMC lingo повернута послідовність "камінчиків" є зразками, частіше називаються слідами .
Коли я кажу, що MCMC інтелектуально здійснює пошук, я маю на увазі, що MCMC сподівається сходитися до областей з високою задньою ймовірністю. MCMC робить це шляхом дослідження сусідніх позицій та переміщення в райони з більшою ймовірністю. Знову ж таки, можливо, "конвергенція" не є точним терміном для опису прогресу MCMC. Конвергенція, як правило, має на увазі переміщення до точки в просторі, але MCMC рухається до більш широкої області в просторі і безладно ходить по цій області, збираючи зразки з цієї області.
Спочатку повернення тисячі зразків користувачеві може здатися неефективним способом опису заднього розподілу. Я б стверджував, що це надзвичайно ефективно. Розглянемо альтернативні можливості:
Окрім обчислювальних причин, найвірогіднішою причиною повернення зразків є те, що ми можемо легко використовувати Закон великих чисел для вирішення інакше нерозв'язних проблем. Я відкладаю це обговорення на наступний розділ.
Існує велике сімейство алгоритмів, які виконують MCMC. Найпростіше, більшість алгоритмів можна виразити на високому рівні так:
1. Start at current position.
2. Propose moving to a new position (investigate a pebble near you ).
3. Accept the position based on the position's adherence to the data
and prior distributions (ask if the pebble likely came from the mountain).
4. If you accept: Move to the new position. Return to Step 1.
5. After a large number of iterations, return the positions.
Таким чином ми рухаємося в загальному напрямку до регіонів, де існують задні розподіли, і збираємо зразки, які в дорозі збираються. Як тільки ми досягнемо заднього розподілу, ми можемо легко збирати зразки, оскільки вони, ймовірно, належать до заднього розподілу.
Якщо поточне положення алгоритму MCMC знаходиться в області вкрай низької ймовірності, що часто буває, коли алгоритм починається (як правило, у випадковому місці в просторі), алгоритм буде рухатися в положеннях, які, ймовірно, не ззаду але краще за все інше поруч. Таким чином, перші кроки алгоритму не відображають заднього.
Тож тут є багато відповідей, перефразованих із підручників зі статистикою / ймовірності, Вікіпедії тощо. Я вважаю, що у нас є "непрофесіонали", де я працюю; Я думаю, що вони є у відділі маркетингу. Якщо мені колись доводиться пояснювати щось технічне, я застосовую правило "показати не кажи". Маючи на увазі це правило, я, певно, показав би їм щось подібне.
Ідея тут полягає в тому, щоб спробувати кодувати алгоритм, якого я можу навчити написання, - не вивчаючи всі сотні (тисяч?) Таких правил, як, наприклад, додаючи закінчення до слова, яке закінчується тихим e, опустити фінал e якщо закінчення починається з голосного . Однією з причин, яка не спрацює, є те, що я не знаю цих правил (я навіть не впевнений, що те, що я щойно сказав, є правильним). Натомість я збираюся навчити його правопису, показуючи йому купу правильно написаних слів і дозволяючи йому витягувати правила з цих слів, що є більш-менш сутністю машинного навчання незалежно від алгоритму - вилучення шаблону та розпізнавання шаблонів .
Критерій успіху - правильно написання слова, якого алгоритм ніколи раніше не бачив (я розумію, що це може статися випадково, але це не трапиться у хлопців з маркетингу, тому я ігнорую - плюс я буду мати алгоритм спроба написання не одного слова, але багато, тому, ймовірно, нас обдурять кілька щасливих здогадок).
Ще годину тому я завантажив (як звичайний текстовий файл) з чудового сайту Project Gutenberg, роман " Сіддхартха" Германа Гессе . Я використаю слова в цьому романі, щоб навчити алгоритм написання.
Тож я зашифрував алгоритм, що переглянув цей роман, три букви одночасно (кожне слово має один додатковий символ в кінці, який є "пробілом" або кінцем слова). Послідовності з трьох літер можуть сказати вам багато чого, наприклад, буква «q» майже завжди супроводжується «u»; послідовність 'ty' зазвичай відбувається в кінці слова; z рідко і так далі. (Примітка. Я міг би так само легко подати цілі слова, щоб навчити її говорити в повному реченні - точно та сама ідея, лише декілька змін до коду.)
Ніщо з цього не включає MCMC, але це відбувається після тренування, коли ми даємо алгоритму кілька випадкових букв (як насіння), і він починає формувати "слова". Як алгоритм будує слова? Уявіть, що у нього є блок 'qua'; який лист він додає далі? Під час навчання алгоритм побудував масивну матрицю частот послідовності etter-послідовностей * з усіх тисяч слів у романі. Десь у цій матриці є трибуквенний блок 'qua' та частоти для символів, які могли б слідувати послідовності. Алгоритм вибирає лист на основі тих частот, які, можливо, могли би слідувати за ним. Тож лист, який алгоритм вибирає далі, залежить - і лише від - останніх трьох у його черговості побудови слів.
Отже, це алгоритм ланцюга Монте-Карло Маркова.
Я думаю, що, мабуть, найкращий спосіб проілюструвати, як це працює - це показати результати на основі різних рівнів навчання. Рівень тренувань змінюється зміною кількості пропусків, які алгоритм робить, хоча роман - чим більше пропусків, тим більше вірність матриць частоти послідовності літер. Нижче наводяться результати - у вигляді 100 символьних рядків, виведених за алгоритмом, - після тренування над романом «Сіддхарта».
Єдиний прохід через роман, Сіддхартха :
то whoicks ger wiff всі mothany стоять ar ви livid theartim замучений sullintionexplaid його sible його
(Відразу ж навчився говорити майже ідеально по-валлійськи; я цього не очікував.)
Через два проходи через роман:
Ack Wor Prenskinith show wass a twor seened th notheady theatin land rhatingle was ov там
Після 10 проходів:
незважаючи на, але слід молитися з аккою, тепер у неї собака важелем болить ноги, кожна не слабка пам'ять
І ось код (у Python я майже впевнений, що це можна зробити в R за допомогою пакета MCMC, якого є декілька, усього 3-4 рядки)
def create_words_string(raw_string) :
""" in case I wanted to use training data in sentence/paragraph form;
this function will parse a raw text string into a nice list of words;
filtering: keep only words having more than 3 letters and remove
punctuation, etc.
"""
pattern = r'\b[A-Za-z]{3,}\b'
pat_obj = re.compile(pattern)
words = [ word.lower() for word in pat_obj.findall(raw_string) ]
pattern = r'\b[vixlm]+\b'
pat_obj = re.compile(pattern)
return " ".join([ word for word in words if not pat_obj.search(word) ])
def create_markov_dict(words_string):
# initialize variables
wb1, wb2, wb3 = " ", " ", " "
l1, l2, l3 = wb1, wb2, wb3
dx = {}
for ch in words_string :
dx.setdefault( (l1, l2, l3), [] ).append(ch)
l1, l2, l3 = l2, l3, ch
return dx
def generate_newtext(markov_dict) :
simulated_text = ""
l1, l2, l3 = " ", " ", " "
for c in range(100) :
next_letter = sample( markov_dict[(l1, l2, l3)], 1)[0]
simulated_text += next_letter
l1, l2, l3 = l2, l3, next_letter
return simulated_text
if __name__=="__main__" :
# n = number of passes through the training text
n = 1
q1 = create_words_string(n * raw_str)
q2 = create_markov_dict(q1)
q3 = generate_newtext(q2)
print(q3)
MCMC зазвичай використовується як альтернатива сирим методам моделювання в Монте-Карло. І MCMC, і інші методи Монте-Карло використовуються для оцінки складних інтегралів, але MCMC можна використовувати більш загально.
Наприклад, поширеною проблемою статистики є обчислення середнього результату, пов'язаного з якоюсь імовірнісною / стохастичною моделлю. І методи MCMC, і Монте-Карло вирішили цю проблему, створивши послідовність моделюваних результатів, які ми могли б використати для оцінки справжнього значення.
Як методи MCMC, так і сира Монте-Карло працюють, оскільки довгострокова частка симуляцій, що дорівнює даному результату, буде дорівнює * модельованій ймовірності цього результату. Тому, генеруючи достатню кількість моделювання, результати, отримані обома методами, будуть точними.
* Я кажу рівним, хоча в цілому я повинен говорити про вимірювані множини. Проте, лайперсон, напевно, не зацікавився би цим *
Однак, хоча сирий Монте-Карло передбачає створення безлічі незалежних моделювань, кожне з яких розподілено відповідно до модельованого розподілу, MCMC передбачає генерування випадкової прогулянки, яка в перспективі "відвідує" кожен результат із бажаною частотою.
Таким чином, хитрість MCMC - це вибір випадкової прогулянки, яка "відвідає" кожен результат із бажаними довгостроковими частотами.
Простим прикладом може бути моделювання з моделі, яка говорить про ймовірність результату "А" 0,5, а результату "В" - 0,5. У цьому випадку, якби я розпочав випадкову ходьбу в положенні "А" і прописав, що на кожному кроці він переходить в іншу позицію з вірогідністю 0,2 (або будь-яку іншу ймовірність, що перевищує 0), я міг би бути впевнений, що після великої кількість кроків, яку випадкова прогулянка відвідала кожен з "А" та "В" приблизно 50% кроків - відповідно до ймовірностей, передбачених нашою моделлю.
Це, очевидно, дуже нудний приклад. Однак виявляється, що MCMC часто застосовується в ситуаціях, коли важко застосувати стандартні Монте-Карло або інші методи.
Ви можете знайти статтю, яка висвітлює основи того, що це таке, і чому це працює тут:
Я аналітик ДНК, який використовує повністю безперервне імовірнісне генотипне програмне забезпечення для інтерпретації доказів ДНК, і я повинен пояснити, як це працює присяжним. Справді, ми над тим, щоб спростити, і я усвідомлюю щось із цього через спрощення жертвує точністю конкретних деталей в ім'я покращення загального розуміння. Але в контексті журі, що розуміє, як цей процес використовується в інтерпретації ДНК без наукових ступенів і років професійного досвіду, вони отримують суть :)
Передумови: Програмне забезпечення використовує мегаполіс Гастінгса MCMC та біологічну модель, що імітує відому поведінку профілів ДНК (модель будується на основі даних валідації, генерованих лабораторним аналізом багатьох ДНК-профілів із відомих умов, що представляють діапазон, що зустрічається у невідомому випадку справи). Існує 8 незалежних ланцюгів, і ми оцінюємо конвергенцію, щоб визначити, чи потрібно повторно запускати, збільшуючи запис у записі і після чого приймає (Burin за замовчуванням 100k приймає, а пост 400k приймає)
На запитання обвинувачення / захисту про MCMC: ми пояснюємо, що це означає марківський ланцюг Монте-Карло і являє собою спеціальний клас / різновид алгоритму, що використовується для комплексного вирішення проблем, і що алгоритм - це просто фантазійне слово, що посилається на низку процедур або звичайних процедур що виконується комп'ютером ... алгоритми mcmc діють, пропонуючи рішення, моделюючи це рішення, а потім оцінюють, наскільки добре, що моделювання відображає фактичні дані доказів, які спостерігаються ... симуляція, що добре відповідає спостереженням, має більшу ймовірність, ніж симуляція, яка не відповідає обставинам спостереження ... під час багатьох повторних вибірок / здогадок пропонованих рішень ланцюги Маркова рухаються від рішень з низькою ймовірністю до рішень з високою ймовірністю, які краще підходять / пояснюють спостережуваний профіль доказів, поки в кінцевому рахунку рівновага не буде досягнуто,тобто алгоритм має обмежену можливість вибірки нових пропозицій, що дає значно більші ймовірності
На запитання про мегаполіс Гастінгс: ми пояснюємо, що це вдосконалення алгоритму MCMC, що описує процес прийняття рішень щодо прийняття чи відхилення пропозиції ... зазвичай це пояснюється аналогією "гарячої / холодної" дитячої гри, але я, можливо, розглядав можливість використання " проведіть пальцем праворуч або ліворуч ", коли журі особливо молоде !! : p Але, використовуючи нашу гарячу / холодну аналогію, ми завжди приймаємо гарячу здогадку і періодично приймемо холодну здогадку частину часу і пояснюємо мету іноді приймати здогадку про холод - це забезпечити вибір ланцюгів більш широкого спектру можливостей як проти того, щоб зациклюватися на одній конкретній пропозиції до фактичної рівноваги
Відредаговано, щоб додати / уточнити: з аналогією гарячого / холодного ми пояснюємо, що в дитячій грі ведучий вибирає цільовий предмет / область всередині кімнати, а гравці по черзі вгадують, вказуючи, в якому напрямку рухатися відносно свого поточного положення / положення. Ведучий каже їм змінити свою позицію / зробити хід, якщо це гаряча здогадка, і вони втрачають свою чергу / залишаються в положенні, якщо це холодна здогадка. Аналогічно, у нашому програмному забезпеченні рішення про переміщення / прийняття залежить лише від ймовірності пропозиції порівняно з ймовірністю займаної в даний час позиції ... ТАКЕ, ціль заздалегідь визначена / відома лідером у дитячій грі, тоді як ціль у нашому програмному забезпеченні не визначена заздалегідь - абсолютно невідомо (також, чому це "
Як я вже сказав, супер супер основні та абсолютно відсутні технічні деталі заради покращення розуміння - ми прагнемо пояснити приблизно на рівні середньої школи. Не соромтеся робити пропозиції. Я їх включу.
Це питання широке, але відповіді часто бувають досить випадкові. Як варіант, ви можете побачити цей документ, який дає стислий математичний опис широкого класу алгоритмів MCMC, включаючи алгоритми Metropolis-Hastings, вибірки Гіббса, Metropolis-in-Gibbs та допоміжні змінні методи, вибірку зрізів, рекурсивні пропозиції, направлену вибірку, Лангевін та Гамільтоніанський Монте-Карло, вибірки NUTS, алгоритми псевдо-маргінальної Метрополіс-Гастінгса та псевдо-маргінальний Гамільтоніанський Монте-Карло, як обговорювали автори.
Достовірний огляд дається тут
Я знайду більше часу для опрацювання його вмісту у форматі stackexchange.
Це відео (початок о 5:50) має дуже хороший виклад інтуїції.
Уявіть, що ви хочете взяти вибірку точок, що знаходяться на зелених (багатовимірних) гілках на цьому малюнку. Якщо ви кидаєте точки по всьому чорному суперпростору і перевіряєте їх значення, ви витрачаєте багато вибіркових (пошукових) енергій. Тому було б більше сенсу контролювати свою стратегію вибірки (яка може бути автоматизована), щоб вибрати точки ближче до зелених гілок (де це важливо). Зелені гілки можна знайти, потрапивши один раз випадково (або контролюючись), а решта зусилля відбору (червоні точки) будуть генеровані згодом. Причина, по якій червоний притягується до зеленої лінії, - це матриця переходу ланцюга Маркова, яка працює як ваш двигун вибірки.
Отже, з точки зору непростого, MCMC - це метод енергозбереження (низька вартість) відбору проб, особливо під час роботи в масивному і "темному" (багатовимірному) просторі.