一、Sketch
1.1 简单抽样算法
1.1.1 核心思想
对于到达的元素 a i a_i ai,以概率 p = M / m p=M/m p=M/m对该元素的频数加1。
- M M M:抽样后的数据流大小
- m m m:原始数据流大小
1.1.2 操作
- 更新:当元素 a i a_i ai到达时,以 p p p的概率更新 c i c_i ci的值;以 1 − p 1-p 1−p的概率保持 c i c_i ci的值不变;
- 估计元素频数:返回元素频数数组,其中每个元素的频数为 f i ^ = c i / p \hat{f_i}=c_i/p fi^=ci/p;
1.1.3 性能
- 空间需求: M = O ( m l o g ( 1 δ ) ϵ 2 ) M=O(\frac{mlog(\frac{1}{\delta})}{\epsilon^2}) M=O(ϵ2mlog(δ1)),所需空间与数据流大小有关
1.2 Basic Count Sketch算法
1.2.1 核心思想
维护一个计数数组 C C C和两个哈希函数 h ( ⋅ ) 、 g ( ⋅ ) h(\cdot)、g(\cdot) h(⋅)、g(⋅)
- h ( ⋅ ) h(\cdot) h(⋅):将 n n n个元素均匀映射到 k k k个位置
- g ( ⋅ ) g(\cdot) g(⋅):将 n n n个元素映射为 − 1 -1 −1和 + 1 +1 +1
1.2.2 特点
- 期望 E ( f a ^ ) = f a E(\hat{f_a})=f_a E(fa^)=fa,即输出结果为 f a f_a fa的无偏估计;
- 方差 V a r ( f a ^ ) = ∣ ∣ f − a ∣ ∣ 2 2 k Var(\hat{f_a})=\frac{||f_{-a}||^2_2}{k} Var(fa^)=k∣∣f−a∣∣22,随着 k k k值增大,即存储计数数组的空间增大,方差将随之减小;
1.2.3 性能
- 空间需求: k = O ( 1 ϵ 2 δ ) k=O(\frac{1}{\epsilon^2\delta}) k=O(ϵ2δ1),与数据流大小无关
1.3 Count Sketch算法
1.3.1 核心思想
在Count Sketch基础上,将哈希函数个数增加到 t t t个,将每个元素都映射到 t t t个位置上,再区 t t t个位置上频数估计的中位数。
1.4 Count-Min Sketch算法
1.4.1 核心思想
- 维护一个宽度为 w w w、深度为 d d d的计数器数组;
- 另有 d d d个哈希函数;
1.4.2 特点
- 放弃了频数的无偏估计(Count Sketch);
- 获得了更为高效的频数估计;
- E [ X i ] = ∣ ∣ f − a ∣ ∣ 1 k E[X_i]=\frac{||f_{-a}||_1}{k} E[Xi]=k∣∣f−a∣∣1
- P [ f a ^ − f a ≥ ϵ ∣ ∣ f − a ∣ ∣ 1 ] = P [ m i n { X 1 , . . . X d } ≥ ϵ ∣ ∣ f − a ∣ ∣ 1 ] = ∏ i = 1 d P [ X i ≥ ϵ ∣ ∣ f − a ∣ ∣ 1 ] ≤ 1 ( k ϵ ) d P[\hat{f_a}-f_a\geq\epsilon||f_{-a}||_1]=P[min\{X_1,...X_d\}\geq\epsilon||f_{-a}||_1]=\prod^d_{i=1}P[X_i\geq\epsilon||f_{-a}||_1]\leq\frac{1}{(k\epsilon)^d} P[fa^−fa≥ϵ∣∣f−a∣∣1]=P[min{X1,...Xd}≥ϵ∣∣f−a∣∣1]=∏i=1dP[Xi≥ϵ∣∣f−a∣∣1]≤(kϵ)d1
1.4.3 性能
- 计数器个数 M = O ( l o g ( 1 δ ) ϵ ) M=O(\frac{log(\frac{1}{\delta})}{\epsilon}) M=O(ϵlog(δ1))
二、整数规划
2.1 整数规划
2.1.1 0-1变量
2.1.1.1 概念
很多问题中,决策变量取值只能为1或0。与 x i ∈ { 0 , 1 } x_i\in\{0,1\} xi∈{0,1}等价的说法有 0 ≤ x i ≤ 1 0\leq x_i\leq1 0≤xi≤1且 x i ∈ Z x_i\in\mathbf{Z} xi∈Z。
2.1.1.2 利用0-1变量表示互相排斥的约束条件
例1:假设两个约束通过逻辑或运算进行了组合
x
≤
2
或
x
≥
6
x\leq2 或 x\geq6
x≤2或x≥6
引入0-1变量
w
w
w:
w
=
{
1
,
x
≤
2
0
,
x
≥
6
w=\left\{ \begin{aligned} 1,\quad x\leq2 \\ 0,\quad x\geq6 \end{aligned} \right.
w={1,x≤20,x≥6
和一个足够大的整数
M
M
M可以将约束条件改写成:
x
≤
2
+
M
(
1
−
w
)
x
≥
6
−
M
w
w
∈
{
0
,
1
}
x\leq2+M(1-w)\\ x\geq6-Mw\\ w\in\{0,1\}
x≤2+M(1−w)x≥6−Mww∈{0,1}
例2:假设两个约束条件通过逻辑或运算进行了组合
x
1
+
2
x
2
≥
12
或
4
x
1
−
10
x
3
≤
1
x_1+2x_2\geq12 或 4x_1-10x_3\leq1
x1+2x2≥12或4x1−10x3≤1
引入0-1变量
w
w
w:
w
=
{
1
,
x
1
+
2
x
2
≥
12
0
,
4
x
1
−
10
x
3
≤
1
w=\left\{ \begin{aligned} 1,\quad x_1+2x_2\geq12 \\ 0,\quad 4x_1-10x_3\leq1 \end{aligned} \right.
w={1,x1+2x2≥120,4x1−10x3≤1
可以改写成:
x
1
+
2
x
2
≥
12
−
M
(
1
−
w
)
4
x
1
−
10
x
3
≤
1
+
M
w
w
∈
{
0
,
1
}
x_1+2x_2\geq12-M(1-w)\\ 4x_1-10x_3\leq1+Mw\\ w\in\{0,1\}
x1+2x2≥12−M(1−w)4x1−10x3≤1+Mww∈{0,1}
2.1.2 松弛线性规划
2.1.2.1 概念
将去掉整数约束的整数规划问题成为整数规划的松弛线性规划
2.1.2.2 例题
整数规划问题:
I
P
(
1
)
m
a
x
10
x
1
+
4
x
2
+
9
x
3
5
x
1
+
4
x
2
+
3
x
3
≤
9
0
≤
x
i
≤
1
,
x
i
∈
Z
,
1
≤
i
≤
3
IP(1)\\ max\quad 10x_1+4x_2+9x_3\\ 5x_1+4x_2+3x_3\leq9\\ 0\leq x_i\leq1,x_i\in\mathbf{Z},1\leq i\leq3
IP(1)max10x1+4x2+9x35x1+4x2+3x3≤90≤xi≤1,xi∈Z,1≤i≤3
该整数规划的松弛线性规划为:
I
P
(
1
)
m
a
x
10
x
1
+
4
x
2
+
9
x
3
5
x
1
+
4
x
2
+
3
x
3
≤
9
0
≤
x
i
≤
1
,
1
≤
i
≤
3
IP(1)\\ max\quad 10x_1+4x_2+9x_3\\ 5x_1+4x_2+3x_3\leq9\\ 0\leq x_i\leq1,1\leq i\leq3
IP(1)max10x1+4x2+9x35x1+4x2+3x3≤90≤xi≤1,1≤i≤3
2.2 单纯形算法
单纯形算法是求解线性规划的经典方法。它的执行时间在最坏情况下不是多项式的,但是在实际中此算法通常相当快速。
2.2.1 主要思想
- 每轮迭代都关联一个“基本解”,容易从松弛型中计算得到。
- 每轮迭代把一个松弛型转换成一个等价的松弛型。
- 最终,指导一个最优解变得“明显”
2.3 分支定界算法
2.3.1 枚举树
2.3.1.1 概念
枚举树是以树状结构将可行域不断进行划分并一一列举出来的数据结构。
2.3.2 分支定界算法
2.3.2.1 剪枝规则
分支定界算法是为了对上述的枚举树进行剪枝,剪枝规则如下:
- 若已找到某个节点的最优解,删除其所有子孙节点;
- 若已知枚举树中某个节点的最优解,而当前节点的松弛线性规划问题的最优解都比这个解要小,则删除当前节点及其子孙节点;
- 若当前节点对应的松弛线性规划问题没有可行解,删除当前节点及其子孙节点。
2.3.2.2 算法
三、集合覆盖
3.1 问题定义
3.1.1 覆盖
设
A
A
A是非空集合,
C
C
C是集合
A
A
A的非空子集组成的集合,即
C
=
{
A
α
∣
A
α
⊂
A
,
A
α
≠
∅
}
C=\{A_\alpha|A_\alpha\subset A,A_\alpha\neq\empty\}
C={Aα∣Aα⊂A,Aα=∅},
C
C
C是集合
A
A
A的覆盖,若
C
C
C满足
∪
A
α
∈
C
A
α
=
A
\cup_{A_\alpha\in C}A_\alpha=A
∪Aα∈CAα=A
3.1.2 最小全覆盖问题
令 U U U为一有限集, S = { s 1 , s 2 , . . . , s n } S=\{s_1,s_2,...,s_n\} S={s1,s2,...,sn}为由 U U U的 n n n个子集构成的集族,全覆盖问题是找到 S S S最小的自己覆盖集合 U U U。
3.1.3 最大子覆盖问题
令 U U U为一有限集, S = { s 1 , s 2 , . . . , s n } S=\{s_1,s_2,...,s_n\} S={s1,s2,...,sn}为由 U U U的 n n n个子集构成的集族,给定正整数 k k k,最大子覆盖问题是从 S S S中找到 k k k个子集,使得这 k k k个子集覆盖集合 U U U中最多的元素。
3.2 爬山算法
3.2.1 概念
爬山算法(hill-climbing algorithm)是一个解决子模优化问题的局部搜索算法。算法12.1是爬山算法的一个实例,它解决了最大子覆盖问题。
四、模块度及社区发现
4.1 模块度
4.1.1 概念
社区划分的好坏与划分后的社区内部顶点及社区之间顶点的连接程度紧密相关,划分越好的社区中各社区内部顶点之间连接得也越紧密,而社区之间连接得越稀疏。模块度正是基于这样的一个观测而定义的。
4.1.2 无向图的模块度定义
4.1.2.1 表达式
无向图的模块度可以计算为:
Q
=
1
2
m
∑
i
,
j
(
A
i
j
−
k
i
k
j
2
m
)
δ
(
C
i
,
C
j
)
Q=\frac{1}{2m}\sum_{i,j}(A_{ij}-\frac{k_ik_j}{2m})\delta(C_i,C_j)
Q=2m1i,j∑(Aij−2mkikj)δ(Ci,Cj)
- n n n:顶点个数
- m m m:边数
- A A A:邻接矩阵
- k i k_i ki:顶点 v i v_i vi的度
- δ ( C i , C j ) = { 1 , 如果 v i 和 v j 属于同一个社区 0 , 否则 \delta(C_i,C_j)=\left\{ \begin{aligned} 1,如果v_i和v_j属于同一个社区\\ 0,&否则 \end{aligned} \right. δ(Ci,Cj)={1,如果vi和vj属于同一个社区0,否则
4.1.2.2 例题
解:由图可知,
m
=
8
,
k
1
=
2
,
k
2
=
2
,
k
3
=
3
,
k
4
=
3
,
k
5
=
2
,
k
6
=
2
,
k
7
=
2
m=8,k_1=2,k_2=2,k_3=3,k_4=3,k_5=2,k_6=2,k_7=2
m=8,k1=2,k2=2,k3=3,k4=3,k5=2,k6=2,k7=2。
Q
=
1
16
[
(
A
11
−
k
1
k
1
16
)
+
2
(
A
12
−
k
1
k
2
16
)
+
2
(
A
13
−
k
1
k
3
16
)
+
(
A
22
−
k
2
k
2
16
)
+
2
(
A
23
−
k
2
k
3
16
)
+
(
A
33
−
k
3
k
3
16
)
+
(
A
44
−
k
4
k
4
16
)
+
2
(
A
45
−
k
4
k
5
16
)
+
2
(
A
46
−
k
4
k
6
16
)
+
2
(
A
47
−
k
4
k
7
16
)
+
(
A
55
−
k
5
k
5
16
)
+
2
(
A
56
−
k
5
k
6
16
)
+
2
(
A
57
−
k
5
k
7
16
)
+
(
A
66
−
k
6
k
6
16
)
+
2
(
A
67
−
k
6
k
7
16
)
+
(
A
77
−
k
7
k
7
16
)
]
=
47
128
Q=\frac{1}{16}[(A_{11}-\frac{k_1k_1}{16})+2(A_{12}-\frac{k_1k_2}{16})+2(A_{13}-\frac{k_1k_3}{16})\\ +(A_{22}-\frac{k_2k_2}{16})+2(A_{23}-\frac{k_2k_3}{16})+\\ (A_{33}-\frac{k_3k_3}{16})\\ +(A_{44}-\frac{k_4k_4}{16})+2(A_{45}-\frac{k_4k_5}{16})+2(A_{46}-\frac{k_4k_6}{16})+2(A_{47}-\frac{k_4k_7}{16})\\ +(A_{55}-\frac{k_5k_5}{16})+2(A_{56}-\frac{k_5k_6}{16})+2(A_{57}-\frac{k_5k_7}{16})\\ +(A_{66}-\frac{k_6k_6}{16})+2(A_{67}-\frac{k_6k_7}{16})\\ +(A_{77}-\frac{k_7k_7}{16}) ]=\frac{47}{128}
Q=161[(A11−16k1k1)+2(A12−16k1k2)+2(A13−16k1k3)+(A22−16k2k2)+2(A23−16k2k3)+(A33−16k3k3)+(A44−16k4k4)+2(A45−16k4k5)+2(A46−16k4k6)+2(A47−16k4k7)+(A55−16k5k5)+2(A56−16k5k6)+2(A57−16k5k7)+(A66−16k6k6)+2(A67−16k6k7)+(A77−16k7k7)]=12847
4.1.2.3 另一种模块度表达式
Q = 1 2 m ∑ i , j ( A i j − k i k j 2 m ) δ ( C i , C j ) = ∑ i , j ( A i j 2 m − k i k j 4 m 2 ) δ ( C i , C j ) = ( ∑ i , j A i j 2 m − ∑ i k i ∑ j k j 4 m 2 ) δ ( C i , C j ) = ∑ c ∈ C [ ∑ i n c 2 m − ( ∑ t o t c 2 m ) 2 ] Q=\frac{1}{2m}\sum_{i,j}(A_{ij}-\frac{k_ik_j}{2m})\delta(C_i,C_j)\\ =\sum_{i,j}(\frac{A_{ij}}{2m}-\frac{k_ik_j}{4m^2})\delta(C_i,C_j)\\ =(\sum_{i,j}\frac{A_{ij}}{2m}-\frac{\sum_ik_i\sum_jk_j}{4m^2})\delta(C_i,C_j)\\ =\sum_{c\in C}[\frac{\sum^c_{in}}{2m}-(\frac{\sum^c_{tot}}{2m})^2] Q=2m1i,j∑(Aij−2mkikj)δ(Ci,Cj)=i,j∑(2mAij−4m2kikj)δ(Ci,Cj)=(i,j∑2mAij−4m2∑iki∑jkj)δ(Ci,Cj)=c∈C∑[2m∑inc−(2m∑totc)2]
- ∑ i n c \sum^c_{in} ∑inc:社区 c c c内部有向边的数量;
- ∑ t o t c \sum^c_{tot} ∑totc:社区 c c c内部所有顶点度的总和;
4.1.2.4 例题
用上述表达式计算上图的模块度:
Q
=
[
6
16
−
(
7
16
)
2
]
+
[
8
16
−
(
9
16
)
2
]
=
47
128
Q=[\frac{6}{16}-(\frac{7}{16})^2]+[\frac{8}{16}-(\frac{9}{16})^2]=\frac{47}{128}
Q=[166−(167)2]+[168−(169)2]=12847
4.1.3 权重无向图的模块度定义
4.1.3.1 表达式
假设
W
W
W为图
G
G
G的权重矩阵,其中
W
i
j
=
{
w
i
j
,
如果
A
i
j
=
1
0
,
否则
W_{ij}=\left\{ \begin{aligned} w_{ij},如果A_{ij}=1\\ 0,否则 \end{aligned} \right.
Wij={wij,如果Aij=10,否则
即图
G
G
G的每条边上赋予了一个权重
w
i
j
w_{ij}
wij。权重无向图的模块度定义为:
Q
=
1
2
m
∑
i
,
j
(
W
i
j
−
k
i
k
j
2
m
)
δ
(
C
i
,
C
j
)
Q=\frac{1}{2m}\sum_{i,j}(W_{ij}-\frac{k_ik_j}{2m})\delta(C_i,C_j)
Q=2m1i,j∑(Wij−2mkikj)δ(Ci,Cj)
- 2 m = ∑ i , j W i j 2m=\sum_{i,j}W_{ij} 2m=∑i,jWij
- k i = ∑ j W i j k_i=\sum_jW_{ij} ki=∑jWij
4.1.4 有向图的模块度定义
4.1.4.1 表达式
假设
A
A
A为有向图
G
G
G的邻接矩阵,其中
m
m
m为有向边的数量,定义顶点
v
i
v_i
vi的出度和入度分别为:
k
i
o
u
t
=
∑
j
A
i
j
和
k
i
i
n
=
∑
j
A
j
i
k_{i}^{out}=\sum_jA_{ij}\quad和\quad k^{in}_i=\sum_jA_{ji}
kiout=j∑Aij和kiin=j∑Aji
有向图的模块度定义如下
Q
=
1
m
∑
i
,
j
(
A
i
j
−
k
i
o
u
t
k
j
i
n
m
)
δ
(
C
i
,
C
j
)
Q=\frac{1}{m}\sum_{i,j}(A_{ij}-\frac{k^{out}_ik^{in}_j}{m})\delta(C_i,C_j)
Q=m1i,j∑(Aij−mkioutkjin)δ(Ci,Cj)
4.1.5 模块度的矩阵定义
4.1.5.1 表达式
定义一个
n
×
k
n\times k
n×k的矩阵
S
S
S,
S
i
j
=
1
S_{ij}=1
Sij=1表示顶点
v
i
v_i
vi属于第
j
j
j个社区,
S
i
j
=
0
S_{ij}=0
Sij=0表示顶点
v
i
v_i
vi不属于第
j
j
j个社区,所以
δ
(
C
i
,
C
j
)
=
∑
r
S
i
r
S
j
r
\delta(C_i,C_j)=\sum_rS_{ir}S_{jr}
δ(Ci,Cj)=r∑SirSjr
定义实对称矩阵
B
B
B,其元素满足
B
i
j
=
A
i
j
−
k
i
k
j
2
m
B_{ij}=A_{ij}-\frac{k_ik_j}{2m}
Bij=Aij−2mkikj
则社区结构模块度可以改写为:
Q
=
1
2
m
∑
i
,
j
(
A
i
j
−
k
i
k
j
2
m
)
δ
(
C
i
,
C
j
)
=
1
2
m
∑
i
,
j
B
i
j
∑
r
S
i
r
S
j
r
=
1
2
m
∑
i
,
j
∑
r
B
i
j
S
i
r
S
j
r
=
1
2
m
T
r
(
S
T
B
S
)
Q=\frac{1}{2m}\sum_{i,j}(A_{ij}-\frac{k_ik_j}{2m})\delta(C_i,C_j)\\ =\frac{1}{2m}\sum_{i,j}B_{ij}\sum_{r}S_{ir}S_{jr}\\ =\frac{1}{2m}\sum_{i,j}\sum_{r}B_{ij}S_{ir}S_{jr}\\ =\frac{1}{2m}Tr(S^TBS)
Q=2m1i,j∑(Aij−2mkikj)δ(Ci,Cj)=2m1i,j∑Bijr∑SirSjr=2m1i,j∑r∑BijSirSjr=2m1Tr(STBS)
其中
T
r
(
S
T
B
S
)
Tr(S^TBS)
Tr(STBS)为矩阵的迹,即对角元素之和。
4.2 Louvain算法
4.2.1 算法步骤
4.2.2 表达式
模块度增益
Δ
Q
(
v
i
→
B
)
\Delta Q(v_i\rightarrow B)
ΔQ(vi→B)计算为
Δ
Q
(
v
i
→
B
)
=
Q
B
+
v
i
−
(
Q
B
+
Q
v
i
)
=
k
i
,
i
n
B
2
m
−
∑
t
o
t
B
⋅
k
i
2
m
2
\Delta Q(v_i\rightarrow B)=Q_{B+v_i}-(Q_B+Q_{v_i})=\frac{k_{i,in}^B}{2m}-\frac{\sum^B_{tot}\cdot k_i}{2m^2}
ΔQ(vi→B)=QB+vi−(QB+Qvi)=2mki,inB−2m2∑totB⋅ki
模块度损失
Δ
Q
(
A
→
v
i
)
\Delta Q(A\rightarrow v_i)
ΔQ(A→vi)计算为
Δ
Q
(
A
→
v
i
)
=
∑
i
,
t
o
t
A
′
⋅
k
i
2
m
2
−
k
i
,
i
n
A
′
2
m
\Delta Q(A\rightarrow v_i)=\frac{\sum^{A'}_{i,tot}\cdot k_i}{2m^2}-\frac{k^{A'}_{i,in}}{2m}
ΔQ(A→vi)=2m2∑i,totA′⋅ki−2mki,inA′
五、尾概率不等式及其应用
5.1 尾概率不等式
5.1.1 Markov不等式
P ( X ≥ a ) ≤ E ( X ) a P(X\geq a)\leq\frac{E(X)}{a} P(X≥a)≤aE(X)
5.1.2 Chebyshev不等式
P ( ∣ X − E ( X ) ∣ ≥ r ) ≤ V a r ( X ) r 2 P(|X-E(X)|\geq r)\leq\frac{Var(X)}{r^2} P(∣X−E(X)∣≥r)≤r2Var(X)
5.1.3 Chernoff不等式
P [ x < ( 1 − δ ) μ ] < e x p ( − μ δ 2 2 ) P [ x > ( 1 + δ ) μ ] < e x p ( − μ δ 2 4 ) P[x<(1-\delta)\mu]< exp(\frac{-\mu\delta^2}{2})\\ P[x>(1+\delta)\mu]< exp(\frac{-\mu\delta^2}{4}) P[x<(1−δ)μ]<exp(2−μδ2)P[x>(1+δ)μ]<exp(4−μδ2)
5.2 应用
5.2.1 Morris算法
- 更新操作:以 1 2 x \frac{1}{2^x} 2x1的概率更新 X X X为 X + 1 X+1 X+1;
- 估计计数结果: C = 2 X − 1 C=2^X-1 C=2X−1;
- 只需要用 l o g 2 l o g 2 n log_2log_2n log2log2n为表示;
5.2.2 Morris+算法
- 相较于Morris算法,维护n个计数,最后取平均值
5.2.3 Morris+算法
- 相较于Morris+算法,运行多次Morris+算法,结果从小到大排列,取中位数输出;
- 只需要进行 l n ( 1 + δ ) ln(1+\delta) ln(1+δ)次Morris+算法
六、Hashing
6.1 布隆过滤器Bloom Filter
6.1.1 概念
- m位数组,所有位取值均为0;
- k个哈希函数,对应位置置1;
6.1.2 误判率
f = ∏ i = 1 k P ( X i = 1 ) = ( 1 − e − k n m ) k f=\prod^k_{i=1}P(X_i=1)=(1-e^{-\frac{kn}{m}})^k f=i=1∏kP(Xi=1)=(1−e−mkn)k
当 m n = 20 , k = 7 \frac{m}{n}=20,k=7 nm=20,k=7时,误判率最低。
6.1.2.1 降低误判率–哈希函数个数选择
k = l n 2 ⋅ m n k=ln2\cdot\frac{m}{n} k=ln2⋅nm
6.1.2.2 降低误判率–位数组大小设置
m ≥ 1 n 2 ⋅ n ⋅ l o g 2 1 ϵ m\geq1n2\cdot n\cdot log_2\frac{1}{\epsilon} m≥1n2⋅n⋅log2ϵ1
6.2 局部敏感哈希
6.2.1 Jaccard相似度
J a c c a r d ( A , B ) = ∣ A ∩ B ∣ ∣ A ∪ B ∣ Jaccard(A,B)=\frac{|A\cap B|}{|A\cup B|} Jaccard(A,B)=∣A∪B∣∣A∩B∣
6.2.2 Shingling
假设一篇文档D的内容为"
a
b
c
d
a
b
c
f
abcdabcf
abcdabcf"
组成的包为:
{
a
b
,
b
c
,
c
d
,
d
a
,
a
b
,
b
c
,
c
f
}
\{ab,bc,cd,da,ab,bc,cf\}
{ab,bc,cd,da,ab,bc,cf}
组成的集合为:
{
a
b
,
b
c
,
c
d
,
d
a
,
c
f
}
\{ab,bc,cd,da,cf\}
{ab,bc,cd,da,cf}
特征矩阵:
- 求k-Shingling集合;
- 利用哈希函数将k-Shingling集合中的元素映射为其对应的桶号;
- 构建特征矩阵;
6.2.3 最小哈希MinHashing
- h ( v ) h(v) h(v):布尔向量v经过随机排列后得到的新向量;
- m h ( v ) mh(v) mh(v): h ( v ) h(v) h(v)中第一个不为0的行号;
- 最小哈希签名:n个最小哈希值构成的列向量
七、抽样算法
7.1 系统抽样
系统抽样(Systematic Sampling)也称为机械抽样,它是将总体中个体按照某种顺序排列,在规定的范围内随机抽取起始个体,然后按照一套规则确定其他样本个体的一种抽样方法。
- N:总体个数
- n:样本容量
- k:最接近 N n \frac{N}{n} nN的一个整数
7.1.1 直线等距抽样
从前k个个体编号中随机抽取一个编号,然后每隔k个个体编号抽取一个个体编号,直到抽取n个个体编号为止。
缺陷:当N不能被k整除时,直线等距抽样不再是一种等概率抽样。
7.1.2 圆形等距抽样
将总体排列成首尾相接的圆形,在1~N范围内随机抽取整数r作为起始个体编号,然后每隔间距k抽取一个个体,直到抽取出n个个体为止。
7.2 分层抽样
分层抽样将总体中个体按照某种特征分为若干互不重叠的部分,每一部分叫做一个分层,在各层中按照层在总体中所占比例进行系统抽样或简单随机抽样。
7.2.1 等额样本法
n i = n K n_i=\frac{n}{K} ni=Kn
7.2.2 按比例分配法
n i = n × N i N n_i=n\times\frac{N_i}{N} ni=n×NNi
- N i N_i Ni:各层个体数量
7.2.3 奈曼分配法
该方法抽取各层的样本数量为
n
i
n_i
ni,其值与该层个体数量
N
i
N_i
Ni和样本标准差
S
i
S_i
Si之积成正比
n
i
=
n
×
N
i
S
i
∑
j
=
1
K
N
j
S
j
n_i=n\times\frac{N_iS_i}{\sum^K_{j=1}N_jS_j}
ni=n×∑j=1KNjSjNiSi
7.2.4 经济分配法
该方法是一种同时考虑变异性和费用的分配方法。假设每层抽样代价为
C
i
C_i
Ci
n
i
=
n
×
N
i
S
i
/
C
i
∑
j
=
1
K
N
j
S
j
/
C
j
n_i=n\times\frac{N_iS_i/C_i}{\sum^K_{j=1}N_jS_j/C_j}
ni=n×∑j=1KNjSj/CjNiSi/Ci
7.3 水库抽样
水库抽样(Reservoir Sampling)技术在总体容量未知的情况下,仅通过单遍扫描数据集便能生成等概率抽样集合,属于一种均匀抽样技术。
7.3.1 水库抽样算法
7.3.1.1 抽样步骤
- 首先将数据流中前k条记录保留下来,构建一个大小为k的水库;
- 对于数据流中的第m条记录(m > k),以 k m \frac{k}{m} mk的概率决定是否由这条记录替换水库中的一条记录;
- 循环执行步骤2,直到遍历全部结束;
7.2.1.2 局限性
当样本数k是一个与总体容量n相关时,如想要从总体中抽取 1 3 \frac{1}{3} 31的样本,此时应该采用其他的抽样算法。
7.3.2 分布式水库抽样算法
7.3.2.1 抽样步骤
- 以 N i N \frac{N_i}{N} NNi的概率选择一个Map;
- 从第i个Map上随机地将一个子样本移动到最终的样本中;
- 循环执行步骤1和2,直到获得k个样本为止;
八、EM算法
8.1 最大似然估计方法
8.1.1 似然函数
8.1.1.1 定义
假设
X
1
,
X
2
,
.
.
.
,
X
n
X_1,X_2,...,X_n
X1,X2,...,Xn为来自总体概率密度函数或概率分布律
f
(
x
∣
θ
)
f(x|\theta)
f(x∣θ)的n个独立同分布的样本,样本的似然函数
L
(
θ
∣
x
1
,
x
2
,
.
.
.
,
x
n
)
L(\theta|x_1,x_2,...,x_n)
L(θ∣x1,x2,...,xn)定义为n个样本值
x
1
,
x
2
,
.
.
.
,
x
n
x_1,x_2,...,x_n
x1,x2,...,xn的函数,即
L
(
θ
∣
x
1
,
x
2
,
.
.
.
,
x
n
)
=
f
(
x
1
,
x
2
,
.
.
.
,
x
n
∣
θ
)
L(\theta|x_1,x_2,...,x_n)=f(x_1,x_2,...,x_n|\theta)
L(θ∣x1,x2,...,xn)=f(x1,x2,...,xn∣θ)
若
X
X
X为离散型随机变量,其概率分布律为
P
(
X
=
x
)
=
P
(
x
∣
θ
)
P(X=x)=P(x|\theta)
P(X=x)=P(x∣θ)
其中
θ
\theta
θ为未知参数。假设n个样本
X
1
,
X
2
,
.
.
.
,
X
n
X_1,X_2,...,X_n
X1,X2,...,Xn的取值为
x
1
,
x
2
,
.
.
.
,
x
n
x_1,x_2,...,x_n
x1,x2,...,xn,那么观测到这组样本的联合概率分布律为
P
(
X
1
=
x
1
,
X
2
=
x
2
,
.
.
.
,
X
n
=
x
n
∣
θ
)
=
∏
i
=
1
n
P
(
X
i
=
x
i
∣
θ
)
=
∏
i
=
1
n
P
(
x
i
∣
θ
)
=
L
(
θ
∣
x
1
,
x
2
,
.
.
.
,
x
n
)
=
L
(
θ
)
P(X_1=x_1,X_2=x_2,...,X_n=x_n|\theta)\\ =\prod^n_{i=1}P(X_i=x_i|\theta)\\ =\prod^n_{i=1}P(x_i|\theta)\\ =L(\theta|x_1,x_2,...,x_n)=L(\theta)
P(X1=x1,X2=x2,...,Xn=xn∣θ)=i=1∏nP(Xi=xi∣θ)=i=1∏nP(xi∣θ)=L(θ∣x1,x2,...,xn)=L(θ)
因此,观测到这组样本的概率随着
θ
\theta
θ的取值变化而变化,它是
θ
\theta
θ的函数,记作
L
(
θ
)
L(\theta)
L(θ)。
8.1.1.2 参数为p的伯努利分布下的似然函数
X
i
X_i
Xi只能取0或者1两个值,则观测到样本值
x
1
,
x
2
,
.
.
.
,
x
n
x_1,x_2,...,x_n
x1,x2,...,xn的似然函数为
L
(
p
)
=
∏
i
=
1
n
P
(
X
=
x
i
)
=
∏
i
=
1
n
p
x
i
(
1
−
p
)
1
−
x
i
L(p)=\prod^n_{i=1}P(X=x_i)\\ =\prod^n_{i=1}p^{x_i}(1-p)^{1-x_i}
L(p)=i=1∏nP(X=xi)=i=1∏npxi(1−p)1−xi
8.1.1.3 参数为 λ \lambda λ的泊松分布下的似然函数
P ( X = x ) = λ x x ! e − λ P(X=x)=\frac{\lambda^x}{x!}e^{-\lambda} P(X=x)=x!λxe−λ
则观测到样本值
x
1
,
x
2
,
.
.
.
,
x
n
x_1,x_2,...,x_n
x1,x2,...,xn的似然函数为
L
(
λ
)
=
∏
i
=
1
n
P
(
X
=
x
i
)
=
∏
λ
i
x
x
i
!
e
−
λ
L(\lambda)=\prod^n_{i=1}P(X=x_i)\\ =\prod\frac{\lambda^x_i}{x_i!}e^{-\lambda}
L(λ)=i=1∏nP(X=xi)=∏xi!λixe−λ
8.1.1.4 参数为 μ \mu μ和 σ 2 \sigma^2 σ2的正态分布下的似然函数
P ( X = x ) = 1 σ 2 π e x p [ − ( x − μ ) 2 2 σ 2 ] P(X=x)=\frac{1}{\sigma\sqrt{2\pi}}exp[-\frac{(x-\mu)^2}{2\sigma^2}] P(X=x)=σ2π1exp[−2σ2(x−μ)2]
则观测到样本值
x
1
,
x
2
,
.
.
.
,
x
n
x_1,x_2,...,x_n
x1,x2,...,xn的似然函数为
L
(
μ
,
σ
2
)
=
∏
i
=
1
n
N
(
x
i
∣
μ
,
σ
2
)
=
∏
i
=
1
n
1
σ
2
π
e
x
p
[
−
(
x
i
−
μ
)
2
2
σ
2
]
L(\mu,\sigma^2)=\prod^n_{i=1}N(x_i|\mu,\sigma^2)\\ =\prod^n_{i=1}\frac{1}{\sigma\sqrt{2\pi}}exp[-\frac{(x_i-\mu)^2}{2\sigma^2}]
L(μ,σ2)=i=1∏nN(xi∣μ,σ2)=i=1∏nσ2π1exp[−2σ2(xi−μ)2]
8.1.2 最大似然估计
在一次随机试验中事件 A A A发生,则认为此时的 P ( A ∣ θ ) P(A|\theta) P(A∣θ)值应是 θ \theta θ的一切可能取值中使 P ( A ∣ θ ) P(A|\theta) P(A∣θ)达到最大的那一个,极大似然估计就是要选取这样的 θ \theta θ值作为参数 θ \theta θ的估计值,即使得观测到一组样本可能性最大的参数 θ \theta θ,记为 θ ^ \hat{\theta} θ^。
8.1.2.1 定义
参数
θ
\theta
θ的最大似然估计
θ
^
(
x
1
,
x
2
,
.
.
.
,
x
n
)
\hat{\theta}(x_1,x_2,...,x_n)
θ^(x1,x2,...,xn)为
θ
^
(
x
1
,
x
2
,
.
.
.
,
x
n
)
=
a
r
g
m
a
x
θ
L
(
θ
∣
x
1
,
x
2
,
.
.
.
,
x
n
)
\hat{\theta}(x_1,x_2,...,x_n)=argmax_\theta L(\theta|x_1,x_2,...,x_n)
θ^(x1,x2,...,xn)=argmaxθL(θ∣x1,x2,...,xn)
8.1.2.2 参数为p的伯努利分布下的最大似然估计
p ^ = 1 n ∑ i = 1 n x i \hat{p}=\frac{1}{n}\sum^n_{i=1}x_i p^=n1i=1∑nxi
8.1.2.3 参数为 λ \lambda λ的泊松分布下的最大似然估计
λ ^ = 1 n ∑ i = 1 n x i \hat{\lambda}=\frac{1}{n}\sum^n_{i=1}x_i λ^=n1i=1∑nxi
8.1.2.4 参数为 μ \mu μ和 σ 2 \sigma^2 σ2的正态分布下的最大似然估计
μ ^ = x ˉ σ 2 ^ = 1 n ∑ i = 1 n ( x i − x ˉ ) 2 \hat{\mu}=\bar{x}\\ \hat{\sigma^2}=\frac{1}{n}\sum^n_{i=1}(x_i-\bar{x})^2 μ^=xˉσ2^=n1i=1∑n(xi−xˉ)2
8.2 EM算法
期望最大算法(Expectation-Maximization,EM算法),是一种从不完全数据或有数据丢失的数据集(存在隐含变量〉中求解概率模型参数的最大似然估计方法。它作为一种数据补全算法,在近几十年得到迅速的发展,主要为应对当前各类实际应用中数据量越来越大,而数据质量却越来越低的情况。当样本中存在隐变量或者缺失变量时,直接处理数据比较困难,很难直接估计不同总体中的参数。