【全网最全】《统计学习方法》习题答案

习题3.2

利用例题3.2构造的kd树求出点 x = ( 3 , 4.5 ) T x=(3,4.5)^T x=(3,4.5)T的最近邻点

  1. 从根节点出发,因为 x ( 1 ) < 7 x^{(1)}<7 x(1)<7, 所以进入左孩子一侧,又因为 x ( 2 ) > 4.5 x^{(2)}>4.5 x(2)>4.5,所以选定叶节点 ( 4 , 7 ) (4,7) (4,7)作为“当前最近点”,开始递归。
  2. 向上回退到 ( 4 , 7 ) (4,7) (4,7)的父节点 ( 5 , 4 ) (5,4) (5,4),设其为当前节点,因为父节点离 x x x更近一些,所以更新"当前最近点"为 ( 5 , 4 ) (5,4) (5,4)
  3. 因为父节点 ( 5 , 4 ) (5,4) (5,4)生成的超平面 x ( 2 ) = 4 x^{(2)}=4 x(2)=4 与以 x = ( 3 , 4.5 ) x=(3,4.5) x=34.5为圆心,以 17 2 \frac{\sqrt{17}}{2} 217 为半径的圆有交点,所以还需要判断当前节点的左孩子 ( 2 , 3 ) (2,3) (2,3)是不是更近。
  4. 因为左子树中只有一个节点,所以可以直接判断得知,需要更新“当前最近点”为 ( 2 , 3 ) (2,3) (2,3),此时距离为 13 2 \frac{\sqrt{13}}{2} 213 ,然后回到父节点 ( 5 , 4 ) (5,4) (5,4),把当前节点设为更高一层的 ( 7 , 2 ) (7,2) (7,2)
  5. 因为 ( 7 , 2 ) (7,2) (7,2)更远,所以不更新“当前最近点”。
  6. 因为 ( 7 , 2 ) (7,2) (7,2)形成的超平面 x ( 1 ) = 7 x^{(1)}=7 x(1)=7与以 ( 2 , 3 ) (2,3) (2,3)为圆心,以 13 2 \frac{\sqrt{13}}{2} 213 为半径的圆没有交点,所以当前节点的右子树不用进行检测。
  7. 因为 ( 7 , 2 ) (7,2) (7,2)已经是根节点了,所以结束搜索,得到最近邻点是 ( 2 , 3 ) (2,3) (2,3)

习题3.3

参照算法3.3,写出输出为x的k近邻的算法

令算法3.3得到的函数为
a p p r o x _ n o d e = N N ( k d _ t r e e , n o d e ) approx\_node = NN(kd\_tree, node) approx_node=NN(kd_tree,node)
即输入一个kd树以及目标点 x x x,就会输出一个最近的节点 a p p r o x _ n o d e approx\_node approx_node,此外还需要调用之前的算法3.2来构造kd树,
t r e e = k d _ t r e e ( d a t a s e t ) tree = kd\_tree(dataset) tree=kd_tree(dataset)
下面就用这两个函数,写出能得到k个最近的节点的函数 K N N KNN KNN

#输入:目标点x,最近邻的数量k,数据集T
#输出:k个T中的节点
def KNN(dataset T, int k, node x):
	node_list = []
	tree = kd_tree(T)
	for i in range(1,k+1):
		approx_node = NN(tree)
		node_list.append(approx_node)
		if node.depth != 1:
			tree.approx_node.x[1] = inf
   	else: 
   		tree.approx_node.x[2] = inf
	return node_list

这个函数的想法就是重复调用k次 N N NN NN函数,因为重新建立kd树的计算复杂度为 O ( N ) O(N) O(N),而每次查找的平均计算复杂度仅为 O ( log ⁡ N ) O(\log{N}) O(logN),所以为了不重新建树,需要更改树本身的结构来代替,方法是每次找到的最近邻点加入到一个待输出的列表中,然后更改最近邻点的坐标,使其距离目标点充分远,不会影响下一次最近邻点的选择。

习题4.1

用极大似然估计法,推出朴素贝叶斯法中的概率估计公式 ( 4.8 ) (4.8) (4.8)以及公式 ( 4.9 ) (4.9) (4.9)

证明公式 ( 4.8 ) (4.8) (4.8)

假设先验概率为
p = P ( Y = c k ) p=P(Y=c_k) p=P(Y=ck)
一共经抽样得到 n n n个样本点,每次抽样的结果是独立同分布的,分别为 y 1 , y 2 , ⋯   , y n y_1,y_2,\cdots,y_n y1,y2,,yn其中符合 y = c k y=c_k y=ck的样本点有 m m m个,那么根据二项分布,可以求得似然概率为
P ( y 1 , ⋯   , y n ) = p m ⋅ ( 1 − p ) n − m P(y_1,\cdots,y_n)=p^m\cdot (1-p)^{n-m} P(y1,,yn)=pm(1p)nm
为了要让 P ( y 1 , ⋯   , y n ) P(y_1,\cdots,y_n) P(y1,,yn)的值最大,需要对 p p p求导,得到下式
d P d p = m p m − 1 ( 1 − p ) n − m − ( n − m ) p m ( 1 − p ) n − m − 1 = p m − 1 ( 1 − p ) n − m − 1 ( m − n p ) \frac{dP}{dp}=mp^{m-1}(1-p)^{n-m}-(n-m)p^m (1-p)^{n-m-1}\\ =p^{m-1}(1-p)^{n-m-1}(m-np) dpdP=mpm1(1p)nm(nm)pm(1p)nm1=pm1(1p)nm1(mnp)
所以当 p = m n p=\frac{m}{n} p=nm时,函数取得最大值,因为
m = ∑ i = 1 n I ( y i = c k ) = p [ ∑ i = 1 n I ( y i ≠ c k ) + ∑ i = 1 n I ( y i = c k ) ] = p n m = \sum_{i=1}^{n}I(y_i=c_k)=p[\sum_{i=1}^{n}I(y_i\neq c_k)+\sum_{i=1}^{n}I(y_i = c_k)]=pn m=i=1nI(yi=ck)=p[i=1nI(yi=ck)+i=1nI(yi=ck)]=pn
所以
P ( Y = c k ) = p = ∑ i = 1 n I ( y = c k ) n P(Y=c_k)=p=\frac{\sum_{i=1}^{n}I(y=c_k)}{n} P(Y=ck)=p=ni=1nI(y=ck)

证明公式 ( 4.9 ) (4.9) (4.9)

假设条件概率为
p = P ( X ( j ) = a j l ∣ Y = c k ) p=P(X^{(j)}=a_{jl}|Y=c_k) p=P(X(j)=ajlY=ck)
一共经抽样得到 N N N个样本点,分别为 x 1 , x 2 , ⋯   , x N x_1,x_2,\cdots,x_N x1,x2,,xN,对应的输出分别为 y 1 , y 2 , ⋯   , y N y_1,y_2,\cdots,y_N y1,y2,,yN,其中符合条件 Y = c k Y=c_k Y=ck的样本点有 n n n个,那么 n n n可以用如下等式表示
n = ∑ i = 1 N I ( x i ) n=\sum_{i=1}^{N}I(x_i) n=i=1NI(xi)
假设它们第 j j j个分量是独立同分布的,上述 n n n个样本点中一共有 m m m个满足 X ( j ) = a j l X^{(j)}=a_{jl} X(j)=ajl,那么根据二项分布,可以求得事件 ( X ( j ) = a j l ∣ Y = c k ) (X^{(j)}=a_{jl}|Y=c_k) (X(j)=ajlY=ck)似然概率为
P ( y 1 , ⋯   , y N ) = p m ⋅ ( 1 − p ) n − m P(y_1,\cdots,y_N)=p^m\cdot (1-p)^{n-m} P(y1,,yN)=pm(1p)nm
为了要让 P ( y 1 , ⋯   , y n ) P(y_1,\cdots,y_n) P(y1,,yn)的值最大,需要对 p p p求导,得到下式
d P d p = m p m − 1 ( 1 − p ) n − m − ( n − m ) p m ( 1 − p ) n − m − 1 = p m − 1 ( 1 − p ) n − m − 1 ( m − n p ) \frac{dP}{dp}=mp^{m-1}(1-p)^{n-m}-(n-m)p^m (1-p)^{n-m-1}\\ =p^{m-1}(1-p)^{n-m-1}(m-np) dpdP=mpm1(1p)nm(nm)pm(1p)nm1=pm1(1p)nm1(mnp)
所以当 p = m n p=\frac{m}{n} p=nm时,函数取得最大值,又因为
m = ∑ i = 1 N I ( y i = c k ) = p ( ∑ i = 1 N I ( y i = c k ) + ∑ i = 1 N I ( y i ≠ c k ) ) = p N m = \sum_{i=1}^{N}I(y_i=c_k)=p(\sum_{i=1}^{N}I(y_i=c_k)+\sum_{i=1}^{N}I(y_i\neq c_k))=pN m=i=1NI(yi=ck)=p(i=1NI(yi=ck)+i=1NI(yi=ck))=pN
所以
P ( X ( j ) = a j l ∣ Y = c k ) = p = ∑ i = 1 N I ( x i j = a j l , y i = c k ) ∑ i = 1 N I ( y i = c k ) P(X^{(j)}=a_{jl}|Y=c_k)=p=\frac{\sum_{i=1}^{N}I(x_i^{j}=a_{jl},y_i=c_k)}{\sum_{i=1}^{N}I(y_i=c_k)} P(X(j)=ajlY=ck)=p=i=1NI(yi=ck)i=1NI(xij=ajl,yi=ck)

习题5.1

根据表5.1所给的训练数据集,利用信息增益比(C4.5算法)生成决策树

首先分别以 A 1 A_1 A1 A 2 A_2 A2 A 3 A_3 A3 A 4 A_4 A4,表示年龄,有工作,有房子,信贷情况,整个数据集记为 D D D

第一轮

