定义
- 值或数据点(cell, data cell):变量的取值。
- 块(block of cells):分箱,即排序后临近cell组成的块。
- 分组(partition):block的组合。
- 分块点(change point,edge of block):分隔临近block的cell,简写为cp或edge。
块评价函数 fitness of block
块评价函数用于评价划分出的块的优劣,以此为基础解决分块的最优化问题。贝叶斯块算法要求块评价函数具有可加性(block-additive),即对于某个块评价函数
f(Bk),
Bk代表第k个分块,那么对于某种分组P,分组的整体评价
F(P)=k=1∑Nblocksf(Bk)即分组的整体评价就是用块评价函数对分组的各个块进行评价后的加总。
我们选用的快评价函数为
f(Bk)=Nk(lnNk−lnTk)
Nk为
Bk,即k分块的数据点数量,
Tk为
Bk右边界与左边界的差值,即该block的宽度。
目标
我们的目标是对已经排序后的data cell进行分块,在选定上面的块评价函数
f(Bk)的情况下,使得包含全部块的分组P的整体评价最优,即
maxF(P)。而可以决定
F(P)的就是全部块的分块边界,即edges,或change points。因此此问题的目标函数即为
edgesmaxF(P(edges))我们希望求得的是一个按序排列的全部分快点数组。
基本思路
bayesian blocks分块或分箱算法的思路实际上基于数学归纳法,即对于某一命题P,存在某一与其相关的序列k=1,2,…,n,n+1,…。如P(k=1)成立,且在P(k=n)成立的前提下,可证明P(k=n+1)同样成立,则P(k)对于任何k均成立。
假设
Popt(R)为数据组前R个cell的最佳分组,则
Popt(1)为第一个cell的最佳分组,这是一定成立的,因为其只有一个cell,因此也只有一个block,所以也只有一种分组方法。因此数学归纳法中P(k=1)的问题已证明成立。上面我们已假设
Popt(R)为数据组前R个cell的最佳分组,那么只要我们再证明
Popt(R+1)也确实为数据组前R+1个cell的最佳分组,则我们的
Popt(R)分块方法对于所有R=1,2,…,N均为最佳的分块方法。
算法
根据
Popt(R+1)的定义,其最后一个分块的右边界一定为第R+1个cell的值。现在定义某个r,使得
Popt(R+1)的最后一个分块的左边界(即最后一个分块的左侧第一个cell)为第r个cell,则r共有R+1种可能,即1,2,…,R+1。我们将这最后一个分块的评价表示为
f(r)。可以证明,对于所有以r为最后一个分块的左边界的
P(R+1)分组的集合,仅有
Popt(r−1)与这最后一个分块组成的分组才可能为最佳分组。由于块评价函数具有可加性,因此
F(Poptr(R+1))=f(r)+{0F(Popt(r−1))r=1r=2,3,...,R+1当r=1时,全部cell都在一个block内,因此不存在r-1对应的块评价函数,因此为0。我们只需遍历R+1种r的取值可能,然后取可以使
F(Poptr(R+1))达到最大的r,即
ropt=rargmax[F(Poptr(R+1))]求得
ropt,结合
Popt(ropt−1),我们便可得
Popt(R+1)。通过这样的方式,我们便可以推出全部
Popt(R),R=1,2,...,N的分块形式。我们最终希望得到的就是
Popt(N)。
参考资料