13张动图助你彻底看懂马尔科夫链、PCA和条件概率!

https://mp.weixin.qq.com/s/ll2EX_Vyl6HA4qX07NyJbA

[ 导读 ] 马尔科夫链、主成分分析以及条件概率等概念,是计算机学生必学的知识点,然而理论的抽象性往往让学生很难深入地去体会和理解。而本文,将这些抽象的理论概念,用可视化的方式来解释,还可调节相应参数来改变结果,使这些抽象概念变得生动而立体!

计算机相关概念太难、太抽象?别怕,往下看!

人类对视觉信息的记忆要远远大于文字信息。使用图表等形式的可视化,可以让抽象、难懂的概念一目了然;在此基础之上,添加可控的参数调节器,将更有助于对概念的深入学习与理解。

马尔科夫链

马尔科夫链是指数学中具有马尔科夫性质的离散事件随机过程。在其每一步中,系统根据概率分布可以从一个状态变到另一个状态,也可以保持当前状态。状态的改变叫做转移,与不同的状态改变相关的概率叫做转移概率。

这概念是不是看着有点晕?没关系,我们来看下面这张图:

2种状态的马尔科夫链

在状态空间中有两种状态,A和B。共有4种可能的转换。如果我们在A,接下来可以过渡到B或留在A。如果我们在B,可以过渡到A或者留在B。在这张图中,从任意状态到任意状态的转移概率是0.5。

当然,真正的建模工作者不会总是就画一张马尔科夫链图。 相反,他们会使用“转移矩阵”来计算转移概率。状态空间中的每个状态都会出现在表格中的一列或者一行中。矩阵中的每个单元格都告诉你从行状态转换到列状态的概率。因此,在矩阵中,单元格做的工作和图中的箭头所示是一样。

如果状态空间添加了一个状态,我们将添加一行和一列,向每个现有的列和行添加一个单元格。 这意味着当我们向马尔可夫链添加状态时,单元格的数量会呈二次方增长。因此,转换矩阵就起到了很大的作用(除非你想把法尔科夫链图画的跟丛林一样)。

马尔科夫链的一个作用是用计算机模拟现实世界中的现象。例如,可以用来检测一个新建的水坝溢流的频率(取决于连续下雨的天数)。为建立这个模型,可以从下面的雨天(R)和晴天(S)开始:

表述这种模拟天气的方法就是:“有一半的天数是下雨天。所以模拟中的每一天都有50%的概率是下雨的。”这个规则在模拟中所产生的序列如下:

你注意到上面的序列和原来的不太一样了吗?第二个序列似乎具有跳跃性,而第一个(真实数据)似乎具有“粘性”。在真实的数据中,如果某一天是晴天,那么第二天也很可能是晴天。

可以通过两个状态的马尔可夫链来消除这种“粘性”。当马尔科夫链处于状态“R”时,它保持在该状态的概率是0.9,状态改变的概率是0.1。同样,“S”状态保持不变的概率是0.9,过渡到“R”状态的概率是0.1。

在许多需要对大规模的现象做研究的工作人员手中,马尔科夫链的作用可以变得非常强大。例如,谷歌用于确定搜索结果顺序的算法,称为PageRank,就是一种马尔可夫链。

主成分分析

主成分分析,是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。PCA是最重要的降维方法之一,在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。

  • 2D示例

首先,只考虑两个维度的数据集,比如高度和重量。这个数据集可以绘制成平面上的点。但如果想要整理出变量,PCA会找到一个新的坐标系,其中每个点都有一个新的(x,y)值。坐标轴实际上没有任何物理意义。它们是高度和重量的组合,被称为“主分量”。

拖动原始数据集中的点,可以看到PC坐标系统正在调整

PCA对于降维很有用。下面,我们将数据绘制成两条直线:一条由x值组成,另一条由y值组成。