根据定义5.3, 可以计算出数据集 D D D关于每个特征 A A A的值的熵
H A 1 ( D ) = 1.584 H A 2 ( D ) = 0.918 H A 3 ( D ) = 0.971 H A 4 ( D ) = 1.566 H_{A_1}(D) = 1.584 \\ H_{A_2}(D) = 0.918 \\ H_{A_3}(D) = 0.971 \\ H_{A_4}(D) = 1.566 HA1(D)=1.584HA2(D)=0.918HA3(D)=0.971HA4(D)=1.566
然后再根据例5.2得到的如下信息增益,
g ( D , A 1 ) = 0.083 g ( D , A 2 ) = 0.324 g ( D , A 3 ) = 0.420 g ( D , A 4 ) = 0.363 g(D,A_1) = 0.083 \\ g(D,A_2) = 0.324 \\ g(D,A_3) = 0.420 \\ g(D,A_4) = 0.363 g(D,A1)=0.083g(D,A2)=0.324g(D,A3)=0.420g(D,A4)=0.363
从而得到关于每个特征的信息增益比
g R ( D , A 1 ) = 0.052 g R ( D , A 2 ) = 0.353 g R ( D , A 3 ) = 0.433 g R ( D , A 4 ) = 0.232 g_R(D,A_1) = 0.052 \\ g_R(D,A_2) = 0.353 \\ g_R(D,A_3) = 0.433 \\ g_R(D,A_4) = 0.232 gR(D,A1)=0.052gR(D,A2)=0.353gR(D,A3)=0.433gR(D,A4)=0.232
从而选择 A 3 A_3 A3作为根节点,令所有满足 A 3 = y e s A_3= yes A3=yes的数据为 D 1 D_1 D1,令所有满足 A 3 = n o A_3 = no A3=no的数据为 D 2 D_2 D2,因为 D 1 D_1 D1中所有的数据均属于同一类,所以不用继续递归了,而 D 2 D_2 D2中数据不是同一类,所以需要第二轮递归再进一步分类。

第二轮

再来计算数据集 D 2 D_2 D2关于其余每个特征的 A A A的值的熵
H A 1 ( D 2 ) = 1.530 H A 2 ( D 2 ) = 0.918 H A 4 ( D 2 ) = 0.340 H_{A_1}(D_2) = 1.530 \\ H_{A_2}(D_2) = 0.918\\ H_{A_4}(D_2) = 0.340 HA1(D2)=1.530HA2(D2)=0.918HA4(D2)=0.340
再计算信息增益
g ( D 2 , A 1 ) = 0.251 g ( D 2 , A 2 ) = 0.918 g ( D 2 , A 4 ) = 0.474 g(D_2,A_1) = 0.251\\ g(D_2,A_2) = 0.918\\ g(D_2,A_4) = 0.474 g(D2,A1)=0.251g(D2,A2)=0.918g(D2,A4)=0.474
从而得到关于每个特征的信息增益比
g R ( D 2 , A 1 ) = 0.164 g R ( D 2 , A 2 ) = 1.000 g R ( D 2 , A 4 ) = 0.340 g_R(D_2,A_1) = 0.164\\ g_R(D_2,A_2) = 1.000\\ g_R(D_2,A_4) = 0.340 gR(D2,A1)=0.164gR(D2,A2)=1.000gR(D2,A4)=0.340
选择信息增益比最大的特征 A 2 A2 A2作为节点的特征,发现两个分支形成的数据集 D 21 D_{21} D21 D 22 D_{22} D22里的元素都属于同一类别,所以递归结束。

最终结果
yes
no
yes
no
有房子
yes
有工作
yes
no

习题5.2

已知如下表所示的训练数据,试用平方误差损失准则生成一个二叉回归树

x 1 x_1 x1 x 2 x_2 x2 x 3 x_3 x3 x 4 x_4 x4 x 5 x_5 x5 x 6 x_6 x6 x 7 x_7 x7 x 8 x_8 x8 x 9 x_9 x9 x 10 x_{10} x10
4.504.754.915.345.807.057.908.238.709.00

因为数据集的输入变量 x i x_i xi是标量,所以直接扫描切分点,把样本点递归分成若干区间,具体的分化情况如下图所示

x<= 5.8
x > 5.8
x<=4.91
x>4.91
x <= 8.23
x>8.23
x<=4.75
x>4.75
x<=5.34
x>5.34
x<=7.90
x>7.90
x<=8.70
x>8.70
x<=4.50
x>4.50
x<=7.05
x>7.05
4.50,4.75,4.91,5.34,5.80,7.05,7.90,8.23,8.70,9.00
4.50,4.75,4.91,5.34,5.80
7.05,7.90,8.23,8.70,9.00
4.50,4.75,4.91
5.34,5.80
7.05,7.90,8.23
8.70,9.00
4.50,4.75
4.91
5.34
5.80
7.05,7.90
8,23
8.70
9.00
4.50
4.75
7.05
7.90

习题5.3

证明CART剪枝算法中,当 α \alpha α确定时,存在唯一的最小子树 T α T_{\alpha} Tα使损失函数 C α ( T ) C_{\alpha}(T) Cα(T)最小

先证明存在性:

因为给定的数据集通过算法得到的生成树是确定的,所以所有可能的子树数量是有限的,所以一定存在若干子树,使得损失函数 C α ( T ) C_{\alpha}(T) Cα(T)是其中最小的,存在性得证

再证明唯一性:

α \alpha α确定的情况下,假设存在两棵不同的 T T T的子树 P P P Q Q Q,使得损失函数均是最小的,即
C α ( P ) = C α ( Q ) C_{\alpha}(P)=C_{\alpha}(Q) Cα(P)=Cα(Q)
首先证明:根据CART剪枝算法的规则, P P P Q Q Q至少各有一处叶结点互不相同。

假设命题不成立,那么 P P P Q Q Q存在了包含关系,不妨设对于叶结点 t t t,有 t ∈ P t\in P tP但是 t ∉ Q t \notin Q t/Q,这是不可能的,因为选择剪枝的时候,需要满足
C α ( T t ) < C α ( t ) C_{\alpha}(T_t) < C_{\alpha}(t) Cα(Tt)<Cα(t)
从而不满足损失函数相等的条件,假设不成立。

再来证明:在 P P P Q Q Q至少各有一处叶结点互不相同的情况下,两棵子树均不是最优的。

假设 P P P中有结点 p p p满足 p ∉ Q p \notin Q p/Q,并且 Q Q Q中有结点 q q q满足 q ∉ P q \notin P q/P,那么根据剪枝的规则,可得
C α ( T p ) > C α ( p ) C α ( T q ) > C α ( q ) C_{\alpha}(T_p) > C_{\alpha}(p) \\ C_{\alpha}(T_q) > C_{\alpha}(q) Cα(Tp)>Cα(p)Cα(Tq)>Cα(q)
否则剪枝不会发生,所以存在 T T T的子树 M M M满足 q ∉ M q\notin M q/M并且其余叶结点与 P P P一样,那么 M M M P P P的损失函数更小,从而也比 Q Q Q的损失函数更小,假设不成立,从而原命题得证。

习题6.2

写出逻辑斯蒂回归模型学习的梯度下降算法

假设给定的数据集为 X = { x ( 1 ) , x ( 2 ) , ⋯   , x ( m ) } X=\{x^{(1)},x^{(2)},\cdots,x^{(m)}\} X={x(1),x(2),,x(m)},对应的标签为 Y = { y ( 1 ) , y ( 2 ) , ⋯   , y ( m ) } Y=\{y^{(1)},y^{(2)},\cdots,y^{(m)}\} Y={y(1),y(2),,y(m)}

其中 x ( i ) = ( x 1 ( i ) , ⋯   , x n − 1 ( i ) , 1 ) ∈ R n x^{(i)}=(x_1^{(i)},\cdots,x_{n-1}^{(i)},1) \in R^n x(i)=(x1(i),,xn1(i),1)Rn y ( i ) ∈ { 0 , 1 } y^{(i)} \in \{0,1\} y(i){0,1},特别需要说明的是,这里把常数项放到了数据集里,所以最后一个分量都是 1 1 1,需要学习的参数记为 ω = ( ω 1 , ω 2 , ⋯   , ω n ) \omega = (\omega_1,\omega_2,\cdots,\omega_n) ω=(ω1,ω2,,ωn)。根据书本第93页的推导可知,对数似然函数为
L ( ω ) = ∑ i = 1 m [ y ( i ) ( ω ⋅ x ( i ) ) − log ⁡ ( 1 + exp ⁡ ( ω ⋅ x ( i ) ) ) ] L(\omega) = \sum_{i=1}^{m}[y^{(i)}(\omega \cdot x^{(i)})-\log(1+\exp{(\omega \cdot x^{(i)})})] L(ω)=i=1m[y(i)(ωx(i))log(1+exp(ωx(i)))]
需要对 L ( ω ) L(\omega) L(ω)求偏导数
∇ L ( ω ) = ( ∂ L ∂ ω 1 , ⋯   , ∂ L ∂ ω n ) \nabla L(\omega) = (\frac{\partial L}{\partial \omega_1},\cdots,\frac{\partial L}{\partial \omega_n}) L(ω)=(ω1L,,ωnL)
其中
∂ L ∂ ω i = x i ( i ) y − ω i exp ⁡ { w 1 x 1 ( i ) + ⋯ + w n x n ( i ) } 1 + exp ⁡ { w 1 x 1 ( i ) + ⋯ + w n x n ( i ) } \frac{\partial L}{\partial \omega_i}=x^{(i)}_iy-\frac{\omega_i\exp\{w_1x^{(i)}_1+\cdots+w_nx^{(i)}_n\}}{1+\exp\{w_1x^{(i)}_1+\cdots+w_nx^{(i)}_n\}} ωiL=xi(i)y1+exp{w1x1(i)++wnxn(i)}ωiexp{w1x1(i)++wnxn(i)}

从而通过设置步长 α \alpha α,终止迭代阈值eps,可以设计如下算法

  • 设定迭代起点 x x x初值
  • 根据上面写出来的公式,得到对应位置的梯度值 ω \omega ω
  • 根据迭代步长算出新的梯度算出下个迭代点 x = x + α ω x = x + \alpha \omega x=x+αω
  • 判断 α ∣ ω ∣ < e p s \alpha|\omega|< eps αω<eps是否成立,成立则结束,否则返回第二步

习题7.1

比较感知机的对偶形式与线性可分支持向量机的对偶形式。

