Постройте цепь Маркова на основе исторических данных о погоде
В нашем наборе инструментов для машинного обучения есть широкий спектр инструментов, от простых до сложных. Цепи Маркова - это простой конец спектра.
Мы изучим цепи Маркова, чтобы с их помощью предсказывать погоду завтра.
Согласно Википедии,
Цепь Маркова - это стохастическая модель, описывающая последовательность возможных событий, в которой вероятность каждого события зависит только от состояния, достигнутого в предыдущем событии.
Перевод: цепи Маркова имеют конечное число возможных состояний. Каждый период времени он перескакивает из одного состояния в другое (или одно и то же). Вероятности перехода в определенное состояние зависят только от вероятностей, связанных с нашим текущим состоянием.
Это станет более понятным, если мы посмотрим на это в контексте нашего примера.
Погода
В нашей упрощенной Вселенной погода может быть только в одном из двух возможных состояний: «солнечная» или «дождливая».
Загвоздка (в контексте цепей Маркова) заключается в том, что вероятность того, что завтра будет солнечным или дождливым, зависит от того, будет ли оно сегодня солнечным или дождливым.
Мы выведем эти вероятности из прошлых данных и построим матрицу перехода.
Я собрал данные за 7 дней, на которых можно «обучить» нашу цепь Маркова. Дни: [дождь, солнце, дождь, солнце, дождь, дождь, солнце]
Теперь подсчитайте процент случаев, когда солнечная погода наступает сразу после дождливых дней.
3/4 so 75%.
Теперь подсчитайте процент случаев, когда идет дождь в дни, следующие сразу за солнечными.
Это 2/2, так что 100%.
Мы построим нашу матрицу перехода на основе этой информации, выведя недостающие проценты из информации, которую мы уже получили (дождь после дождя = 25% и солнце-после-солнца = 0%).
Матрица перехода
Мы также можем отобразить вышеуказанную информацию в виде диаграммы.
Цепь Маркова
Эта диаграмма подчеркивает тот факт, что вероятности полностью зависят от текущего состояния, а не от погоды вчера или за день до этого.
Давайте сделаем некоторые прогнозы
Пример 1.
Предыдущие 3 дня [дождливый, солнечный, дождливый].
Какова вероятность дождливой погоды завтра?
На основе нашей ранее обученной модели. Завтра вероятность появления солнца составляет 75%, а вероятность дождя - 25%.
Пример 2
Предыдущие 2 дня [дождливый, дождливый].
Опять же, завтра вероятность появления солнца составляет 75%, а вероятность дождя - 25%.
Пример 3
Предыдущие 3 дня были [солнечно, дождливо, солнечно].
Завтра возможен 100% дождь. В дни после захода солнца всегда идет дождь ... грустно, я знаю ...
Помните, что мы учитываем только погоду текущего дня, а затем ищем переходные вероятности для этого состояния в нашей матрице переходов.
Слишком просто? Наверняка.
Но иногда лучшей отправной точкой является простая модель, которая работает лучше, чем случайное предположение.