看见理论——概率论和统计学的直观介绍

网站地址:https://seeing-theory.brown.edu/

Github地址:https://github.com/seeingtheory/Seeing-Theory

开发团队:Daniel Kunin, Jingru Guo, Tyler Dae Devlin, Daniel Xiang

Seeing Theory是由布朗大学的一位本科生提出,多人参与开发的一个网站项目,这个网站的目标是通过交互可视化使统计知识更容易被人所理解和接受。网站的设计使用了D3.js。

这个网站包括六个章节:

  • Basic Probability 基本概率
  • Compound Probability 复合概率
  • Probability Distributions 概率分布
  • Frequentist Inference 频率论推理
  • Bayesian Inference 贝叶斯推理
  • Regression Analysis 回归分析

基本概率

用户可以进行抛硬币、掷骰子和抽扑克牌的试验,并可以手动调整各个事件出现的概率,通过动态交互分析理论值和试验值,并进行可视化对比,发现随机事件中蕴含的规律性和稳定性——当重复试验的次数$n$逐渐增大时,频率$f_n(A)$呈现出稳定性,逐渐稳定于某个常数。

dice

图1 掷骰子试验

复合概率(多事件概率)

事件与集合论具有对应关系,用户可以输入需要的集合运算表达式,在对应的图中将会以黄色高亮该表达式所代表的区域,用户可以据此验证若干集合恒等式。

表1 事件与集合论的对应关系表

event_set

venn

图2 交互式韦恩图

set_Identities

图3 集合恒等式

除此之外,本章还介绍了排列组合和条件概率的可视化。

permutation_combination

图4 4个元素排列和组合的可视化表示

conditional_probability

图5 条件概率可视化

概率分布

本章通过新颖的可视化设计,展示了随机变量,蜂巢代表了整个样本空间,通过随机撒点,得到所落处的颜色的分布情况。

在介绍离散和连续变量的概率质量(密度)函数和累积分布函数时,用户可以拖动滑动条,展示出不同分布的函数图像。

最后,本章通过以雨滴形式落下的采样点验证了中心极限定理——大量的独立随机变量之和具有近似于正态的分布。

Random_Variables

图6 随机变量可视化

Discrete_Continuous

图7 连续性变量的概率密度函数与累积分布函数

Central_Limit_Theorem

图8 中心极限定理可视化

频率论推理

统计学的一个主要目标就是估计未知参数,要求估计值无偏、有效、相合。

用样本矩估计相应的总体矩,用样本矩的函数估计总体矩相应的函数,然后求出要估计的参数,称这种估计方法为矩估计法。

对于给定的样本值,使似然函数达到最大值得参数值称为未知参数的最大似然估计值,这种估计法为最大似然估计法。

这个网站中演示了用蒙特卡洛方法估计参数值。

monte_carto

图9 蒙特卡洛方法估计π值

关于置信区间和自助法,本章也做了相应的可视化演示。

confidence_interval

图10 置信区间可视化

对于采样样本,可以确定置信上界和置信下界,反复抽样多次,根据伯努利大数定理,则包含真值的约占$100(1-\alpha)\%$,图中绿色代表包含真值,红色代表不含真值。

bootstrap

图11 Boostrap方法可视化

常见的Boostrap有两种:

  • 非参数Bootstrap方法

    总体的分布F未知,但已经有一个容量为n的来自分布F的数据样本,自这一样本按放回抽样的方法抽取一个容量为n的样本,这种样本称为bootstrapy样本。相继地、独立地自原始样本中取得很多个bootstrap样本,利用这些样本对总体F进行统计推断。

  • 参数Boostrap方法

    先利用样本求出未知参数的最大似然估计值 ,接着产生样本,对总体进行统计推断。

贝叶斯推理

贝叶斯定理:$P(A|B)=\dfrac{P(AB)}{P(B)}=\dfrac{P(B|A)P(A)}{P(B)}$

贝叶斯分类器选择具有最大后验概率的类作为该对象所属的类。

举个例子:一种疾病,一般人群中患病的比例是$0.5$。患病的人,白细胞的浓度服从均值2000,方差1000的正态分布。未患病的人,白细胞的浓度服从均值7000,方差3000的正态分布。一个人的白细胞浓度是3100,医生应该做出怎样的判断?