但是,如果我们只打算沿一个维度查看数据,那么将该维度作为具有最大变化的主成分可能会更好。 通过减少PC2,不会造成太大损失,因为它对数据集的变化贡献最小。

  • 3D示例

看透一个数据云是非常困难的,因此,在3D空间中,PCA显得更为重要。在下面的示例中,原始数据以3D的形式绘制,但可以通过不同的视角,将其投射到2D空间。确定好角度之后,点击“显示PCA”按钮,即可呈现2D的结果。在本例中,PCA变换确保水平轴PC1的变化量最大,垂直轴PC2的变化量次之,第三轴PC3的变化量最少。显然,PC3是丢弃的。

  • 应用:吃喝在英国

如果数据集不仅仅是三维的,而是17个维度的呢?!如下表所示:

表中是英国每个地区平均每人每周17种食物的消费量,单位为克。这张表显示了不同食物类型之间存在的一些有趣的差异,但总体差异并不显著。让我们看看PCA是否可以通过降维来强地区家之间的差异。

下图是第一个主成分的数据图。 我们可以看到一些有关北爱尔兰的情况已经发生了变化。

现在,看看第一和第二主成分,可以看到北爱尔兰是一个主要的异常值。一旦回过头来看看表格中的数据,这就显得很有道理了:北爱尔兰人吃的新鲜土豆要很多,吃的新鲜水果、奶酪、鱼和酒精饮料较少。这是一个很好的迹象,我们所看到的结构反映了现实世界地理的一个重要事实北爱尔兰是四个国家中唯一一个不在大不列颠岛上的。

条件概率

条件概率是指一个事件在另外一个事件已经发生条件下的发生概率。一个落下来的球可能落在红色的架子上(称之为A事件),或者落在蓝色架子上(称之为B事件),或者两者兼而有之。

那么给定一个球,它击中了红色架子(A事件),而后击中蓝色架子(B事件)的概率会是多少呢?可以通过给定A的条件概率,即P(B | A)来回答这个问题。

将抽象、难懂的计算机概念,以可视化的形式展现出来,可以帮助学生、研究者更好的理解;甚至可以帮助教师们提高教学质量。

无论如何,希望读者们能从本文中得到或多或少的帮助。

当然还有一些其他的抽象概念的可视化,读者们可访问下方链接地址查看:

http://setosa.io/ev/

13张动图助你彻底看懂马尔科夫链、PCA和条件概率!的更多相关文章

  1. 图模型的统计推断 inference in graphical models(马尔科夫链的推断)

    有关因子图(factor graphs)以及其在sum product 算法,max-algorithm中的应用,将在一下篇博客中分享. 谢谢您的关注,欢迎提出意见问题.

  2. NLP —— 图模型(一)隐马尔可夫模型(Hidden Markov model,HMM)

    本文简单整理了以下内容: (一)贝叶斯网(Bayesian networks,有向图模型)简单回顾 (二)隐马尔可夫模型(Hidden Markov model,HMM) 写着写着还是写成了很规整的样 ...

  3. 用 Python 通过马尔可夫随机场(MRF)与 Ising Model 进行二值图降噪

    前言 这个降噪的模型来自 Christopher M. Bishop 的 Pattern Recognition And Machine Learning (就是神书 PRML……),问题是如何对一个 ...

  4. 大神真会玩~这组C4D动图,我都看了一整天!

    来自法国的Guillaume Kurkdjian 擅长创作一些平面动态图像 每张都诉说了一个小笑话或者小故事 像个极其微型的小电影. 这些动图的灵感可能来自某个交通工具 或是某个悠闲的时光 也可能是生 ...

  5. 线程池系列二:一张动图,彻底懂了execute和submit

    ​ 我们知道线程池通过execute方法执行提交的Runnable任务,但Runnable只是执行任务,没有返回任何信息. [线程池原理:线程池原来是个外包公司,打工人我悟了] 若是我们想在异步执行完 ...

  6. 学霸双胞胎开源斯坦福CS 221人工智能备忘录,图文并茂看懂反射、状态、变量、逻辑...

    一份斯坦福CS 221人工智能备忘录最近登上了GitHub Trending. 这份备忘录解释了课程中的许多名词.公式和原理,动图.文字.表格并茂,作者之一还是官方助教,堪称CS 221最佳学习笔记. ...

  7. js将用户上传gif动图分解成多张帧图片

    js将用户上传gif动图分解成多张帧图片 写在前面 工作中遇到一个这么一个需求:这是一个多图上传的场景,如果用户上传选择多张图片,则上传后直接展示多张图片,如果上传的图片是gif动图,则需要分解这张动 ...

  8. gif动图快速制作方法(附工具)

    现在写博客或是wiki的过程中,会经常引用到图片,特别是客户端经常与页面相关所以截图不可避.但是越来越多的效果仅仅一张图片是无法清楚的描述.并且博客或是wiki也是支持gif图的.gif图的制作方法有 ...

  9. gif动图快速制作方法(附工具)(转)

    现在写博客或是wiki的过程中,会经常引用到图片,特别是客户端经常与页面相关所以截图不可避.但是越来越多的效果仅仅一张图片是无法清楚的描述.并且博客或是wiki也是支持gif图的.gif图的制作方法有 ...

