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

简介:

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

2067289fe8e686d0f2deff72b152b73bc5cd004f

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

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

马尔科夫链

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

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

cca1fb933ac1f5ded89e816d549fa83dd9716eda

2种状态的马尔科夫链

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

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

95c8d3c985f6878182d2fcac2724237e4eb39275

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

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

5ba041f9c2c3191cb27a42b1fb6663e3881cad87

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

b23928dd51376ca120b0cd10498e307faf98594e

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

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

d8688a293da768396df147de7831f35b17ffdc97

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

主成分分析(PCA)

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

● 2D示例

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

36079566e2dfcf69c7e65f4c607d9fe56cea2ed8

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

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

3cda9e3751f06cf1c3fd8c96dbe6fa2904445f97

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

d682c6526587376b7ac86c8b818fd3c0dd3b766b

● 3D示例

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

946a73a2b27490cc372900246d1791cae9e2f451

● 应用:吃喝在英国

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

8f3ebebcd0def0d429df9f02a9965a142356a5cd

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

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

7c03763eba97164e71366d71af1da88a3f2fd2f0

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

9efa305f921e5eda7150441de0034e582c658332

条件概率

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

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

30a8804d29d211ffb18895c32ac43a5739117c0b

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

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


原文发布时间为:2018-08-26

本文来自云栖社区合作伙伴“数据派THU”,了解相关信息可以关注“数据派THU”。

相关文章
这一篇让你彻底搞懂贝塞尔曲线
贝塞尔曲线不懂画?不知道怎么回事?看这一篇就够了!用图形,点曲线运动图和公式推导,让你彻底搞懂贝塞尔曲线的运行原理!
3364 0
这一篇让你彻底搞懂贝塞尔曲线
|
决策智能
Multi-Agent实践第2期: @智能体 你怎么看?
我们将带你体验如何实现一个更具互动性的多智能体群聊:你可以直接"@"提及某个智能体来引发对话。
|
人工智能 弹性计算 算法
一文解读:阿里云AI基础设施的演进与挑战
一文解读:阿里云AI基础设施的演进与挑战
|
11月前
|
监控 调度
队列的深度解析:链式队列的实现
队列的深度解析:链式队列的实现
|
11月前
|
JavaScript 安全 开发工具
在 Vue 3 中使用 TypeScript
【10月更文挑战第3天】
|
11月前
|
搜索推荐 API 数据安全/隐私保护
探讨淘宝商品 API 接口:运用及收益
淘宝商品API接口为开发者和企业提供了一种强大的工具,能够高效获取和利用淘宝平台上的商品数据,涵盖名称、价格、描述、图片等。该接口具有丰富的数据资源、实时性、灵活性和高安全性,广泛应用于电商平台建设、价格比较、数据分析和移动应用开发等领域,为企业带来提高效率、降低成本、增加收入和提升用户体验等多方面收益。
184 4
|
数据可视化 安全 数据挖掘
streamlit (python构建web)之环境搭建
在微信订阅号中发现了一篇关于Streamlit的文章,激发了我的兴趣。Streamlit是一款专为数据科学家设计的开源Python库,能迅速将数据分析脚本转变为功能完备的Web应用。它简化了开发流程,支持轻松添加交互组件及动态展示图表、图像等,非常适合开发安全扫描工具。Streamlit基于Jupyter Notebook原理,通过Python脚本创建可视化和交互式的Web应用,易于部署分享。安装方法多样,可通过`pip install streamlit`快速安装,或通过Anaconda环境管理依赖。启动示例应用只需运行简单命令,即可体验自带的动画、绘图和数据展示等功能。
1106 1
streamlit (python构建web)之环境搭建
|
人工智能 开发者
黑神话:悟空中的AI行为树设计
【8月更文第26天】在《黑神话:悟空》这款游戏中,NPC(非玩家角色)的智能行为对于创造一个富有沉浸感的游戏世界至关重要。为了实现复杂的敌人行为模式,游戏开发团队采用了行为树作为NPC决策的核心架构。本文将详细介绍《黑神话:悟空》中NPC AI的设计原理,特别关注行为树的设计与实现。
646 0
|
11月前
|
安全 算法 前端开发
《深入解析Java虚拟机:从JVM体系结构到垃圾回收算法》(一)
《深入解析Java虚拟机:从JVM体系结构到垃圾回收算法》(一)
104 0
|
负载均衡 监控 Go
Golang深入浅出之-Go语言中的服务网格(Service Mesh)原理与应用
【5月更文挑战第5天】服务网格是处理服务间通信的基础设施层,常由数据平面(代理,如Envoy)和控制平面(管理配置)组成。本文讨论了服务发现、负载均衡和追踪等常见问题及其解决方案,并展示了使用Go语言实现Envoy sidecar配置的例子,强调Go语言在构建服务网格中的优势。服务网格能提升微服务的管理和可观测性,正确应对问题能构建更健壮的分布式系统。
583 1

热门文章

最新文章