形式化表达一下:

设$\omega_1$表示患病,$\omega_2$表示未患病,$x$表示白细胞的浓度。

已知$P(\omega_1)=0.5%$,$P(\omega_2)=99.5%$

$P(X|\omega_1)\sim N(2000,1000)$,$P(X|\omega_2)\sim N(7000,3000)$

若$x=3100$,则$x\in \omega_{?}$

$P(\omega_1|3100)=\dfrac{P(3100|\omega_1)P(\omega_1)}{P(3100)}=\dfrac{P(3100|\omega_1)P(\omega_1)}{P(3100|\omega_1)P(\omega_1) + P(3100|\omega_2)P(\omega_2)}$

$P(\omega_2|3100)=\dfrac{P(3100|\omega_2)P(\omega_2)}{P(3100)}=\dfrac{P(3100|\omega_2)P(\omega_2)}{P(3100|\omega_1)P(\omega_1) + P(3100|\omega_2)P(\omega_2)}$

解得,$P(\omega_1|3100)=1.9\%$,$P(\omega_2|3100)=98.1\%$

故正常。

该网站中动态展示了上述过程。

Bayes_Theorem

图12 贝叶斯决策可视化

分类算法的比较研究发现,朴素贝叶斯分类法可以与决策树和经过挑选的神经网络分类器相媲美。用于大型数据库,贝叶斯分类法也已表现出高准确率和高速度。

目前研究较多的贝叶斯分类器有Naive Bayes,TAN、BAN和GBN等。

朴素贝叶斯分类器在估计类条件概率时假设属性之间条件独立。

当训练样本不能覆盖较多的属性值时,需要使用m估计方法来估计条件概率。

naive_Bayes

图13 朴素贝叶斯示意图

但是,现实中各个特征属性间往往并不条件独立,而是具有较强的相关性。这时就需要用到贝叶斯网络。

贝叶斯网络是一种有向无环图(DAG)模型(结构化概率模型或者图模型)。贝叶斯网络由网络结构和条件概率表两个部分组成。贝叶斯网络的结构学习也是一个重点研究问题。

bayes_network

图14 贝叶斯网络示意图

如图所示,$p(a,b,c,d,e)=p(a)p(b|a)p(c|a,b)p(d|b)p(e|c)$

除此之外,本章还介绍似然函数和根据数据更新先验分布为后验分布的可视化。

likelihood_function

图15 似然函数可视化

对于离散型总体$X$,设其概率分布为$P(X=a_i)=p(a_i;\theta),i=1,2,\cdots$,称函数$L(\theta)=L(X_1,X_2,\cdots,X_n;\theta)=\prod\limits_{i=1}^n p(X_i;\theta)$

为参数$\theta$的似然函数。

对于连续型总体$X$,概率密度为$f(x;\theta)$,则称函数

$L(\theta)=L(X_1,X_2,\cdots,X_n;\theta)=\prod\limits_{i=1}^nf(X_i;\theta)$

为参数$\theta$的似然函数。

对于给定的样本值$(x_1,x_2,\cdots,x_n)$,使似然函数$L(x_1,x_2,\cdots,x_n;\theta)$达到最大值的参数值$\hat{\theta}=\hat{\theta}(x_1,x_2,\cdots,x_n)$称为未知参数$\theta$的最大似然估计值,相应的使似然函数$L(X_1,X_2,\cdots,X_n;\theta)$达到最大值的参数值$\hat{\theta}=\hat{\theta}(X_1,X_2,\cdots,X_n)$称为$\theta$的最大似然估计量。一般统称为$\theta$的最大似然估计。称这种估计法为最大似然估计法。

对数似然方程或对数似然方程组除了一些简单的情况外,往往没有有限函数形式的解,这就需要用数值方法求近似解,例如牛顿-拉弗森算法等。

似然函数在Expectation Maximization(EM)算法有着重要应用。

EM算法用于含有隐变量的概率模型参数的极大似然估计,分为E步(求期望)和M步(求极大)。