随机推荐

  1. 【详记MySql问题大全集】二、安装并破解Navicat

    Navicat for MySql 11.1.13 企业版 下载地址: 链接:https://pan.baidu.com/s/1N3ZQXNyx-W8D4AsuZdsMug 密码:x0rd 第二个是N ...

  2. 客户端ip获取蹲坑启示: 不要侥幸

    怎么获取一个客户端ip ? 我想这个问题,在网上遍地都是答案! 而且多半是像下面这样: public static String getIpAddress(HttpServletRequest req ...

  3. Ubuntu 16.04安装下HTK--亲测ok

    1.首先需要安装一些32位库sudo apt-get install libx11-dev:i386 libx11-dev sudo apt-get install g++-multilib sudo ...

  4. Android获取手机号码

    今天来说一下Android系统中怎么获取手机号 一.SIM卡存储的数据可分为四类,它们分别是: 第一类是固定存放的数据.这类数据在移动电话机被出售之前由SIM卡中心写入,包括国际移动用户识别号(IMS ...

  5. tensorflow 1.0 学习:参数和特征的提取

    在tf中,参与训练的参数可用 tf.trainable_variables()提取出来,如: #取出所有参与训练的参数 params=tf.trainable_variables() print(&q ...

  6. Android数据保存之SharedPreference

    前言: 程序中处理的大部分问题都与数据有关,读取数据显示在UI上,读取的数据可以是本地的,也可以是网络的.保存用户数据到存储空间,可以是本地的数据库,文件等,也可以是保存到网络服务器.总之大部分的程序 ...

  7. 剑指offer例题分享--7

    前言:继续前面的分享... 面试题31: 代码如下: #include<iostream> #include<limits.h> using namespace std; bo ...

  8. 旅行,说走就走 Help? [C++数据类型和表达式]

    摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 乐天派.我却喜欢和老妈说"老妈小时候喜欢羡慕别人有动力,现在看 ...

  9. AOP切面实现原理以及多个切面切同一个地方时的优先级讲解

    此博文的编写,源于前段时间的惨痛面试经历.刚好近几天尘埃落定.手头事少,遂总结一二,与各位道友分享,欢迎吐槽指正.今年年初的这段面试经历,已于之前的博文中 整理发出(https://www.cnblo ...

  10. 【Python开发】Python中数据分析环境的搭建

    注:无论是任何一门语言,刚开始入门的时候,语言运行环境的搭建都是一件不轻松的事情. Python的运行环境 要运行或写Python代码,就需要Python的运行环境,主要的Python有以下三类: 原 ...