当前位置: 首页 > news >正文

机器学习 [白板推导](三)[线性分类]

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(yx )

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 ^iDyix ^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 ^iyi=+1} X c 2 = { x ⃗ ^ i ∣ y i = − 1 } X_{c_2}=\left \{ \hat{\vec{x}}_i|y_i=-1 \right \} Xc2={x ^iyi=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 ^TW,则对其求均值和方差:
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=1Nzi=N1i=1Nx ^iTW=N1i=1N(zizˉ)2=N1i=1N(x ^iTWzˉ)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ˉ1zˉ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ˉ1zˉ2)2=(N11i=1N1x ^iTWN21i=1N2x ^iTW)2=[(x ˉC1x ˉC2)TW]2=WT(x ˉC1x ˉC2)(x ˉC1x ˉ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=1N1(x ^iTWzˉ1)2=N11i=1N1WT(x ix ˉC1)(x ix ˉC1)TW=WT[N11i=1N1(x ix ˉC1)(x ix ˉ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ˉ1zˉ2)2=WT(SC1+SC2)WWT(x ˉC1x ˉC2)(x ˉC1x ˉ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 ˉC1x ˉC2)(x ˉC1x ˉ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} WJ(W)=2SbW(WTSwW)1+WTSbW(1)(WTSwW)22SwW,(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=WTSbWWTSwWSw1SbW=WTSbWWTSwWSw1(x ˉC1x ˉC2)(x ˉC1x ˉC2)TW=WTSbWWTSwW(x ˉC1x ˉC2)TWSw1(x ˉC1x ˉ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} WSw1(x ˉC1x ˉC2).(4.13)

4.4. 逻辑回归

4.4.1. 基本思想

  在线性回归中引入非线性激活函数,使其可以将回归结果映射为概率值,作为类别的概率。因此将这个模型看做一个条件概率分布的建模,输入 x ⃗ ^ \hat{\vec{x}} x ^,通过建模 p ( y ∣ x ⃗ ^ ) p(y|\hat{\vec{x}}) p(yx ^),输出 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+ez1(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+ex ^TW1=p(y=0∣x ^)=1σ(x ^TW)=1+ex ^TWex ^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(yx)=p1yp01y,(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(YX)=Wargmaxi=1N[yilogσ(x ^TW)+(1yi)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=1N[yi(1σ(x ^TW))x ^(1yi)σ(x ^TW)x ^]=i=1N[yiσ(x ^TW)]x ^,(4.18)

即可对模型进行迭代更新。

4.5. 高斯判别分析

4.5.1. 概率判别式模型与概率生成式模型的区别

  概率判别式模型主要计算条件概率密度 p ( y ∣ x ⃗ ) p(y|\vec{x}) p(yx ),取令该概率最大的 y y y 为分类结果;
  概率生成式模型并不需要计算具体的 p ( y ∣ x ⃗ ) p(y|\vec{x}) p(yx ) 值,而是直接思考 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(yx )=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(yx )=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ϕ)1y.

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=0N(μ1,Σ)=1N(μ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=1Np(x i,yi)=i=1N[logp(x iyi)+logp(yi)]=i=1N{yi[21(x iμ 1)TΣ1(x iμ 1)2plog2π21log∣Σ∣]+(1yi)[21(x iμ 2)TΣ1(x iμ 2)2plog2π21log∣Σ∣]+yilogϕ+(1yi)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=1N(ϕyi1ϕ1yi),(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=1Nyi,(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=1Nyi[21(x iμ 1)TΣ1(x iμ 1)]=μ 1argmaxxi C1[21(x iμ 1)TΣ1(x iμ 1)],(4.22)

其中 C 1 = { x ⃗ i } y i = 1 C_1=\left \{ \vec{x}_i\right \}_{y_i=1} C1={x i}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=N1i=1Nyix i=N1x iC1x i=N2i=1N(1yi)x i=N2x iC2x i,(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} Σ^=Σargmaxx iC1[21(x iμ 1)TΣ1(x iμ 1)]+x iC2[21(x iμ 2)TΣ1(x iμ 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+21x iC1Σ1(x iμ 1)(x iμ 1)TΣ1+21x iC2Σ1(x iμ 2)(x iμ 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 x iC1(x iμ 1)(x iμ 1)T+x iC2(x iμ 2)(x iμ 2)T =NN1S1+N2S2,(4.26)

其中 S 1 S_1 S1 S 2 S_2 S2 分别为两个类内样本方差。

4.6. 朴素贝叶斯 (Naive Bayes Classifier)

4.6.1. 基本思想

  所有朴素贝叶斯家族的算法都是基于朴素贝叶斯假设,又叫条件随机场假设,即假设各个特征之间相互独立。朴素贝叶斯模型是最简单的概率图模型,模型方法和高斯判别分析较为接近,这里不做重复。

相关文章:

机器学习 [白板推导](三)[线性分类]

4. 线性分类 4.1. 线性分类的典型模型 硬分类&#xff1a;输出结果只有0或1这种离散结果&#xff1b; 感知机线性判别分析 Fisher 软分类&#xff1a;会输出0-1之间的值作为各个类别的概率&#xff1b; 概率生成模型&#xff1a;高斯判别分析GDA、朴素贝叶斯&#xff0c;主要…...

c# 查找相似颜色算法

下是一个基于欧几里得距离的C#颜色相似度查找算法实现,包含详细注释和优化策略: using System; using System.Collections.Generic;public class ColorMatcher {// 颜色容器 - 使用字典存储颜色ID到RGB的映射private readonly Dictionary<int, byte[]> _colorDictiona…...

【数据分析】读取文件

3. 读取指定列 针对只需要读取数据中的某一列或多列的情况&#xff0c;pd.read_csv()函数提供了一个参数&#xff1a;usecols&#xff0c;将包含对应的columns的列表传入该参数即可。 上面&#xff0c;我们学习了读取 "payment" 和 "items_count" 这…...

全星研发管理APQP软件系统:助力汽车零部件企业高效研发,打造核心竞争力

在竞争日益激烈的汽车零部件行业&#xff0c;产品质量和研发效率直接影响企业的生存与发展。APQP&#xff08;先期产品质量策划&#xff09;作为行业的研发管理框架&#xff0c;能够有效提升产品质量和研发效率。然而&#xff0c;传统的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 请求来识别局域网中的活动主机&#xff0c;并显示它们的 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. 最大波动的子字符串 - 力扣&#xff08;LeetCode&#xff09;2272. 最大波动的子字符串…...

【AI】技术人如何系统学习AI大模型应用开发?

从理论认知到全栈落地的完整指南 一、认知突破&#xff1a;理解大模型的技术本质&#xff08;1-2周&#xff09; 1.1 基础理论筑基 必学内容 大模型演进脉络&#xff1a;从Transformer到GPT-4的技术跃迁核心机制解析&#xff1a;注意力机制、位置编码、自监督学习关键能力边界…...

级联树SELECTTREE格式调整

步骤&#xff1a; 1、将全部列表设置成Map<Long, List<Obejct>> map的格式&#xff0c;方便查看每个父级对应的子列表&#xff0c;减少循环次数 2、对这个map进行递归&#xff0c;重新进行级联树的集合调整&#xff0c;将子集放置在对应的childs里面。 public Dyna…...

深入理解静态与动态代理设计模式:从理论到实践

静态代理设计模式 1.为什么需要代理设计模式&#xff1f; javaEE分层开发中&#xff0c;哪个层次对于我们来讲最重要 DAO---->Service---->Controller JavaEE分层中&#xff0c;最为重要的是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&#xff08;条件深度卷积生成对抗网络&#xff09;进行图像到图像转换的示例代码。该代码包含训练和可视化部分&#xff0c;假设输入为图片和 4 个工艺参数&#xff0c;根据这些输入生成相应的图片。 1. 导入必要的库 import …...

c#:使用Modbus RTU协议

Modbus是一种广泛应用于工业自动化领域的通信协议&#xff0c;支持多种传输方式&#xff0c;如RTU、TCP等。其中&#xff0c;Modbus RTU是一种基于串行通信的协议&#xff0c;具有高效、可靠的特点。本文将详细介绍Modbus RTU协议的基本原理&#xff0c;并重点解析功能码0x03&a…...

设计模式(行为型)-备忘录模式

目录 定义 类图 角色 角色详解 &#xff08;一&#xff09;发起人角色&#xff08;Originator&#xff09;​ &#xff08;二&#xff09;备忘录角色&#xff08;Memento&#xff09;​ &#xff08;三&#xff09;备忘录管理员角色&#xff08;Caretaker&#xff09;​…...

基于yolo11+flask打造一个精美登录界面和检测系统

这个是使用flask实现好看登录界面和友好的检测界面实现yolov11推理和展示&#xff0c;代码仅仅有2个html文件和一个python文件&#xff0c;真正做到了用最简洁的代码实现复杂功能。 测试通过环境&#xff1a; windows x64 anaconda3python3.8 ultralytics8.3.81 flask1.1.…...

【软考-架构】13.1、软件架构概述-构件技术

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 ✨【重点】系统架构设计软件架构概述软件架构设计与生命周期构件&#x1f31f;软件架构风格数据流风格调用/返回风格独立构件风格虚拟机风格仓库风格闭环控制风格C2体系结…...

RabbitMQ(补档)

RabbitMQ 是一个开源的消息队列软件&#xff08;有时也被称为消息代理&#xff09;&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;。它主要用于应用程序之间&#xff0c;或者软件组件之间的消息通信。通过使用 RabbitMQ&#xff0c;可以实现异步的、可靠的…...

仿“东方甄选”直播商城小程序运营平台

在公域直播流量红利趋于饱和、流量成本大幅攀升的当下&#xff0c;私域直播为企业开辟了新的流量聚集和转化渠道&#xff0c;特别是对于那些希望在私域流量领域取得突破的品牌商家来说&#xff0c;直播场景以其独特的高频互动氛围&#xff0c;相比其他运营方式&#xff0c;展现…...

增量数据同步怎么做

增量数据同步怎么做&#xff1f;比如A系统里有母猪数据&#xff0c;新增了一头母猪&#xff0c;这条母猪数据要低延迟地同步到B系统。而不是A系统全表扫描一遍&#xff0c;然后全部同步到B系统。这种全扫描同步方法延迟非常大&#xff0c;尤其涉及到母猪大数据时&#xff0c;会…...

LeetCode 解题思路 18(Hot 100)

解题思路&#xff1a; 继承 LinkedHashMap&#xff1a; 内置双向链表&#xff0c;自动维护节点的插入顺序和访问顺序。LRU 淘汰逻辑&#xff1a; 覆盖 removeEldestEntry&#xff0c;当元素数量超过 capacity 时&#xff0c;移除最旧条目。removeEldestEntry 方法提供钩子&…...

基于Spring Boot的民宿租赁系统的设计与实现(LW+源码+讲解)

专注于大学生项目实战开发,讲解,毕业答疑辅导&#xff0c;欢迎高校老师/同行前辈交流合作✌。 技术范围&#xff1a;SpringBoot、Vue、SSM、HLMT、小程序、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容&#xff1a;…...

Go红队开发—web网络编程

文章目录 web网络编程Req快速请求 调试DevModeDebugLogTraceInfo瓶颈分析 控制请求与响应控制请求的字段内容控制调试打印的内容分开dump请求与响应部分请求体设置 作用范围级别设置参数查询URL 路径参数表单请求设置请求头设置 判断响应状态码解析数据SetSuccessResultgjson响…...

ollama不安装到c盘,安装到其他盘

ollama 安装包默认安装到c盘&#xff0c;安装程序并没有提供选择文件夹安装功能&#xff0c;本来c盘就快满了&#xff0c;下几个模型c盘都快爆了&#xff0c;如何将ollma安装到其他盘呢&#xff1f; 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、开发环境准备 在编辑器中写代码&#xff0c;在浏览器中看效果 …...

NPU、边缘计算与算力都是什么啊?

考虑到灵活性和经济性&#xff0c;公司购置一台边缘计算机&#xff0c;正在尝试将PCGPU的计算机视觉项目转到边缘计算机NPU上。本文简单整理了三个概念&#xff0c;并试图将其做个概要的说明。 一、算力&#xff1a;数字世界的“基础能源” 1.1 算力是什么 **算力&#xff08…...

spring声明式事务原理01-调用第1层@Transactional方法(事务访问入口)

文章目录 【README】【步骤1】UserAppService调用userSupport.saveNewUser()【步骤2】获取到TransactionInterceptor【步骤3】chain不为空&#xff0c;接着执行CglibMethodInvocation#proceed方法【补充】AopContext作用 【步骤4】CglibMethodInvocation#proceed方法【步骤5】调…...

[MoeCTF 2021]babyRCE

打开题目在线环境可以看到&#xff1a; <?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】二叉树展开为链表

解法一&#xff1a;执行一次先序遍历&#xff0c;把元素放入list中&#xff0c;然后放回root中 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* TreeNode() {}* TreeNode(int val) { th…...

嵌入式八股,为什么单片机中不使用malloc函数

1. 资源限制 单片机的内存资源通常非常有限&#xff0c;尤其是RAM的大小可能只有几KB到几十KB。在这种情况下&#xff0c;使用 malloc 进行动态内存分配可能会导致内存碎片化&#xff0c;使得程序在运行过程中逐渐耗尽可用内存。 2. 内存碎片问题 malloc 函数在分配和释放内…...

基于Python的selenium入门超详细教程(第1章)--WebDriver API篇

学习路线 自动化测试介绍及学习路线-CSDN博客 ​自动化测试之Web自动化&#xff08;基于pythonselenium&#xff09;-CSDN博客 参照博文&#xff1a;selenium入门超详细教程——网页自动化操作-CSDN博客 目录 前言 一、WebDriver API介绍 1.1 什么是WebDriver? 1.2 工…...

IIC通信协议详解与STM32实战指南

IIC通信协议详解与STM32实战指南 引言 IIC&#xff08;Inter-Integrated Circuit&#xff09;是Philips公司开发的串行通信协议&#xff0c;广泛应用于传感器、EEPROM、RTC等低速外设的连接。本文深入解析IIC协议原理&#xff0c;并提供基于STM32的GPIO模拟实现方案&#xff…...

【算法】数组、链表、栈、队列、树

⭐️个人主页&#xff1a;小羊 ⭐️所属专栏&#xff1a;Linux 很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~ 目录 持续更新中...数组、链表点击消除环形链表环形链表 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正则化是机器学习中常用的两种正则化方法&#xff0c;用于防止模型过拟合。它们的区别主要体现在数学形式、作用机制和应用效果上。以下是详细对比&#xff1a; 1. 数学定义 L1正则化&#xff08;也叫Lasso正则化&#xff09;&#xff1a; 在损失函数中加入权重参…...

LLM自动化评测

使用的数据集&#xff1a;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 英文文章选词

点击文章中的一个单词&#xff0c;获取它。 通过点击的坐标y来获取行数&#xff0c;通过x坐标获取字符偏移量&#xff0c;向前遍历匹配&#xff0c;向后遍历匹配&#xff0c;匹配不成功则跳出循环。截取开始位置和最后位置的字符串。 主要代码 public String getSelectText…...

56.HarmonyOS NEXT 登录模块开发教程(十):总结与展望

温馨提示&#xff1a;本篇博客的详细代码已发布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下载运行哦&#xff01; HarmonyOS NEXT 登录模块开发教程&#xff08;十&#xff09;&#xff1a;总结与展望 文章目录 HarmonyOS NEXT 登录模块开发教程&#xff08;十&a…...

【Go每日一练】猜数字游戏

&#x1f47b;创作者&#xff1a;丶重明 &#x1f47b;创作时间&#xff1a;2025年3月16日 &#x1f47b;擅长领域&#xff1a;运维 目录 1.&#x1f636;‍&#x1f32b;️题目&#xff1a;猜数字游戏2.&#x1f636;‍&#x1f32b;️代码开发3.&#x1f636;‍&#x1f32b;…...

论文分享:PL-ALF框架实现无人机低纹理环境自主飞行

在室内仓库、地下隧道等低纹理复杂场景中&#xff0c;无人机依赖视觉传感器进行自主飞行时&#xff0c;往往会遇到定位精度低、路径规划不稳定等难题。针对这一问题&#xff0c;重庆邮电大学计算机学院雷大江教授团队在IEEE Trans期刊上提出了一种新型自主飞行框架&#xff1a;…...

element-plus中Autocomplete自动补全输入框组件的使用

目录 1.基本使用 ①从官网复制如下代码 ②查看运行效果 ③代码解读 2.调用后端接口&#xff0c;动态获取建议数据 结语 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的执行顺序 案例&#xff1a;执行顺序 jmeter使用案例 jmeter线程组的介绍 jmeter…...

Matlab 四分之一车体车辆半主动悬架鲁棒控制

1、内容简介 略 Matlab 173-四分之一车体车辆半主动悬架鲁棒控制 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略...

Kafka可视化工具KafkaTool工具的使用

Kafka Tool工具 介绍 使用Kafka的小伙伴&#xff0c;有没有为无法直观地查看 Kafka 的 Topic 里的内容而发过愁呢&#xff1f;下面推荐给大家一款带有可视化页面的Kafka工具&#xff1a;Kafka Tool &#xff08;目前最新版本是 3.0.2&#xff09; 注意&#xff1a;以前叫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是什么&#xff1f;二、Maven的安装与配置1. 安装前置条件2. 下载与配置 Maven3. 验证安装 三、Maven的核心概念1. POM.xml 文件2. 构建生命周期与插件机制 四、实战项目示例1. 项目目录结构2. 编写代码App.javaAppTest.java 3. 构建项目4. 运行项目 前言…...

Flask中使用with语句手动加载应用上下文

在 Flask 中&#xff0c;with app.app_context(): 手动加载应用上下文&#xff0c;使代码块可以访问 Flask 全局对象&#xff08;如 current_app、g&#xff09;&#xff0c;即使代码不在请求中运行。 1. 为什么需要手动加载应用上下文&#xff1f; 在 Flask 中&#xff0c;某…...

ROS实践(五)机器人自动导航(robot_navigation)

目录 一、知识点 1. 定位 2. 路径规划 (1)全局路径规划 (2)局部路径规划 3. 避障 二、常用工具和传感器 三、相关功能包 1. move_base(决策规划) 2. amcl(定位) 3. costmap_2d(代价地图) 4. global_planner(全局规划器) 5. local_planner(局部规划器…...

【数学建模】层次分析法(AHP)详解及其应用

层次分析法(AHP)详解及其应用 引言 在现实生活和工作中&#xff0c;我们经常面临复杂的决策问题&#xff0c;这些问题通常涉及多个评价准则&#xff0c;且各准则之间可能存在相互影响。如何在这些复杂因素中做出合理的决策&#xff1f;层次分析法(Analytic Hierarchy Process…...