导读
本教程主要参考来自B站的【人工智能教程】5.4 - 证据理论视频,在这之上还加入了其他的博客、论文以及针对个人研究方向的见解。
侦探剧?不,是统计学!
证据理论,英文全拼其实不重要,反正也很少人说。他还有个别称,叫做“DS
证据理论”。这个名称在各种论文中出现的频率非常的高。如果中文词汇显得不够高端,那就加入英文,或者干脆就用英文(笑)
那么,为什么说这个是统计学?
我们先来假设这样一个场景:
有一天,你带着你的小猫娘上街去玩。本来走着好好的,突然小猫娘在一家冰淇淋车面前停下来了。你看着她那期待的眼神和流口水的小嘴巴,实在不忍心拉着她快速离开,于是你顺着她的眼神瞟过去,发现了很大一张菜单,不仅有不知所云的名字,还有非常诱人的效果图。菜单上有三样:仰望星空、蓝海默默和冰の爱恋。
好嘛,买嘛。那么她看中的是哪一个呢?名字完全不知所云,估计直接问也不会有结果。那就猜吧!于是,你的脑海中有这么些个结果:(结果以集合形式呈现)
- {仰望星空}
- {蓝海默默}
- {冰の爱恋}
- {仰望星空,蓝海默默}
- {仰望星空,冰の爱恋}
- {蓝海默默,冰の爱恋}
- {仰望星空,蓝海默默,冰の爱恋}
- {不想吃,被五颜六色的图片吸引了}
嗯……接下来就是该选什么了。你作为她的主人,多少还是了解她的喜好的。于是你又开始对每个选项赋予一定的概率(胡乱设定的):
- {仰望星空} - 25%
- {蓝海默默} - 20%
- {冰の爱恋} - 15%
- {仰望星空,蓝海默默} - 18%
- {仰望星空,冰の爱恋} - 13%
- {蓝海默默,冰の爱恋} - 8%
- {仰望星空,蓝海默默,冰の爱恋} - 1%
- {不想吃,被五颜六色的图片吸引了} - 0%
你知道,小猫娘对很神秘的名字是没有任何抵抗力的。所以你觉得“仰望星空”应该是分数最高的;另外,小猫娘还吃不完两个冰淇淋,所以不太可能买两个。难道是今天突然懂事了想给你也买一个?三个那就更离谱了,不想吃是绝对不可能的……呜哇,口水都滴到地上了啊……
怎么办,好像“仰望星空”这一款是最有希望的。算了,点了。你的小猫看起来很开心。
背后的统计学原理
那么我们来分析一下,我们这么选的真正原因。
小猫娘看到了三个冰淇淋,那就是三个选项。对于这三个选项,我们能够生成一共 2 3 = 8 2^3=8 23=8种子集,分别是空集 1 1 1个、单元素集合 3 3 3个、双元素集合 3 3 3个、三元素集合 1 1 1个。
为了方便说明,我们记这 8 8 8个选项为 Ω \Omega Ω,每一个选项都有一个概率值,我们可以将这个选项和概率之间的关系称作一种“映射”,也就是将它视为函数: p i = f ( x i ) ∈ ( 0 , 1 ) , x i ∈ Ω p_i = f(x_i)\in(0, 1), x_i\in\Omega pi=f(xi)∈(0,1),xi∈Ω。这个可以说是根据周边什么信息推理出来的或主观或客观的评价概率。在冰淇淋这个情境中,你心中的 8 8 8个选项对应的概率值就是你的主观考虑,如果说是像娃娃机一样设定好的概率那就是客观的了。当然,这个概率不是说我们想怎么定义就怎么定义的,而是遵循这些条件:
{ f ( ϕ ) = 0 ⋯ ❶ ∑ x i ∈ Ω f ( x i ) = 1 ⋯ ❷ \left\{\begin{matrix} f(\phi) &= &0 &\cdots &❶\\ \sum_{x_i\in\Omega}f(x_i) &= &1 &\cdots &❷ \end{matrix}\right. {f(ϕ)∑xi∈Ωf(xi)==01⋯⋯❶❷
其实总接下来就是两项:
- 空集无概率
- 其余和为 1 1 1
如果同时满足这两个条件, f ( x ) f(x) f(x)才能够被称作概率分配函数,因为恰好完全分配了。
当然,我们这里的 x x x实际上表示一个对象,也就是说, x x x包含了这个对象所有的条件集。有时候我们也写为矩阵形式 ∑ A ⊆ Ω f ( A ) = 1 \sum_{A\subseteq\Omega}f(A)=1 ∑A⊆Ωf(A)=1。而其中的 f ( A ) f(A) f(A)也就是当前环境下对假设集 A A A的信任程度。也就是你认为 A A A中的条件是不是真的能够成立,成立的概率应该是多少。
证据成立概率的上限和下限
到这里,相信大家应该对DS
理论有一定的了解了。那么接下来就是纯数学了。
我们刚刚提到 x ∈ Ω x\in\Omega x∈Ω,其中如果还加上一个条件: x x x的取值相互独立,那么 Ω \Omega Ω的所有子集就可以称作幂集,记为 2 Ω 2^\Omega 2Ω。也就是像给小猫娘麦冰淇淋一样,只能是 8 8 8种相互独立的可能;而如果说是两只双胞胎猫娘,姐姐选了之后妹妹选同样的冰淇淋概率非常高,这就是对另一种可能产生了影响,也就不相互独立。
如果说, A A A代表单元素集合,那么 f ( A ) f(A) f(A)就是对于假设条件 A A A的精确信任度;如果 A A A代表多元素集合, f ( A ) f(A) f(A)则仅代表整体信任度,每个假设条件的信任度并不精确,若 A = Ω A=\Omega A=Ω也是同样的。对于这一点,我们用数学语言表示就是:
对 于 任 意 的 A ⊆ Ω , 记 B ⊆ A , 有 B e l ( A ) = ∑ B ⊆ A f ( B ) 对于任意的A\subseteq\Omega,记B\subseteq{A},有Bel(A)=\sum_{B\subseteq A}f(B) 对于任意的A⊆Ω,记B⊆A,有Bel(A)=B⊆A∑f(B)
听起来绕口?无所谓啦。总之这句话的意思就是:当 A A A为多元素集合的时候,记 B e l ( A ) Bel(A) Bel(A)为 A A A中所有子集的精确信任度之和。这个 B e l ( A ) Bel(A) Bel(A)也可以称作下限函数。
除了这些,还有似然函数,同样是在集合 A A A是幂集的前提下,具体表示为:
对 于 ∀ A ⊆ Ω , s . t . → P l ( A ) = 1 − B e l ( A ˉ ) 对于\forall A\subseteq\Omega,s.t.\rightarrow Pl(A)=1-Bel(\bar{A}) 对于∀A⊆Ω,s.t.→Pl(A)=1−Bel(Aˉ)
其中,
A ˉ = Ω − A \bar{A}=\Omega-A Aˉ=Ω−A
也就是取反。
可以看到,这里多了一个取反的操作,所以这里讨论的也就不是集合 A A A的精确信任度,而是 A A A的非假信任度。同样的,相对于被称为下限函数的 B e l ( A ) Bel(A) Bel(A), P l ( A ) Pl(A) Pl(A)也就被称为上限函数或者不可驳斥函数。听起来很让人摸不着头脑不是么?明明都有了真实的精确信任度,偏偏还要弄个非假的信任度,这不是折腾?
只能说,这是另一种求法,可以用在完全没有办法或者说靠人计算实在太麻烦的情况下。比如,你想带着你家里的所有猫娘出去逛街,但是每只猫娘的性格都不太一样,所以需要确定一个地点至少有一只猫娘愿意去。估计算到一半你就觉得太难了。所以改变思路:没有猫娘愿意去。听起来很不错?但是,还是有一个小小的弊端。因为我们用这个方法求出来的是非假信任度,也就是肯定为真的部分加上只能保证不假的部分的和。虽然绝对可以保证不是假的,但是有多少能确定是真的呢?如果精确部分很难算的话,这就真的一点都不知道了,完全决定不了该带猫娘们去哪。
上限和下限的数学关系
那么上下限和现实感觉有什么联系?只能这么说:当上限 P l ( A ) = 1 Pl(A)=1 Pl(A)=1,下限 B e l ( A ) = 0 Bel(A)=0 Bel(A)=0的时候,我们就会在现实生活中觉得:我们对这件事一无所知,因为任何事发生的概率都是 [ 0 , 1 ] [0,1] [0,1]。
那么上限和下限有什么关系吗?从数学上来说,有的。信任函数和似然函数有以下几点性质:
{ B e l ( ϕ ) = P l ( ϕ ) = 0 B e l ( Ω ) = P l ( Ω ) = 1 \left\{\begin{matrix} Bel(\phi) &= &Pl(\phi) &= &0 \\ Bel(\Omega) &= &Pl(\Omega) &= &1\\ \end{matrix}\right. {Bel(ϕ)Bel(Ω)==Pl(ϕ)Pl(Ω)==01
若 有 A ⊆ B , 则 有 { B e l ( A ) ≤ B e l ( B ) P l ( A ) ≤ P l ( B ) 若有A\subseteq B,则有\left\{\begin{matrix} Bel(A) &\leq &Bel(B)\\ Pl(A) &\leq &Pl(B) \end{matrix}\right. 若有A⊆B,则有{Bel(A)Pl(A)≤≤Bel(B)Pl(B)
对 于 ∀ A ⊆ Ω , s . t . : { P l ( A ) ≥ B e l ( A ) P l ( A ) + P l ( A ˉ ) ≥ 1 B e l ( A ) + B e l ( A ˉ ) ≤ 1 对于\forall A\subseteq\Omega,s.t.:\left\{\begin{matrix} Pl(A) &\ge &Bel(A)\\ Pl(A)+Pl(\bar{A}) &\ge &1\\ Bel(A)+Bel(\bar{A}) &\le &1 \end{matrix}\right. 对于∀A⊆Ω,s.t.:⎩⎨⎧Pl(A)Pl(A)+Pl(Aˉ)Bel(A)+Bel(Aˉ)≥≥≤Bel(A)11
证据组合
单个证据基本上就是以上这些内容了。接下来难度升级:多个证据组合讨论。
对于两个不同的概率分配函数 f ( x ) f(x) f(x)和 g ( x ) g(x) g(x),正交和 h ( x ) = f ( x ) ⨁ g ( x ) h(x)=f(x)\bigoplus g(x) h(x)=f(x)⨁g(x)满足:
{ h ( ϕ ) = 0 h ( A ) = ∑ x ∩ y = A f ( x ) × g ( y ) 1 − ∑ x ∩ y = ϕ f ( x ) × g ( y ) = ∑ x ∩ y = A f ( x ) × g ( y ) ∑ x ∩ y ≠ ϕ f ( x ) × g ( x ) \left\{\begin{matrix} h(\phi) &= &0\\ h(A) &= &\frac{\sum_{x\cap y=A}f(x)\times g(y)}{1-\sum_{x\cap y=\phi}f(x)\times g(y)} &= &\frac{\sum_{x\cap y=A}f(x)\times g(y)}{\sum_{x\cap y\neq\phi}f(x)\times g(x)} \end{matrix}\right. {h(ϕ)h(A)==01−∑x∩y=ϕf(x)×g(y)∑x∩y=Af(x)×g(y)=∑x∩y=ϕf(x)×g(x)∑x∩y=Af(x)×g(y)
看起来头大?只能死记硬背了。我们唯一能做的就是把 h ( A ) h(A) h(A)的分母提取出来:
K = 1 − ∑ x ∩ y = ϕ f ( x ) × g ( y ) = ∑ x ∩ y ≠ ϕ f ( x ) × g ( x ) K=1-\sum_{x\cap y=\phi}f(x)\times g(y)=\sum_{x\cap y\neq\phi}f(x)\times g(x) K=1−x∩y=ϕ∑f(x)×g(y)=x∩y=ϕ∑f(x)×g(x)
对于这个 K K K,我们可以说:
{ i f K ≠ 0 , t h e n : 正 交 和 h ( x ) 也 是 概 率 分 布 函 数 i f K = 0 , t h e n : h ( x ) 不 存 在 , f ( x ) 与 g ( x ) 矛 盾 \left\{\begin{matrix} if &K &\neq &0,then:&正交和h(x)也是概率分布函数\\ if &K &= &0,then:&h(x)不存在,f(x)与g(x)矛盾 \end{matrix}\right. {ififKK==0,then:0,then:正交和h(x)也是概率分布函数h(x)不存在,f(x)与g(x)矛盾
这个在多个条件下的混合判定更有用。
拿视频中的例子说明吧。你现在正流鼻涕,眼睛还有点点红。于是你问了你的医生朋友,说道:
- 如果流鼻涕,九成会是感冒但不是过敏性鼻炎;
- 如果眼睛红了,八成会是过敏性鼻炎而不是感冒。
这就是规则。那么你的情况就是这样的,也就是样本空间:
- {没病} - 也就是我们所说的空集 ϕ \phi ϕ
- {感冒}
- {过敏性鼻炎}
- {又是感冒又是过敏性鼻炎}
于是,你将每一块都拉出来分析,最终发现你就是感冒,不是过敏性鼻炎。
证据理论在电网中的应用
说了这么多,就该说说实际中的应用了吧。
说白了,证据理论依然是使用非常多的机器学习算法对海量的用户数据进行分析,并作出分类与预测这两个动作,本质上依然是一种机器学习。
实际中,我们可以使用证据理论预判哪条路在什么时候容易堵车、哪些设备在经过怎么样的使用之后会在什么时候损毁,甚至还能够进行心理预测、军事战场动向、信息安全主动防御等等。如果你曾经看过我的态势感知,你会发现这些应用方向和态势感知的内容重复率相当高。实际上态势感知只是一个方向,而DS
理论则是一个相对比较实际的方法来感知事物的态势,而DS
理论的核心就是大量的统计数据,无论是报表、日志还是报障记录,拿到之后便是常规的数据提取和统一格式、降维降噪建模演算、使用刚刚测到的假设条件演算预测结果。
那么在电网中呢?我们可以使用证据理论来预判在什么季节哪个小区的用电非常高、哪个片区的故障概率非常高、停电之后最有可能是哪个片区发生了故障等等。在发生停电之前,我们就能够使用证据理论挖掘出来的预测信息来给用户发送预警,防止用户在洗热水澡、写文档、电压力锅煲羊肉汤的时候突然断电。当然,在信息推送的时候还是要保证概率下限都足够高的时候才推送,否则很多误报就会像狼来了一样,让用户丧失信心。
是不是有点能理解了呢?