含有隐变量的概率模型的数据表示为$P(Y,Z|\theta)$。这里,$Y$是观测变量的数据,$Z$是隐变量的数据,$\theta$是模型参数。

E步:$Q(\theta,\theta^{(i)})=\Sigma_{Z}log\;P(Y,Z|\theta)P(Z|Y,\theta^{(i)})$,称为Q函数,$\theta^{(i)}$是参数的现估计值。

M步:$\theta^{(i+1)}=arg\;\max\limits_{\theta}\;Q(\theta,\theta^{(i)})$,极大化Q函数得到参数的新估计值。

第一步利用对隐藏变量的现有估计值,计算其最大似然估计值;第二步最大化似然值来计算参数的值。M步上找到的参数估计值被用于下一步E步计算中,这个过程不断交替进行。

高斯混合模型(GMM)的参数估计是EM算法是一个重要应用,隐马尔可夫模型的非监督学习也用到了EM算法。

“先验分布+实验数据=后验分布”的可视化如下图所示,这里使用了Beta分布,关于此部分的相关知识,可以参见:https://www.matongxue.com/madocs/910.html

prior_posterior

图16 根据数据更新先验分布可视化

回归分析

这一章节包含了最小二乘法、相关和方差分析的可视化。

least_Squares

图17 普通最小二乘法可视化

回归分析是研究自变量为一般变量(非随机变量),因变量为随机变量时二者之间的相关关系的统计分析方法。对随机变量的观测值进行预测是回归方程最重要的应用。

analysis_of_variance

图18 方差分析可视化

方差分析就是通过对试验数据进行分析,检验方差相同的多个正态总体的均值是否相等,用以判断各因素对试验指标的影响是否显著。

总结

表2 Seeing Theory网站优点和不足分析

seeing_theory_summary

参考文献

  • Machine Learning A Probabilistic Perspective - Kevin P. Murphy
  • The Elements of Statistical Learning: Data Mining, Inference, and Prediction, Second Edition - Trevor Hastie, Robert Tibshirani, Jerome Friedman
  • 统计学习方法 - 李航

补充资料

线性代数可视化:http://immersivemath.com/ila/index.html

算法及数据结构可视化介绍与对比

VisuAlgo

VisuAlgo: https://visualgo.net/en

主要项目成员:Steven Halim, Felix Halim

主界面

VisuAlgo_Main

图19 VisuAlgo主界面

topo_visualgo

图20 VisuAlgo拓扑排序可视化

Algorithm Visualizer

Algorithm Visualizer: https://algorithm-visualizer.org/

主要项目成员:Jinseo Park, RaghavDua, Nemanja Stojanovic, Veljko Tornjanski

主界面

algo_visu_Main

图21 Algorithm Visualizer主界面

Data Structure Visualization

Data Structure Visualization: https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

主要项目成员:David Galles

主界面

DS_Vis_main

图22 Data Structure Visualization主界面

总结

表3 算法和数据结构可视化网站对比

Algo_DS_summary

参考文献

  • 算法导论 - Thomas H.Cormen
  • 算法竞赛进阶指南 - 李煜东

其他资料

Bokeh交互式可视化库

Bokeh是一个Python交互式可视化库,它能读取大型数据集或者流数据,以简单快速的方式为网页提供优美、高交互性能的图形。Bokeh可以构建应用,在Notebook中使用以及可视化流式数据等。在几个图形间传递组件参数即可实现数据联动,在制作交互式商业报表时十分有用。

Bokeh_show

图23 Bokeh展示效果

例如,用Bokeh可以重现经典的Hans Rosling经典的TED Talk中的效果。

Hans_Rosling

图24 Bokeh实现经典TED Talk效果

Bokeh与D3的对比

表4 Bokeh与D3的对比

bokeh_vs_D3

补充资料

其他Python可视化工具包

  • Matplotlib、Seaborn、Pandas(适合比较初步的探索)
  • ggplot(从R语言中借鉴过来的,用“图形语法”来构建图片)
  • NetworkX(基于matplotlib,分析网络的解决方案)

没法说哪个最好,不同场景下可以使用不同的可视化工具