对于给定的数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , ⋯   , ( x N , y N ) } T=\{(x_1,y_1),(x_2,y_2),\cdots,(x_N,y_N)\} T={(x1,y1),(x2,y2),,(xN,yN)}
其中 x i ∈ R n , y i ∈ { − 1 , 1 } x_i \in R^n, y_i \in \{-1,1\} xiRn,yi{1,1} i = 1 , 2 , ⋯   , N i=1,2,\cdots,N i=1,2,,N,最后学习到的平面
ω ⋅ x + b = 0 \omega \cdot x+b=0 ωx+b=0
的参数,在两个算法的对偶形式中,有如下不同的计算方法:

感知机的对偶形式
ω = ∑ i = 1 N α i y i x i b = ∑ i = 1 N α i y i \omega=\sum_{i=1}^{N}\alpha_iy_ix_i \\ b = \sum_{i=1}^{N}\alpha_iy_i ω=i=1Nαiyixib=i=1Nαiyi
其中的 α = ( α 1 , ⋯   , α N ) \alpha=(\alpha_1,\cdots,\alpha_N) α=(α1,,αN),对于 ∀ i ∈ { 1 , 2 , ⋯   , N } \forall i \in \{1,2,\cdots,N\} i{1,2,,N},都有
y i ( ∑ j = 1 N α i y j x j ⋅ x i + b ) ≤ 0 y_i(\sum_{j=1}^{N}\alpha_iy_jx_j \cdot x_i+b) \leq 0 yi(j=1Nαiyjxjxi+b)0
线性可分支持向量机的对偶形式
ω = ∑ i = 1 N α i y i x i b = y 1 − ∑ i = 1 N α i y 1 ( x i ⋅ x j ) \omega=\sum_{i=1}^{N}\alpha_iy_ix_i \\ b = y_1 - \sum_{i=1}^{N}\alpha_iy_1(x_i \cdot x_j) ω=i=1Nαiyixib=y1i=1Nαiy1(xixj)
其中的 α = ( α 1 , ⋯   , α N ) \alpha=(\alpha_1,\cdots,\alpha_N) α=(α1,,αN)是通过求解
arg ⁡ min ⁡ α ( 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i ) \mathop{\arg\min}\limits_{\alpha} ( \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\sum_{i=1}^{N}\alpha_i) αargmin(21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαi)
得到的,还要满足额外的约束条件 a i ≥ 0 a_i \geq 0 ai0 ∀ i ∈ { 1 , ⋯   , N } \forall i \in \{1,\cdots,N\} i{1,,N},并且
∑ i = 1 N α i y i = 0 \sum_{i=1}^{N}\alpha_iy_i = 0 \\ i=1Nαiyi=0

习题7.2

已知正例点 x 1 = ( 1 , 2 ) T x_1=(1,2)^T x1=(1,2)T x 2 = ( 2 , 3 ) T x_2=(2,3)^T x2=(2,3)T x 3 = ( 3 , 3 ) T x_3=(3,3)^T x3=(3,3)T,负例点 x 4 = ( 2 , 1 ) T x_4=(2,1)^T x4=(2,1)T x 5 = ( 3 , 2 ) T x_5=(3,2)^T x5=(3,2)T,试求最大间隔分离超平面和分类决策函数,并在图上画出分离超平面,间隔边界及支持向量。

按照最大间隔法,根据训练数据集构造约束最优化问题:
min ⁡ ω , b ω 1 2 + ω 2 2 2 \min_{\omega,b} \frac{\omega_1^2+\omega_2^2}{2} ω,bmin2ω12+ω22
使得
ω 1 + 2 ω 2 + b ≥ 1 2 ω 1 + 3 ω 2 + b ≥ 1 3 ω 1 + 3 ω 2 + b ≥ 1 − 2 ω 1 − ω 2 − b ≥ 1 − 3 ω 1 − 2 ω 2 − b ≥ 1 \omega_1+2\omega_2+b\geq 1 \\ 2\omega_1+3\omega_2+b\geq 1 \\ 3\omega_1+3\omega_2+b\geq 1 \\ -2\omega_1 - \omega_2 - b\geq 1 \\ -3\omega_1-2\omega_2-b\geq 1 ω1+2ω2+b12ω1+3ω2+b13ω1+3ω2+b12ω1ω2b13ω12ω2b1

计算得当 ω = ( 1 , − 2 ) \omega=(1,-2) ω=(1,2) b = 2 b=2 b=2时,目标函数取到最小值,所得的超平面为
x − 2 y + 2 = 0 x-2y+2=0 x2y+2=0
即为下图中的实线,位于边界上的点是支持向量
在这里插入图片描述

习题7.3

线性支持向量机还可以定义为以下形式:
min ⁡ ω , b , ξ ∣ ∣ ω ∣ ∣ 2 + C ∑ i = 1 N ξ i 2 \min_{\omega,b,\xi}\frac{||\omega||}{2}+C\sum_{i=1}^{N}\xi_i^2 ω,b,ξmin2ω+Ci=1Nξi2
使得
y i ( ω ⋅ x i + b ) ≥ 1 − ξ i , i = 1 , 2 , ⋯   , N ξ i ≥ 0 , i = 1 , 2 , ⋯   , N y_i(\omega \cdot x_i+b)\geq 1-\xi_i,\quad i=1,2,\cdots,N \\ \xi_i\geq0 ,\quad i=1,2,\cdots,N yi(ωxi+b)1ξi,i=1,2,,Nξi0,i=1,2,,N
试求其对偶形式。

定义拉格朗日函数
L ( w , b , ξ , α , β ) = ∥ w ∥ 2 2 + C ∑ i = 1 N ξ i 2 + ∑ i = 1 N α i ( 1 − ξ i − y i ( w ⋅ x i + b ) ) − ∑ i = 1 N β i ξ i L(w,b,\xi, \alpha, \beta) = \frac{\|w\|^2}{2} + C \sum_{i=1}^N \xi_i^2 + \sum_{i=1}^N \alpha_i (1-\xi_i-y_i (w \cdot x_i + b)) - \sum_{i=1}^N \beta_i \xi_i L(w,b,ξ,α,β)=2w2+Ci=1Nξi2+i=1Nαi(1ξiyi(wxi+b))i=1Nβiξi

