您以前可能曾经听说过“马尔可夫链"一词,但是除非您已经学习过几门关于概率论或计算机科学算法的课程,否则您可能不知道它们是什么,它们如何工作以及为什么会这样。
马尔可夫链的概念是一个“幕后"概念,这意味着您真的不需要知道它们是什么就能从中受益。但是,您一定可以从了解它们的工作原理中受益。它们很简单,但是在很多方面都很有用。
因此,这里有一个速成课程-您需要了解的有关马尔可夫链的所有知识都被压缩成一条易于消化的文章。要进一步研究,请尝试可汗学院的免费信息理论课程(并考虑其他在线课程站点)。
Markov Chains 101
假设您要预测天气会像明天。真正的预测(由专业气象学家执行的预测)将涉及数百甚至数千个不断变化的不同变量。至少对于像您和我这样的外行来说,天气系统异常复杂且无法建模。但是我们可以使用概率估计来简化问题。
想象一下,您已经获得了三十年的天气数据。从头开始,请注意第一天是晴天。您继续前进,注意到第2天也是晴天,但是第3天多云,然后第4天是雨天,在第5天导致了雷暴,随后在第6天出现了晴天。
理想情况下,您会更细化,选择按小时进行分析而不是按天进行分析,但这只是说明此概念的一个示例,请多多包涵!
您可以在整个30年的数据集中(大约不到11,000天)执行此操作,然后根据今天的天气来计算明天天气的概率。例如,如果今天天气晴朗,则:
现在针对每种可能的天气情况重复此操作。如果今天是多云,明天有几率是晴天,多雨,有雾,雷暴,冰雹,龙卷风等?很快,您将拥有一个完整的概率系统,不仅可以用于预测明天的天气,而且可以用于预测第二天和第二天的天气。
过渡状态
这是马尔可夫链的本质。您有各个州(在这种情况下为天气状况),每个州都可以过渡到其他州(例如晴天可以过渡到阴天),而这些过渡基于概率。如果要预测一周内的天气情况,可以探索接下来7天的各种概率,并查看最有可能的概率。因此,这是一个马尔可夫“链"。
谁是马尔可夫?他是一位俄罗斯数学家,他根据一定的概率提出了一个州直接通向另一个州的整个想法,在此情况下没有其他因素影响过渡机会。基本上,他发明了马尔可夫链,因此得名。
马尔可夫链在现实世界中的使用方式
在不带解释的情况下,让我们探索一些方便使用的实际应用程序中。您可能会惊讶地发现自己一直在不知不觉中一直在使用马尔可夫链!
您曾经参加过桌面游戏,MMORPG游戏甚至小说写作吗?您可能对字符的命名感到烦恼(至少在某一点或另一点上),并且当您似乎无法想到自己喜欢的名字时,您可能会使用在线名称生成器。
您是否曾经想过这些名称生成器是如何工作的?事实证明,其中许多使用马尔可夫链,使其成为最常用的解决方案之一。 (当然,还有其他同样有效的算法!)
您所需要的只是字母的集合,其中每个字母都有一个可能的后续字母列表。因此,例如,字母“ M"有60%的可能性导致字母“ A",而字母有40%的可能性导致字母“ I"。对一大堆其他字母执行此操作,然后运行算法。 oom,您的名字很有意义! (无论如何,大部分时间都是如此。)
马尔可夫链理论的一个有趣的含义是,随着链长度的增加(即状态转换的数量增加),您落入概率某个状态收敛于固定数量,并且该概率与您在系统中的起始位置无关。
当您将整个万维网视为一个马尔可夫系统(其中每个网页都是状态和网页之间的链接是具有概率的转换。该定理基本上说,无论您从哪个网页开始,假设“长时间"浏览,您登陆特定网页X的机会都是固定的概率。
这是Google如何对网页进行排名的基础。实际上,PageRank算法是Markov链算法的一种修改形式(阅读:更高级)。
到达某个网页的“固定概率"越高,其PageRank越高。这是因为较高的固定概率意味着该网页具有来自其他网页的大量传入链接-并且Google假设如果某个网页具有大量传入链接,那么它一定是有价值的。传入的链接越多,它就越有价值。
当然比这更复杂,但这是有道理的。为什么About.com这样的网站在搜索结果页面上会获得更高的优先级?因为事实证明,用户在网上冲浪时往往会到达那里。
手机已经进行了数十年的预测打字,但是您能猜出这些预测是如何产生的吗?无论您使用的是Android(替代键盘选项),您选择的应用程序都很有可能使用马尔可夫链。
这就是键盘应用程序询问它们是否可以收集有关您的打字习惯的数据的原因。例如,在Google键盘中,有一个名为 Share snippets 的设置,该设置要求“共享您在Google应用程序中键入的内容和键入方式的片段,以改进Google Keyboard"。本质上,您的单词会被分析并整合到应用程序的马尔可夫链概率中。
这也是为什么键盘应用程序通常会提供三个或更多选项的原因,通常按最可能到最不可能的顺序显示。它无法确定您下一步要输入的内容,但是它比大多数时候更正确。
如果您从未使用过Reddit,建议您至少检查一下这个有趣的实验,称为/ r / SubredditSimulator。
简而言之,Subreddit Simulator吸收了Reddit众多社区中所有评论和标题中的大量内容,然后分析了每个句子的逐词组成。使用这些数据,它可以生成单词到单词的概率,然后使用这些概率从头开始生成标题和评论。
该实验的一个有趣的层是,注释和标题由社区分类数据来自哪里,因此/ r / food的数据集生成的注释和标题与/ r / soccer的数据集生成的注释和标题完全不同。
最有趣的是-或也许最令人不安的是,所有这些中的一部分是,所生成的评论和标题常常与真实的人难以区分。绝对令人着迷。
标签: