机器学习 [白板推导](三)[线性分类]
4. 线性分类
4.1. 线性分类的典型模型
- 硬分类:输出结果只有0或1这种离散结果;
- 感知机
- 线性判别分析 Fisher
- 软分类:会输出0-1之间的值作为各个类别的概率;
- 概率生成模型:高斯判别分析GDA、朴素贝叶斯,主要建模的是 p ( x ⃗ , y ) p(\vec{x},y) p(x,y)
- 概率判别模型:逻辑回归,主要建模的是 p ( y ∣ x ⃗ ) p(y|\vec{x}) p(y∣x)
4.2. 感知机
4.2.1. 基本模型
模型:
f ( x ⃗ ^ ) = sign ( x ⃗ ^ T W ) , sign ( a ) = { 1 , a > 0 0 , a = 0 − 1 , a < 0 . (4.1) \begin{aligned} f(\hat{\vec{x}})=\text{sign}(\hat{\vec{x}}^TW),\\ \text{sign}(a)=\left\{\begin{matrix}1,&a>0\\0,&a=0\\-1,&a<0\end{matrix}.\right.\end{aligned}\tag{4.1} f(x^)=sign(x^TW),sign(a)=⎩ ⎨ ⎧1,0,−1,a>0a=0a<0.(4.1)
思想:错误驱动,先随机初始化一个 W W W,研究错误分类的样本来调整。
策略:使用错分类样本计算损失函数:
L ( W ) = ∑ x ⃗ ^ i ∈ D − y i ⋅ x ⃗ ^ i T W D = { x ⃗ ^ i } f ( x ⃗ ^ i ) ≠ y i . (4.2) \begin{aligned} \mathcal{L}(W)=\sum_{\hat{\vec{x}}_i\in D}-y_i\cdot \hat{\vec{x}}_i^TW\\ D=\{\hat{\vec{x}}_i\}_{f(\hat{\vec{x}}_i)\neq y_i}. \end{aligned}\tag{4.2} L(W)=x^i∈D∑−yi⋅x^iTWD={x^i}f(x^i)=yi.(4.2)
4.3. 线性判别分析 Fisher
4.3.1. 问题定义
对于一个二分类问题,将样本分为 X c 1 = { x ⃗ ^ i ∣ y i = + 1 } X_{c_1}=\left \{ \hat{\vec{x}}_i|y_i=+1 \right \} Xc1={x^i∣yi=+1} 和 X c 2 = { x ⃗ ^ i ∣ y i = − 1 } X_{c_2}=\left \{ \hat{\vec{x}}_i|y_i=-1 \right \} Xc2={x^i∣yi=−1},这两组的样本数分别为 N 1 N_1 N1 和 N 2 N_2 N2, N 1 + N 2 = N N_1+N_2=N N1+N2=N.
寻找一个投影超平面 W W W,使所有样本点在这个平面的投影可以做到类内间距小,类间间距大。
4.3.2. 过程推导
样本 x ⃗ ^ i \hat{\vec{x}}_i x^i 在超平面 W W W 上的投影可以表示为 z = x ⃗ ^ T ⋅ W z=\hat{\vec{x}}^T\cdot W z=x^T⋅W,则对其求均值和方差:
z ˉ = 1 N ∑ i = 1 N z i = 1 N ∑ i = 1 N x ⃗ ^ i T ⋅ W S z = 1 N ∑ i = 1 N ( z i − z ˉ ) 2 = 1 N ∑ i = 1 N ( x ⃗ ^ i T ⋅ W − z ˉ ) 2 . (4.3) \begin{aligned} \bar{z}&=\frac{1}{N}\sum_{i=1}^Nz_i=\frac{1}{N}\sum_{i=1}^N\hat{\vec{x}}_i^T\cdot W\\ S_z&=\frac{1}{N}\sum_{i=1}^N(z_i-\bar{z})^2=\frac{1}{N}\sum_{i=1}^N(\hat{\vec{x}}_i^T\cdot W-\bar{z})^2. \end{aligned}\tag{4.3} zˉSz=N1i=1∑Nzi=N1i=1∑Nx^iT⋅W=N1i=1∑N(zi−zˉ)2=N1i=1∑N(x^iT⋅W−zˉ)2.(4.3)
基于上式分别对两类样本计算均值 z ˉ 1 \bar{z}_1 zˉ1 和 z ˉ 2 \bar{z}_2 zˉ2,以及方差 S z 1 S_{z_1} Sz1 和 S z 2 S_{z_2} Sz2. 为了尽可能类内间距小,类间间距大,将目标函数定义为
J ( W ) = ( z ˉ 1 − z ˉ 2 ) 2 S z 1 + S z 2 , (4.4) \mathcal{J}(W)=\frac{(\bar{z}_1-\bar{z}_2)^2}{S_{z_1}+S_{z_2}},\tag{4.4} J(W)=Sz1+Sz2(zˉ1−zˉ2)2,(4.4)
则模型转为优化问题:
W = arg max W J ( W ) , (4.5) W=\argmax_W\mathcal{J}(W),\tag{4.5} W=WargmaxJ(W),(4.5)
对目标函数进行化简:
( z ˉ 1 − z ˉ 2 ) 2 = ( 1 N 1 ∑ i = 1 N 1 x ⃗ ^ i T ⋅ W − 1 N 2 ∑ i = 1 N 2 x ⃗ ^ i T ⋅ W ) 2 = [ ( x ⃗ ˉ C 1 − x ⃗ ˉ C 2 ) T W ] 2 = W T ( x ⃗ ˉ C 1 − x ⃗ ˉ C 2 ) ( x ⃗ ˉ C 1 − x ⃗ ˉ C 2 ) T W (4.6) \begin{aligned} (\bar{z}_1-\bar{z}_2)^2&=(\frac{1}{N_1}\sum_{i=1}^{N_1}\hat{\vec{x}}_i^T\cdot W-\frac{1}{N_2}\sum_{i=1}^{N_2}\hat{\vec{x}}_i^T\cdot W)^2\\ &=[(\bar{\vec{x}}_{C_1}-\bar{\vec{x}}_{C_2})^TW]^2\\ &=W^T(\bar{\vec{x}}_{C_1}-\bar{\vec{x}}_{C_2})(\bar{\vec{x}}_{C_1}-\bar{\vec{x}}_{C_2})^TW \end{aligned}\tag{4.6} (zˉ1−zˉ2)2=(N11i=1∑N1x^iT⋅W−N21i=1∑N2x^iT⋅W)2=[(xˉC1−xˉC2)TW]2=WT(xˉC1−xˉC2)(xˉC1−xˉC2)TW(4.6)
S z 1 = 1 N 1 ∑ i = 1 N 1 ( x ⃗ ^ i T ⋅ W − z ˉ 1 ) 2 = 1 N 1 ∑ i = 1 N 1 W T ( x ⃗ i − x ⃗ ˉ C 1 ) ( x ⃗ i − x ⃗ ˉ C 1 ) T W = W T [ 1 N 1 ∑ i = 1 N 1 ( x ⃗ i − x ⃗ ˉ C 1 ) ( x ⃗ i − x ⃗ ˉ C 1 ) T ] W = W T S C 1 W , (4.7) \begin{aligned}S_{z_1}&=\frac{1}{N_1}\sum_{i=1}^{N_1}(\hat{\vec{x}}_i^T\cdot W-\bar{z}_1)^2\\&=\frac{1}{N_1}\sum_{i=1}^{N_1}W^T(\vec{x}_i-\bar{\vec{x}}_{C_1})(\vec{x}_i-\bar{\vec{x}}_{C_1})^TW\\ & =W^T\left [\frac{1}{N_1}\sum_{i=1}^{N_1}(\vec{x}_i-\bar{\vec{x}}_{C_1})(\vec{x}_i-\bar{\vec{x}}_{C_1})^T \right ]W\\ &=W^TS_{C_1}W,\end{aligned}\tag{4.7} Sz1=N11i=1∑N1(x^iT⋅W−zˉ1)2=N11i=1∑N1WT(xi−xˉC1)(xi−xˉC1)TW=WT[N11i=1∑N1(xi−xˉC1)(xi−xˉC1)T]W=WTSC1W,(4.7)
同理可得 S z 2 = W T S C 2 W S_{z_2}=W^TS_{C_2}W Sz2=WTSC2W. 所以目标函数化为
J ( W ) = ( z ˉ 1 − z ˉ 2 ) 2 S z 1 + S z 2 = W T ( x ⃗ ˉ C 1 − x ⃗ ˉ C 2 ) ( x ⃗ ˉ C 1 − x ⃗ ˉ C 2 ) T W W T ( S C 1 + S C 2 ) W (4.8) \begin{aligned} \mathcal{J}(W)&=\frac{(\bar{z}_1-\bar{z}_2)^2}{S_{z_1}+S_{z_2}}\\&=\frac{W^T(\bar{\vec{x}}_{C_1}-\bar{\vec{x}}_{C_2})(\bar{\vec{x}}_{C_1}-\bar{\vec{x}}_{C_2})^TW}{W^T(S_{C_1}+S_{C_2})W} \end{aligned}\tag{4.8} J(W)=Sz1+Sz2(zˉ1−zˉ2)2=WT(SC1+SC2)WWT(xˉC1−xˉC2)(xˉC1−xˉC2)TW(4.8)
再定义总类内方差 S w S_w Sw 和总类间方差 S b S_b Sb:
S w = S C 1 + S C 2 S b = ( x ⃗ ˉ C 1 − x ⃗ ˉ C 2 ) ( x ⃗ ˉ C 1 − x ⃗ ˉ C 2 ) T (4.9) \begin{aligned} S_w&=S_{C_1}+S_{C_2}\\ S_b&=(\bar{\vec{x}}_{C_1}-\bar{\vec{x}}_{C_2})(\bar{\vec{x}}_{C_1}-\bar{\vec{x}}_{C_2})^T \end{aligned}\tag{4.9} SwSb=SC1+SC2=(xˉC1−xˉC2)(xˉC1−xˉC2)T(4.9)
因此目标函数被表示为:
J ( W ) = W T S b W W T S w W , (4.10) \mathcal{J}(W)=\frac{W^TS_bW}{W^TS_wW},\tag{4.10} J(W)=WTSwWWTSbW,(4.10)
对目标函数求导得:
∂ J ( W ) ∂ W = 2 S b W ( W T S w W ) − 1 + W T S b W ⋅ ( − 1 ) ⋅ ( W T S w W ) − 2 ⋅ 2 S w W , (4.11) \begin{aligned}\frac{\partial \mathcal{J}(W)}{\partial W}&=2S_bW(W^TS_wW)^{-1}+\\&W^TS_bW\cdot(-1)\cdot (W^TS_wW)^{-2}\cdot2S_wW,\end{aligned}\tag{4.11} ∂W∂J(W)=2SbW(WTSwW)−1+WTSbW⋅(−1)⋅(WTSwW)−2⋅2SwW,(4.11)
令其为0可得
W = W T S w W W T S b W S w − 1 S b W = W T S w W W T S b W S w − 1 ( x ⃗ ˉ C 1 − x ⃗ ˉ C 2 ) ( x ⃗ ˉ C 1 − x ⃗ ˉ C 2 ) T W = W T S w W ⋅ ( x ⃗ ˉ C 1 − x ⃗ ˉ C 2 ) T W W T S b W S w − 1 ( x ⃗ ˉ C 1 − x ⃗ ˉ C 2 ) , (4.12) \begin{aligned}W&=\frac{W^TS_wW}{W^TS_bW}S_w^{-1}S_bW\\&=\frac{W^TS_wW}{W^TS_bW}S_w^{-1}(\bar{\vec{x}}_{C_1}-\bar{\vec{x}}_{C_2})(\bar{\vec{x}}_{C_1}-\bar{\vec{x}}_{C_2})^TW\\&=\frac{W^TS_wW\cdot (\bar{\vec{x}}_{C_1}-\bar{\vec{x}}_{C_2})^TW}{W^TS_bW}S_w^{-1}(\bar{\vec{x}}_{C_1}-\bar{\vec{x}}_{C_2}) ,\end{aligned}\tag{4.12} W=WTSbWWTSwWSw−1SbW=WTSbWWTSwWSw−1(xˉC1−xˉC2)(xˉC1−xˉC2)TW=WTSbWWTSwW⋅(xˉC1−xˉC2)TWSw−1(xˉC1−xˉC2),(4.12)
因为 W W W 是一个单位向量,所以我们只关心其方向而不关心其长度,所以最终得到:
W ∝ S w − 1 ( x ⃗ ˉ C 1 − x ⃗ ˉ C 2 ) . (4.13) \begin{aligned}W\propto S_w^{-1}(\bar{\vec{x}}_{C_1}-\bar{\vec{x}}_{C_2}). \end{aligned}\tag{4.13} W∝Sw−1(xˉC1−xˉC2).(4.13)
4.4. 逻辑回归
4.4.1. 基本思想
在线性回归中引入非线性激活函数,使其可以将回归结果映射为概率值,作为类别的概率。因此将这个模型看做一个条件概率分布的建模,输入 x ⃗ ^ \hat{\vec{x}} x^,通过建模 p ( y ∣ x ⃗ ^ ) p(y|\hat{\vec{x}}) p(y∣x^),输出 y y y 的离散取值;
4.4.2. Sigmoid 激活函数
基本公式:
σ ( z ) = 1 1 + e − z (4.14) \sigma (z)=\frac{1}{1+e^{-z}}\tag{4.14} σ(z)=1+e−z1(4.14)
特殊取值:
- z → − ∞ z\rightarrow -\infty z→−∞ 时, lim σ ( z ) = 0 \lim \sigma (z)=0 limσ(z)=0;
- z = 0 z=0 z=0 时, σ ( z ) = 1 2 \sigma(z)=\frac{1}{2} σ(z)=21;
- z → ∞ z\rightarrow \infty z→∞ 时, lim σ ( z ) = 1 \lim \sigma (z)=1 limσ(z)=1.
函数图像:
4.4.3. 模型推导
根据条件概率建模的思想:
p 1 = p ( y = 1 ∣ x ⃗ ^ ) = σ ( x ⃗ ^ T W ) = 1 1 + e − x ⃗ ^ T W p 0 = p ( y = 0 ∣ x ⃗ ^ ) = 1 − σ ( x ⃗ ^ T W ) = e − x ⃗ ^ T W 1 + e − x ⃗ ^ T W , (4.15) \begin{aligned} p_1&=p(y=1|\hat{\vec{x}})=\sigma(\hat{\vec{x}}^TW)= \frac{1}{1+e^{-\hat{\vec{x}}^TW}}\\ p_0&=p(y=0|\hat{\vec{x}})=1-\sigma(\hat{\vec{x}}^TW)= \frac{e^{-\hat{\vec{x}}^TW}}{1+e^{-\hat{\vec{x}}^TW}}, \end{aligned}\tag{4.15} p1p0=p(y=1∣x^)=σ(x^TW)=1+e−x^TW1=p(y=0∣x^)=1−σ(x^TW)=1+e−x^TWe−x^TW,(4.15)
因此将整个模型写作
p ( y ∣ x ) = p 1 y ⋅ p 0 1 − y , (4.16) p(y|x)=p_1^y\cdot p_0^{1-y},\tag{4.16} p(y∣x)=p1y⋅p01−y,(4.16)
当 y = 0 y=0 y=0 时, p = p 0 p=p_0 p=p0,当 y = 1 y=1 y=1 时, p = p 1 p=p_1 p=p1.
用极大似然估计法求解模型:
W ^ = arg max W log p ( Y ∣ X ) = arg max W ∑ i = 1 N [ y i ⋅ log σ ( x ⃗ ^ T W ) + ( 1 − y i ) ⋅ log ( 1 − σ ( x ⃗ ^ T W ) ) ] , (4.17) \begin{aligned} \hat{W}&=\argmax_W\log p(Y|X)\\ &=\argmax_W\sum_{i=1}^N\left [ y_i\cdot \log\sigma(\hat{\vec{x}}^TW)+(1-y_i)\cdot \log(1-\sigma(\hat{\vec{x}}^TW)) \right ], \end{aligned}\tag{4.17} W^=Wargmaxlogp(Y∣X)=Wargmaxi=1∑N[yi⋅logσ(x^TW)+(1−yi)⋅log(1−σ(x^TW))],(4.17)
对其求梯度得
▽ grad W = ∑ i = 1 N [ y i ⋅ ( 1 − σ ( x ⃗ ^ T W ) ) ⋅ x ⃗ ^ − ( 1 − y i ) ⋅ σ ( x ⃗ ^ T W ) ⋅ x ⃗ ^ ] = ∑ i = 1 N [ y i − σ ( x ⃗ ^ T W ) ] ⋅ x ⃗ ^ , (4.18) \begin{aligned} \bigtriangledown \text{grad}_W &=\sum_{i=1}^N \left [y_i\cdot (1-\sigma(\hat{\vec{x}}^TW))\cdot\hat{\vec{x}} - (1-y_i)\cdot \sigma(\hat{\vec{x}}^TW)\cdot\hat{\vec{x}} \right ]\\ &=\sum_{i=1}^N \left [y_i-\sigma(\hat{\vec{x}}^TW) \right ]\cdot\hat{\vec{x}}, \end{aligned}\tag{4.18} ▽gradW=i=1∑N[yi⋅(1−σ(x^TW))⋅x^−(1−yi)⋅σ(x^TW)⋅x^]=i=1∑N[yi−σ(x^TW)]⋅x^,(4.18)
即可对模型进行迭代更新。
4.5. 高斯判别分析
4.5.1. 概率判别式模型与概率生成式模型的区别
概率判别式模型主要计算条件概率密度 p ( y ∣ x ⃗ ) p(y|\vec{x}) p(y∣x),取令该概率最大的 y y y 为分类结果;
概率生成式模型并不需要计算具体的 p ( y ∣ x ⃗ ) p(y|\vec{x}) p(y∣x) 值,而是直接思考 p ( y = 1 ∣ x ⃗ ) p(y=1|\vec{x}) p(y=1∣x) 和 p ( y = 0 ∣ x ⃗ ) p(y=0|\vec{x}) p(y=0∣x) 的结果谁更大,根据贝叶斯公式 p ( y ∣ x ⃗ ) = p ( x ⃗ ∣ y ) ⋅ p ( y ) p ( x ⃗ ) p(y|\vec{x}) = \frac{p(\vec{x}|y)\cdot p(y)}{p(\vec{x})} p(y∣x)=p(x)p(x∣y)⋅p(y),将目标函数变为:
y ^ = arg max y p ( y ∣ x ⃗ ) = arg max y p ( x ⃗ ∣ y ) ⋅ p ( y ) , (4.19) \begin{aligned} \hat{y}&=\argmax_y p(y|\vec{x})\\&=\argmax_y p(\vec{x}|y)\cdot p(y), \end{aligned}\tag{4.19} y^=yargmaxp(y∣x)=yargmaxp(x∣y)⋅p(y),(4.19)
其中若 p ( y = 1 ) = ϕ p(y=1)=\phi p(y=1)=ϕ,则 p ( y = 0 ) = 1 − ϕ p(y=0)=1-\phi p(y=0)=1−ϕ,可以将 p ( y ) p(y) p(y) 合并为 p ( y ) = ϕ y ⋅ ( 1 − ϕ ) 1 − y p(y)=\phi ^y\cdot (1-\phi)^{1-y} p(y)=ϕy⋅(1−ϕ)1−y.
4.5.2. 高斯概率假设
在高斯判别模型中,假设条件分布是遵从高斯概率分布的,即:
x ⃗ ∣ y = 0 ∼ N ( μ 1 , Σ ) x ⃗ ∣ y = 1 ∼ N ( μ 2 , Σ ) , (4.20) \begin{aligned} \vec{x}|y&=0\sim N(\mu_1, \Sigma)\\ \vec{x}|y&=1\sim N(\mu_2, \Sigma), \end{aligned}\tag{4.20} x∣yx∣y=0∼N(μ1,Σ)=1∼N(μ2,Σ),(4.20)
使用对数似然求解目标函数,可得
L ( θ ) = log ∏ i = 1 N p ( x ⃗ i , y i ) = ∑ i = 1 N [ log p ( x ⃗ i ∣ y i ) + log p ( y i ) ] = ∑ i = 1 N { y i ⋅ [ − 1 2 ( x ⃗ i − μ ⃗ 1 ) T Σ − 1 ( x ⃗ i − μ ⃗ 1 ) − p 2 log 2 π − − 1 2 log ∣ Σ ∣ ] + ( 1 − y i ) ⋅ [ − 1 2 ( x ⃗ i − μ ⃗ 2 ) T Σ − 1 ( x ⃗ i − μ ⃗ 2 ) − p 2 log 2 π − − 1 2 log ∣ Σ ∣ ] + y i ⋅ log ϕ + ( 1 − y i ) ⋅ log ( 1 − ϕ ) } . (4.21) \begin{aligned} \mathcal{L}(\theta)&=\log\prod_{i=1}^N p(\vec{x}_i,y_i)\\ &=\sum _{i=1}^N\left [\log p(\vec{x}_i|y_i)+\log p(y_i) \right ] \\ &=\sum _{i=1}^N\left \{ y_i\cdot \left [-\frac{1}{2}\left (\vec{x}_i-\vec{\mu}_1 \right )^T\Sigma^{-1} \left(\vec{x}_i-\vec{\mu}_1 \right )-\frac{p}{2}\log2\pi--\frac{1}{2}\log|\Sigma| \right ]+\right.\\ &\left (1-y_i \right )\cdot \left [-\frac{1}{2}\left (\vec{x}_i-\vec{\mu}_2 \right )^T\Sigma^{-1} \left(\vec{x}_i-\vec{\mu}_2 \right )-\frac{p}{2}\log2\pi--\frac{1}{2}\log|\Sigma| \right ] +\\&\left.y_i \cdot\log\phi + (1-y_i)\cdot\log(1-\phi)\right \} . \end{aligned}\tag{4.21} L(θ)=logi=1∏Np(xi,yi)=i=1∑N[logp(xi∣yi)+logp(yi)]=i=1∑N{yi⋅[−21(xi−μ1)TΣ−1(xi−μ1)−2plog2π−−21log∣Σ∣]+(1−yi)⋅[−21(xi−μ2)TΣ−1(xi−μ2)−2plog2π−−21log∣Σ∣]+yi⋅logϕ+(1−yi)⋅log(1−ϕ)}.(4.21)
4.5.3. 求解模型
首先求解参数 ϕ \phi ϕ,对目标函数求偏导:
∂ L ( θ ) ∂ ϕ = ∑ i = 1 N ( y i ϕ − 1 − y i 1 − ϕ ) , (4.22) \begin{aligned} \frac{\partial L(\theta)}{\partial \phi}=\sum_{i=1}^N\left (\frac{y_i}{\phi}-\frac{1-y_i}{1-\phi} \right ) , \end{aligned}\tag{4.22} ∂ϕ∂L(θ)=i=1∑N(ϕyi−1−ϕ1−yi),(4.22)
令其为0,求得
ϕ ^ = 1 N ∑ i = 1 N y i , (4.23) \hat{\phi}=\frac{1}{N}\sum_{i=1}^{N}y_i,\tag{4.23} ϕ^=N1i=1∑Nyi,(4.23)
也就是样本中各个标签出现的频率即为最优概率值。
再求解参数 μ ⃗ 1 \vec{\mu}_1 μ1,由于其他和 μ ⃗ 1 \vec{\mu}_1 μ1 无关的部分求偏导后都得0,所以从目标函数中单独取出和相关的部分,即
μ ⃗ ^ 1 = arg max μ ⃗ 1 ∑ i = 1 N y i ⋅ [ − 1 2 ( x ⃗ i − μ ⃗ 1 ) T Σ − 1 ( x ⃗ i − μ ⃗ 1 ) ] = arg max μ ⃗ 1 ∑ x i ⃗ ∈ C 1 [ − 1 2 ( x ⃗ i − μ ⃗ 1 ) T Σ − 1 ( x ⃗ i − μ ⃗ 1 ) ] , (4.22) \begin{aligned} \hat{\vec{\mu}}_1&=\argmax_{\vec{\mu}_1}\sum_{i=1}^Ny_i\cdot \left [-\frac{1}{2}\left (\vec{x}_i-\vec{\mu}_1 \right )^T\Sigma^{-1} \left(\vec{x}_i-\vec{\mu}_1 \right ) \right ]\\ &=\argmax_{\vec{\mu}_1}\sum_{\vec{x_i}\in C_1}\left [-\frac{1}{2}\left (\vec{x}_i-\vec{\mu}_1 \right )^T\Sigma^{-1} \left(\vec{x}_i-\vec{\mu}_1 \right ) \right ], \end{aligned}\tag{4.22} μ^1=μ1argmaxi=1∑Nyi⋅[−21(xi−μ1)TΣ−1(xi−μ1)]=μ1argmaxxi∈C1∑[−21(xi−μ1)TΣ−1(xi−μ1)],(4.22)
其中 C 1 = { x ⃗ i } y i = 1 C_1=\left \{ \vec{x}_i\right \}_{y_i=1} C1={xi}yi=1,因此求解方法等同于高维高斯分布的极大似然估计(见另一篇笔记 机器学习[白板推导](一) 第2.2.2.节),结果为
μ ⃗ ^ 1 = ∑ i = 1 N y i ⋅ x ⃗ i N 1 = ∑ x ⃗ i ∈ C 1 x ⃗ i N 1 μ ⃗ ^ 2 = ∑ i = 1 N ( 1 − y i ) ⋅ x ⃗ i N 2 = ∑ x ⃗ i ∈ C 2 x ⃗ i N 2 , (4.23) \begin{aligned} \hat{\vec{\mu}}_1&=\frac{\sum_{i=1}^Ny_i\cdot \vec{x}_i}{N_1}=\frac{\sum_{\vec{x}_i\in C_1}\vec{x}_i}{N_1}\\ \hat{\vec{\mu}}_2&=\frac{\sum_{i=1}^N\left (1-y_i \right )\cdot \vec{x}_i}{N_2}=\frac{\sum_{\vec{x}_i\in C_2}\vec{x}_i}{N_2}, \end{aligned}\tag{4.23} μ^1μ^2=N1∑i=1Nyi⋅xi=N1∑xi∈C1xi=N2∑i=1N(1−yi)⋅xi=N2∑xi∈C2xi,(4.23)
最后求 Σ \Sigma Σ,同样取出目标函数中和其相关的部分,得:
Σ ^ = arg max Σ ∑ x ⃗ i ∈ C 1 [ − 1 2 ( x ⃗ i − μ ⃗ 1 ) T Σ − 1 ( x ⃗ i − μ ⃗ 1 ) ] + ∑ x ⃗ i ∈ C 2 [ − 1 2 ( x ⃗ i − μ ⃗ 2 ) T Σ − 1 ( x ⃗ i − μ ⃗ 2 ) ] − N 2 log ∣ Σ ∣ , (4.24) \begin{aligned} \hat{\Sigma}=&\argmax_{\Sigma}\sum_{\vec{x}_i\in C_1}\left [-\frac{1}{2}\left (\vec{x}_i-\vec{\mu}_1 \right )^T\Sigma^{-1} \left(\vec{x}_i-\vec{\mu}_1 \right ) \right ]\\ &+\sum_{\vec{x}_i\in C_2}\left [-\frac{1}{2}\left (\vec{x}_i-\vec{\mu}_2 \right )^T\Sigma^{-1} \left(\vec{x}_i-\vec{\mu}_2 \right ) \right ] - \frac{N}{2}\log |\Sigma| , \end{aligned}\tag{4.24} Σ^=Σargmaxxi∈C1∑[−21(xi−μ1)TΣ−1(xi−μ1)]+xi∈C2∑[−21(xi−μ2)TΣ−1(xi−μ2)]−2Nlog∣Σ∣,(4.24)
对其求偏导得
d L ( θ ) d Σ = − N 2 Σ − 1 + 1 2 ∑ x ⃗ i ∈ C 1 Σ − 1 ( x ⃗ i − μ ⃗ 1 ) ( x ⃗ i − μ ⃗ 1 ) T Σ − 1 + 1 2 ∑ x ⃗ i ∈ C 2 Σ − 1 ( x ⃗ i − μ ⃗ 2 ) ( x ⃗ i − μ ⃗ 2 ) T Σ − 1 , (4.25) \begin{aligned} \frac{d\mathcal{L}(\theta)}{d\Sigma} &=-\frac{N}{2}\Sigma ^{-1}+\frac{1}{2}\sum_{\vec{x}_i\in C_1}\Sigma^{-1}(\vec{x}_i-\vec{\mu}_1)(\vec{x}_i-\vec{\mu}_1)^T\Sigma^{-1}\\ &+\frac{1}{2}\sum_{\vec{x}_i\in C_2}\Sigma^{-1}(\vec{x}_i-\vec{\mu}_2)(\vec{x}_i-\vec{\mu}_2)^T\Sigma^{-1} , \end{aligned}\tag{4.25} dΣdL(θ)=−2NΣ−1+21xi∈C1∑Σ−1(xi−μ1)(xi−μ1)TΣ−1+21xi∈C2∑Σ−1(xi−μ2)(xi−μ2)TΣ−1,(4.25)
令其为0得
Σ ^ = 1 N [ ∑ x ⃗ i ∈ C 1 ( x ⃗ i − μ ⃗ 1 ) ( x ⃗ i − μ ⃗ 1 ) T + ∑ x ⃗ i ∈ C 2 ( x ⃗ i − μ ⃗ 2 ) ( x ⃗ i − μ ⃗ 2 ) T ] = N 1 ⋅ S 1 + N 2 ⋅ S 2 N , (4.26) \begin{aligned} \hat{\Sigma} &=\frac{1}{N}\left [\sum_{\vec{x}_i\in C_1}(\vec{x}_i-\vec{\mu}_1)(\vec{x}_i-\vec{\mu}_1)^T+\sum_{\vec{x}_i\in C_2}(\vec{x}_i-\vec{\mu}_2)(\vec{x}_i-\vec{\mu}_2)^T \right ]\\ &=\frac{N_1\cdot S_1+N_2\cdot S_2}{N} , \end{aligned}\tag{4.26} Σ^=N1 xi∈C1∑(xi−μ1)(xi−μ1)T+xi∈C2∑(xi−μ2)(xi−μ2)T =NN1⋅S1+N2⋅S2,(4.26)
其中 S 1 S_1 S1 和 S 2 S_2 S2 分别为两个类内样本方差。
4.6. 朴素贝叶斯 (Naive Bayes Classifier)
4.6.1. 基本思想
所有朴素贝叶斯家族的算法都是基于朴素贝叶斯假设,又叫条件随机场假设,即假设各个特征之间相互独立。朴素贝叶斯模型是最简单的概率图模型,模型方法和高斯判别分析较为接近,这里不做重复。
相关文章:
机器学习 [白板推导](三)[线性分类]
4. 线性分类 4.1. 线性分类的典型模型 硬分类:输出结果只有0或1这种离散结果; 感知机线性判别分析 Fisher 软分类:会输出0-1之间的值作为各个类别的概率; 概率生成模型:高斯判别分析GDA、朴素贝叶斯,主要…...
c# 查找相似颜色算法
下是一个基于欧几里得距离的C#颜色相似度查找算法实现,包含详细注释和优化策略: using System; using System.Collections.Generic;public class ColorMatcher {// 颜色容器 - 使用字典存储颜色ID到RGB的映射private readonly Dictionary<int, byte[]> _colorDictiona…...
【数据分析】读取文件
3. 读取指定列 针对只需要读取数据中的某一列或多列的情况,pd.read_csv()函数提供了一个参数:usecols,将包含对应的columns的列表传入该参数即可。 上面,我们学习了读取 "payment" 和 "items_count" 这…...
全星研发管理APQP软件系统:助力汽车零部件企业高效研发,打造核心竞争力
在竞争日益激烈的汽车零部件行业,产品质量和研发效率直接影响企业的生存与发展。APQP(先期产品质量策划)作为行业的研发管理框架,能够有效提升产品质量和研发效率。然而,传统的APQP管理方式往往面临流程繁琐、信息分散…...
ccf3501密码
//密码 #include<iostream> #include<cstring> using namespace std; int panduan(char a[]){int lstrlen(a);int s0;int zm0,sz0,t0;int b[26]{0},c[26]{0},d[10]{0},e0,f0;while(s<l&&l>6){if(a[s]<Z&&a[s]>A){b[a[s]-A];zm;}if(a[s…...
kali之netdiscover
kali之netdiscover Netdiscover 是 Kali Linux 中一款用于网络发现和主机扫描的工具。它通过主动发送 ARP 请求来识别局域网中的活动主机,并显示它们的 IP 地址、MAC 地址和网卡厂商信息。Netdiscover 特别适用于局域网内的主机发现和网络映射。 1. Netdiscover 的…...
Leetcode-2272. Substring With Largest Variance [C++][Java]
目录 一、题目描述 二、解题思路 【C】 【Java】 Leetcode-2272. Substring With Largest Variancehttps://leetcode.com/problems/substring-with-largest-variance/description/2272. 最大波动的子字符串 - 力扣(LeetCode)2272. 最大波动的子字符串…...
【AI】技术人如何系统学习AI大模型应用开发?
从理论认知到全栈落地的完整指南 一、认知突破:理解大模型的技术本质(1-2周) 1.1 基础理论筑基 必学内容 大模型演进脉络:从Transformer到GPT-4的技术跃迁核心机制解析:注意力机制、位置编码、自监督学习关键能力边界…...
级联树SELECTTREE格式调整
步骤: 1、将全部列表设置成Map<Long, List<Obejct>> map的格式,方便查看每个父级对应的子列表,减少循环次数 2、对这个map进行递归,重新进行级联树的集合调整,将子集放置在对应的childs里面。 public Dyna…...
深入理解静态与动态代理设计模式:从理论到实践
静态代理设计模式 1.为什么需要代理设计模式? javaEE分层开发中,哪个层次对于我们来讲最重要 DAO---->Service---->Controller JavaEE分层中,最为重要的是Service层 Service层包含了那些代码 Service层核心功能(几十行 上百代码) 额外…...
NET进行CAD二次开发之二
本文主要针对CAD 二次开发入门与实践:以 C# 为例_c# cad-CSDN博客的一些实践问题做一些补充。 一、DLL介绍 在 AutoCAD 中,accoremgd.dll、acdbmgd.dll 和 acmgd.dll 都是与.NET API 相关的动态链接库,它们在使用.NET 语言(如 C#、VB.NET)进行 AutoCAD 二次开发时起着关…...
PyTorch 实现 Conditional DCGAN(条件深度卷积生成对抗网络)进行图像到图像转换的示例代码
以下是一个使用 PyTorch 实现 Conditional DCGAN(条件深度卷积生成对抗网络)进行图像到图像转换的示例代码。该代码包含训练和可视化部分,假设输入为图片和 4 个工艺参数,根据这些输入生成相应的图片。 1. 导入必要的库 import …...
c#:使用Modbus RTU协议
Modbus是一种广泛应用于工业自动化领域的通信协议,支持多种传输方式,如RTU、TCP等。其中,Modbus RTU是一种基于串行通信的协议,具有高效、可靠的特点。本文将详细介绍Modbus RTU协议的基本原理,并重点解析功能码0x03&a…...
设计模式(行为型)-备忘录模式
目录 定义 类图 角色 角色详解 (一)发起人角色(Originator) (二)备忘录角色(Memento) (三)备忘录管理员角色(Caretaker)…...
基于yolo11+flask打造一个精美登录界面和检测系统
这个是使用flask实现好看登录界面和友好的检测界面实现yolov11推理和展示,代码仅仅有2个html文件和一个python文件,真正做到了用最简洁的代码实现复杂功能。 测试通过环境: windows x64 anaconda3python3.8 ultralytics8.3.81 flask1.1.…...
【软考-架构】13.1、软件架构概述-构件技术
✨资料&文章更新✨ GitHub地址:https://github.com/tyronczt/system_architect 文章目录 ✨【重点】系统架构设计软件架构概述软件架构设计与生命周期构件🌟软件架构风格数据流风格调用/返回风格独立构件风格虚拟机风格仓库风格闭环控制风格C2体系结…...
RabbitMQ(补档)
RabbitMQ 是一个开源的消息队列软件(有时也被称为消息代理),它实现了高级消息队列协议(AMQP)。它主要用于应用程序之间,或者软件组件之间的消息通信。通过使用 RabbitMQ,可以实现异步的、可靠的…...
仿“东方甄选”直播商城小程序运营平台
在公域直播流量红利趋于饱和、流量成本大幅攀升的当下,私域直播为企业开辟了新的流量聚集和转化渠道,特别是对于那些希望在私域流量领域取得突破的品牌商家来说,直播场景以其独特的高频互动氛围,相比其他运营方式,展现…...
增量数据同步怎么做
增量数据同步怎么做?比如A系统里有母猪数据,新增了一头母猪,这条母猪数据要低延迟地同步到B系统。而不是A系统全表扫描一遍,然后全部同步到B系统。这种全扫描同步方法延迟非常大,尤其涉及到母猪大数据时,会…...
LeetCode 解题思路 18(Hot 100)
解题思路: 继承 LinkedHashMap: 内置双向链表,自动维护节点的插入顺序和访问顺序。LRU 淘汰逻辑: 覆盖 removeEldestEntry,当元素数量超过 capacity 时,移除最旧条目。removeEldestEntry 方法提供钩子&…...
基于Spring Boot的民宿租赁系统的设计与实现(LW+源码+讲解)
专注于大学生项目实战开发,讲解,毕业答疑辅导,欢迎高校老师/同行前辈交流合作✌。 技术范围:SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:…...
Go红队开发—web网络编程
文章目录 web网络编程Req快速请求 调试DevModeDebugLogTraceInfo瓶颈分析 控制请求与响应控制请求的字段内容控制调试打印的内容分开dump请求与响应部分请求体设置 作用范围级别设置参数查询URL 路径参数表单请求设置请求头设置 判断响应状态码解析数据SetSuccessResultgjson响…...
ollama不安装到c盘,安装到其他盘
ollama 安装包默认安装到c盘,安装程序并没有提供选择文件夹安装功能,本来c盘就快满了,下几个模型c盘都快爆了,如何将ollma安装到其他盘呢? ollama 默认安装位置 C:\Users\Admin\.ollama 是 Ollama 用来放大模型的文件夹…...
【HTML】一、基础标签
文章目录 1、开发环境准备2、html介绍3、html基本骨架4、标签的关系5、常用标签5.1 标题5.2 段落5.3 换行与水平线5.4 文本格式化标签5.5 图像标签5.6 超链接标签5.7 音频标签5.8 视频标签 6、路径7、网页制作 1、开发环境准备 在编辑器中写代码,在浏览器中看效果 …...
NPU、边缘计算与算力都是什么啊?
考虑到灵活性和经济性,公司购置一台边缘计算机,正在尝试将PCGPU的计算机视觉项目转到边缘计算机NPU上。本文简单整理了三个概念,并试图将其做个概要的说明。 一、算力:数字世界的“基础能源” 1.1 算力是什么 **算力(…...
spring声明式事务原理01-调用第1层@Transactional方法(事务访问入口)
文章目录 【README】【步骤1】UserAppService调用userSupport.saveNewUser()【步骤2】获取到TransactionInterceptor【步骤3】chain不为空,接着执行CglibMethodInvocation#proceed方法【补充】AopContext作用 【步骤4】CglibMethodInvocation#proceed方法【步骤5】调…...
[MoeCTF 2021]babyRCE
打开题目在线环境可以看到: <?php$rce $_GET[rce]; if (isset($rce)) {if (!preg_match("/cat|more|less|head|tac|tail|nl|od|vi|vim|sort|flag| |\;|[0-9]|\*|\|\%|\>|\<|\|\"/i", $rce)) {system($rce);}else {echo "hhhhhhacke…...
【leetcode hot 100 114】二叉树展开为链表
解法一:执行一次先序遍历,把元素放入list中,然后放回root中 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { th…...
嵌入式八股,为什么单片机中不使用malloc函数
1. 资源限制 单片机的内存资源通常非常有限,尤其是RAM的大小可能只有几KB到几十KB。在这种情况下,使用 malloc 进行动态内存分配可能会导致内存碎片化,使得程序在运行过程中逐渐耗尽可用内存。 2. 内存碎片问题 malloc 函数在分配和释放内…...
基于Python的selenium入门超详细教程(第1章)--WebDriver API篇
学习路线 自动化测试介绍及学习路线-CSDN博客 自动化测试之Web自动化(基于pythonselenium)-CSDN博客 参照博文:selenium入门超详细教程——网页自动化操作-CSDN博客 目录 前言 一、WebDriver API介绍 1.1 什么是WebDriver? 1.2 工…...
IIC通信协议详解与STM32实战指南
IIC通信协议详解与STM32实战指南 引言 IIC(Inter-Integrated Circuit)是Philips公司开发的串行通信协议,广泛应用于传感器、EEPROM、RTC等低速外设的连接。本文深入解析IIC协议原理,并提供基于STM32的GPIO模拟实现方案ÿ…...
【算法】数组、链表、栈、队列、树
⭐️个人主页:小羊 ⭐️所属专栏:Linux 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 持续更新中...数组、链表点击消除环形链表环形链表 II 栈、队列树 持续更新中… 数组、链表 点击消除 AB5 点击消除 这个题很容…...
vscode 配置golang开发环境
vscode 配置golang开发环境 在go1.20环境中需要指定工具的安装版本 go install golang.org/x/tools/goplsv0.15.3 go install github.com/go-delve/delve/cmd/dlvv1.21.0使用go Install/Update tool安装工具会报错 go版本太低, 而很多时候为了项目稳定或风险太高, 我们不太希…...
uniapp APP使用web-view内嵌 h5 解决打包发版浏览器有缓存需要清除的问题
1.在当前项目根节点下的public目录下的index.html里面写入禁止缓存的 meta <!-- 解决前端发版缓存问题 start --><meta http-equiv"pragma" content"no-cache"><meta http-equiv"cache-control" content"no-cache, no-stor…...
机器学习与深度学习中模型训练时常用的四种正则化技术L1,L2,L21,ElasticNet
L1正则化和L2正则化是机器学习中常用的两种正则化方法,用于防止模型过拟合。它们的区别主要体现在数学形式、作用机制和应用效果上。以下是详细对比: 1. 数学定义 L1正则化(也叫Lasso正则化): 在损失函数中加入权重参…...
LLM自动化评测
使用的数据集:ceval-exam import requests from datasets import load_dataset, concatenate_datasets import re from tqdm import tqdm import re, time, tiktoken, ollama from ollama import ChatResponse from ollama import Optionsdef llm(model, query, te…...
Android 英文文章选词
点击文章中的一个单词,获取它。 通过点击的坐标y来获取行数,通过x坐标获取字符偏移量,向前遍历匹配,向后遍历匹配,匹配不成功则跳出循环。截取开始位置和最后位置的字符串。 主要代码 public String getSelectText…...
56.HarmonyOS NEXT 登录模块开发教程(十):总结与展望
温馨提示:本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦! HarmonyOS NEXT 登录模块开发教程(十):总结与展望 文章目录 HarmonyOS NEXT 登录模块开发教程(十&a…...
【Go每日一练】猜数字游戏
👻创作者:丶重明 👻创作时间:2025年3月16日 👻擅长领域:运维 目录 1.😶🌫️题目:猜数字游戏2.😶🌫️代码开发3.😶🌫…...
论文分享:PL-ALF框架实现无人机低纹理环境自主飞行
在室内仓库、地下隧道等低纹理复杂场景中,无人机依赖视觉传感器进行自主飞行时,往往会遇到定位精度低、路径规划不稳定等难题。针对这一问题,重庆邮电大学计算机学院雷大江教授团队在IEEE Trans期刊上提出了一种新型自主飞行框架:…...
element-plus中Autocomplete自动补全输入框组件的使用
目录 1.基本使用 ①从官网复制如下代码 ②查看运行效果 ③代码解读 2.调用后端接口,动态获取建议数据 结语 1.基本使用 ①从官网复制如下代码 <template> <div><!-- 自动补全输入框 --><el-autocompletev-model"state":fetc…...
【医学影像 AI】大型语言模型生成 ROP 患者信息材料的能力
【医学影像 AI】大型语言模型生成 ROP 患者信息材料的能力 0. 论文简介0.1 基本信息0.2 摘要 1. 引言2. 材料与方法2.1 大语言模型的使用2.2 可读性标准2.3 统计分析 3. 结果3.1 Bezirci-Yılmaz可读性评分3.2 Ateşman可读性评分3.3 全面性评分3.4 准确性评分 4. 讨论4.1 可读…...
(性能测试)性能测试工具 2.jmeter的环境搭建 3jmeter元件和4使用实例 5jmeter元件和参数化
目录 性能测试工具 性能测试工具 jemeter环境搭建 jmeter的常用目录介绍 jmeter修改语言和主题--jmeter界面的汉化 jmeter元件 jmeter元件和组件的介绍 jmeter的作用域原则 jmeter的执行顺序 案例:执行顺序 jmeter使用案例 jmeter线程组的介绍 jmeter…...
Matlab 四分之一车体车辆半主动悬架鲁棒控制
1、内容简介 略 Matlab 173-四分之一车体车辆半主动悬架鲁棒控制 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...
Kafka可视化工具KafkaTool工具的使用
Kafka Tool工具 介绍 使用Kafka的小伙伴,有没有为无法直观地查看 Kafka 的 Topic 里的内容而发过愁呢?下面推荐给大家一款带有可视化页面的Kafka工具:Kafka Tool (目前最新版本是 3.0.2) 注意:以前叫Kafk…...
【Unity】在项目中使用VisualScripting
1. 在packagemanager添加插件 2. 在设置中进行初始化。 Edit > Project Settings > Visual Scripting Initialize Visual Scripting You must select Initialize Visual Scripting the first time you use Visual Scripting in a project. Initialize Visual Scripting …...
【Maven教程与实战案例】
文章目录 前言一、Maven是什么?二、Maven的安装与配置1. 安装前置条件2. 下载与配置 Maven3. 验证安装 三、Maven的核心概念1. POM.xml 文件2. 构建生命周期与插件机制 四、实战项目示例1. 项目目录结构2. 编写代码App.javaAppTest.java 3. 构建项目4. 运行项目 前言…...
Flask中使用with语句手动加载应用上下文
在 Flask 中,with app.app_context(): 手动加载应用上下文,使代码块可以访问 Flask 全局对象(如 current_app、g),即使代码不在请求中运行。 1. 为什么需要手动加载应用上下文? 在 Flask 中,某…...
ROS实践(五)机器人自动导航(robot_navigation)
目录 一、知识点 1. 定位 2. 路径规划 (1)全局路径规划 (2)局部路径规划 3. 避障 二、常用工具和传感器 三、相关功能包 1. move_base(决策规划) 2. amcl(定位) 3. costmap_2d(代价地图) 4. global_planner(全局规划器) 5. local_planner(局部规划器…...
【数学建模】层次分析法(AHP)详解及其应用
层次分析法(AHP)详解及其应用 引言 在现实生活和工作中,我们经常面临复杂的决策问题,这些问题通常涉及多个评价准则,且各准则之间可能存在相互影响。如何在这些复杂因素中做出合理的决策?层次分析法(Analytic Hierarchy Process…...