$$R(c|\boldsymbol x)=1−P(c|\boldsymbol x)$$ [推导]:由式7.1和式7.4可得: $$R(c_i|\boldsymbol x)=1*P(c_1|\boldsymbol x)+1*P(c_2|\boldsymbol x)+...+0*P(c_i|\boldsymbol x)+...+1*P(cN|\boldsymbol x)$$ 又$\sum{j=1}^{N}P(c_j|\boldsymbol x)=1$,则: $$R(c_i|\boldsymbol x)=1-P(c_i|\boldsymbol x)$$ 此即为式7.5
$$P(c|\boldsymbol x)=\cfrac{P(c)P(\boldsymbol x|c)}{P(\boldsymbol x)}$$ [解析]:最小化误差,也就是最大化P(c|x),但由于P(c|x)属于后验概率无法直接计算,由贝叶斯公式可计算出: $$P(c|\boldsymbol x)=\cfrac{P(c)P(\boldsymbol x|c)}{P(\boldsymbol x)}$$ $P(\boldsymbol x)$可以省略,因为我们比较的时候$P(\boldsymbol x)$一定是相同的,所以我们就是用历史数据计算出$P(c)$和$P(\boldsymbol x|c)$。
当样本属性独依赖时,也就是除了c多加一个依赖条件,式子变成了 $$∏_{i=1}^n P(x_i|c,p_i)$$ $p_i$是$x_i$所依赖的属性
当样本属性相关性未知时,我们采用贝叶斯网的算法,对相关性进行评估,以找出一个最佳的分类模型。
当遇到不完整的训练样本时,可通过使用EM算法对模型参数进行评估来解决。
$$P{(\boldsymbol x{i}|c)}\in[0,1]$$ $$p{(\boldsymbol x{i}| c)}$$ [解析]:式(7.17)所得$P{(\boldsymbol x{i}|c)}\in[0,1]$为条件概率,但式(7.18)所得$p{(\boldsymbol x{i}| c)}$为条件概率密度而非概率,其值并不在局限于区间[0,1]之内。
$$P(c|\boldsymbol x)\propto{\sum{i=1 \atop |D{x{i}}|\geq m'}^{d}}P(c,x{i})\prod_{j=1}^{d}P(x_j|c,xi)$$ [推导]: $$\begin{aligned} P(c|\boldsymbol x)&=\cfrac{P(\boldsymbol x,c)}{P(\boldsymbol x)}\ &=\cfrac{P\left(x{1}, x{2}, \ldots, x{d}, c\right)}{P(\boldsymbol x)}\ &=\cfrac{P\left(x{1}, x{2}, \ldots, x{d} | c\right) P(c)}{P(\boldsymbol x)} \ &=\cfrac{P\left(x{1}, \ldots, x{i-1}, x{i+1}, \ldots, x{d} | c, x{i}\right) P\left(c, x{i}\right)}{P(\boldsymbol x)} \ \end{aligned}$$ $$\begin{aligned} P(c|\boldsymbol x)&\propto P(c,x{i})P(x{1},…,x{i-1},x{i+1},…,x{d}|c,x{i}) \ &=P(c,x{i})\prod _{j=1}^{d}P(x_j|c,xi) \end{aligned}$$ $$P(c|\boldsymbol x)\propto\sum\limits{i=1 \atop |D{x{i}}|\geq m'}^{d}P(c{i}|\boldsymbol x{i})\prod{j=1}^{d}P(c{i}|\boldsymbol x{i})$$ 此即为式7.23,由于式(7.24)和式(7.25)的使用到了$|D{c,x{i}}|$与$|D{c,x{i},x{j}}|$,若$|D{x{i}}|$集合中样本数量过少,则$|D{c,x{i}}|$与$|D{c,x{i},x{j}}|$将会更小,因此在式(7.23)中要求$|D{x_{i}}|$集合中样本数量不少于$m'$。
7.3节例子计算有笔误,第152页的第9个等式应为$P{(凹陷|\boldsymbol 是)}=\cfrac{5}{8}$。截止到目前(第28次印刷),西瓜书官方勘误修订仅在第8次印刷时修正了第3个等式$P{(蜷缩|\boldsymbol 是)}$,但第9个等式仍未修正(若修正第84页的西瓜数据集3.0也可,但亦未修正)。
import numpy as np
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
Y = np.array([1, 1, 1, 2, 2, 2])
from sklearn.naive_bayes import GaussianNB
clf = GaussianNB()
clf.fit(X, Y)
GaussianNB(priors=None, var_smoothing=1e-09)
print(clf.predict([[-0.8, -1]]))
priors : array-like, shape (n_classes,) Prior probabilities of the classes. If specified the priors are not adjusted according to the data.
var_smoothing : float, optional (default=1e-9) Portion of the largest variance of all features that is added to variances for calculation stability.