分别对 w , b , ξ w,b,\xi w,b,ξ求偏导数
{ ∇ ξ L = 2 C ξ i − α i − β i = 0 ∇ w L = w − ∑ i = 1 N α i y i x i = 0 ∇ b L = − ∑ i = 1 N α i y i = 0 \left \{ \begin{array}{l} \displaystyle \nabla_{\xi} L = 2C \xi_i - \alpha_i - \beta_i = 0 \\ \displaystyle \nabla_w L = w - \sum_{i=1}^N \alpha_i y_i x_i = 0 \\ \displaystyle \nabla_b L = -\sum_{i=1}^N \alpha_i y_i = 0 \\ \end{array} \right. ξL=2Cξiαiβi=0wL=wi=1Nαiyixi=0bL=i=1Nαiyi=0
从而可以化简为
{ ξ i = 1 2 C ( α i + β i ) ∑ i = 1 N α i y i = 0 w = ∑ i = 1 N α i y i x i \left \{ \begin{array}{l} \displaystyle \xi_i = \frac{1}{2C}(\alpha_i + \beta_i) \\ \displaystyle \sum_{i=1}^N \alpha_i y_i = 0 \\ \displaystyle w = \sum_{i=1}^N \alpha_i y_i x_i \end{array} \right. ξi=2C1(αi+βi)i=1Nαiyi=0w=i=1Nαiyixi
解得对拉格朗日函数中的 ω \omega ω ξ \xi ξ做变量替换,得到新的形式
L ( α , β ) = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i − 1 4 C ∑ i = 1 N ( α i + β i ) 2 L(\alpha,\beta)=-\frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j (x_i \cdot x_{j})+\sum_{i=1}^N \alpha_i-\frac{1}{4C}\sum_{i=1}^N(\alpha_i+\beta_i)^2 L(α,β)=21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi4C1i=1N(αi+βi)2
那么对偶问题就是求解
arg ⁡ min ⁡ α , β L ( α , β ) \mathop{\arg\min}\limits_{\alpha,\beta}L(\alpha,\beta) α,βargminL(α,β)
还要满足额外的约束条件 a i ≥ 0 a_i \geq 0 ai0 ∀ i ∈ { 1 , ⋯   , N } \forall i \in \{1,\cdots,N\} i{1,,N},并且
∑ i = 1 N α i y i = 0 \sum_{i=1}^{N}\alpha_iy_i = 0 i=1Nαiyi=0

习题7.4

证明内积的正整数幂函数:
K ( x , z ) = ( x ⋅ z ) p K(x,z)=(x \cdot z)^p K(x,z)=(xz)p
是正定核函数,这里 p p p是正整数, x , z ∈ R n x,z \in \mathbb{R^n} x,zRn

用数学归纳法证明:对于 ∀ α = ( α 1 , ⋯   , α n ) T \forall \alpha=(\alpha_1,\cdots,\alpha_n)^T α=(α1,,αn)T

p = 1 p=1 p=1时,因为 α T ( x ⋅ x ) α ≥ 0 \alpha^T(x \cdot x)\alpha \geq 0 αT(xx)α0,当且仅当 α = 0 \alpha=0 α=0取等号,根据定理7.5,结论显然成立,

p = k p=k p=k时,假设结论成立,即存在函数 ϕ k \phi_k ϕk使得
K ( x , z ) = ϕ k ( x ) ⋅ ϕ k ( z ) K(x,z) = \phi_k(x) \cdot \phi_k(z) K(x,z)=ϕk(x)ϕk(z)
那么当 p = k + 1 p=k+1 p=k+1时,
K ( x , z ) = ( x ⋅ z ) k + 1 = ϕ k ( x ) ϕ k ( z ) ( x ⋅ z ) K(x,z) = (x\cdot z)^{k+1} = \phi_k(x)\phi_k(z) (x\cdot z) K(x,z)=(xz)k+1=ϕk(x)ϕk(z)(xz)
令映射函数由以下形式变换得到
ϕ k ( x ) = ( f 1 ( x ) , f 2 ( x ) , ⋯   , f n ( x ) ) T \phi_k(x) = (f_1(x),f_2(x),\cdots,f_n(x))^T ϕk(x)=(f1(x),f2(x),,fn(x))T
那么构造
ϕ k + 1 ( x ) = ( x 1 f 1 ( x ) , x 2 f 2 ( x ) , ⋯   , x n f n ( x ) ) T \phi_{k+1}(x) = (x_1f_1(x),x_2f_2(x),\cdots,x_nf_n(x))^T ϕk+1(x)=(x1f1(x),x2f2(x),,xnfn(x))T
其中
x = ( x 1 , x 2 , ⋯   , x n ) T x=(x_1,x_2,\cdots,x_n)^T x=(x1,x2,,xn)T
于是就有
K ( x , z ) = ϕ k + 1 ( x ) ⋅ ϕ k + 1 ( z ) K(x,z) = \phi_{k+1}(x)\cdot\phi_{k+1}(z) K(x,z)=ϕk+1(x)ϕk+1(z)
从而当 p = k + 1 p=k+1 p=k+1时,结论也成立,命题得证

习题8.1

某公司招聘职员考察身体、业务能力、发展潜力这3项。身体分为合格0、不合格1两级,业务能力和发展潜力分为上1、中2、下3三级。分类为合格1、不合格-1两类。已知10个人的数据,如下表所示

12345678910
身体0011101110
业务能力1321211132
发展潜力3123322111
分类-1-1-1-1-1-111-1-1

假设若分类器为决策树桩。用AdaBoost算法学习一个强分类器。

假设身体为 X ∈ { 0 , 1 } \mathcal{X}\in\{0,1\} X{0,1},业务能力为 Y ∈ { 1 , 2 , 3 } \mathcal{Y}\in\{1,2,3\} Y{1,2,3},发展潜力为 Z ∈ { 1 , 2 , 3 } \mathcal{Z}\in\{1,2,3\} Z{1,2,3},输入变量为
t = ( t 1 , t 2 , t 3 ) ∈ ( X , Y , Z ) t=(t_1,t_2,t_3) \in (\mathcal{X},\mathcal{Y},\mathcal{Z}) t=(t1,t2,t3)(X,Y,Z)
有如下三个决策树桩:
G 1 ( t ) = { 1 , t 1 = 1 − 1 , t 1 = 0 G 2 ( t ) = { 1 , t 2 = 1 − 1 , t 2 ≠ 1 G 3 ( t ) = { 1 , t 3 = 1 − 1 , t 3 ≠ 1 G_1(t)=\left\{ \begin{aligned} 1 &, &t_1=1\\ -1 &, &t_1=0 \\ \end{aligned} \\ \right. G_2(t)=\left\{ \begin{aligned} 1 &, &t_2=1\\ -1 &, &t_2\neq1 \\ \end{aligned} \right.\\ G_3(t)=\left\{ \begin{aligned} 1 &, &t_3=1\\ -1 &, &t_3\neq1 \\ \end{aligned} \right. G1(t)={11,,t1=1t1=0G2(t)={11,,t2=1t2=1G3(t)={11,,t3=1t3=1
从而可以算出对应的分类误差率 e 1 = 0.4 e_1=0.4 e1=0.4 e 2 = 0.3 e_2=0.3 e2=0.3 e 3 = 0.3 e_3=0.3 e3=0.3,从而可以算出每个弱分类器的系数
α 1 = 0.585 α 2 = 0.611 α 3 = 0.611 \alpha_1=0.585\\ \alpha_2=0.611\\ \alpha_3=0.611 α1=0.585α2=0.611α3=0.611
那么所得的强分类器为
G ( t ) = 0.585 G 1 ( t ) + 0.611 G 2 ( t ) + 0.611 G 3 ( t ) G(t) = 0.585G_1(t)+0.611G_2(t) + 0.611G_3(t) G(t)=0.585G1(t)+0.611G2(t)+0.611G3(t)
验证可知分类误差率 e = 0.2 e=0.2 e=0.2

习题8.2

比较支持向量机、AdaBoost、逻辑斯蒂回归模型的学习策略与算法

  • 支持向量机
    学习策略:对于线性可分的数据集,求解目标超平面,让此超平面能正确分类所有样本点,并且离最近样本点的距离是所有超平面中最小的;对于线性不可分的数据集,给每一组数据加上一个松弛变量,在这个宽松的意义下,求解超平面让此超平面能正确分类所有样本点,让平面系数向量的模和宽松系数向量的模达到最小值。两个算法都是通过求解拉格朗日对偶问题求解的。

    学习算法:序列最小最优化算法,对于给定的数据集 T T T、精度 ϵ \epsilon ϵ、核函数 K K K,目标是求对偶问题的解 α \alpha α,算法具体是先将 α \alpha α初始化为 0 0 0,然后只选择两个变量,固定其余变量,求得最优解并更新 α \alpha α,检验停机条件在 ϵ \epsilon ϵ的误差范围内是否成立,不成立重新选两个变量进行循环,成立就结束循环,通过 α \alpha α得到超平面参数 ω \omega ω b b b

  • AdaBoost
    学习策略:极小化加法模型指数损失,提高前一轮分类器错误分类的样本权重,同时降低错误率高的分类器权重,进而将所有若分类器乘以对应的权重做线性组合,输出结果。

    学习算法:前向分步加法算法,对于给定的数据集合 T T T以及基函数集 { b ( γ , x ) } \{b(\gamma,x)\} {b(γ,x)},先初始化一个分类函数,然后通过极小化损失函数得到新的参数,加到之前一轮的函数上,如此循环若干次,把同时求解所有参数转化成逐个求解,每次求出当前意义下最优化的参数。

  • Logistic回归
    学习策略:Logistic回归模型是以似然函数为目标的最优化问题,通过迭代算法求解,学习到的最优模型应该是所有可能概率模型中,熵最大的那个。
    学习算法:改进的迭代尺度算法,思想是假设最大熵模型当前的参数向量是 ω \omega ω,然后找到一个参数 δ \delta δ,使得模型的对数似然函数增大,持续循环直到找到最大值。

习题14.1

试写出分裂聚类算法,自上而下地对数据进行聚类,并给出其算法复杂度

  • 输入:n个样本点组成的样本集合,样本点间的度量
  • 输出:对样本集合的一个层次化聚类

(1)把所有的样本点当成一个类,计算中心点坐标 c c c

(2)计算当前各类的中心点 c 1 , ⋯ , c i c_1,\cdots,c_i c1ci

(3)找到所有样本点中离自己类中心最远的样本点 s j s_j sj,其对应的类为 T p T_p Tp,中心点为 c p c_p cp

(4)计算离 s j s_j sj最近的中心点 c q c_q cq,如果 p = q p=q p=q,那么 s j s_j sj创建一个新的类,否则归到类 T q T_q Tq

(5)如果现在已经有了n个类,那么结束,否则回到(2)

上面给出的算法复杂度为 O ( n 3 m ) O(n^3m) O(n3m),其中样本点数量为n,维度为m。

习题14.2

证明类或簇的四个定义中,第一个定义可以推出其他三个定义

  • 定义14.5 ⟹ \Longrightarrow 定义14.6

假设集合G是满足定义14.5的类,具体来说,对于 ∀ x i , x j ∈ G \forall x_i , x_j \in G xi,xjG,有 d ( x i , x j ) ≤ T d(x_i,x_j)\leq T d(xi,xj)T成立,从而对于任意给定的 x p x_p xp,一定存在 x q x_q xq,使得 d ( x p , x q ) ≤ T d(x_p,x_q)\leq T d(xp,xq)T

  • 定义14.5 ⟹ \Longrightarrow 定义14.7

假设 T = max ⁡ { d ( x i , x j ) ∣ i , j = 1 , ⋯   , n } T=\max\{d(x_i,x_j)|i,j=1,\cdots,n\} T=max{d(xi,xj)i,j=1,,n},对于集合 G G G,如果对于 ∀ x i , x j ∈ G \forall x_i , x_j \in G xi,xjG,有 d ( x i , x j ) ≤ T d(x_i,x_j)\leq T d(xi,xj)T成立,从而对于给定的样本点 x p x_p xp,有
1 n G − 1 ∑ x j ∈ G − { x q } d ( x p , x j ) ≤ T \frac{1}{n_G-1}\sum_{x_j\in G-\{x_q\}}d(x_p,x_j) \leq T nG11xjG{xq}d(xp,xj)T
其中 n G n_G nG G G G中样本的个数。

  • 定义14.5 ⟹ \Longrightarrow 定义14.8

对于给定的 T T T V V V,假设 t = min ⁡ { T , V } t = \min\{T,V\} t=min{T,V},对于集合 G G G,如果对于 ∀ x i , x j ∈ G \forall x_i , x_j \in G xi,xjG,有 d ( x i , x j ) ≤ t d(x_i,x_j)\leq t d(xi,xj)t成立,从而有
1 n G ( n G − 1 ) ∑ x i ∈ G ∑ x j ∈ G d ( x i , x j ) ≤ T d ( x i , x j ) ≤ V \frac{1}{n_G(n_G-1)}\sum_{x_i\in G}\sum_{x_j\in G}d(x_i,x_j)\leq T \\ d(x_i,x_j) \leq V nG(nG1)1xiGxjGd(xi,xj)Td(xi,xj)V
其中 n G n_G nG G G G中样本的个数。

习题14.3

i证明n个样本分到k类,所有可能分法的数目是
S ( n , k ) = 1 k ! ∑ l = 1 k ( − 1 ) k − l ( k l ) k n S(n,k)=\frac{1}{k!}\sum_{l=1}^k(-1)^{k-l}\begin{pmatrix} k\\ l\end{pmatrix}k^n S(n,k)=k!1l=1k(1)kl(kl)kn
即k均值的可能解的个数是指数级的

我觉得这道证明题的结论有问题:

归类最后一个样本点时,有两种情况需要考虑:第一种是已经存在了k个类,所以最后一个可以归到任何类中;第二种是只存在k-1个类,所以最后一个只能单独成一类。从而可以写出递推表达式如下
S ( n , k ) = S ( n − 1 , k − 1 ) + k S ( n − 1 , k ) S(n,k) = S(n-1,k-1)+kS(n-1,k) S(n,k)=S(n1,k1)+kS(n1,k)
易知递归的终点为 S ( k , k ) = 1 S(k,k)=1 S(k,k)=1 S ( k , 0 ) = 0 S(k,0)=0 S(k,0)=0,下面说明
S ( n , k ) = 1 k ! ∑ l = 1 k ( − 1 ) k − l C k l l n S(n,k)=\frac{1}{k!}\sum_{l=1}^k(-1)^{k-l}C_k^l l^n S(n,k)=k!1l=1k(1)klCklln
是递推关系式的通项。递归终点显然符合结论,根据组合数的性质,我们有
S ( n , k ) = 1 k ! ∑ l = 1 k ( − 1 ) k − l C k l l n = ∑ l = 1 k ( − 1 ) k − l l n ( k − l ) ! l ! = ∑ l = 1 k ( − 1 ) k − l ( k − l ) ! ⋅ l n l ! S(n,k)=\frac{1}{k!}\sum_{l=1}^k(-1)^{k-l}C_k^ll^n \\ = \sum_{l=1}^k (-1)^{k-l}\frac{l^n}{(k-l)!l!} \\ = \sum_{l=1}^k \frac{(-1)^{k-l}}{(k-l)!}\cdot\frac{l^n}{l!} \\ S(n,k)=k!1l=1k(1)klCklln=l=1k(1)kl(kl)!l!ln=l=1k(kl)!(1)kll!ln
把右端项带入上式,可以得到
S ( n − 1 , k − 1 ) = ∑ l = 1 k − 1 ( − 1 ) k − 1 − l ( k − 1 − l ) ! ⋅ l n − 1 l ! S(n-1,k-1) = \sum_{l=1}^{k-1} \frac{(-1)^{k-1-l}}{(k-1-l)!}\cdot\frac{l^{n-1}}{l!} S(n1,k1)=l=1k1(k1l)!(1)k1ll!ln1

S ( n − 1 , k ) = ∑ l = 1 k ( − 1 ) k − l ( k − l ) ! ⋅ l n − 1 l ! S(n-1,k) = \sum_{l=1}^{k} \frac{(-1)^{k-l}}{(k-l)!}\cdot\frac{l^{n-1}}{l!} S(n1,k)=l=1k(kl)!(1)kll!ln1

从而通过作差得
S ( n , k ) − k S ( n − 1 , k ) = ∑ l = 1 k ( − 1 ) k − l ( k − l ) ! ⋅ l n − 1 ( l − k ) l ! = ∑ l = 1 k ( − 1 ) k − 1 − l ( k − 1 − l ) ! ⋅ l n − 1 l ! = S ( n − 1 , k − 1 ) S(n,k)-kS(n-1,k)= \sum_{l=1}^{k} \frac{(-1)^{k-l}}{(k-l)!}\cdot\frac{l^{n-1}(l-k)}{l!}\\ = \sum_{l=1}^{k} \frac{(-1)^{k-1-l}}{(k-1-l)!}\cdot\frac{l^{n-1}}{l!} \\ = S(n-1,k-1) S(n,k)kS(n1,k)=l=1k(kl)!(1)kll!ln1(lk)=l=1k(k1l)!(1)k1ll!ln1=S(n1,k1)
从而假设得证

习题15.2

试求矩阵
A = [ 2 4 1 3 0 0 0 0 ] A=\left[ \begin{matrix} 2 & 4 \\ 1 & 3 \\ 0 & 0 \\ 0 & 0 \\ \end{matrix} \right] A=21004300
的奇异值分解并写出其外积展开式

计算对称矩阵
W = A T A = [ 2 1 0 0 4 3 0 0 ] [ 2 4 1 3 0 0 0 0 ] = [ 5 11 11 25 ] W=A^TA= \left[ \begin{matrix} 2 & 1 & 0 & 0 \\ 4 & 3 & 0 & 0 \\ \end{matrix} \right] \left[ \begin{matrix} 2 & 4 \\ 1 & 3 \\ 0 & 0 \\ 0 & 0 \\ \end{matrix} \right]= \left[ \begin{matrix} 5 & 11 \\ 11 & 25 \\ \end{matrix} \right] W=ATA=[24130000]21004300=[5111125]
特征值 λ \lambda λ和特征向量 x x x满足特征方程
( W − λ I ) x = 0 (W-\lambda I)x=0 (WλI)x=0
从而得到线性方程组
KaTeX parse error: No such environment: align at position 8: \begin{̲a̲l̲i̲g̲n̲}̲ \left\{ \begin…
该方程组有非零解的充要条件是
∣ 5 − λ 11 11 25 − λ ∣ = 0 \left| \begin{matrix} 5-\lambda & 11 \\ 11 & 25-\lambda \end{matrix} \right| =0 5λ111125λ=0
λ 2 − 30 λ + 4 = 0 \lambda^2-30\lambda+4=0 λ230λ+4=0,得到特征值 λ 1 = 15 + 221 \lambda_1=15+\sqrt{221} λ1=15+221 ,对应特征向量
v 1 = [ 1 10 + 221 11 ] v_1 = \left[ \begin{matrix} 1 \\ \frac{10+\sqrt{221}}{11}\\ \end{matrix} \right] v1=[11110+221 ]
特征值 λ 2 = 15 − 221 \lambda_2=15-\sqrt{221} λ2=15221 ,对应特征向量
v 2 = [ − 10 + 221 11 1 ] v_2 = \left[ \begin{matrix} -\frac{10+\sqrt{221}}{11} \\ 1 \end{matrix} \right] v2=[1110+221 1]
于是可以构造正交矩阵 V V V和对角矩阵 Σ \Sigma Σ如下
V = [ 1 − 10 + 221 11 10 + 221 11 1 ] Σ = [ 15 + 221 0 0 15 − 221 0 0 0 0 ] V = \left[ \begin{matrix} 1 & -\frac{10+\sqrt{221}}{11} \\ \frac{10+\sqrt{221}}{11} & 1 \end{matrix} \right]\\ \Sigma = \left[ \begin{matrix} \sqrt{15+\sqrt{221}} & 0 \\ 0 & \sqrt{15-\sqrt{221}} \\ 0 & 0 \\ 0 & 0 \\ \end{matrix} \right]\\ V=[11110+221 1110+221 1]Σ=15+221 000015221 00
因为
u 1 = 1 λ 1 A v 1 = [ 62 + 4 221 11 15 + 221 41 + 3 221 11 15 + 221 0 0 ] u 2 = 1 λ 2 A v 2 = [ 24 − 3 221 11 15 − 221 23 − 221 11 15 − 221 0 0 ] u_1=\frac{1}{\sqrt{\lambda_1}}Av_1= \left[ \begin{matrix} \frac{62+4\sqrt{221}}{11\sqrt{15+\sqrt{221}}}\\ \frac{41+3\sqrt{221}}{11\sqrt{15+\sqrt{221}}}\\ 0 \\ 0 \end{matrix} \right] \\ u_2=\frac{1}{\sqrt{\lambda_2}}Av_2= \left[ \begin{matrix} \frac{24-3\sqrt{221}}{11\sqrt{15-\sqrt{221}}}\\ \frac{23-\sqrt{221}}{11\sqrt{15-\sqrt{221}}}\\ 0 \\ 0 \end{matrix} \right] u1=λ1 1Av1=1115+221 62+4221 1115+221 41+3221 00u2=λ2 1Av2=1115221 243221 1115221 23221 00
令列向量 u 3 u_3 u3 u 4 u_4 u4 A T A^T AT的零空间 N ( A T ) \mathcal{N}(A^T) N(AT)上的一组标准正交基,先求解线性方程组
A T x = [ 2 1 0 0 4 3 0 0 ] [ x 1 x 2 x 3 x 4 ] = 0 A^Tx=\left[ \begin{matrix} 2 & 1 & 0 & 0 \\ 4 & 3 & 0 & 0 \\ \end{matrix} \right] \left[ \begin{matrix} x_1\\ x_2\\ x_3\\ x_4\\ \end{matrix} \right]=0 ATx=[24130000]x1x2x3x4=0
( x 3 , x 4 ) (x_3,x_4) (x3,x4)分别为 ( 1 , 0 ) (1,0) (1,0) ( 0 , 1 ) (0,1) (0,1),那么可得
u 3 = [ 0 0 1 0 ] T u 4 = [ 0 0 0 1 ] T u_3=\left[ \begin{matrix} 0 & 0 & 1 &0 \end{matrix} \right]^T \\ u_4=\left[ \begin{matrix} 0 & 0 & 0 & 1 \end{matrix} \right]^T u3=[0010]Tu4=[0001]T
从而可以构造正交矩阵
U = [ 62 + 4 221 11 15 + 221 24 − 3 221 11 15 − 221 0 0 41 + 3 221 11 15 + 221 23 − 221 11 15 − 221 0 0 0 0 1 0 0 0 0 1 ] U=\left[ \begin{matrix} \frac{62+4\sqrt{221}}{11\sqrt{15+\sqrt{221}}} &\frac{24-3\sqrt{221}}{11\sqrt{15-\sqrt{221}}} & 0 & 0\\ \frac{41+3\sqrt{221}}{11\sqrt{15+\sqrt{221}}} & \frac{23-\sqrt{221}}{11\sqrt{15-\sqrt{221}}} & 0 & 0\\ 0 & 0 & 1 & 0\\ 0 & 0 & 0 & 1 \end{matrix} \right] U=1115+221 62+4221 1115+221 41+3221 001115221 243221 1115221 23221 0000100001
矩阵 A A A的外积展开式为
A = 1 λ 1 u 1 v 1 T + 1 λ 2 u 2 v 2 T A =\frac{1}{\sqrt{{\lambda_1}}}u_1v_1^T+ \frac{1}{\sqrt{{\lambda_2}}}u_2v_2^T A=λ1 1u1v1T+λ2 1u2v2T

习题15.3

比较矩阵的奇异值分解与对称矩阵的对角化的异同

  • 相似点:
  1. 都是根据矩阵特征值,得到对角元,然后将一个矩阵分解成三个矩阵乘积的形式。
  2. 奇异值和对称矩阵对角化后的对角元都是唯一确定的。
  • 不同点:
  1. 奇异值是矩阵自乘之后,得到的特征值的平方根;而对称矩阵的对角化,是根据本身的特征值。

  2. 如果矩阵不是一个方阵,那么奇异值组成的矩阵不是方阵;而对称矩阵对角化得到的对角矩阵一定是一个方阵。

习题15.4

证明任何一个秩为1的矩阵可写成两个向量的外积形式,并给出实例

对于矩阵 A n × n A_{n\times n} An×n,满足 r ( A ) = 1 r(A)=1 r(A)=1,那么 ∃ P \exists P P是可逆阵,使得
P A = [ v 1 , 0 , ⋯ , 0 ] PA=[v_1,0,\cdots, 0] PA=[v100]
其中 v 1 v_1 v1 1 × n 1\times n 1×n的行向量,令 e 1 = [ 1 , 0 , ⋯   , 0 ] e_1=[1,0,\cdots,0] e1=[1,0,,0],从而
P A = e 1 T v 1 A = P − 1 e 1 T v 1 PA = e_1^Tv_1 \\ A =P^{-1}e_1^Tv_1 PA=e1Tv1A=P1e1Tv1
再令 u 1 T = P − 1 e 1 T u_1^T=P^{-1}e_1^T u1T=P1e1T,从而有 A = u 1 T v 1 A=u_1^Tv_1 A=u1Tv1得证

习题15.5

搜索中的点击数据记录用户搜索时提交的查询语句,点击的网页URL,以及点击的次数,构成一个二部图,其中一个结点集合 { q i } \{q_i\} {qi}表示查询,另一个结点集合 { u j } \{u_j\} {uj}表示URL,边表示点击关系,边上的权重表示点击次数。下图是一个简化的点击数据例。
在这里插入图片描述
点击数据可以由矩阵表示,试对该矩阵进行奇异值分解,并解释得到的三个矩阵所表示的内容。

( q i , u j ) (q_i,u_j) (qi,uj)表示查询 q i q_i qi到结点 u j u_j uj的点击次数,其中 i ∈ { 1 , 2 , 3 , 4 } , j ∈ { 1 , 2 , 3 , 4 , 5 } i\in\{1,2,3,4\},j\in\{1,2,3,4,5\} i{1,2,3,4},j{1,2,3,4,5},可以将上图转化成如下矩阵
A = [ 0 20 5 0 0 10 0 0 3 0 0 0 0 0 1 0 0 1 0 0 ] A= \begin{bmatrix} 0 & 20 & 5 & 0 & 0 \\ 10 & 0 & 0 & 3 & 0 \\ 0 & 0 & 0 & 0 & 1 \\ 0 & 0 & 1 & 0 & 0 \\ \end{bmatrix} A=0100020000500103000010
其中位置 A i j A_{ij} Aij对应 ( q i , u j ) (q_i,u_j) (qi,uj),如果不存在即为0,可以得到分解结果如下
U = [ 0.999 0 0 − 0.012 0 1 0 0 0 0 1 0 − 0.012 0 0 0.999 ] Σ = [ 20.6 0 0 0 0 0 10.4 0 0 0 0 0 1 0 0 0 0 0 0.97 0 ] V T = [ 0 0.97 0.243 0 0 0.958 0 0 0.287 0 0 0 0 0 1 0 − 0.243 0.97 0 0 0.287 0 0 − 0.958 0 ] U= \begin{bmatrix} 0.999 & 0 & 0 & -0.012 \\ 0 & 1 & 0 & 0 \\ 0 & 0 & 1 & 0 \\ -0.012 & 0 & 0 & 0.999\\ \end{bmatrix} \\ \Sigma= \begin{bmatrix} 20.6 & 0 & 0 & 0 & 0 \\ 0 & 10.4 & 0 & 0 & 0 \\ 0 & 0 & 1 & 0 & 0 \\ 0 & 0 & 0 & 0.97 & 0 \\ \end{bmatrix} \\ V^T = \begin{bmatrix} 0 & 0.97 & 0.243 & 0 & 0\\ 0.958 & 0 & 0 & 0.287 & 0 \\ 0 & 0 & 0 & 0 & 1 \\ 0 & -0.243 & 0.97 & 0 & 0 \\ 0.287 & 0 & 0 & -0.958 &0 \end{bmatrix} U=0.999000.012010000100.012000.999Σ=20.6000010.40000100000.970000VT=00.958000.2870.97000.24300.243000.97000.287000.95800100

矩阵 U U U表示两个查询之间的相关程度;矩阵 Σ \Sigma Σ对角元对应每个查询的次数占总查询中的比重,查询次数多则对应对角元数值大;矩阵 V T V^T VT表示不同网页结点之间的相关性。

习题16.1

对以下样本数据进行主成分分析:
X = [ 2 3 3 4 5 7 2 4 5 5 6 8 ] X= \begin{bmatrix} 2 & 3 & 3 & 4 & 5 & 7 \\ 2 & 4 & 5 & 5 & 6 & 8 \end{bmatrix} X=[223435455678]

样本均值向量为
x ‾ = 1 6 ∑ i = 1 6 x i = ( 4 , 5 ) T \overline{x} = \frac{1}{6} \sum_{i=1}^6 x_i= (4,5)^T x=61i=16xi=(4,5)T
从而得到样本协方差矩阵为
S = [ 16 5 17 5 17 5 4 ] S= \begin{bmatrix} \frac{16}{5} & \frac{17}{5} \\ \frac{17}{5} & 4 \end{bmatrix} S=[5165175174]
对样本矩阵 X X X 进行规范化得到新矩阵
A = [ − 5 2 − 5 4 − 5 4 0 5 4 3 5 4 − 3 2 − 1 2 0 0 1 2 3 2 ] A = \begin{bmatrix} -\frac{\sqrt{5}}{2} & -\frac{\sqrt{5}}{4} & -\frac{\sqrt{5}}{4} & 0 & \frac{\sqrt{5}}{4} & \frac{3\sqrt{5}}{4} \\ -\frac{3}{2} & -\frac{1}{2} & 0 & 0 & \frac{1}{2} & \frac{3}{2} \end{bmatrix} A=[25 2345 2145 00045 21435 23]
根据公式计算得到样本相关矩阵
R = 1 5 A A T = [ 1 17 5 40 17 5 40 1 ] R = \frac{1}{5}AA^T= \begin{bmatrix} 1 & \frac{17\sqrt{5}}{40} \\ \frac{17\sqrt{5}}{40} & 1 \end{bmatrix} R=51AAT=[140175 40175 1]
求得矩阵 R R R 的特征值为 λ 1 = 1 + 17 40 5 \lambda_1 = 1+\frac{17}{40}\sqrt{5} λ1=1+40175 以及 λ 2 = 1 − 17 40 5 \lambda_2=1-\frac{17}{40}\sqrt{5} λ2=140175 ,对应的单位特征向量为
a 1 = ( 2 2 , 2 2 ) T a 2 = ( 2 2 , − 2 2 ) T a_1 = (\frac{\sqrt{2}}{2},\frac{\sqrt{2}}{2})^T \\ a_2 = (\frac{\sqrt{2}}{2},-\frac{\sqrt{2}}{2})^T a1=(22 ,22 )Ta2=(22 ,22 )T
于是样本主成分矩阵为
Y = [ 2 2 7 2 2 4 2 9 2 2 11 2 2 15 2 2 0 − 2 2 − 2 − 2 2 − 2 2 − 2 2 ] Y= \begin{bmatrix} 2\sqrt{2} & \frac{7\sqrt{2}}{2} & 4\sqrt{2} & \frac{9\sqrt{2}}{2} & \frac{11\sqrt{2}}{2} & \frac{15\sqrt{2}}{2} \\ 0 & -\frac{\sqrt{2}}{2} & -\sqrt{2} & -\frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2} & -\frac{\sqrt{2}}{2} \end{bmatrix} Y=[22 0272 22 42 2 292 22 2112 22 2152 22 ]

习题16.2

证明样本协方差矩阵 S S S 是总体协方差矩阵方差 Σ \Sigma Σ 的无偏估计

假设随机变量 X X X 有观测序列 X n = { x 1 , x 2 , ⋯   , x n } X_n=\{x_1,x_2,\cdots,x_n\} Xn={x1,x2,,xn} Y Y Y 有观测序列 Y n = { y 1 , y 2 , ⋯   , y n } Y_n=\{y_1,y_2,\cdots,y_n\} Yn={y1,y2,,yn},那么根据样本协方差矩阵元素的算法可得
C o v ( X n , Y n ) = E [ 1 n − 1 ∑ i = 1 n ( x i − x ‾ ) ( y i − y ‾ ) ] = 1 n − 1 E [ ∑ i = 1 n ( x i y i − x ‾ y i − y ‾ x i + x ‾ y ‾ ) ] = 1 n − 1 E [ ∑ i = 1 n x i y i − x ‾ ∑ i = 1 n y i − y ‾ ∑ i = 1 n x i + n x ‾ y ‾ ] = E [ ∑ x i y i ] n − 1 − 2 E [ ∑ x i ∑ y i ] n ( n − 1 ) + E [ ∑ x i ∑ y i ] n ( n − 1 ) = E [ ∑ x i y i ] n − 1 − E [ ∑ x i ∑ y i ] n ( n − 1 ) = 1 n E [ ∑ i = 1 n x i y i ] − 1 n ( n − 1 ) E [ ∑ i = 1 n ∑ j ≠ i n x i y j ] = E [ ∑ i = 1 n x i y i n ] − E [ ∑ i = 1 n ∑ j ≠ i n x i n y j n − 1 ] = E [ ∑ i = 1 n x i y i n ] − E [ ∑ i = 1 n x i n ∑ j ≠ i n y j n − 1 ] = E [ ∑ i = 1 n x i y i n ] − E [ ∑ i = 1 n x i n E [ ∑ j ≠ i n y j n − 1 ] ] = E [ ∑ i = 1 n x i y i n ] − E [ ∑ i = 1 n x i n E [ Y ] ] = E [ ∑ i = 1 n x i y i n ] − E [ ∑ i = 1 n x i n ] E [ Y ] = E [ X Y ] − E [ X ] ⋅ E [ Y ] = C o v ( X , Y ) \begin{aligned} Cov(X_n,Y_n) &= E\left[\frac{1}{n-1}\sum_{i=1}^n(x_i-\overline{x})(y_i-\overline{y}) \right] \\ &= \frac{1}{n-1} E\left[\sum_{i=1}^{n} (x_iy_i - \overline{x}y_i - \overline{y}x_i + \overline{x}\overline{y}) \right]\\ &= \frac{1}{n-1} E\left[\sum_{i=1}^nx_iy_i - \overline{x}\sum_{i=1}^ny_i-\overline{y}\sum_{i=1}^nx_i +n\overline{x}\overline{y} \right] \\ &=\frac{E\left[ \sum x_iy_i \right]}{n-1}-\frac{2E\left[\sum x_i \sum y_i \right]}{n(n-1)} + \frac{E\left[\sum x_i \sum y_i \right]}{n(n-1)} \\ &= \frac{E\left[ \sum x_iy_i \right]}{n-1}-\frac{E\left[\sum x_i \sum y_i \right]}{n(n-1)} \\ &= \frac{1}{n}E\left[\sum_{i=1}^n x_iy_i \right] - \frac{1}{n(n-1)}E\left[ \sum_{i=1}^n\sum_{j\neq i}^n x_i y_j \right]\\ &= E\left[\sum_{i=1}^n \frac{x_iy_i}{n} \right] - E\left[\sum_{i=1}^n \sum_{j\neq i}^n\frac{x_i}{n} \frac{y_j}{n-1} \right]\\ &= E\left[\sum_{i=1}^n \frac{x_iy_i}{n} \right] - E\left[\sum_{i=1}^n \frac{x_i}{n}\sum_{j\neq i}^n \frac{y_j}{n-1} \right]\\ &= E\left[\sum_{i=1}^n \frac{x_iy_i}{n} \right] - E\left[\sum_{i=1}^n \frac{x_i}{n} E\left[\sum_{j\neq i}^n\frac{y_j}{n-1} \right]\right]\\ &= E\left[\sum_{i=1}^n \frac{x_iy_i}{n} \right] - E\left[\sum_{i=1}^n \frac{x_i}{n} E\left[Y \right]\right]\\ &= E\left[\sum_{i=1}^n \frac{x_iy_i}{n} \right] - E\left[\sum_{i=1}^n \frac{x_i}{n} \right]E\left[Y \right]\\ &= E[XY] - E[X]\cdot E[Y] \\ &= Cov(X,Y) \end{aligned} Cov(Xn,Yn)=E[n11i=1n(xix)(yiy)]=n11E[i=1n(xiyixyiyxi+xy)]=n11E[i=1nxiyixi=1nyiyi=1nxi+nxy]=n1E[xiyi]n(n1)2E[xiyi]+n(n1)E[xiyi]=n1E[xiyi]n(n1)E[xiyi]=n1E[i=1nxiyi]n(n1)1Ei=1nj=inxiyj=E[i=1nnxiyi]Ei=1nj=innxin1yj=E[i=1nnxiyi]Ei=1nnxij=inn1yj=E[i=1nnxiyi]Ei=1nnxiEj=inn1yj=E[i=1nnxiyi]E[i=1nnxiE[Y]]=E[i=1nnxiyi]E[i=1nnxi]E[Y]=E[XY]E[X]E[Y]=Cov(X,Y)
从而命题得证

习题16.3

X X X 为数据规范化样本矩阵,则主成分等价于求解以下最优化问题:
min ⁡ L ∥ X − L ∥ F s . t . r a n k ( L ) ≤ k \min_L \lVert X-L\rVert_F \\ s.t. \quad rank(L) \leq k LminXLFs.t.rank(L)k
这里 F F F 是弗罗贝尼乌斯范数, k k k 是主成分个数。试问为什么?

先证明充分性:

根据算法16.1,假设矩阵 X ′ = 1 n − 1 X T X'=\frac{1}{\sqrt{n-1}}X^T X=n1 1XT 可作如下的截断奇异值分解
X ′ = U k Σ k V k X' = U_k\Sigma_kV_k X=UkΣkVk
从而得到样本主成分矩阵为
Y = V k T X = n − 1 V k T ( X ′ ) T = n − 1 Σ k U k T Y = V_k^TX=\sqrt{n-1}V_k^T(X')^T=\sqrt{n-1}\Sigma_k U_k^T Y=VkTX=n1 VkT(X)T=n1 ΣkUkT
K = 1 n − 1 V k Y K=\frac{1}{\sqrt{n-1}}V_kY K=n1 1VkY,因为 V k V_k Vk只有 k k k行,所以 r a n k ( L ) ≤ k rank(L) \leq k rank(L)k,根据定理15.3,得
∥ X − K ∥ F = min ⁡ L ∥ X − L ∥ F \lVert X-K\rVert_F = \min_L\lVert X-L\rVert_F XKF=LminXLF
从而获得的矩阵 K K K就是最优化问题的解,得证

再证明必要性:

假设满足上面最优化问题的矩阵为 L L L,并且 r a n k ( L ) ≤ k rank(L) \leq k rank(L)k,根据定理15.3,令矩阵 X X X 有分解
X = U Σ V T X=U\Sigma V^T X=UΣVT
那么矩阵
L = U k Σ k V k T L = U_k\Sigma_kV_k^T L=UkΣkVkT
Y = L V k = U k Σ k Y=LV_k=U_k\Sigma_k Y=LVk=UkΣk,则 Y T Y = Σ k Σ k Y^TY=\Sigma_k\Sigma_k YTY=ΣkΣk,又因为
X T X = V Σ Σ V T X^TX=V\Sigma\Sigma V^T XTX=VΣΣVT
从而有
V T X ( V T X ) T = Σ Σ V k T X ( V k T X ) T = Σ k Σ k V^TX(V^TX)^T=\Sigma\Sigma \\ V_k^TX(V_k^TX)^T=\Sigma_k\Sigma_k VTX(VTX)T=ΣΣVkTX(VkTX)T=ΣkΣk
根据定理16.1可知, Y = V k T X Y=V_k^TX Y=VkTX即为主成分矩阵。

习题19.1

用蒙特卡洛积分法
∫ − ∞ + ∞ x 2 exp ⁡ ( − x 2 2 ) d x \int_{-\infty}^{+\infty}x^2\exp{(-\frac{x^2}{2})} dx +x2exp(2x2)dx

令概率分布函数为
p ( x ) = 1 2 π exp ⁡ ( − x 2 2 ) p(x) = \frac{1}{\sqrt{2\pi}}\exp{(-\frac{x^2}{2})} p(x)=2π 1exp(2x2)
它的均值为0,方差为1,用蒙特卡洛求 f ( x ) g ( x ) f(x)g(x) f(x)g(x)在实数轴上的定积分,其中
f ( x ) = 2 π x 2 f(x)= \sqrt{2\pi}x^2 f(x)=2π x2
程序如下

import numpy as np
import random
import math
x = np.random.normal(0,1,[10000])
rst = math.sqrt(2*np.pi)*np.dot(x,x)/10000
print(rst)

结果输出为 2.5227803197535947 2.5227803197535947 2.5227803197535947

习题19.4

验证具有以下转移概率矩阵的马尔可夫链是不可约的,但是周期性的。
P = [ 0 1 2 0 0 1 0 1 2 0 0 1 2 0 1 0 0 1 2 0 ] P= \begin{bmatrix} 0 & \frac{1}{2} & 0 & 0\\ 1 & 0 & \frac{1}{2} & 0\\ 0 & \frac{1}{2} & 0 & 1\\ 0 & 0 & \frac{1}{2} & 0\\ \end{bmatrix} P=01002102100210210010

先证明矩阵是不可约的:

经过两次状态转移之后的概率矩阵如下,元素 ( i , j ) (i,j) (i,j)的值表示 P { X ( t + 2 ) = i ∣ X ( t ) = j } P\{X(t+2)=i|X(t)=j\} P{X(t+2)=iX(t)=j}
P 2 = [ 1 2 0 1 4 0 0 3 4 0 1 2 1 2 0 3 4 0 0 1 4 0 1 2 ] P^2 = \begin{bmatrix} \frac{1}{2} & 0 & \frac{1}{4} & 0 \\ 0 & \frac{3}{4} & 0 & \frac{1}{2} \\ \frac{1}{2} & 0 & \frac{3}{4} & 0 \\ 0 & \frac{1}{4} & 0 & \frac{1}{2} \\ \end{bmatrix} P2=210210043041410430021021
经过三次状态转移之后的概率矩阵如下,元素啊 ( i , j ) (i,j) (i,j)的值表示 P { X ( t + 3 ) = i ∣ X ( t ) = j } P\{X(t+3)=i|X(t)=j\} P{X(t+3)=iX(t)=j}
P 3 = [ 0 3 8 0 1 4 3 4 0 5 8 0 0 5 8 0 3 4 1 4 0 3 8 0 ] P^3= \begin{bmatrix} 0 & \frac{3}{8} & 0 & \frac{1}{4} \\ \frac{3}{4} & 0 & \frac{5}{8} & 0 \\ 0 & \frac{5}{8} & 0 & \frac{3}{4} \\ \frac{1}{4} & 0 & \frac{3}{8} & 0 \\ \end{bmatrix} P3=043041830850085083410430
将三种跳转概率矩阵相加得
P + P 2 + P 3 = [ 1 2 7 8 1 4 1 4 7 4 3 4 9 8 1 2 1 2 9 8 3 4 7 4 1 4 1 4 7 8 1 2 ] P + P^2 +P^3 = \begin{bmatrix} \frac{1}{2} & \frac{7}{8} & \frac{1}{4} & \frac{1}{4} \\ \frac{7}{4} & \frac{3}{4} & \frac{9}{8} & \frac{1}{2} \\ \frac{1}{2} & \frac{9}{8} & \frac{3}{4} & \frac{7}{4} \\ \frac{1}{4} & \frac{1}{4} & \frac{7}{8} & \frac{1}{2} \\ \end{bmatrix} P+P2+P3=21472141874389414189438741214721
发现每一个位置都不为0,所以任意状态下,都可以经过1或者2或者3次跳转,有概率到达指定状态,所以矩阵 P P P是不可约的。

再证明矩阵是有周期性的:

因为第二次转跳的概率矩阵 P 2 P^2 P2的对角元都不为0,所以偶数次的转跳都有可能回到原来的状态。又因为矩阵都有一样的形状 P 2 n P^{2n} P2n,即有确定的位置上的值一直是0,其余位置一直不是0,所以 P 2 n + 1 P^{2n+1} P2n+1型的矩阵都与 P 3 P^3 P3有相同形状,从而对角元都是0。综上,概率矩阵是有周期性的,并且周期为2。

习题19.5

证明可逆马尔可夫链一定是不可约的

我觉得这个命题是错的,下面是具体说明

假设马尔可夫链的转移概率矩阵为

P = [ p 11 ⋯ p 1 n ⋮ ⋮ p n 1 ⋯ p n n ] P= \begin{bmatrix} p_{11} & \cdots & p_{1n}\\ \vdots & &\vdots \\ p_{n1} & \cdots & p_{nn} \end{bmatrix} P=p11pn1p1npnn

可以将其改造成如下形式的两个矩阵

Q = [ Q 1 Q 2 ⋮ Q n ] Q = \begin{bmatrix} Q_1 \\ Q_2 \\ \vdots \\ Q_n \end{bmatrix} Q=Q1Q2Qn

其中 Q i = d i a g ( p i 1 , p i 2 , ⋯   , p i n ) Q_i=diag(p_{i1},p_{i2},\cdots,p_{in}) Qi=diag(pi1,pi2,,pin) i = 1 , 2 , ⋯   , n i=1,2,\cdots,n i=1,2,,n,还有

H = [ H 1 H 2 ⋮ H n ] H = \begin{bmatrix} H_1 \\ H_2 \\ \vdots \\ H_n \end{bmatrix} H=H1H2Hn

其中 H i H_i Hi是第 i i i列为 ( p 1 i , p 2 i , ⋯   , p n i ) T (p_{1i},p_{2i},\cdots,p_{ni})^T (p1i,p2i,,pni)T n n n阶方阵,其余位置都是0,从而根据可逆性,则存在一个向量 π = ( π 1 , π 2 , ⋯   , π n ) T \pi=(\pi_1,\pi_2,\cdots,\pi_n)^T π=(π1,π2,,πn)T,使得

Q [ π 1 π 2 ⋮ π n ] = [ p 11 π 1 ⋮ p 1 n π n ⋮ p n 1 π 1 ⋮ p n n π n ] = [ p 11 π 1 ⋮ p n 1 π 1 ⋮ p 1 n π n ⋮ p n n π n ] = H [ π 1 π 2 ⋮ π n ] Q \begin{bmatrix} \pi_1 \\ \pi_2 \\ \vdots \\ \pi_n \end{bmatrix}= \begin{bmatrix} p_{11}\pi_1 \\ \vdots \\ p_{1n}\pi_n\\ \vdots \\ p_{n1}\pi_1 \\ \vdots\\ p_{nn}\pi_n \end{bmatrix}= \begin{bmatrix} p_{11}\pi_1 \\ \vdots \\ p_{n1}\pi_1\\ \vdots \\ p_{1n}\pi_n \\ \vdots\\ p_{nn}\pi_n \end{bmatrix}= H \begin{bmatrix} \pi_1 \\ \pi_2 \\ \vdots \\ \pi_n \end{bmatrix} Qπ1π2πn=p11π1p1nπnpn1π1pnnπn=p11π1pn1π1p1nπnpnnπn=Hπ1π2πn

因为 H T H = Q t Q = I H^TH=Q^tQ=I HTH=QtQ=I,从而有

Q T H [ π 1 π 2 ⋮ π n ] = [ p 11 2 p 12 p 21 ⋯ p 1 n p n 1 p 21 p 12 p 22 2 ⋯ p 2 n p n 2 ⋮ ⋮ ⋮ p n 1 p 1 n p n 2 p 2 n ⋯ p n n 2 ] [ π 1 π 2 ⋮ π n ] = [ π 1 π 2 ⋮ π n ] Q^TH \begin{bmatrix} \pi_1 \\ \pi_2 \\ \vdots \\ \pi_n \end{bmatrix} = \begin{bmatrix} p_{11}^2 & p_{12}p_{21} & \cdots & p_{1n}p_{n1} \\ p_{21}p_{12} & p_{22}^2 &\cdots & p_{2n}p_{n2}\\ \vdots & \vdots & & \vdots\\ p_{n1}p_{1n} & p_{n2}p_{2n} & \cdots & p_{nn}^2 \end{bmatrix} \begin{bmatrix} \pi_1 \\ \pi_2 \\ \vdots \\ \pi_n \end{bmatrix} =\begin{bmatrix} \pi_1 \\ \pi_2 \\ \vdots \\ \pi_n \end{bmatrix} QTHπ1π2πn=p112p21p12pn1p1np12p21p222pn2p2np1npn1p2npn2pnn2π1π2πn=π1π2πn

令矩阵 M = Q T H M=Q^TH M=QTH,则M是实对称的,可以相似对角化成

M = U − 1 Λ U M=U^{-1}\Lambda U M=U1ΛU

其中 Λ \Lambda Λ是一个对角矩阵,对角元为 M M M的特征值且至少有一个为1,又因为

Λ U π = U π \Lambda U\pi=U\pi ΛUπ=Uπ

所以 Λ = I \Lambda=I Λ=I,即矩阵 M M M的所有特征值都为1。根据特征值的计算方法得
∣ M − λ I ∣ = ( λ − 1 ) n |M-\lambda I|=(\lambda-1)^n MλI=(λ1)n
考察一个简单的情况,当 n = 2 n=2 n=2时,有
∣ M − λ I ∣ = λ 2 − ( p 11 2 + p 22 2 ) λ + ( p 11 2 p 22 2 − p 12 2 p 21 2 ) = λ 2 − 2 λ + 1 |M-\lambda I| =\lambda^2-(p_{11}^2+p_{22}^2)\lambda +(p_{11}^2p_{22}^2-p_{12}^2p_{21}^2)=\lambda^2-2\lambda+1 MλI=λ2(p112+p222)λ+(p112p222p122p212)=λ22λ+1
从而有
P = [ 1 0 0 1 ] P=\begin{bmatrix} 1 & 0 \\ 0 & 1 \\ \end{bmatrix} P=[1001]

显然它既是可逆的,又是可约的,是原命题的一个反例。

习题19.7

假设进行伯努利实验,后验概率为 P ( θ ∣ y ) P(\theta |y) P(θy),其中变量 y ∈ { 0 , 1 } y \in \{0,1\} y{0,1}表示实验可能的结果,变量 θ \theta θ表示结果为1的概率。假设先验概率 P ( θ ) P(\theta) P(θ)遵循Beta分布 B ( α , β ) B(\alpha, \beta) B(α,β),其中 α = 1 , β = 1 \alpha=1,\beta=1 α=1,β=1。似然函数 P ( y ∣ θ ) P(y|\theta) P(yθ)遵循二项分布 B i n ( n , k , θ ) Bin(n,k,\theta) Bin(n,k,θ),其中 n = 10 , k = 4 n=10,k=4 n=10,k=4,即实验进行10次其中结果为1的次数为4。试用Metropolis-Hastings算法求后验概率分布 P ( θ ∣ y ) ∝ P ( θ ) P ( y ∣ θ ) P(\theta|y) \propto P(\theta)P(y|\theta) P(θy)P(θ)P(yθ)的均值和方差。

∵ \because P ( θ ) = B ( 1 , 1 ) = 1 P(\theta)= B(1,1) = 1 P(θ)=B(1,1)=1 θ ∈ ( 0 , 1 ) \theta \in (0,1) θ(0,1) B i n ( 10 , 4 , θ ) = 210 θ 4 ( 1 − θ ) 6 Bin(10,4,\theta) = 210 \theta^4(1-\theta)^6 Bin(10,4,θ)=210θ4(1θ)6

∴ \therefore 根据算法19.2,可以编写代码如下

import numpy as np
def accept(p):
    return lambda x,xp: min(1,p(xp)/p(x))

def p(x):
    return 210 * pow(x,4) * pow(1-x,6)

def main(m,n):
    alpha = accept(p)
    X = [0.5]
    for i in range(1,n+1):
        x = X[i-1]
        xp = np.random.uniform(0,1)
        u = np.random.uniform(0,1)
        if u <= alpha(x, xp):
            X.append(xp)
        else:
            X.append(x)
    stable = np.array(X[m:-1])
    return np.mean(stable), np.var(stable)

if __name__ == '__main__':
    fmn, var = main(1000,1500)
    print(str(fmn) + "\n" + str(var))

运行结果显示均值为 0.4199566270481994 0.4199566270481994 0.4199566270481994,方差为 0.015727345334172083 0.015727345334172083 0.015727345334172083

  • 21
    点赞
  • 203
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
### 回答1: Python学习笔记|字符串与正则表达式练习题答案 1. 练习题1: 题目:给定一个字符串s,找出其中的连续的最长的数字串。 答案:可以通过正则表达式来匹配数字串,然后使用max函数找出最长的。 代码示例: import re def find_longest_num_str(s): num_str_list = re.findall('\d+', s) longest_str = max(num_str_list, key=len) return longest_str s = "ab1234c56789def" print(find_longest_num_str(s)) 输出:56789 2. 练习题2: 题目:给定一个字符串s,将其中的每个空格替换为"%20"。 答案:可以通过正则表达式的sub函数来实现替换。 代码示例: import re def replace_space(s): new_s = re.sub(' ', '%20', s) return new_s s = "Hello World" print(replace_space(s)) 输出:Hello%20World 3. 练习题3: 题目:给定一个字符串s,判断它是否为回文字符串。 答案:可以使用切片操作将字符串反转,然后与原字符串进行比较。 代码示例: def is_palindrome(s): return s == s[::-1] s = "abcba" print(is_palindrome(s)) 输出:True ### 回答2: 以下是关于字符串和正则表达式练习题答案: 1. 给定一个字符串s,编写一个函数,返回该字符串的反转字符串。 def reverse_string(s): return s[::-1] 2. 给定一个字符串s,编写一个函数,返回是否是回文字符串。 def is_palindrome(s): return s == s[::-1] 3. 给定一个字符串s和一个字符c,编写一个函数,返回字符串s中字符c的出现次数。 def count_char(s, c): return s.count(c) 4. 给定一个字符串s,编写一个函数,返回字符串s中的所有单词列表。 def split_words(s): return s.split() 5. 给定一个字符串s,编写一个函数,返回字符串s中的所有数字列表。 import re def extract_numbers(s): return re.findall(r'\d+', s) 这只是一些可能的答案,其中的解决方法可以有很多种。每个问题都有不同的解决方案,具体取决于个人的编程风格和需求。希望这些答案能够帮助你理解和学习Python中的字符串和正则表达式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值